From b02d83df2242da8b85d2451d81f1c75dffe0672a Mon Sep 17 00:00:00 2001 From: "chris.anatalio" Date: Sat, 17 Sep 2016 22:51:06 -0700 Subject: [PATCH 001/215] BAEL-223 - Integrate DynamoDB into a Spring Boot Application using Spring Data --- spring-boot-data-dynamodb/.gitignore | 4 + spring-boot-data-dynamodb/README.MD | 2 + spring-boot-data-dynamodb/pom.xml | 189 ++++++++++++++++++ .../spring/data/es/config/DynamoDBConfig.java | 41 ++++ .../spring/data/es/model/ProductInfo.java | 47 +++++ .../es/repository/ProductInfoRepository.java | 14 ++ .../main/java/org/baeldung/Application.java | 13 ++ .../src/main/resources/application.properties | 31 +++ .../src/main/resources/demo.properties | 6 + .../src/main/resources/logback.xml | 14 ++ .../src/main/resources/templates/index.html | 19 ++ .../ProductInfoRepositoryIntegrationTest.java | 85 ++++++++ .../src/test/resources/application.properties | 7 + .../resources/exception-hibernate.properties | 2 + .../src/test/resources/exception.properties | 6 + 15 files changed, 480 insertions(+) create mode 100644 spring-boot-data-dynamodb/.gitignore create mode 100644 spring-boot-data-dynamodb/README.MD create mode 100644 spring-boot-data-dynamodb/pom.xml create mode 100644 spring-boot-data-dynamodb/src/main/java/com/baeldung/spring/data/es/config/DynamoDBConfig.java create mode 100644 spring-boot-data-dynamodb/src/main/java/com/baeldung/spring/data/es/model/ProductInfo.java create mode 100644 spring-boot-data-dynamodb/src/main/java/com/baeldung/spring/data/es/repository/ProductInfoRepository.java create mode 100644 spring-boot-data-dynamodb/src/main/java/org/baeldung/Application.java create mode 100644 spring-boot-data-dynamodb/src/main/resources/application.properties create mode 100644 spring-boot-data-dynamodb/src/main/resources/demo.properties create mode 100644 spring-boot-data-dynamodb/src/main/resources/logback.xml create mode 100644 spring-boot-data-dynamodb/src/main/resources/templates/index.html create mode 100644 spring-boot-data-dynamodb/src/test/java/com/baeldung/spring/data/es/repository/ProductInfoRepositoryIntegrationTest.java create mode 100644 spring-boot-data-dynamodb/src/test/resources/application.properties create mode 100644 spring-boot-data-dynamodb/src/test/resources/exception-hibernate.properties create mode 100644 spring-boot-data-dynamodb/src/test/resources/exception.properties diff --git a/spring-boot-data-dynamodb/.gitignore b/spring-boot-data-dynamodb/.gitignore new file mode 100644 index 0000000000..e26d6af438 --- /dev/null +++ b/spring-boot-data-dynamodb/.gitignore @@ -0,0 +1,4 @@ +/target/ +.settings/ +.classpath +.project diff --git a/spring-boot-data-dynamodb/README.MD b/spring-boot-data-dynamodb/README.MD new file mode 100644 index 0000000000..2a87b46021 --- /dev/null +++ b/spring-boot-data-dynamodb/README.MD @@ -0,0 +1,2 @@ +###The Course +The "REST With Spring" Classes: http://bit.ly/restwithspring diff --git a/spring-boot-data-dynamodb/pom.xml b/spring-boot-data-dynamodb/pom.xml new file mode 100644 index 0000000000..023d249c56 --- /dev/null +++ b/spring-boot-data-dynamodb/pom.xml @@ -0,0 +1,189 @@ + + 4.0.0 + com.baeldung + spring-boot + 0.0.1-SNAPSHOT + jar + Spring Boot Actuator + This is simple boot application for Spring boot actuator test + + + spring-boot-starter-parent + org.springframework.boot + 1.2.3.RELEASE + + + + + + org.baeldung.boot.DemoApplication + UTF-8 + 1.8 + 4.3.1.RELEASE + + + + + org.springframework.boot + spring-boot-starter-thymeleaf + + + org.springframework.boot + spring-boot-starter-web + + + + org.springframework.boot + spring-boot-starter-data-jpa + + + + org.springframework.boot + spring-boot-starter-actuator + + + + org.springframework.boot + spring-boot-starter-security + + + + io.dropwizard.metrics + metrics-core + + + + com.h2database + h2 + + + + org.springframework.boot + spring-boot-starter-test + test + + + + org.springframework.boot + spring-boot-starter + + + com.jayway.jsonpath + json-path + test + + + org.springframework.boot + spring-boot-starter-mail + + + org.subethamail + subethasmtp + 3.1.7 + test + + + + org.webjars + bootstrap + 3.3.4 + + + org.webjars + jquery + 2.1.4 + + + org.springframework.data + spring-data-jpa + 1.10.2.RELEASE + + + com.amazonaws + aws-java-sdk-dynamodb + 1.11.34 + + + org.socialsignin + spring-data-dynamodb + 4.2.1 + + + + + spring-boot + + + src/main/resources + true + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + org.apache.maven.plugins + maven-compiler-plugin + + 1.8 + 1.8 + + + + + org.apache.maven.plugins + maven-war-plugin + + + + + + + + + spring-snapshots + Spring Snapshots + https://repo.spring.io/snapshot + + true + + + + spring-milestones + Spring Milestones + https://repo.spring.io/milestone + + false + + + + opensourceagility-release + http://repo.opensourceagility.com/release/ + + + + + spring-snapshots + Spring Snapshots + https://repo.spring.io/snapshot + + true + + + + spring-milestones + Spring Milestones + https://repo.spring.io/milestone + + false + + + + + diff --git a/spring-boot-data-dynamodb/src/main/java/com/baeldung/spring/data/es/config/DynamoDBConfig.java b/spring-boot-data-dynamodb/src/main/java/com/baeldung/spring/data/es/config/DynamoDBConfig.java new file mode 100644 index 0000000000..554a6c9c12 --- /dev/null +++ b/spring-boot-data-dynamodb/src/main/java/com/baeldung/spring/data/es/config/DynamoDBConfig.java @@ -0,0 +1,41 @@ +package com.baeldung.spring.data.es.config; + +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; + +import com.amazonaws.auth.AWSCredentials; +import com.amazonaws.auth.BasicAWSCredentials; +import com.amazonaws.services.dynamodbv2.AmazonDynamoDB; +import com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient; + +@Configuration +@ComponentScan(basePackages = { "com.baeldung.spring.data.es.service" }) +public class DynamoDBConfig { + + @Value("${amazon.dynamodb.endpoint}") + private String amazonDynamoDBEndpoint; + + @Value("${amazon.aws.accesskey}") + private String amazonAWSAccessKey; + + @Value("${amazon.aws.secretkey}") + private String amazonAWSSecretKey; + + @Bean + public AmazonDynamoDB amazonDynamoDB() { + AmazonDynamoDB amazonDynamoDB = new AmazonDynamoDBClient(amazonAWSCredentials()); + if (StringUtils.isNotEmpty(amazonDynamoDBEndpoint)) { + amazonDynamoDB.setEndpoint(amazonDynamoDBEndpoint); + } + return amazonDynamoDB; + } + + @Bean + public AWSCredentials amazonAWSCredentials() { + return new BasicAWSCredentials(amazonAWSAccessKey, amazonAWSSecretKey); + } + +} diff --git a/spring-boot-data-dynamodb/src/main/java/com/baeldung/spring/data/es/model/ProductInfo.java b/spring-boot-data-dynamodb/src/main/java/com/baeldung/spring/data/es/model/ProductInfo.java new file mode 100644 index 0000000000..4c97d14045 --- /dev/null +++ b/spring-boot-data-dynamodb/src/main/java/com/baeldung/spring/data/es/model/ProductInfo.java @@ -0,0 +1,47 @@ +package com.baeldung.spring.data.es.model; + +import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBAttribute; +import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBAutoGeneratedKey; +import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBHashKey; + +public class ProductInfo { + private String id; + private String msrp; + private String cost; + + public ProductInfo() { + } + + public ProductInfo(String cost, String msrp) { + this.msrp = msrp; + this.cost = cost; + } + + @DynamoDBHashKey + @DynamoDBAutoGeneratedKey + public String getId() { + return id; + } + + @DynamoDBAttribute + public String getMsrp() { + return msrp; + } + + @DynamoDBAttribute + public String getCost() { + return cost; + } + + public void setId(String id) { + this.id = id; + } + + public void setMsrp(String msrp) { + this.msrp = msrp; + } + + public void setCost(String cost) { + this.cost = cost; + } +} diff --git a/spring-boot-data-dynamodb/src/main/java/com/baeldung/spring/data/es/repository/ProductInfoRepository.java b/spring-boot-data-dynamodb/src/main/java/com/baeldung/spring/data/es/repository/ProductInfoRepository.java new file mode 100644 index 0000000000..a30ff1c4aa --- /dev/null +++ b/spring-boot-data-dynamodb/src/main/java/com/baeldung/spring/data/es/repository/ProductInfoRepository.java @@ -0,0 +1,14 @@ +package com.baeldung.spring.data.es.repository; + +import java.util.List; + +import org.socialsignin.spring.data.dynamodb.repository.EnableScan; +import org.springframework.data.repository.CrudRepository; + +import com.baeldung.spring.data.es.model.ProductInfo; + +@EnableScan +public interface ProductInfoRepository extends CrudRepository { + + List findById(String id); +} diff --git a/spring-boot-data-dynamodb/src/main/java/org/baeldung/Application.java b/spring-boot-data-dynamodb/src/main/java/org/baeldung/Application.java new file mode 100644 index 0000000000..aae0c427a9 --- /dev/null +++ b/spring-boot-data-dynamodb/src/main/java/org/baeldung/Application.java @@ -0,0 +1,13 @@ +package org.baeldung; + +import org.springframework.boot.SpringApplication; +import org.springframework.context.ApplicationContext; + +@org.springframework.boot.autoconfigure.SpringBootApplication +public class Application { + private static ApplicationContext applicationContext; + + public static void main(String[] args) { + applicationContext = SpringApplication.run(Application.class, args); + } +} diff --git a/spring-boot-data-dynamodb/src/main/resources/application.properties b/spring-boot-data-dynamodb/src/main/resources/application.properties new file mode 100644 index 0000000000..d30045d1dc --- /dev/null +++ b/spring-boot-data-dynamodb/src/main/resources/application.properties @@ -0,0 +1,31 @@ +server.port=8080 +server.contextPath=/springbootapp +management.port=8081 +management.address=127.0.0.1 + +endpoints.shutdown.enabled=true + +endpoints.jmx.domain=Spring Sample Application +endpoints.jmx.uniqueNames=true + +##jolokia.config.debug=true +##endpoints.jolokia.enabled=true +##endpoints.jolokia.path=jolokia + +spring.jmx.enabled=true +endpoints.jmx.enabled=true + +## for pretty printing of json when endpoints accessed over HTTP +http.mappers.jsonPrettyPrint=true + +## Configuring info endpoint +info.app.name=Spring Sample Application +info.app.description=This is my first spring boot application G1 +info.app.version=1.0.0 + +## Spring Security Configurations +security.user.name=admin1 +security.user.password=secret1 +management.security.role=SUPERUSER + +logging.level.org.springframework=INFO \ No newline at end of file diff --git a/spring-boot-data-dynamodb/src/main/resources/demo.properties b/spring-boot-data-dynamodb/src/main/resources/demo.properties new file mode 100644 index 0000000000..649b64f59b --- /dev/null +++ b/spring-boot-data-dynamodb/src/main/resources/demo.properties @@ -0,0 +1,6 @@ +spring.output.ansi.enabled=never +server.port=7070 + +# Security +security.user.name=admin +security.user.password=password \ No newline at end of file diff --git a/spring-boot-data-dynamodb/src/main/resources/logback.xml b/spring-boot-data-dynamodb/src/main/resources/logback.xml new file mode 100644 index 0000000000..78913ee76f --- /dev/null +++ b/spring-boot-data-dynamodb/src/main/resources/logback.xml @@ -0,0 +1,14 @@ + + + + + web - %date [%thread] %-5level %logger{36} - %message%n + + + + + + + + + \ No newline at end of file diff --git a/spring-boot-data-dynamodb/src/main/resources/templates/index.html b/spring-boot-data-dynamodb/src/main/resources/templates/index.html new file mode 100644 index 0000000000..046d21600a --- /dev/null +++ b/spring-boot-data-dynamodb/src/main/resources/templates/index.html @@ -0,0 +1,19 @@ + + + WebJars Demo + + + + +

+
+ × + Success! It is working as we expected. +
+
+ + + + + + \ No newline at end of file diff --git a/spring-boot-data-dynamodb/src/test/java/com/baeldung/spring/data/es/repository/ProductInfoRepositoryIntegrationTest.java b/spring-boot-data-dynamodb/src/test/java/com/baeldung/spring/data/es/repository/ProductInfoRepositoryIntegrationTest.java new file mode 100644 index 0000000000..438499bae8 --- /dev/null +++ b/spring-boot-data-dynamodb/src/test/java/com/baeldung/spring/data/es/repository/ProductInfoRepositoryIntegrationTest.java @@ -0,0 +1,85 @@ +package com.baeldung.spring.data.es.repository; + +import static org.junit.Assert.assertTrue; + +import java.util.List; + +import org.baeldung.Application; +import org.junit.Before; +import org.junit.Ignore; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.IntegrationTest; +import org.springframework.boot.test.SpringApplicationConfiguration; +import org.springframework.test.context.ActiveProfiles; +import org.springframework.test.context.TestPropertySource; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.web.WebAppConfiguration; + +import com.amazonaws.services.dynamodbv2.AmazonDynamoDB; +import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapper; +import com.amazonaws.services.dynamodbv2.document.DynamoDB; +import com.amazonaws.services.dynamodbv2.document.Table; +import com.amazonaws.services.dynamodbv2.model.CreateTableRequest; +import com.amazonaws.services.dynamodbv2.model.ProvisionedThroughput; +import com.amazonaws.services.dynamodbv2.model.ResourceInUseException; +import com.baeldung.spring.data.es.model.ProductInfo; +import com.baeldung.spring.data.es.repository.ProductInfoRepository; + +@RunWith(SpringJUnit4ClassRunner.class) +@SpringApplicationConfiguration(classes = Application.class) +@WebAppConfiguration +@IntegrationTest +@ActiveProfiles("local") +@TestPropertySource(properties = { "amazon.dynamodb.endpoint=http://localhost:8000/", "amazon.aws.accesskey=test1", "amazon.aws.secretkey=test231" }) +public class ProductInfoRepositoryIntegrationTest { + + private DynamoDBMapper dynamoDBMapper; + + @Autowired + private DynamoDB dynamoDB; + + @Autowired + private AmazonDynamoDB amazonDynamoDB; + + @Autowired + ProductInfoRepository ProductInfoRepository; + + private static final String EXPECTED_COST = "20"; + private static final String EXPECTED_PRICE = "50"; + + @Before + @Ignore + public void setUp() throws Exception { + + try { + dynamoDBMapper = new DynamoDBMapper(amazonDynamoDB); + + CreateTableRequest tableRequest = dynamoDBMapper.generateCreateTableRequest(ProductInfo.class); // 1 + + tableRequest.setProvisionedThroughput(new ProvisionedThroughput(1L, 1L)); // 2 + + Table table = dynamoDB.createTable(tableRequest); // 3 + + table.waitForActive(); // 4 + } catch (ResourceInUseException e) { + // Do nothing, table already created + } + + // TODO How to handle different environments. i.e. AVOID deleting all entries in ProductInfoion table + dynamoDBMapper.batchDelete((List) ProductInfoRepository.findAll()); + } + + @Ignore + @Test + public void sampleTestCase() { + + ProductInfo dave = new ProductInfo(EXPECTED_COST, EXPECTED_PRICE); + ProductInfoRepository.save(dave); + + List result = (List) ProductInfoRepository.findAll(); + assertTrue("Not empty", result.size() > 0); + assertTrue("Contains item with expected cost", result.get(0).getCost().equals(EXPECTED_COST)); + } +} diff --git a/spring-boot-data-dynamodb/src/test/resources/application.properties b/spring-boot-data-dynamodb/src/test/resources/application.properties new file mode 100644 index 0000000000..01e8a2e52e --- /dev/null +++ b/spring-boot-data-dynamodb/src/test/resources/application.properties @@ -0,0 +1,7 @@ +spring.mail.host=localhost +spring.mail.port=8025 +spring.mail.properties.mail.smtp.auth=false + +amazon.dynamodb.endpoint=http://localhost:8000/ +amazon.aws.accesskey=key +amazon.aws.secretkey=key2 \ No newline at end of file diff --git a/spring-boot-data-dynamodb/src/test/resources/exception-hibernate.properties b/spring-boot-data-dynamodb/src/test/resources/exception-hibernate.properties new file mode 100644 index 0000000000..cde746acb9 --- /dev/null +++ b/spring-boot-data-dynamodb/src/test/resources/exception-hibernate.properties @@ -0,0 +1,2 @@ +spring.profiles.active=exception +spring.jpa.properties.hibernate.current_session_context_class=org.springframework.orm.hibernate4.SpringSessionContext diff --git a/spring-boot-data-dynamodb/src/test/resources/exception.properties b/spring-boot-data-dynamodb/src/test/resources/exception.properties new file mode 100644 index 0000000000..c55e415a3a --- /dev/null +++ b/spring-boot-data-dynamodb/src/test/resources/exception.properties @@ -0,0 +1,6 @@ +# Security +security.user.name=admin +security.user.password=password + +spring.dao.exceptiontranslation.enabled=false +spring.profiles.active=exception \ No newline at end of file From d48bf9d2b6e122e21caf1e965a5bfb374757b50f Mon Sep 17 00:00:00 2001 From: "chris.anatalio" Date: Sat, 17 Sep 2016 23:15:17 -0700 Subject: [PATCH 002/215] BAEL-223 - Update Unit test name --- .../repository/ProductInfoRepositoryIntegrationTest.java | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/spring-boot-data-dynamodb/src/test/java/com/baeldung/spring/data/es/repository/ProductInfoRepositoryIntegrationTest.java b/spring-boot-data-dynamodb/src/test/java/com/baeldung/spring/data/es/repository/ProductInfoRepositoryIntegrationTest.java index 438499bae8..43369d3254 100644 --- a/spring-boot-data-dynamodb/src/test/java/com/baeldung/spring/data/es/repository/ProductInfoRepositoryIntegrationTest.java +++ b/spring-boot-data-dynamodb/src/test/java/com/baeldung/spring/data/es/repository/ProductInfoRepositoryIntegrationTest.java @@ -25,7 +25,6 @@ import com.amazonaws.services.dynamodbv2.model.CreateTableRequest; import com.amazonaws.services.dynamodbv2.model.ProvisionedThroughput; import com.amazonaws.services.dynamodbv2.model.ResourceInUseException; import com.baeldung.spring.data.es.model.ProductInfo; -import com.baeldung.spring.data.es.repository.ProductInfoRepository; @RunWith(SpringJUnit4ClassRunner.class) @SpringApplicationConfiguration(classes = Application.class) @@ -73,10 +72,10 @@ public class ProductInfoRepositoryIntegrationTest { @Ignore @Test - public void sampleTestCase() { + public void givenItemWithExpectedCost_whenRunFindAll_thenItemIsFound() { - ProductInfo dave = new ProductInfo(EXPECTED_COST, EXPECTED_PRICE); - ProductInfoRepository.save(dave); + ProductInfo productInfo = new ProductInfo(EXPECTED_COST, EXPECTED_PRICE); + ProductInfoRepository.save(productInfo); List result = (List) ProductInfoRepository.findAll(); assertTrue("Not empty", result.size() > 0); From 75593037fcd0c14ff41ab4d04ae999da9794e9e5 Mon Sep 17 00:00:00 2001 From: Andrew Tobilko Date: Mon, 26 Sep 2016 17:24:09 +0300 Subject: [PATCH 003/215] filter hierarchy --- .../security/filter/CustomHttpFilter.java | 32 +++++++++++++++++++ .../security/filter/FilterConfiguration.java | 28 ++++++++++++++++ .../security/filter/GenericCustomFilter.java | 16 ++++++++++ .../filter/GenericCustomHttpFilter.java | 22 +++++++++++++ 4 files changed, 98 insertions(+) create mode 100644 spring-security-rest-basic-auth/src/main/java/org/baeldung/security/filter/CustomHttpFilter.java create mode 100644 spring-security-rest-basic-auth/src/main/java/org/baeldung/security/filter/FilterConfiguration.java create mode 100644 spring-security-rest-basic-auth/src/main/java/org/baeldung/security/filter/GenericCustomFilter.java create mode 100644 spring-security-rest-basic-auth/src/main/java/org/baeldung/security/filter/GenericCustomHttpFilter.java diff --git a/spring-security-rest-basic-auth/src/main/java/org/baeldung/security/filter/CustomHttpFilter.java b/spring-security-rest-basic-auth/src/main/java/org/baeldung/security/filter/CustomHttpFilter.java new file mode 100644 index 0000000000..00a17fbb39 --- /dev/null +++ b/spring-security-rest-basic-auth/src/main/java/org/baeldung/security/filter/CustomHttpFilter.java @@ -0,0 +1,32 @@ +package org.baeldung.security.filter; + +import org.springframework.core.Ordered; +import org.springframework.core.annotation.Order; +import org.springframework.stereotype.Component; + +import javax.servlet.FilterChain; +import javax.servlet.FilterConfig; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; + +@Component +@Order(Ordered.LOWEST_PRECEDENCE) +public class CustomHttpFilter extends GenericCustomHttpFilter { + + @Override + public void init(FilterConfig config) throws ServletException { + System.out.println(config.getInitParameter("first-init-param") + + config.getInitParameter("second-init-param")); + } + + @Override + public void doFilter(HttpServletRequest request, HttpServletResponse response, FilterChain + chain) throws IOException, ServletException { + System.out.println("CustomHttpFilter is in action [the request is going to the server]."); + chain.doFilter(request, response); + System.out.println("CustomHttpFilter is in action [the request has come from the server]."); + } + +} \ No newline at end of file diff --git a/spring-security-rest-basic-auth/src/main/java/org/baeldung/security/filter/FilterConfiguration.java b/spring-security-rest-basic-auth/src/main/java/org/baeldung/security/filter/FilterConfiguration.java new file mode 100644 index 0000000000..12447a29af --- /dev/null +++ b/spring-security-rest-basic-auth/src/main/java/org/baeldung/security/filter/FilterConfiguration.java @@ -0,0 +1,28 @@ +package org.baeldung.security.filter; + +import org.springframework.boot.context.embedded.FilterRegistrationBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import java.util.HashMap; + +import static java.util.Collections.singletonList; + +@Configuration +public class FilterConfiguration { + + @Bean + public FilterRegistrationBean getCustomFilterRegistrationBean() { + FilterRegistrationBean registration = new FilterRegistrationBean(); + registration.setFilter(new CustomHttpFilter()); + + registration.setInitParameters(new HashMap() {{ + put("first-init-param", "Hello from "); + put("second-init-param", "Filter!"); + }}); + registration.setUrlPatterns(singletonList("/user/registration")); + + return registration; + } + +} \ No newline at end of file diff --git a/spring-security-rest-basic-auth/src/main/java/org/baeldung/security/filter/GenericCustomFilter.java b/spring-security-rest-basic-auth/src/main/java/org/baeldung/security/filter/GenericCustomFilter.java new file mode 100644 index 0000000000..e808b1aa0c --- /dev/null +++ b/spring-security-rest-basic-auth/src/main/java/org/baeldung/security/filter/GenericCustomFilter.java @@ -0,0 +1,16 @@ +package org.baeldung.security.filter; + + +import javax.servlet.Filter; +import javax.servlet.FilterConfig; +import javax.servlet.ServletException; + +public abstract class GenericCustomFilter implements Filter { + + @Override + public void init(FilterConfig filterConfig) throws ServletException {} + + @Override + public void destroy() {} + +} \ No newline at end of file diff --git a/spring-security-rest-basic-auth/src/main/java/org/baeldung/security/filter/GenericCustomHttpFilter.java b/spring-security-rest-basic-auth/src/main/java/org/baeldung/security/filter/GenericCustomHttpFilter.java new file mode 100644 index 0000000000..6fb024c377 --- /dev/null +++ b/spring-security-rest-basic-auth/src/main/java/org/baeldung/security/filter/GenericCustomHttpFilter.java @@ -0,0 +1,22 @@ +package org.baeldung.security.filter; + +import javax.servlet.FilterChain; +import javax.servlet.ServletException; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; + +public abstract class GenericCustomHttpFilter extends GenericCustomFilter { + + @Override + public void doFilter(ServletRequest request, ServletResponse response, + FilterChain chain) throws IOException, ServletException { + doFilter((HttpServletRequest) request, (HttpServletResponse) response, chain); + } + + public abstract void doFilter(HttpServletRequest request, HttpServletResponse response, + FilterChain chain) throws IOException, ServletException; + +} From 31d72d7cfa41ee51b0d5995892eb4fcbdf9ab523 Mon Sep 17 00:00:00 2001 From: Andrew Tobilko Date: Mon, 26 Sep 2016 17:26:45 +0300 Subject: [PATCH 004/215] README --- spring-security-rest-basic-auth/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/spring-security-rest-basic-auth/README.md b/spring-security-rest-basic-auth/README.md index 3bd46bdd2a..f3afa116f0 100644 --- a/spring-security-rest-basic-auth/README.md +++ b/spring-security-rest-basic-auth/README.md @@ -8,4 +8,5 @@ The "Learn Spring Security" Classes: http://github.learnspringsecurity.com ### Relevant Articles: - [RestTemplate with Basic Authentication in Spring](http://www.baeldung.com/2012/04/16/how-to-use-resttemplate-with-basic-authentication-in-spring-3-1) - [HttpClient Timeout](http://www.baeldung.com/httpclient-timeout) +- [Writing a Custom Filter in Spring Security](http://www.baeldung.com/writing-custom-filter-spring-security) - [HttpClient with SSL](http://www.baeldung.com/httpclient-ssl) From a0f281a9f7f8e7657ee6cadaec78c7e9db71437c Mon Sep 17 00:00:00 2001 From: "chris.anatalio" Date: Sun, 2 Oct 2016 18:44:56 -0700 Subject: [PATCH 005/215] Updated dependencies to use newer version of dynamoDB dependency --- spring-boot-data-dynamodb/pom.xml | 8 ++------ .../baeldung/spring/data/es/config/DynamoDBConfig.java | 6 ++++-- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/spring-boot-data-dynamodb/pom.xml b/spring-boot-data-dynamodb/pom.xml index 023d249c56..9c6c5a875f 100644 --- a/spring-boot-data-dynamodb/pom.xml +++ b/spring-boot-data-dynamodb/pom.xml @@ -105,9 +105,9 @@ 1.11.34 - org.socialsignin + com.github.derjust spring-data-dynamodb - 4.2.1 + 4.3.1 @@ -162,10 +162,6 @@ false - - opensourceagility-release - http://repo.opensourceagility.com/release/ - diff --git a/spring-boot-data-dynamodb/src/main/java/com/baeldung/spring/data/es/config/DynamoDBConfig.java b/spring-boot-data-dynamodb/src/main/java/com/baeldung/spring/data/es/config/DynamoDBConfig.java index 554a6c9c12..984262a949 100644 --- a/spring-boot-data-dynamodb/src/main/java/com/baeldung/spring/data/es/config/DynamoDBConfig.java +++ b/spring-boot-data-dynamodb/src/main/java/com/baeldung/spring/data/es/config/DynamoDBConfig.java @@ -1,10 +1,12 @@ package com.baeldung.spring.data.es.config; -import org.apache.commons.lang3.StringUtils; + + import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; +import org.springframework.util.StringUtils; import com.amazonaws.auth.AWSCredentials; import com.amazonaws.auth.BasicAWSCredentials; @@ -27,7 +29,7 @@ public class DynamoDBConfig { @Bean public AmazonDynamoDB amazonDynamoDB() { AmazonDynamoDB amazonDynamoDB = new AmazonDynamoDBClient(amazonAWSCredentials()); - if (StringUtils.isNotEmpty(amazonDynamoDBEndpoint)) { + if (StringUtils.isEmpty(amazonDynamoDBEndpoint)) { amazonDynamoDB.setEndpoint(amazonDynamoDBEndpoint); } return amazonDynamoDB; From 7c7d91fe7b9d752553bf8b464faa5f32f137b411 Mon Sep 17 00:00:00 2001 From: "chris.anatalio" Date: Sun, 2 Oct 2016 18:47:31 -0700 Subject: [PATCH 006/215] Use provided auto-formater --- .../java/com/baeldung/spring/data/es/config/DynamoDBConfig.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/spring-boot-data-dynamodb/src/main/java/com/baeldung/spring/data/es/config/DynamoDBConfig.java b/spring-boot-data-dynamodb/src/main/java/com/baeldung/spring/data/es/config/DynamoDBConfig.java index 984262a949..5ced393fd4 100644 --- a/spring-boot-data-dynamodb/src/main/java/com/baeldung/spring/data/es/config/DynamoDBConfig.java +++ b/spring-boot-data-dynamodb/src/main/java/com/baeldung/spring/data/es/config/DynamoDBConfig.java @@ -1,7 +1,5 @@ package com.baeldung.spring.data.es.config; - - import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; From d478746229bbfafd494b84de915315ff0088fc3a Mon Sep 17 00:00:00 2001 From: "chris.anatalio" Date: Sun, 2 Oct 2016 19:08:03 -0700 Subject: [PATCH 007/215] Updated component scan path --- .../java/com/baeldung/spring/data/es/config/DynamoDBConfig.java | 2 +- .../src/main/java/org/baeldung/Application.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/spring-boot-data-dynamodb/src/main/java/com/baeldung/spring/data/es/config/DynamoDBConfig.java b/spring-boot-data-dynamodb/src/main/java/com/baeldung/spring/data/es/config/DynamoDBConfig.java index 5ced393fd4..b215e357d9 100644 --- a/spring-boot-data-dynamodb/src/main/java/com/baeldung/spring/data/es/config/DynamoDBConfig.java +++ b/spring-boot-data-dynamodb/src/main/java/com/baeldung/spring/data/es/config/DynamoDBConfig.java @@ -12,7 +12,7 @@ import com.amazonaws.services.dynamodbv2.AmazonDynamoDB; import com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient; @Configuration -@ComponentScan(basePackages = { "com.baeldung.spring.data.es.service" }) +@ComponentScan(basePackages = { "com.baeldung.spring.data.es" }) public class DynamoDBConfig { @Value("${amazon.dynamodb.endpoint}") diff --git a/spring-boot-data-dynamodb/src/main/java/org/baeldung/Application.java b/spring-boot-data-dynamodb/src/main/java/org/baeldung/Application.java index aae0c427a9..76895ca575 100644 --- a/spring-boot-data-dynamodb/src/main/java/org/baeldung/Application.java +++ b/spring-boot-data-dynamodb/src/main/java/org/baeldung/Application.java @@ -10,4 +10,4 @@ public class Application { public static void main(String[] args) { applicationContext = SpringApplication.run(Application.class, args); } -} +} \ No newline at end of file From 2693991c1b60b86eb933cf1c1eef76938c823a65 Mon Sep 17 00:00:00 2001 From: "chris.anatalio" Date: Sun, 2 Oct 2016 19:10:55 -0700 Subject: [PATCH 008/215] Fixed missing new line issue --- .../src/main/java/org/baeldung/Application.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-boot-data-dynamodb/src/main/java/org/baeldung/Application.java b/spring-boot-data-dynamodb/src/main/java/org/baeldung/Application.java index 76895ca575..aae0c427a9 100644 --- a/spring-boot-data-dynamodb/src/main/java/org/baeldung/Application.java +++ b/spring-boot-data-dynamodb/src/main/java/org/baeldung/Application.java @@ -10,4 +10,4 @@ public class Application { public static void main(String[] args) { applicationContext = SpringApplication.run(Application.class, args); } -} \ No newline at end of file +} From 4639d467053417321836b30a43903a7f501ba103 Mon Sep 17 00:00:00 2001 From: Sandeep Kumar Date: Fri, 7 Oct 2016 18:16:04 +0530 Subject: [PATCH 009/215] Modify test cases for About Page --- selenium-junit-testng/pom.xml | 4 +- .../baeldung/selenium/SeleniumExample.java | 39 ++++++++++++++++++- .../selenium/junit/TestSeleniumWithJUnit.java | 34 ++++++++++------ .../testng/TestSeleniumWithTestNG.java | 19 ++++++--- 4 files changed, 76 insertions(+), 20 deletions(-) diff --git a/selenium-junit-testng/pom.xml b/selenium-junit-testng/pom.xml index bf5a082fba..c6461816af 100644 --- a/selenium-junit-testng/pom.xml +++ b/selenium-junit-testng/pom.xml @@ -37,12 +37,12 @@ junit junit - 4.8.1 + 4.12 org.testng testng - 6.9.10 + 6.9.13.6 \ No newline at end of file diff --git a/selenium-junit-testng/src/main/java/com/baeldung/selenium/SeleniumExample.java b/selenium-junit-testng/src/main/java/com/baeldung/selenium/SeleniumExample.java index d8b248df81..7661354aab 100644 --- a/selenium-junit-testng/src/main/java/com/baeldung/selenium/SeleniumExample.java +++ b/selenium-junit-testng/src/main/java/com/baeldung/selenium/SeleniumExample.java @@ -1,15 +1,22 @@ package main.java.com.baeldung.selenium; +import java.util.List; +import java.util.concurrent.TimeUnit; + +import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; +import org.openqa.selenium.WebElement; import org.openqa.selenium.firefox.FirefoxDriver; public class SeleniumExample { private WebDriver webDriver; private String url = "http://www.baeldung.com/"; - + public SeleniumExample() { webDriver = new FirefoxDriver(); + webDriver.manage().window().maximize(); + webDriver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); webDriver.get(url); } @@ -21,4 +28,34 @@ public class SeleniumExample { return webDriver.getTitle(); } + public void getAboutBaeldungPage() { + closeOverlay(); + clickAboutLink(); + clickAboutUsLink(); + } + + private void closeOverlay() { + List webElementList = webDriver.findElements(By.tagName("a")); + if (webElementList != null && !webElementList.isEmpty()) { + for (WebElement webElement : webElementList) { + if (webElement.getAttribute("title").equalsIgnoreCase("Close")) { + webElement.click(); + } + } + } + } + + private void clickAboutLink() { + webDriver.findElement(By.partialLinkText("About")).click(); + } + + private void clickAboutUsLink() { + webDriver.findElement(By.partialLinkText("About Baeldung.")).click(); + } + + public boolean isAuthorInformationAvailable() { + return webDriver + .findElement(By.xpath("//*[contains(text(), 'Eugen – an engineer')]")) + .isDisplayed(); + } } diff --git a/selenium-junit-testng/src/test/java/com/baeldung/selenium/junit/TestSeleniumWithJUnit.java b/selenium-junit-testng/src/test/java/com/baeldung/selenium/junit/TestSeleniumWithJUnit.java index dabb1e1988..85c20f62a5 100644 --- a/selenium-junit-testng/src/test/java/com/baeldung/selenium/junit/TestSeleniumWithJUnit.java +++ b/selenium-junit-testng/src/test/java/com/baeldung/selenium/junit/TestSeleniumWithJUnit.java @@ -1,31 +1,41 @@ package test.java.com.baeldung.selenium.junit; import static org.testng.Assert.assertEquals; +import static org.testng.Assert.assertNotNull; +import static org.testng.Assert.assertTrue; import main.java.com.baeldung.selenium.SeleniumExample; -import org.junit.After; -import org.junit.Before; +import org.junit.AfterClass; +import org.junit.BeforeClass; import org.junit.Test; public class TestSeleniumWithJUnit { - private SeleniumExample seleniumExample; - private String expectedTitle = "Baeldung | Java, Spring and Web Development tutorials"; + private static SeleniumExample seleniumExample; + private String expecteTilteAboutBaeldungPage = "About Baeldung | Baeldung"; - @Before - public void setUp() { + @BeforeClass + public static void setUp() { seleniumExample = new SeleniumExample(); } - @After - public void tearDown() { + @AfterClass + public static void tearDown() { seleniumExample.closeWindow(); } @Test - public void whenPageIsLoaded_thenTitleIsAsPerExpectation() { - String actualTitle = seleniumExample.getTitle(); - assertNotNull(actualTitle); - assertEquals(actualTitle, expectedTitle); + public void whenAboutBaeldungIsLoaded_thenAboutEugenIsMentionedOnPage() { + try { + seleniumExample.getAboutBaeldungPage(); + String actualTitle = seleniumExample.getTitle(); + assertNotNull(actualTitle); + assertEquals(actualTitle, expecteTilteAboutBaeldungPage); + assertTrue(seleniumExample.isAuthorInformationAvailable()); + } catch (Exception exception) { + exception.printStackTrace(); + seleniumExample.closeWindow(); + } } + } diff --git a/selenium-junit-testng/src/test/java/com/baeldung/selenium/testng/TestSeleniumWithTestNG.java b/selenium-junit-testng/src/test/java/com/baeldung/selenium/testng/TestSeleniumWithTestNG.java index 78ef8b8dfb..40b0424820 100644 --- a/selenium-junit-testng/src/test/java/com/baeldung/selenium/testng/TestSeleniumWithTestNG.java +++ b/selenium-junit-testng/src/test/java/com/baeldung/selenium/testng/TestSeleniumWithTestNG.java @@ -1,6 +1,8 @@ package test.java.com.baeldung.selenium.testng; import static org.testng.Assert.assertEquals; +import static org.testng.Assert.assertNotNull; +import static org.testng.Assert.assertTrue; import main.java.com.baeldung.selenium.SeleniumExample; import org.testng.annotations.AfterSuite; @@ -10,7 +12,7 @@ import org.testng.annotations.Test; public class TestSeleniumWithTestNG { private SeleniumExample seleniumExample; - private String expectedTitle = "Baeldung | Java, Spring and Web Development tutorials"; + private String expecteTilteAboutBaeldungPage = "About Baeldung | Baeldung"; @BeforeSuite public void setUp() { @@ -23,9 +25,16 @@ public class TestSeleniumWithTestNG { } @Test - public void whenPageIsLoaded_thenTitleIsAsPerExpectation() { - String actualTitle = seleniumExample.getTitle(); - assertNotNull(actualTitle); - assertEquals(actualTitle, expectedTitle); + public void whenAboutBaeldungIsLoaded_thenAboutEugenIsMentionedOnPage() { + try { + seleniumExample.getAboutBaeldungPage(); + String actualTitle = seleniumExample.getTitle(); + assertNotNull(actualTitle); + assertEquals(actualTitle, expecteTilteAboutBaeldungPage); + assertTrue(seleniumExample.isAuthorInformationAvailable()); + } catch (Exception exception) { + exception.printStackTrace(); + seleniumExample.closeWindow(); + } } } From 0d2e13392bb352a14b9f5e2a3168202e7b6cc6fe Mon Sep 17 00:00:00 2001 From: Sandeep Kumar Date: Sun, 9 Oct 2016 08:15:55 +0530 Subject: [PATCH 010/215] Implementing Java 8 streaming API for-next loop --- .../main/java/com/baeldung/selenium/SeleniumExample.java | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/selenium-junit-testng/src/main/java/com/baeldung/selenium/SeleniumExample.java b/selenium-junit-testng/src/main/java/com/baeldung/selenium/SeleniumExample.java index 7661354aab..1007bf7503 100644 --- a/selenium-junit-testng/src/main/java/com/baeldung/selenium/SeleniumExample.java +++ b/selenium-junit-testng/src/main/java/com/baeldung/selenium/SeleniumExample.java @@ -37,11 +37,7 @@ public class SeleniumExample { private void closeOverlay() { List webElementList = webDriver.findElements(By.tagName("a")); if (webElementList != null && !webElementList.isEmpty()) { - for (WebElement webElement : webElementList) { - if (webElement.getAttribute("title").equalsIgnoreCase("Close")) { - webElement.click(); - } - } + webElementList.stream().filter(webElement -> "Close".equalsIgnoreCase(webElement.getAttribute("title"))).findAny().get().click(); } } From 3b20cf25d116703f98949498015ecd1bf66891f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ambrus=20Adri=C3=A1n-Zolt=C3=A1n?= Date: Sun, 9 Oct 2016 17:28:59 +0300 Subject: [PATCH 011/215] Created an example about custom AccessDecisionVoters in Spring Security. --- spring-security-custom-voter/pom.xml | 56 +++++++++++++++ .../main/java/org/baeldung/Application.java | 12 ++++ .../baeldung/security/MinuteBasedVoter.java | 38 ++++++++++ .../baeldung/security/WebSecurityConfig.java | 69 +++++++++++++++++++ .../baeldung/security/XmlSecurityConfig.java | 15 ++++ .../main/java/org/baeldung/web/MvcConfig.java | 18 +++++ .../src/main/resources/spring-security.xml | 40 +++++++++++ .../src/main/resources/templates/private.html | 10 +++ .../src/main/webapp/WEB-INF/web.xml | 47 +++++++++++++ 9 files changed, 305 insertions(+) create mode 100644 spring-security-custom-voter/pom.xml create mode 100644 spring-security-custom-voter/src/main/java/org/baeldung/Application.java create mode 100644 spring-security-custom-voter/src/main/java/org/baeldung/security/MinuteBasedVoter.java create mode 100644 spring-security-custom-voter/src/main/java/org/baeldung/security/WebSecurityConfig.java create mode 100644 spring-security-custom-voter/src/main/java/org/baeldung/security/XmlSecurityConfig.java create mode 100644 spring-security-custom-voter/src/main/java/org/baeldung/web/MvcConfig.java create mode 100644 spring-security-custom-voter/src/main/resources/spring-security.xml create mode 100644 spring-security-custom-voter/src/main/resources/templates/private.html create mode 100644 spring-security-custom-voter/src/main/webapp/WEB-INF/web.xml diff --git a/spring-security-custom-voter/pom.xml b/spring-security-custom-voter/pom.xml new file mode 100644 index 0000000000..800fe356b4 --- /dev/null +++ b/spring-security-custom-voter/pom.xml @@ -0,0 +1,56 @@ + + + 4.0.0 + + org.baeldung + spring-security-custom-voter + 0.0.1-SNAPSHOT + war + + spring-security-custom-voter + Custom AccessDecisionVoter with Spring Security + + + org.springframework.boot + spring-boot-starter-parent + 1.4.1.RELEASE + + + + + UTF-8 + UTF-8 + 1.8 + + + + + org.springframework.boot + spring-boot-starter-security + + + org.springframework.boot + spring-boot-starter-thymeleaf + + + org.springframework.boot + spring-boot-starter-web + + + + org.springframework.boot + spring-boot-starter-test + test + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + diff --git a/spring-security-custom-voter/src/main/java/org/baeldung/Application.java b/spring-security-custom-voter/src/main/java/org/baeldung/Application.java new file mode 100644 index 0000000000..a9d6f3b8b1 --- /dev/null +++ b/spring-security-custom-voter/src/main/java/org/baeldung/Application.java @@ -0,0 +1,12 @@ +package org.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/spring-security-custom-voter/src/main/java/org/baeldung/security/MinuteBasedVoter.java b/spring-security-custom-voter/src/main/java/org/baeldung/security/MinuteBasedVoter.java new file mode 100644 index 0000000000..8d22c52b0d --- /dev/null +++ b/spring-security-custom-voter/src/main/java/org/baeldung/security/MinuteBasedVoter.java @@ -0,0 +1,38 @@ +package org.baeldung.security; + +import org.springframework.security.access.AccessDecisionVoter; +import org.springframework.security.access.ConfigAttribute; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.GrantedAuthority; + +import java.time.LocalDateTime; +import java.util.Collection; +import java.util.List; +import java.util.stream.Collectors; + +public class MinuteBasedVoter implements AccessDecisionVoter { + @Override + public boolean supports(ConfigAttribute attribute) { + return true; + } + + @Override + public boolean supports(Class clazz) { + return true; + } + + @Override + public int vote(Authentication authentication, Object object, Collection collection) { + List roles = authentication + .getAuthorities() + .stream().map(GrantedAuthority::getAuthority) + .collect(Collectors.toList()); + + for (String role: roles) { + if ("ROLE_USER".equals(role) && LocalDateTime.now().getMinute() % 2 != 0) { + return ACCESS_DENIED; + } + } + return ACCESS_ABSTAIN; + } +} diff --git a/spring-security-custom-voter/src/main/java/org/baeldung/security/WebSecurityConfig.java b/spring-security-custom-voter/src/main/java/org/baeldung/security/WebSecurityConfig.java new file mode 100644 index 0000000000..b3fb196424 --- /dev/null +++ b/spring-security-custom-voter/src/main/java/org/baeldung/security/WebSecurityConfig.java @@ -0,0 +1,69 @@ +package org.baeldung.security; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.security.access.AccessDecisionManager; +import org.springframework.security.access.AccessDecisionVoter; +import org.springframework.security.access.vote.AuthenticatedVoter; +import org.springframework.security.access.vote.RoleVoter; +import org.springframework.security.access.vote.UnanimousBased; +import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; +import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; +import org.springframework.security.web.access.expression.WebExpressionVoter; +import org.springframework.security.web.util.matcher.AntPathRequestMatcher; + +import java.util.Arrays; +import java.util.List; + +@Configuration +@EnableWebSecurity +public class WebSecurityConfig extends WebSecurityConfigurerAdapter { + @Autowired + public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception { + // @formatter: off + auth.inMemoryAuthentication() + .withUser("user").password("pass").roles("USER") + .and() + .withUser("admin").password("pass").roles("ADMIN"); + // @formatter: on + } + + @Override + protected void configure(HttpSecurity http) throws Exception { + // @formatter: off + http + // needed so our login could work + .csrf() + .disable() + .authorizeRequests() + .anyRequest() + .authenticated() + .accessDecisionManager(accessDecisionManager()) + .antMatchers("/").hasAnyRole("ROLE_ADMIN", "ROLE_USER") + .and() + .formLogin() + .permitAll() + .and() + .logout() + .permitAll() + .deleteCookies("JSESSIONID") + .logoutSuccessUrl("/login"); + // @formatter: on + } + + @Bean + public AccessDecisionManager accessDecisionManager() { + // @formatter: off + List> decisionVoters = + Arrays.asList( + new WebExpressionVoter(), + new RoleVoter(), + new AuthenticatedVoter(), + new MinuteBasedVoter()); + // @formatter: on + return new UnanimousBased(decisionVoters); + } +} diff --git a/spring-security-custom-voter/src/main/java/org/baeldung/security/XmlSecurityConfig.java b/spring-security-custom-voter/src/main/java/org/baeldung/security/XmlSecurityConfig.java new file mode 100644 index 0000000000..45e095c66e --- /dev/null +++ b/spring-security-custom-voter/src/main/java/org/baeldung/security/XmlSecurityConfig.java @@ -0,0 +1,15 @@ +package org.baeldung.security; + +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.ImportResource; + +/** + * Created by ambrusadrianz on 09/10/2016. + */ +@Configuration +//@ImportResource({"classpath:spring-security.xml"}) +public class XmlSecurityConfig { + public XmlSecurityConfig() { + super(); + } +} diff --git a/spring-security-custom-voter/src/main/java/org/baeldung/web/MvcConfig.java b/spring-security-custom-voter/src/main/java/org/baeldung/web/MvcConfig.java new file mode 100644 index 0000000000..5d38dca1ff --- /dev/null +++ b/spring-security-custom-voter/src/main/java/org/baeldung/web/MvcConfig.java @@ -0,0 +1,18 @@ +package org.baeldung.web; + +import org.springframework.context.annotation.Configuration; +import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; +import org.springframework.web.servlet.config.annotation.ViewControllerRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; + +/** + * Created by ambrusadrianz on 30/09/2016. + */ + +@Configuration +public class MvcConfig extends WebMvcConfigurerAdapter { + @Override + public void addViewControllers(ViewControllerRegistry registry) { + registry.addViewController("/").setViewName("private"); + } +} diff --git a/spring-security-custom-voter/src/main/resources/spring-security.xml b/spring-security-custom-voter/src/main/resources/spring-security.xml new file mode 100644 index 0000000000..117638289e --- /dev/null +++ b/spring-security-custom-voter/src/main/resources/spring-security.xml @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/spring-security-custom-voter/src/main/resources/templates/private.html b/spring-security-custom-voter/src/main/resources/templates/private.html new file mode 100644 index 0000000000..5af8c7a13e --- /dev/null +++ b/spring-security-custom-voter/src/main/resources/templates/private.html @@ -0,0 +1,10 @@ + + + + Private + + +

Congrats!

+ + \ No newline at end of file diff --git a/spring-security-custom-voter/src/main/webapp/WEB-INF/web.xml b/spring-security-custom-voter/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 0000000000..d69bce35ae --- /dev/null +++ b/spring-security-custom-voter/src/main/webapp/WEB-INF/web.xml @@ -0,0 +1,47 @@ + + + + Spring Secured Application + + + + mvc + org.springframework.web.servlet.DispatcherServlet + 1 + + + mvc + / + + + + contextClass + + org.springframework.web.context.support.AnnotationConfigWebApplicationContext + + + + contextConfigLocation + org.baeldung.spring.web.config + + + + org.springframework.web.context.ContextLoaderListener + + + + + + springSecurityFilterChain + org.springframework.web.filter.DelegatingFilterProxy + + + springSecurityFilterChain + /* + + + \ No newline at end of file From 131b695268342726e8e7e78d77ca8b983912164b Mon Sep 17 00:00:00 2001 From: Thai Nguyen Date: Thu, 13 Oct 2016 11:17:46 +0700 Subject: [PATCH 012/215] Refactors Apache CXF JAXRS implementation --- .../java/com/baeldung/cxf/jaxrs/implementation/Course.java | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/apache-cxf/cxf-jaxrs-implementation/src/main/java/com/baeldung/cxf/jaxrs/implementation/Course.java b/apache-cxf/cxf-jaxrs-implementation/src/main/java/com/baeldung/cxf/jaxrs/implementation/Course.java index 9ab74bea58..802a19e961 100644 --- a/apache-cxf/cxf-jaxrs-implementation/src/main/java/com/baeldung/cxf/jaxrs/implementation/Course.java +++ b/apache-cxf/cxf-jaxrs-implementation/src/main/java/com/baeldung/cxf/jaxrs/implementation/Course.java @@ -61,13 +61,11 @@ public class Course { @Path("{studentOrder}") public Response deleteStudent(@PathParam("studentOrder") int studentOrder) { Student student = students.get(studentOrder); - Response response; if (student != null) { students.remove(studentOrder); - response = Response.ok().build(); + return Response.ok().build(); } else { - response = Response.notModified().build(); + return Response.notModified().build(); } - return response; } } \ No newline at end of file From e95d1e2908e2a2f2917a2e0042f4f0e45b770e75 Mon Sep 17 00:00:00 2001 From: Chris Anatalio Date: Thu, 13 Oct 2016 07:54:58 -0700 Subject: [PATCH 013/215] @BeforeClass annotation and made setUp() method static --- .../es/repository/ProductInfoRepositoryIntegrationTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spring-boot-data-dynamodb/src/test/java/com/baeldung/spring/data/es/repository/ProductInfoRepositoryIntegrationTest.java b/spring-boot-data-dynamodb/src/test/java/com/baeldung/spring/data/es/repository/ProductInfoRepositoryIntegrationTest.java index 43369d3254..2421505acd 100644 --- a/spring-boot-data-dynamodb/src/test/java/com/baeldung/spring/data/es/repository/ProductInfoRepositoryIntegrationTest.java +++ b/spring-boot-data-dynamodb/src/test/java/com/baeldung/spring/data/es/repository/ProductInfoRepositoryIntegrationTest.java @@ -48,9 +48,9 @@ public class ProductInfoRepositoryIntegrationTest { private static final String EXPECTED_COST = "20"; private static final String EXPECTED_PRICE = "50"; - @Before + @BeforeClass @Ignore - public void setUp() throws Exception { + public static void setUp() throws Exception { try { dynamoDBMapper = new DynamoDBMapper(amazonDynamoDB); From 427b012ee4707f4ce38b56abaa034ffe841b8e92 Mon Sep 17 00:00:00 2001 From: Chris Anatalio Date: Thu, 13 Oct 2016 07:59:24 -0700 Subject: [PATCH 014/215] Checking amazonDynamoDBEndpoint string is not empty --- .../java/com/baeldung/spring/data/es/config/DynamoDBConfig.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-boot-data-dynamodb/src/main/java/com/baeldung/spring/data/es/config/DynamoDBConfig.java b/spring-boot-data-dynamodb/src/main/java/com/baeldung/spring/data/es/config/DynamoDBConfig.java index b215e357d9..f98292ea06 100644 --- a/spring-boot-data-dynamodb/src/main/java/com/baeldung/spring/data/es/config/DynamoDBConfig.java +++ b/spring-boot-data-dynamodb/src/main/java/com/baeldung/spring/data/es/config/DynamoDBConfig.java @@ -27,7 +27,7 @@ public class DynamoDBConfig { @Bean public AmazonDynamoDB amazonDynamoDB() { AmazonDynamoDB amazonDynamoDB = new AmazonDynamoDBClient(amazonAWSCredentials()); - if (StringUtils.isEmpty(amazonDynamoDBEndpoint)) { + if (!StringUtils.isEmpty(amazonDynamoDBEndpoint)) { amazonDynamoDB.setEndpoint(amazonDynamoDBEndpoint); } return amazonDynamoDB; From 7b6418e84c3fcb7ef50736153869c16bc1f4cc68 Mon Sep 17 00:00:00 2001 From: "chris.anatalio" Date: Thu, 13 Oct 2016 23:12:20 -0700 Subject: [PATCH 015/215] Cleaned up readme and application properties --- spring-boot-data-dynamodb/README.MD | 3 +-- .../src/main/resources/application.properties | 4 ---- 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/spring-boot-data-dynamodb/README.MD b/spring-boot-data-dynamodb/README.MD index 2a87b46021..8b13789179 100644 --- a/spring-boot-data-dynamodb/README.MD +++ b/spring-boot-data-dynamodb/README.MD @@ -1,2 +1 @@ -###The Course -The "REST With Spring" Classes: http://bit.ly/restwithspring + diff --git a/spring-boot-data-dynamodb/src/main/resources/application.properties b/spring-boot-data-dynamodb/src/main/resources/application.properties index d30045d1dc..fb5c8e2da0 100644 --- a/spring-boot-data-dynamodb/src/main/resources/application.properties +++ b/spring-boot-data-dynamodb/src/main/resources/application.properties @@ -8,10 +8,6 @@ endpoints.shutdown.enabled=true endpoints.jmx.domain=Spring Sample Application endpoints.jmx.uniqueNames=true -##jolokia.config.debug=true -##endpoints.jolokia.enabled=true -##endpoints.jolokia.path=jolokia - spring.jmx.enabled=true endpoints.jmx.enabled=true From a55b725cd322ba7d3e8fc705924b966628792649 Mon Sep 17 00:00:00 2001 From: "chris.anatalio" Date: Thu, 13 Oct 2016 23:18:01 -0700 Subject: [PATCH 016/215] Removed *'s added to illustrate spacing --- spring-boot-data-dynamodb/src/main/resources/logback.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-boot-data-dynamodb/src/main/resources/logback.xml b/spring-boot-data-dynamodb/src/main/resources/logback.xml index 78913ee76f..f10048e5d2 100644 --- a/spring-boot-data-dynamodb/src/main/resources/logback.xml +++ b/spring-boot-data-dynamodb/src/main/resources/logback.xml @@ -1,6 +1,6 @@ - + web - %date [%thread] %-5level %logger{36} - %message%n From c1444e2cdd7a69e35b7518ecc2148ed5596c2020 Mon Sep 17 00:00:00 2001 From: "chris.anatalio" Date: Thu, 13 Oct 2016 23:20:34 -0700 Subject: [PATCH 017/215] Fix new line issue --- spring-boot-data-dynamodb/src/main/resources/logback.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-boot-data-dynamodb/src/main/resources/logback.xml b/spring-boot-data-dynamodb/src/main/resources/logback.xml index f10048e5d2..c0bc602910 100644 --- a/spring-boot-data-dynamodb/src/main/resources/logback.xml +++ b/spring-boot-data-dynamodb/src/main/resources/logback.xml @@ -11,4 +11,4 @@ - \ No newline at end of file + From cef8adfdaebc62faa9fa2baeaa190fd0de94d296 Mon Sep 17 00:00:00 2001 From: Sandeep Kumar Date: Fri, 14 Oct 2016 15:36:00 +0530 Subject: [PATCH 018/215] Changes as per Live Test guidelines --- selenium-junit-testng/pom.xml | 28 ++++++++++++++++--- ...it.java => SeleniumWithJUnitLiveTest.java} | 2 +- ...G.java => SeleniumWithTestNGLiveTest.java} | 2 +- 3 files changed, 26 insertions(+), 6 deletions(-) rename selenium-junit-testng/src/test/java/com/baeldung/selenium/junit/{TestSeleniumWithJUnit.java => SeleniumWithJUnitLiveTest.java} (96%) rename selenium-junit-testng/src/test/java/com/baeldung/selenium/testng/{TestSeleniumWithTestNG.java => SeleniumWithTestNGLiveTest.java} (96%) diff --git a/selenium-junit-testng/pom.xml b/selenium-junit-testng/pom.xml index c6461816af..f964f94ed4 100644 --- a/selenium-junit-testng/pom.xml +++ b/selenium-junit-testng/pom.xml @@ -20,14 +20,34 @@ maven-surefire-plugin 2.19.1 - - - Test*.java - + true + + **/*LiveTest.java + + + + + live + + + + org.apache.maven.plugins + maven-surefire-plugin + + + **/*LiveTest.java + + + + + + + + org.seleniumhq.selenium diff --git a/selenium-junit-testng/src/test/java/com/baeldung/selenium/junit/TestSeleniumWithJUnit.java b/selenium-junit-testng/src/test/java/com/baeldung/selenium/junit/SeleniumWithJUnitLiveTest.java similarity index 96% rename from selenium-junit-testng/src/test/java/com/baeldung/selenium/junit/TestSeleniumWithJUnit.java rename to selenium-junit-testng/src/test/java/com/baeldung/selenium/junit/SeleniumWithJUnitLiveTest.java index 85c20f62a5..f8d9a5dada 100644 --- a/selenium-junit-testng/src/test/java/com/baeldung/selenium/junit/TestSeleniumWithJUnit.java +++ b/selenium-junit-testng/src/test/java/com/baeldung/selenium/junit/SeleniumWithJUnitLiveTest.java @@ -9,7 +9,7 @@ import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; -public class TestSeleniumWithJUnit { +public class SeleniumWithJUnitLiveTest { private static SeleniumExample seleniumExample; private String expecteTilteAboutBaeldungPage = "About Baeldung | Baeldung"; diff --git a/selenium-junit-testng/src/test/java/com/baeldung/selenium/testng/TestSeleniumWithTestNG.java b/selenium-junit-testng/src/test/java/com/baeldung/selenium/testng/SeleniumWithTestNGLiveTest.java similarity index 96% rename from selenium-junit-testng/src/test/java/com/baeldung/selenium/testng/TestSeleniumWithTestNG.java rename to selenium-junit-testng/src/test/java/com/baeldung/selenium/testng/SeleniumWithTestNGLiveTest.java index 40b0424820..5ec9ade39f 100644 --- a/selenium-junit-testng/src/test/java/com/baeldung/selenium/testng/TestSeleniumWithTestNG.java +++ b/selenium-junit-testng/src/test/java/com/baeldung/selenium/testng/SeleniumWithTestNGLiveTest.java @@ -9,7 +9,7 @@ import org.testng.annotations.AfterSuite; import org.testng.annotations.BeforeSuite; import org.testng.annotations.Test; -public class TestSeleniumWithTestNG { +public class SeleniumWithTestNGLiveTest { private SeleniumExample seleniumExample; private String expecteTilteAboutBaeldungPage = "About Baeldung | Baeldung"; From 4a2546b8fc4a1abfcf6fff91b8a46b4fae41d69f Mon Sep 17 00:00:00 2001 From: Sandeep Kumar Date: Tue, 18 Oct 2016 21:58:50 +0530 Subject: [PATCH 019/215] Changes for integration test --- selenium-junit-testng/pom.xml | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/selenium-junit-testng/pom.xml b/selenium-junit-testng/pom.xml index f964f94ed4..9ad601fdcd 100644 --- a/selenium-junit-testng/pom.xml +++ b/selenium-junit-testng/pom.xml @@ -15,18 +15,6 @@ 1.8 - - org.apache.maven.plugins - maven-surefire-plugin - 2.19.1 - - true - - **/*LiveTest.java - - - - @@ -37,6 +25,7 @@ org.apache.maven.plugins maven-surefire-plugin + 2.19.1 **/*LiveTest.java From 278ada7e7f605bd5729ed78c27e611aba8136839 Mon Sep 17 00:00:00 2001 From: Sandeep Kumar Date: Wed, 19 Oct 2016 12:38:32 +0530 Subject: [PATCH 020/215] Default Unit Test changes --- selenium-junit-testng/pom.xml | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/selenium-junit-testng/pom.xml b/selenium-junit-testng/pom.xml index 9ad601fdcd..861c0b1986 100644 --- a/selenium-junit-testng/pom.xml +++ b/selenium-junit-testng/pom.xml @@ -15,6 +15,18 @@ 1.8 + + org.apache.maven.plugins + maven-surefire-plugin + 2.19.1 + + true + + **/*UnitTest.java + + + + @@ -27,9 +39,9 @@ maven-surefire-plugin 2.19.1 - - **/*LiveTest.java - + + **/*LiveTest.java + From 1e4cd5a47c7ad4b5687327786f543861c0a14bed Mon Sep 17 00:00:00 2001 From: DOHA Date: Wed, 19 Oct 2016 12:56:46 +0200 Subject: [PATCH 021/215] add integration test profile --- spring-data-neo4j/pom.xml | 60 ++++++++++++++++--- ...va => MovieRepositoryIntegrationTest.java} | 4 +- 2 files changed, 55 insertions(+), 9 deletions(-) rename spring-data-neo4j/src/test/java/com/baeldung/spring/data/neo4j/{MovieRepositoryTest.java => MovieRepositoryIntegrationTest.java} (97%) diff --git a/spring-data-neo4j/pom.xml b/spring-data-neo4j/pom.xml index b0cf62ef2e..653dd6b2f6 100644 --- a/spring-data-neo4j/pom.xml +++ b/spring-data-neo4j/pom.xml @@ -13,6 +13,7 @@ UTF-8 3.0.1 4.1.1.RELEASE + 2.19.1 @@ -83,12 +84,57 @@ - - - - maven-compiler-plugin - - - + + + + maven-compiler-plugin + + + org.apache.maven.plugins + maven-surefire-plugin + ${maven-surefire-plugin.version} + + + **/*IntegrationTest.java + **/*LiveTest.java + + + + + + + + integration + + + + org.apache.maven.plugins + maven-surefire-plugin + + + integration-test + + test + + + + **/*LiveTest.java + + + **/*IntegrationTest.java + + + + + + + json + + + + + + + diff --git a/spring-data-neo4j/src/test/java/com/baeldung/spring/data/neo4j/MovieRepositoryTest.java b/spring-data-neo4j/src/test/java/com/baeldung/spring/data/neo4j/MovieRepositoryIntegrationTest.java similarity index 97% rename from spring-data-neo4j/src/test/java/com/baeldung/spring/data/neo4j/MovieRepositoryTest.java rename to spring-data-neo4j/src/test/java/com/baeldung/spring/data/neo4j/MovieRepositoryIntegrationTest.java index 0e54208c31..95bc38aafc 100644 --- a/spring-data-neo4j/src/test/java/com/baeldung/spring/data/neo4j/MovieRepositoryTest.java +++ b/spring-data-neo4j/src/test/java/com/baeldung/spring/data/neo4j/MovieRepositoryIntegrationTest.java @@ -24,7 +24,7 @@ import static org.junit.Assert.assertNotNull; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = MovieDatabaseNeo4jTestConfiguration.class) @ActiveProfiles(profiles = "test") -public class MovieRepositoryTest { +public class MovieRepositoryIntegrationTest { @Autowired private MovieRepository movieRepository; @@ -32,7 +32,7 @@ public class MovieRepositoryTest { @Autowired private PersonRepository personRepository; - public MovieRepositoryTest() { + public MovieRepositoryIntegrationTest() { } @Before From 890128654bc8f24c3affb9ee5c4b8cbee1acda2e Mon Sep 17 00:00:00 2001 From: DOHA Date: Wed, 19 Oct 2016 13:15:28 +0200 Subject: [PATCH 022/215] add integration test profile --- spring-data-mongodb/pom.xml | 47 +++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/spring-data-mongodb/pom.xml b/spring-data-mongodb/pom.xml index 102344a3fa..fd212548d0 100644 --- a/spring-data-mongodb/pom.xml +++ b/spring-data-mongodb/pom.xml @@ -112,9 +112,55 @@ 1.8 + + org.apache.maven.plugins + maven-surefire-plugin + ${maven-surefire-plugin.version} + + + **/*IntegrationTest.java + **/*LiveTest.java + + + + + + integration + + + + org.apache.maven.plugins + maven-surefire-plugin + + + integration-test + + test + + + + **/*LiveTest.java + + + **/*IntegrationTest.java + + + + + + + json + + + + + + + + UTF-8 @@ -130,6 +176,7 @@ 1.7.12 1.1.3 + 2.19.1 From 496553caaf737ce986b5694fba52326dd478b6a0 Mon Sep 17 00:00:00 2001 From: DOHA Date: Wed, 19 Oct 2016 13:40:56 +0200 Subject: [PATCH 023/215] add integration test profile --- spring-data-elasticsearch/pom.xml | 51 +++++++++++++++++++ ...java => ElasticSearchIntegrationTest.java} | 2 +- ...=> ElasticSearchQueryIntegrationTest.java} | 2 +- 3 files changed, 53 insertions(+), 2 deletions(-) rename spring-data-elasticsearch/src/test/java/com/baeldung/spring/data/es/{ElasticSearchTest.java => ElasticSearchIntegrationTest.java} (99%) rename spring-data-elasticsearch/src/test/java/com/baeldung/spring/data/es/{ElasticSearchQueryTest.java => ElasticSearchQueryIntegrationTest.java} (99%) diff --git a/spring-data-elasticsearch/pom.xml b/spring-data-elasticsearch/pom.xml index 42cf8fc740..dcb702ab16 100644 --- a/spring-data-elasticsearch/pom.xml +++ b/spring-data-elasticsearch/pom.xml @@ -20,6 +20,7 @@ 1.7.12 1.1.3 2.0.1.RELEASE + 2.19.1 @@ -86,4 +87,54 @@ + + + + org.apache.maven.plugins + maven-surefire-plugin + ${maven-surefire-plugin.version} + + + **/*IntegrationTest.java + **/*LiveTest.java + + + + + + + + + integration + + + + org.apache.maven.plugins + maven-surefire-plugin + + + integration-test + + test + + + + **/*LiveTest.java + + + **/*IntegrationTest.java + + + + + + + json + + + + + + + \ No newline at end of file diff --git a/spring-data-elasticsearch/src/test/java/com/baeldung/spring/data/es/ElasticSearchTest.java b/spring-data-elasticsearch/src/test/java/com/baeldung/spring/data/es/ElasticSearchIntegrationTest.java similarity index 99% rename from spring-data-elasticsearch/src/test/java/com/baeldung/spring/data/es/ElasticSearchTest.java rename to spring-data-elasticsearch/src/test/java/com/baeldung/spring/data/es/ElasticSearchIntegrationTest.java index 863e1e4620..1280c8e1de 100644 --- a/spring-data-elasticsearch/src/test/java/com/baeldung/spring/data/es/ElasticSearchTest.java +++ b/spring-data-elasticsearch/src/test/java/com/baeldung/spring/data/es/ElasticSearchIntegrationTest.java @@ -29,7 +29,7 @@ import com.baeldung.spring.data.es.service.ArticleService; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = Config.class) -public class ElasticSearchTest { +public class ElasticSearchIntegrationTest { @Autowired private ElasticsearchTemplate elasticsearchTemplate; diff --git a/spring-data-elasticsearch/src/test/java/com/baeldung/spring/data/es/ElasticSearchQueryTest.java b/spring-data-elasticsearch/src/test/java/com/baeldung/spring/data/es/ElasticSearchQueryIntegrationTest.java similarity index 99% rename from spring-data-elasticsearch/src/test/java/com/baeldung/spring/data/es/ElasticSearchQueryTest.java rename to spring-data-elasticsearch/src/test/java/com/baeldung/spring/data/es/ElasticSearchQueryIntegrationTest.java index ddf0ef4dac..cc4bce0c75 100644 --- a/spring-data-elasticsearch/src/test/java/com/baeldung/spring/data/es/ElasticSearchQueryTest.java +++ b/spring-data-elasticsearch/src/test/java/com/baeldung/spring/data/es/ElasticSearchQueryIntegrationTest.java @@ -42,7 +42,7 @@ import com.baeldung.spring.data.es.service.ArticleService; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = Config.class) -public class ElasticSearchQueryTest { +public class ElasticSearchQueryIntegrationTest { @Autowired private ElasticsearchTemplate elasticsearchTemplate; From 29ae3bc0102500ca55f3431f6cf3f30b6e553519 Mon Sep 17 00:00:00 2001 From: DOHA Date: Wed, 19 Oct 2016 14:02:32 +0200 Subject: [PATCH 024/215] configure integration test --- spring-data-couchbase-2/pom.xml | 13 ++++++++++++- ... => PersonRepositoryServiceIntegrationTest.java} | 2 +- ...eTest.java => PersonServiceIntegrationTest.java} | 2 +- ...va => PersonTemplateServiceIntegrationTest.java} | 2 +- ...=> StudentRepositoryServiceIntegrationTest.java} | 2 +- ...Test.java => StudentServiceIntegrationTest.java} | 2 +- ...a => StudentTemplateServiceIntegrationTest.java} | 2 +- ...t.java => CampusServiceImplIntegrationTest.java} | 2 +- ...t.java => PersonServiceImplIntegrationTest.java} | 2 +- ....java => StudentServiceImplIntegrationTest.java} | 2 +- 10 files changed, 21 insertions(+), 10 deletions(-) rename spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase/service/{PersonRepositoryServiceTest.java => PersonRepositoryServiceIntegrationTest.java} (78%) rename spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase/service/{PersonServiceTest.java => PersonServiceIntegrationTest.java} (98%) rename spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase/service/{PersonTemplateServiceTest.java => PersonTemplateServiceIntegrationTest.java} (79%) rename spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase/service/{StudentRepositoryServiceTest.java => StudentRepositoryServiceIntegrationTest.java} (78%) rename spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase/service/{StudentServiceTest.java => StudentServiceIntegrationTest.java} (98%) rename spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase/service/{StudentTemplateServiceTest.java => StudentTemplateServiceIntegrationTest.java} (79%) rename spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase2b/service/{CampusServiceImplTest.java => CampusServiceImplIntegrationTest.java} (98%) rename spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase2b/service/{PersonServiceImplTest.java => PersonServiceImplIntegrationTest.java} (98%) rename spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase2b/service/{StudentServiceImplTest.java => StudentServiceImplIntegrationTest.java} (98%) diff --git a/spring-data-couchbase-2/pom.xml b/spring-data-couchbase-2/pom.xml index d24ef4aeaa..6716f82246 100644 --- a/spring-data-couchbase-2/pom.xml +++ b/spring-data-couchbase-2/pom.xml @@ -86,6 +86,17 @@ 1.7 + + org.apache.maven.plugins + maven-surefire-plugin + ${maven-surefire-plugin.version} + + + **/*IntegrationTest.java + **/*LiveTest.java + + + @@ -99,7 +110,7 @@ 1.1.3 1.7.12 4.11 - + 2.19.1 diff --git a/spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase/service/PersonRepositoryServiceTest.java b/spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase/service/PersonRepositoryServiceIntegrationTest.java similarity index 78% rename from spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase/service/PersonRepositoryServiceTest.java rename to spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase/service/PersonRepositoryServiceIntegrationTest.java index ce5cf7667d..d710e57def 100644 --- a/spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase/service/PersonRepositoryServiceTest.java +++ b/spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase/service/PersonRepositoryServiceIntegrationTest.java @@ -3,7 +3,7 @@ package org.baeldung.spring.data.couchbase.service; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; -public class PersonRepositoryServiceTest extends PersonServiceTest { +public class PersonRepositoryServiceIntegrationTest extends PersonServiceIntegrationTest { @Autowired @Qualifier("PersonRepositoryService") diff --git a/spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase/service/PersonServiceTest.java b/spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase/service/PersonServiceIntegrationTest.java similarity index 98% rename from spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase/service/PersonServiceTest.java rename to spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase/service/PersonServiceIntegrationTest.java index c3bf9f2138..4044183849 100644 --- a/spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase/service/PersonServiceTest.java +++ b/spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase/service/PersonServiceIntegrationTest.java @@ -20,7 +20,7 @@ import com.couchbase.client.java.CouchbaseCluster; import com.couchbase.client.java.document.JsonDocument; import com.couchbase.client.java.document.json.JsonObject; -public abstract class PersonServiceTest extends IntegrationTest { +public abstract class PersonServiceIntegrationTest extends IntegrationTest { static final String typeField = "_class"; static final String john = "John"; diff --git a/spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase/service/PersonTemplateServiceTest.java b/spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase/service/PersonTemplateServiceIntegrationTest.java similarity index 79% rename from spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase/service/PersonTemplateServiceTest.java rename to spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase/service/PersonTemplateServiceIntegrationTest.java index 0238fa21fb..e19df8fc84 100644 --- a/spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase/service/PersonTemplateServiceTest.java +++ b/spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase/service/PersonTemplateServiceIntegrationTest.java @@ -3,7 +3,7 @@ package org.baeldung.spring.data.couchbase.service; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; -public class PersonTemplateServiceTest extends PersonServiceTest { +public class PersonTemplateServiceIntegrationTest extends PersonServiceIntegrationTest { @Autowired @Qualifier("PersonTemplateService") diff --git a/spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase/service/StudentRepositoryServiceTest.java b/spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase/service/StudentRepositoryServiceIntegrationTest.java similarity index 78% rename from spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase/service/StudentRepositoryServiceTest.java rename to spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase/service/StudentRepositoryServiceIntegrationTest.java index 040453fd73..3b3f2a531a 100644 --- a/spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase/service/StudentRepositoryServiceTest.java +++ b/spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase/service/StudentRepositoryServiceIntegrationTest.java @@ -3,7 +3,7 @@ package org.baeldung.spring.data.couchbase.service; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; -public class StudentRepositoryServiceTest extends StudentServiceTest { +public class StudentRepositoryServiceIntegrationTest extends StudentServiceIntegrationTest { @Autowired @Qualifier("StudentRepositoryService") diff --git a/spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase/service/StudentServiceTest.java b/spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase/service/StudentServiceIntegrationTest.java similarity index 98% rename from spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase/service/StudentServiceTest.java rename to spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase/service/StudentServiceIntegrationTest.java index 0bf2c5d673..fba549a9e5 100644 --- a/spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase/service/StudentServiceTest.java +++ b/spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase/service/StudentServiceIntegrationTest.java @@ -22,7 +22,7 @@ import com.couchbase.client.java.CouchbaseCluster; import com.couchbase.client.java.document.JsonDocument; import com.couchbase.client.java.document.json.JsonObject; -public abstract class StudentServiceTest extends IntegrationTest { +public abstract class StudentServiceIntegrationTest extends IntegrationTest { static final String typeField = "_class"; static final String joe = "Joe"; diff --git a/spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase/service/StudentTemplateServiceTest.java b/spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase/service/StudentTemplateServiceIntegrationTest.java similarity index 79% rename from spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase/service/StudentTemplateServiceTest.java rename to spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase/service/StudentTemplateServiceIntegrationTest.java index dd5be8e059..29fd605bc6 100644 --- a/spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase/service/StudentTemplateServiceTest.java +++ b/spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase/service/StudentTemplateServiceIntegrationTest.java @@ -3,7 +3,7 @@ package org.baeldung.spring.data.couchbase.service; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; -public class StudentTemplateServiceTest extends StudentServiceTest { +public class StudentTemplateServiceIntegrationTest extends StudentServiceIntegrationTest { @Autowired @Qualifier("StudentTemplateService") diff --git a/spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase2b/service/CampusServiceImplTest.java b/spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase2b/service/CampusServiceImplIntegrationTest.java similarity index 98% rename from spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase2b/service/CampusServiceImplTest.java rename to spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase2b/service/CampusServiceImplIntegrationTest.java index d3982e1ecc..71648cf59b 100644 --- a/spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase2b/service/CampusServiceImplTest.java +++ b/spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase2b/service/CampusServiceImplIntegrationTest.java @@ -18,7 +18,7 @@ import org.springframework.data.geo.Distance; import org.springframework.data.geo.Metrics; import org.springframework.data.geo.Point; -public class CampusServiceImplTest extends MultiBucketIntegationTest { +public class CampusServiceImplIntegrationTest extends MultiBucketIntegationTest { @Autowired private CampusServiceImpl campusService; diff --git a/spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase2b/service/PersonServiceImplTest.java b/spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase2b/service/PersonServiceImplIntegrationTest.java similarity index 98% rename from spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase2b/service/PersonServiceImplTest.java rename to spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase2b/service/PersonServiceImplIntegrationTest.java index e1a880d9da..819798d536 100644 --- a/spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase2b/service/PersonServiceImplTest.java +++ b/spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase2b/service/PersonServiceImplIntegrationTest.java @@ -21,7 +21,7 @@ import com.couchbase.client.java.CouchbaseCluster; import com.couchbase.client.java.document.JsonDocument; import com.couchbase.client.java.document.json.JsonObject; -public class PersonServiceImplTest extends MultiBucketIntegationTest { +public class PersonServiceImplIntegrationTest extends MultiBucketIntegationTest { static final String typeField = "_class"; static final String john = "John"; diff --git a/spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase2b/service/StudentServiceImplTest.java b/spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase2b/service/StudentServiceImplIntegrationTest.java similarity index 98% rename from spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase2b/service/StudentServiceImplTest.java rename to spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase2b/service/StudentServiceImplIntegrationTest.java index c503726377..f37f11744d 100644 --- a/spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase2b/service/StudentServiceImplTest.java +++ b/spring-data-couchbase-2/src/test/java/org/baeldung/spring/data/couchbase2b/service/StudentServiceImplIntegrationTest.java @@ -23,7 +23,7 @@ import com.couchbase.client.java.CouchbaseCluster; import com.couchbase.client.java.document.JsonDocument; import com.couchbase.client.java.document.json.JsonObject; -public class StudentServiceImplTest extends MultiBucketIntegationTest { +public class StudentServiceImplIntegrationTest extends MultiBucketIntegationTest { static final String typeField = "_class"; static final String joe = "Joe"; From 7d59175bb6969b3e43e373de06a315d8e0f4f95d Mon Sep 17 00:00:00 2001 From: maibin Date: Wed, 19 Oct 2016 16:19:08 +0200 Subject: [PATCH 025/215] Executable WAR (#757) * Expression-Based Access Control PermitAll, hasRole, hasAnyRole etc. I modified classes regards to Security * Added test cases for Spring Security Expressions * Handler Interceptor - logging example * Test for logger interceptor * Removed conflicted part * UserInterceptor (adding user information to model) * Spring Handler Interceptor - session timers * Spring Security CSRF attack protection with Thymeleaf * Fix and(); * Logger update * Changed config for Thymeleaf * Thymeleaf Natural Processing and Inlining * Expression Utility Objects, Thymeleaf * listOfStudents edited * Thymeleaf layout decorators * Executable Jar with Maven * Maven War executable --- spring-thymeleaf/pom.xml | 113 ++++++++++++++++++++++++++------------- 1 file changed, 76 insertions(+), 37 deletions(-) diff --git a/spring-thymeleaf/pom.xml b/spring-thymeleaf/pom.xml index d2b3be1651..e59ce77e57 100644 --- a/spring-thymeleaf/pom.xml +++ b/spring-thymeleaf/pom.xml @@ -166,47 +166,86 @@ ${maven-surefire-plugin.version} - **/*IntegrationTest.java - **/*LiveTest.java + **/*IntegrationTest.java + **/*LiveTest.java - + + + org.codehaus.cargo + cargo-maven2-plugin + ${cargo-maven2-plugin.version} + + true + + jetty8x + embedded + + + + + + 8082 + + + + + + org.apache.tomcat.maven + tomcat7-maven-plugin + 2.0 + + + tomcat-run + + exec-war-only + + package + + / + false + webapp.jar + utf-8 + + + + - - - integration - - - - org.apache.maven.plugins - maven-surefire-plugin - - - integration-test - - test - - - - **/*LiveTest.java - - - **/*IntegrationTest.java - - - - - - - json - - - - - - - + + + integration + + + + org.apache.maven.plugins + maven-surefire-plugin + + + integration-test + + test + + + + **/*LiveTest.java + + + **/*IntegrationTest.java + + + + + + + json + + + + + + + From 09825ca25ad14739a27213e341a9f8b9fa59ae95 Mon Sep 17 00:00:00 2001 From: DOHA Date: Wed, 19 Oct 2016 16:25:35 +0200 Subject: [PATCH 026/215] add integration test profile --- spring-data-cassandra/pom.xml | 51 +++++++++++++++++++++++++++++++++-- 1 file changed, 49 insertions(+), 2 deletions(-) diff --git a/spring-data-cassandra/pom.xml b/spring-data-cassandra/pom.xml index e5f8779942..5c1a42b8bd 100644 --- a/spring-data-cassandra/pom.xml +++ b/spring-data-cassandra/pom.xml @@ -23,6 +23,7 @@ 2.1.9.2 2.1.9.2 2.0-0 + 2.19.1 @@ -108,6 +109,52 @@ 1.7 - - + + org.apache.maven.plugins + maven-surefire-plugin + ${maven-surefire-plugin.version} + + + **/*IntegrationTest.java + **/*LiveTest.java + + + + + + + + + integration + + + + org.apache.maven.plugins + maven-surefire-plugin + + + integration-test + + test + + + + **/*LiveTest.java + + + **/*IntegrationTest.java + + + + + + + json + + + + + + + From e4f1be2daa87bdbd1c212d7de905c87ac3004667 Mon Sep 17 00:00:00 2001 From: DOHA Date: Wed, 19 Oct 2016 16:45:26 +0200 Subject: [PATCH 027/215] add integration test profile --- spring-cucumber/pom.xml | 52 +++++++++++++++++-- ...Test.java => CucumberIntegrationTest.java} | 2 +- ...efs.java => OtherDefsIntegrationTest.java} | 2 +- ...Defs.java => StepDefsIntegrationTest.java} | 2 +- 4 files changed, 52 insertions(+), 6 deletions(-) rename spring-cucumber/src/test/java/com/baeldung/{CucumberTest.java => CucumberIntegrationTest.java} (84%) rename spring-cucumber/src/test/java/com/baeldung/{OtherDefs.java => OtherDefsIntegrationTest.java} (85%) rename spring-cucumber/src/test/java/com/baeldung/{StepDefs.java => StepDefsIntegrationTest.java} (93%) diff --git a/spring-cucumber/pom.xml b/spring-cucumber/pom.xml index f3b9c983f0..b493962a75 100644 --- a/spring-cucumber/pom.xml +++ b/spring-cucumber/pom.xml @@ -73,17 +73,63 @@ - - - + + + org.springframework.boot spring-boot-maven-plugin + + org.apache.maven.plugins + maven-surefire-plugin + + + **/*IntegrationTest.java + **/*LiveTest.java + + + + + + + + integration + + + + org.apache.maven.plugins + maven-surefire-plugin + + + integration-test + + test + + + + **/*LiveTest.java + + + **/*IntegrationTest.java + + + + + + + json + + + + + + + diff --git a/spring-cucumber/src/test/java/com/baeldung/CucumberTest.java b/spring-cucumber/src/test/java/com/baeldung/CucumberIntegrationTest.java similarity index 84% rename from spring-cucumber/src/test/java/com/baeldung/CucumberTest.java rename to spring-cucumber/src/test/java/com/baeldung/CucumberIntegrationTest.java index c31a35b271..56eb810c09 100644 --- a/spring-cucumber/src/test/java/com/baeldung/CucumberTest.java +++ b/spring-cucumber/src/test/java/com/baeldung/CucumberIntegrationTest.java @@ -6,5 +6,5 @@ import org.junit.runner.RunWith; @RunWith(Cucumber.class) @CucumberOptions(features = "src/test/resources") -public class CucumberTest { +public class CucumberIntegrationTest { } \ No newline at end of file diff --git a/spring-cucumber/src/test/java/com/baeldung/OtherDefs.java b/spring-cucumber/src/test/java/com/baeldung/OtherDefsIntegrationTest.java similarity index 85% rename from spring-cucumber/src/test/java/com/baeldung/OtherDefs.java rename to spring-cucumber/src/test/java/com/baeldung/OtherDefsIntegrationTest.java index edbc14f319..17f298c3fb 100644 --- a/spring-cucumber/src/test/java/com/baeldung/OtherDefs.java +++ b/spring-cucumber/src/test/java/com/baeldung/OtherDefsIntegrationTest.java @@ -3,7 +3,7 @@ package com.baeldung; import cucumber.api.java.en.Given; import cucumber.api.java.en.When; -public class OtherDefs extends SpringIntegrationTest { +public class OtherDefsIntegrationTest extends SpringIntegrationTest { @When("^the client calls /baeldung$") public void the_client_issues_POST_hello() throws Throwable { executePost("http://localhost:8080/baeldung"); diff --git a/spring-cucumber/src/test/java/com/baeldung/StepDefs.java b/spring-cucumber/src/test/java/com/baeldung/StepDefsIntegrationTest.java similarity index 93% rename from spring-cucumber/src/test/java/com/baeldung/StepDefs.java rename to spring-cucumber/src/test/java/com/baeldung/StepDefsIntegrationTest.java index 865a1e13fa..8220d5e861 100644 --- a/spring-cucumber/src/test/java/com/baeldung/StepDefs.java +++ b/spring-cucumber/src/test/java/com/baeldung/StepDefsIntegrationTest.java @@ -9,7 +9,7 @@ import cucumber.api.java.en.And; import cucumber.api.java.en.Then; import cucumber.api.java.en.When; -public class StepDefs extends SpringIntegrationTest { +public class StepDefsIntegrationTest extends SpringIntegrationTest { @When("^the client calls /version$") public void the_client_issues_GET_version() throws Throwable { From 72bdf6c2be5671079e7959683a051523177c554e Mon Sep 17 00:00:00 2001 From: Thai Nguyen Date: Wed, 19 Oct 2016 22:27:02 +0700 Subject: [PATCH 028/215] Changes HTTP request handling methods, adds negative test cases --- .../cxf/jaxrs/implementation/Baeldung.java | 17 +++--- .../cxf/jaxrs/implementation/Course.java | 34 ++++++++---- .../cxf/jaxrs/implementation/Student.java | 10 ++++ .../src/main/resources/changed_course.xml | 4 ++ .../src/main/resources/conflict_student.xml | 4 ++ .../{student.xml => created_student.xml} | 1 - .../{course.xml => non_existent_course.xml} | 0 .../src/main/resources/unchanged_course.xml | 4 ++ .../cxf/jaxrs/implementation/ServiceTest.java | 54 ++++++++++++++++--- 9 files changed, 101 insertions(+), 27 deletions(-) create mode 100644 apache-cxf/cxf-jaxrs-implementation/src/main/resources/changed_course.xml create mode 100644 apache-cxf/cxf-jaxrs-implementation/src/main/resources/conflict_student.xml rename apache-cxf/cxf-jaxrs-implementation/src/main/resources/{student.xml => created_student.xml} (98%) rename apache-cxf/cxf-jaxrs-implementation/src/main/resources/{course.xml => non_existent_course.xml} (100%) create mode 100644 apache-cxf/cxf-jaxrs-implementation/src/main/resources/unchanged_course.xml diff --git a/apache-cxf/cxf-jaxrs-implementation/src/main/java/com/baeldung/cxf/jaxrs/implementation/Baeldung.java b/apache-cxf/cxf-jaxrs-implementation/src/main/java/com/baeldung/cxf/jaxrs/implementation/Baeldung.java index 592df4b7c3..39872f4e32 100644 --- a/apache-cxf/cxf-jaxrs-implementation/src/main/java/com/baeldung/cxf/jaxrs/implementation/Baeldung.java +++ b/apache-cxf/cxf-jaxrs-implementation/src/main/java/com/baeldung/cxf/jaxrs/implementation/Baeldung.java @@ -44,15 +44,16 @@ public class Baeldung { @PUT @Path("courses/{courseOrder}") - public Response putCourse(@PathParam("courseOrder") int courseOrder, Course course) { - Course existingCourse = courses.get(courseOrder); - - if (existingCourse == null || existingCourse.getId() != course.getId() || !(existingCourse.getName().equals(course.getName()))) { - courses.put(courseOrder, course); - return Response.ok().build(); + public Response updateCourse(@PathParam("courseOrder") int courseOrder, Course course) { + Course existingCourse = courses.get(courseOrder); + if (existingCourse == null) { + return Response.status(Response.Status.NOT_FOUND).build(); } - - return Response.notModified().build(); + if (existingCourse.equals(course)) { + return Response.notModified().build(); + } + courses.put(courseOrder, course); + return Response.ok().build(); } @Path("courses/{courseOrder}/students") diff --git a/apache-cxf/cxf-jaxrs-implementation/src/main/java/com/baeldung/cxf/jaxrs/implementation/Course.java b/apache-cxf/cxf-jaxrs-implementation/src/main/java/com/baeldung/cxf/jaxrs/implementation/Course.java index 32689a332f..efb7191290 100644 --- a/apache-cxf/cxf-jaxrs-implementation/src/main/java/com/baeldung/cxf/jaxrs/implementation/Course.java +++ b/apache-cxf/cxf-jaxrs-implementation/src/main/java/com/baeldung/cxf/jaxrs/implementation/Course.java @@ -3,6 +3,7 @@ package com.baeldung.cxf.jaxrs.implementation; import javax.ws.rs.*; import javax.ws.rs.core.Response; import javax.xml.bind.annotation.XmlRootElement; + import java.util.ArrayList; import java.util.List; @@ -35,31 +36,42 @@ public class Course { public void setStudents(List students) { this.students = students; } - + @GET @Path("{studentOrder}") - public Student getStudent(@PathParam("studentOrder")int studentOrder) { + public Student getStudent(@PathParam("studentOrder") int studentOrder) { return students.get(studentOrder); } - + @POST - public Response postStudent(Student student) { + public Response createStudent(Student student) { if (students == null) { students = new ArrayList<>(); } + if (students.contains(student)) { + return Response.status(Response.Status.CONFLICT).build(); + } students.add(student); return Response.ok(student).build(); } - + @DELETE @Path("{studentOrder}") public Response deleteStudent(@PathParam("studentOrder") int studentOrder) { - Student student = students.get(studentOrder); - if (student != null) { - students.remove(studentOrder); - return Response.ok().build(); - } else { - return Response.notModified().build(); + if (students == null || studentOrder >= students.size()) { + return Response.status(Response.Status.NOT_FOUND).build(); } + students.remove(studentOrder); + return Response.ok().build(); + } + + @Override + public int hashCode() { + return id + name.hashCode(); + } + + @Override + public boolean equals(Object obj) { + return (obj instanceof Course) && (id == ((Course) obj).getId()) && (name.equals(((Course) obj).getName())); } } \ No newline at end of file diff --git a/apache-cxf/cxf-jaxrs-implementation/src/main/java/com/baeldung/cxf/jaxrs/implementation/Student.java b/apache-cxf/cxf-jaxrs-implementation/src/main/java/com/baeldung/cxf/jaxrs/implementation/Student.java index de782e4edb..bd3dad0f5e 100644 --- a/apache-cxf/cxf-jaxrs-implementation/src/main/java/com/baeldung/cxf/jaxrs/implementation/Student.java +++ b/apache-cxf/cxf-jaxrs-implementation/src/main/java/com/baeldung/cxf/jaxrs/implementation/Student.java @@ -22,4 +22,14 @@ public class Student { public void setName(String name) { this.name = name; } + + @Override + public int hashCode() { + return id + name.hashCode(); + } + + @Override + public boolean equals(Object obj) { + return (obj instanceof Student) && (id == ((Student) obj).getId()) && (name.equals(((Student) obj).getName())); + } } \ No newline at end of file diff --git a/apache-cxf/cxf-jaxrs-implementation/src/main/resources/changed_course.xml b/apache-cxf/cxf-jaxrs-implementation/src/main/resources/changed_course.xml new file mode 100644 index 0000000000..097cf2ce58 --- /dev/null +++ b/apache-cxf/cxf-jaxrs-implementation/src/main/resources/changed_course.xml @@ -0,0 +1,4 @@ + + 2 + Apache CXF Support for RESTful + \ No newline at end of file diff --git a/apache-cxf/cxf-jaxrs-implementation/src/main/resources/conflict_student.xml b/apache-cxf/cxf-jaxrs-implementation/src/main/resources/conflict_student.xml new file mode 100644 index 0000000000..ccf97edb2e --- /dev/null +++ b/apache-cxf/cxf-jaxrs-implementation/src/main/resources/conflict_student.xml @@ -0,0 +1,4 @@ + + 1 + Student A + \ No newline at end of file diff --git a/apache-cxf/cxf-jaxrs-implementation/src/main/resources/student.xml b/apache-cxf/cxf-jaxrs-implementation/src/main/resources/created_student.xml similarity index 98% rename from apache-cxf/cxf-jaxrs-implementation/src/main/resources/student.xml rename to apache-cxf/cxf-jaxrs-implementation/src/main/resources/created_student.xml index 7fb6189815..068c9dae4b 100644 --- a/apache-cxf/cxf-jaxrs-implementation/src/main/resources/student.xml +++ b/apache-cxf/cxf-jaxrs-implementation/src/main/resources/created_student.xml @@ -1,4 +1,3 @@ - 3 Student C diff --git a/apache-cxf/cxf-jaxrs-implementation/src/main/resources/course.xml b/apache-cxf/cxf-jaxrs-implementation/src/main/resources/non_existent_course.xml similarity index 100% rename from apache-cxf/cxf-jaxrs-implementation/src/main/resources/course.xml rename to apache-cxf/cxf-jaxrs-implementation/src/main/resources/non_existent_course.xml diff --git a/apache-cxf/cxf-jaxrs-implementation/src/main/resources/unchanged_course.xml b/apache-cxf/cxf-jaxrs-implementation/src/main/resources/unchanged_course.xml new file mode 100644 index 0000000000..5936fdc094 --- /dev/null +++ b/apache-cxf/cxf-jaxrs-implementation/src/main/resources/unchanged_course.xml @@ -0,0 +1,4 @@ + + 1 + REST with Spring + \ No newline at end of file diff --git a/apache-cxf/cxf-jaxrs-implementation/src/test/java/com/baeldung/cxf/jaxrs/implementation/ServiceTest.java b/apache-cxf/cxf-jaxrs-implementation/src/test/java/com/baeldung/cxf/jaxrs/implementation/ServiceTest.java index 8c606436c8..8d06518df2 100644 --- a/apache-cxf/cxf-jaxrs-implementation/src/test/java/com/baeldung/cxf/jaxrs/implementation/ServiceTest.java +++ b/apache-cxf/cxf-jaxrs-implementation/src/test/java/com/baeldung/cxf/jaxrs/implementation/ServiceTest.java @@ -34,24 +34,57 @@ public class ServiceTest { } @Test - public void whenPutCourse_thenCorrect() throws IOException { + public void whenUpdateNonExistentCourse_thenReceiveNotFoundResponse() throws IOException { HttpPut httpPut = new HttpPut(BASE_URL + "3"); - InputStream resourceStream = this.getClass().getClassLoader().getResourceAsStream("course.xml"); + InputStream resourceStream = this.getClass().getClassLoader().getResourceAsStream("non_existent_course.xml"); + httpPut.setEntity(new InputStreamEntity(resourceStream)); + httpPut.setHeader("Content-Type", "text/xml"); + + HttpResponse response = client.execute(httpPut); + assertEquals(404, response.getStatusLine().getStatusCode()); + } + + @Test + public void whenUpdateUnchangedCourse_thenReceiveNotModifiedResponse() throws IOException { + HttpPut httpPut = new HttpPut(BASE_URL + "1"); + InputStream resourceStream = this.getClass().getClassLoader().getResourceAsStream("unchanged_course.xml"); + httpPut.setEntity(new InputStreamEntity(resourceStream)); + httpPut.setHeader("Content-Type", "text/xml"); + + HttpResponse response = client.execute(httpPut); + assertEquals(304, response.getStatusLine().getStatusCode()); + } + + @Test + public void whenUpdateValidCourse_thenReceiveOKResponse() throws IOException { + HttpPut httpPut = new HttpPut(BASE_URL + "2"); + InputStream resourceStream = this.getClass().getClassLoader().getResourceAsStream("changed_course.xml"); httpPut.setEntity(new InputStreamEntity(resourceStream)); httpPut.setHeader("Content-Type", "text/xml"); HttpResponse response = client.execute(httpPut); assertEquals(200, response.getStatusLine().getStatusCode()); - Course course = getCourse(3); - assertEquals(3, course.getId()); + Course course = getCourse(2); + assertEquals(2, course.getId()); assertEquals("Apache CXF Support for RESTful", course.getName()); } + + @Test + public void whenCreateConflictStudent_thenReceiveConflictResponse() throws IOException { + HttpPost httpPost = new HttpPost(BASE_URL + "1/students"); + InputStream resourceStream = this.getClass().getClassLoader().getResourceAsStream("conflict_student.xml"); + httpPost.setEntity(new InputStreamEntity(resourceStream)); + httpPost.setHeader("Content-Type", "text/xml"); + + HttpResponse response = client.execute(httpPost); + assertEquals(409, response.getStatusLine().getStatusCode()); + } @Test - public void whenPostStudent_thenCorrect() throws IOException { + public void whenCreateValidStudent_thenReceiveOKResponse() throws IOException { HttpPost httpPost = new HttpPost(BASE_URL + "2/students"); - InputStream resourceStream = this.getClass().getClassLoader().getResourceAsStream("student.xml"); + InputStream resourceStream = this.getClass().getClassLoader().getResourceAsStream("created_student.xml"); httpPost.setEntity(new InputStreamEntity(resourceStream)); httpPost.setHeader("Content-Type", "text/xml"); @@ -64,7 +97,14 @@ public class ServiceTest { } @Test - public void whenDeleteStudent_thenCorrect() throws IOException { + public void whenDeleteInvalidStudent_thenReceiveNotFoundResponse() throws IOException { + HttpDelete httpDelete = new HttpDelete(BASE_URL + "1/students/2"); + HttpResponse response = client.execute(httpDelete); + assertEquals(404, response.getStatusLine().getStatusCode()); + } + + @Test + public void whenDeleteValidStudent_thenReceiveOKResponse() throws IOException { HttpDelete httpDelete = new HttpDelete(BASE_URL + "1/students/0"); HttpResponse response = client.execute(httpDelete); assertEquals(200, response.getStatusLine().getStatusCode()); From 15ab6c6326927cdb3fc0d3f81cf90335aa4f9f28 Mon Sep 17 00:00:00 2001 From: Thai Nguyen Date: Thu, 20 Oct 2016 16:41:38 +0700 Subject: [PATCH 029/215] Changes order parameter to id --- .../cxf/jaxrs/implementation/Baeldung.java | 31 ++++++++++++------- .../cxf/jaxrs/implementation/Course.java | 29 ++++++++++------- .../src/main/resources/conflict_student.xml | 4 +-- .../cxf/jaxrs/implementation/ServiceTest.java | 6 ++-- 4 files changed, 43 insertions(+), 27 deletions(-) diff --git a/apache-cxf/cxf-jaxrs-implementation/src/main/java/com/baeldung/cxf/jaxrs/implementation/Baeldung.java b/apache-cxf/cxf-jaxrs-implementation/src/main/java/com/baeldung/cxf/jaxrs/implementation/Baeldung.java index 39872f4e32..9dd63cf3ac 100644 --- a/apache-cxf/cxf-jaxrs-implementation/src/main/java/com/baeldung/cxf/jaxrs/implementation/Baeldung.java +++ b/apache-cxf/cxf-jaxrs-implementation/src/main/java/com/baeldung/cxf/jaxrs/implementation/Baeldung.java @@ -37,27 +37,36 @@ public class Baeldung { } @GET - @Path("courses/{courseOrder}") - public Course getCourse(@PathParam("courseOrder") int courseOrder) { - return courses.get(courseOrder); + @Path("courses/{courseId}") + public Course getCourse(@PathParam("courseId") int courseId) { + return findById(courseId); } @PUT - @Path("courses/{courseOrder}") - public Response updateCourse(@PathParam("courseOrder") int courseOrder, Course course) { - Course existingCourse = courses.get(courseOrder); + @Path("courses/{courseId}") + public Response updateCourse(@PathParam("courseId") int courseId, Course course) { + Course existingCourse = findById(courseId); if (existingCourse == null) { return Response.status(Response.Status.NOT_FOUND).build(); } if (existingCourse.equals(course)) { - return Response.notModified().build(); + return Response.notModified().build(); } - courses.put(courseOrder, course); + courses.put(courseId, course); return Response.ok().build(); } - @Path("courses/{courseOrder}/students") - public Course pathToStudent(@PathParam("courseOrder") int courseOrder) { - return courses.get(courseOrder); + @Path("courses/{courseId}/students") + public Course pathToStudent(@PathParam("courseId") int courseId) { + return findById(courseId); + } + + private Course findById(int id) { + for (Map.Entry course : courses.entrySet()) { + if (course.getKey() == id) { + return course.getValue(); + } + } + return null; } } \ No newline at end of file diff --git a/apache-cxf/cxf-jaxrs-implementation/src/main/java/com/baeldung/cxf/jaxrs/implementation/Course.java b/apache-cxf/cxf-jaxrs-implementation/src/main/java/com/baeldung/cxf/jaxrs/implementation/Course.java index efb7191290..dfbe8eef1d 100644 --- a/apache-cxf/cxf-jaxrs-implementation/src/main/java/com/baeldung/cxf/jaxrs/implementation/Course.java +++ b/apache-cxf/cxf-jaxrs-implementation/src/main/java/com/baeldung/cxf/jaxrs/implementation/Course.java @@ -11,7 +11,7 @@ import java.util.List; public class Course { private int id; private String name; - private List students; + private List students = new ArrayList<>(); public int getId() { return id; @@ -38,16 +38,13 @@ public class Course { } @GET - @Path("{studentOrder}") - public Student getStudent(@PathParam("studentOrder") int studentOrder) { - return students.get(studentOrder); + @Path("{studentId}") + public Student getStudent(@PathParam("studentId") int studentId) { + return findById(studentId); } @POST public Response createStudent(Student student) { - if (students == null) { - students = new ArrayList<>(); - } if (students.contains(student)) { return Response.status(Response.Status.CONFLICT).build(); } @@ -56,14 +53,24 @@ public class Course { } @DELETE - @Path("{studentOrder}") - public Response deleteStudent(@PathParam("studentOrder") int studentOrder) { - if (students == null || studentOrder >= students.size()) { + @Path("{studentId}") + public Response deleteStudent(@PathParam("studentId") int studentId) { + Student student = findById(studentId); + if (student == null) { return Response.status(Response.Status.NOT_FOUND).build(); } - students.remove(studentOrder); + students.remove(student); return Response.ok().build(); } + + private Student findById(int id) { + for (Student student : students) { + if (student.getId() == id) { + return student; + } + } + return null; + } @Override public int hashCode() { diff --git a/apache-cxf/cxf-jaxrs-implementation/src/main/resources/conflict_student.xml b/apache-cxf/cxf-jaxrs-implementation/src/main/resources/conflict_student.xml index ccf97edb2e..7d083dbdc9 100644 --- a/apache-cxf/cxf-jaxrs-implementation/src/main/resources/conflict_student.xml +++ b/apache-cxf/cxf-jaxrs-implementation/src/main/resources/conflict_student.xml @@ -1,4 +1,4 @@ - 1 - Student A + 2 + Student B \ No newline at end of file diff --git a/apache-cxf/cxf-jaxrs-implementation/src/test/java/com/baeldung/cxf/jaxrs/implementation/ServiceTest.java b/apache-cxf/cxf-jaxrs-implementation/src/test/java/com/baeldung/cxf/jaxrs/implementation/ServiceTest.java index 8d06518df2..b8fc833194 100644 --- a/apache-cxf/cxf-jaxrs-implementation/src/test/java/com/baeldung/cxf/jaxrs/implementation/ServiceTest.java +++ b/apache-cxf/cxf-jaxrs-implementation/src/test/java/com/baeldung/cxf/jaxrs/implementation/ServiceTest.java @@ -91,21 +91,21 @@ public class ServiceTest { HttpResponse response = client.execute(httpPost); assertEquals(200, response.getStatusLine().getStatusCode()); - Student student = getStudent(2, 0); + Student student = getStudent(2, 3); assertEquals(3, student.getId()); assertEquals("Student C", student.getName()); } @Test public void whenDeleteInvalidStudent_thenReceiveNotFoundResponse() throws IOException { - HttpDelete httpDelete = new HttpDelete(BASE_URL + "1/students/2"); + HttpDelete httpDelete = new HttpDelete(BASE_URL + "1/students/3"); HttpResponse response = client.execute(httpDelete); assertEquals(404, response.getStatusLine().getStatusCode()); } @Test public void whenDeleteValidStudent_thenReceiveOKResponse() throws IOException { - HttpDelete httpDelete = new HttpDelete(BASE_URL + "1/students/0"); + HttpDelete httpDelete = new HttpDelete(BASE_URL + "1/students/1"); HttpResponse response = client.execute(httpDelete); assertEquals(200, response.getStatusLine().getStatusCode()); From 4d54080b3ec57559b0c1d842fcb885a23340f3c5 Mon Sep 17 00:00:00 2001 From: Nikhil Khatwani Date: Thu, 20 Oct 2016 16:00:31 +0530 Subject: [PATCH 030/215] Fixed Failing EchoTest --- .../java/nio/selector/EchoServer.java | 26 ++++++++++++++----- .../baeldung/java/nio/selector/EchoTest.java | 7 +++-- 2 files changed, 24 insertions(+), 9 deletions(-) diff --git a/core-java/src/main/java/com/baeldung/java/nio/selector/EchoServer.java b/core-java/src/main/java/com/baeldung/java/nio/selector/EchoServer.java index aedcbb319b..285d4e51fc 100644 --- a/core-java/src/main/java/com/baeldung/java/nio/selector/EchoServer.java +++ b/core-java/src/main/java/com/baeldung/java/nio/selector/EchoServer.java @@ -1,14 +1,15 @@ package com.baeldung.java.nio.selector; +import java.io.File; +import java.io.IOException; +import java.net.InetSocketAddress; +import java.nio.ByteBuffer; +import java.nio.channels.SelectionKey; +import java.nio.channels.Selector; import java.nio.channels.ServerSocketChannel; import java.nio.channels.SocketChannel; -import java.nio.channels.Selector; -import java.nio.channels.SelectionKey; -import java.nio.ByteBuffer; -import java.io.IOException; -import java.util.Set; import java.util.Iterator; -import java.net.InetSocketAddress; +import java.util.Set; public class EchoServer { @@ -47,4 +48,15 @@ public class EchoServer { } } } -} + + public static Process start() throws IOException, InterruptedException { + String javaHome = System.getProperty("java.home"); + String javaBin = javaHome + File.separator + "bin" + File.separator + "java"; + String classpath = System.getProperty("java.class.path"); + String className = EchoServer.class.getCanonicalName(); + + ProcessBuilder builder = new ProcessBuilder(javaBin, "-cp", classpath, className); + + return builder.start(); + } +} \ No newline at end of file diff --git a/core-java/src/test/java/com/baeldung/java/nio/selector/EchoTest.java b/core-java/src/test/java/com/baeldung/java/nio/selector/EchoTest.java index 63da2fe2bf..d1ac6df5e4 100644 --- a/core-java/src/test/java/com/baeldung/java/nio/selector/EchoTest.java +++ b/core-java/src/test/java/com/baeldung/java/nio/selector/EchoTest.java @@ -2,17 +2,20 @@ package com.baeldung.java.nio.selector; import static org.junit.Assert.assertEquals; +import java.io.IOException; + import org.junit.Test; public class EchoTest { @Test - public void givenClient_whenServerEchosMessage_thenCorrect() { + public void givenClient_whenServerEchosMessage_thenCorrect() throws IOException, InterruptedException { + Process process = EchoServer.start(); EchoClient client = EchoClient.start(); String resp1 = client.sendMessage("hello"); String resp2 = client.sendMessage("world"); assertEquals("hello", resp1); assertEquals("world", resp2); + process.destroy(); } - } From b6e9223fed08d43d78241020b39f8b01d9507aa9 Mon Sep 17 00:00:00 2001 From: Thai Nguyen Date: Thu, 20 Oct 2016 17:47:34 +0700 Subject: [PATCH 031/215] Refactors Apache CXF support for REST --- .../com/baeldung/cxf/jaxrs/implementation/Course.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/apache-cxf/cxf-jaxrs-implementation/src/main/java/com/baeldung/cxf/jaxrs/implementation/Course.java b/apache-cxf/cxf-jaxrs-implementation/src/main/java/com/baeldung/cxf/jaxrs/implementation/Course.java index dfbe8eef1d..dba9b9c661 100644 --- a/apache-cxf/cxf-jaxrs-implementation/src/main/java/com/baeldung/cxf/jaxrs/implementation/Course.java +++ b/apache-cxf/cxf-jaxrs-implementation/src/main/java/com/baeldung/cxf/jaxrs/implementation/Course.java @@ -45,8 +45,10 @@ public class Course { @POST public Response createStudent(Student student) { - if (students.contains(student)) { - return Response.status(Response.Status.CONFLICT).build(); + for (Student element : students) { + if (element.getId() == student.getId()) { + return Response.status(Response.Status.CONFLICT).build(); + } } students.add(student); return Response.ok(student).build(); @@ -62,7 +64,7 @@ public class Course { students.remove(student); return Response.ok().build(); } - + private Student findById(int id) { for (Student student : students) { if (student.getId() == id) { From 017dc13db1ebf30907a7cb05b42b619a765803fd Mon Sep 17 00:00:00 2001 From: DOHA Date: Thu, 20 Oct 2016 13:44:16 +0200 Subject: [PATCH 032/215] add integration test profile --- spring-boot/pom.xml | 46 +++++++++++++++++++ ...ebjarsdemoApplicationIntegrationTest.java} | 2 +- ...Test.java => CommitIdIntegrationTest.java} | 4 +- ...SpringBootApplicationIntegrationTest.java} | 2 +- ...java => SpringBootJPAIntegrationTest.java} | 2 +- ...ava => SpringBootMailIntegrationTest.java} | 2 +- ...s.java => ApplicationIntegrationTest.java} | 2 +- ...va => DemoApplicationIntegrationTest.java} | 2 +- ...java => FooRepositoryIntegrationTest.java} | 4 +- ...a => HibernateSessionIntegrationTest.java} | 4 +- ...=> NoHibernateSessionIntegrationTest.java} | 4 +- ... DetailsServiceClientIntegrationTest.java} | 2 +- .../data-flow-shell/spring-shell.log | 1 + 13 files changed, 62 insertions(+), 15 deletions(-) rename spring-boot/src/test/java/com/baeldung/{WebjarsdemoApplicationTests.java => WebjarsdemoApplicationIntegrationTest.java} (89%) rename spring-boot/src/test/java/com/baeldung/git/{CommitIdTest.java => CommitIdIntegrationTest.java} (94%) rename spring-boot/src/test/java/org/baeldung/{SpringBootApplicationTest.java => SpringBootApplicationIntegrationTest.java} (97%) rename spring-boot/src/test/java/org/baeldung/{SpringBootJPATest.java => SpringBootJPAIntegrationTest.java} (95%) rename spring-boot/src/test/java/org/baeldung/{SpringBootMailTest.java => SpringBootMailIntegrationTest.java} (98%) rename spring-boot/src/test/java/org/baeldung/boot/{ApplicationTests.java => ApplicationIntegrationTest.java} (92%) rename spring-boot/src/test/java/org/baeldung/boot/{DemoApplicationTests.java => DemoApplicationIntegrationTest.java} (90%) rename spring-boot/src/test/java/org/baeldung/boot/repository/{FooRepositoryTest.java => FooRepositoryIntegrationTest.java} (84%) rename spring-boot/src/test/java/org/baeldung/boot/repository/{HibernateSessionTest.java => HibernateSessionIntegrationTest.java} (88%) rename spring-boot/src/test/java/org/baeldung/boot/repository/{NoHibernateSessionTest.java => NoHibernateSessionIntegrationTest.java} (81%) rename spring-boot/src/test/java/org/baeldung/client/{DetailsServiceClientTest.java => DetailsServiceClientIntegrationTest.java} (96%) create mode 100644 spring-cloud-data-flow/data-flow-shell/spring-shell.log diff --git a/spring-boot/pom.xml b/spring-boot/pom.xml index 5281b9b2c0..a2555259b0 100644 --- a/spring-boot/pom.xml +++ b/spring-boot/pom.xml @@ -133,10 +133,56 @@ 2.2.1 + + org.apache.maven.plugins + maven-surefire-plugin + + + **/*IntegrationTest.java + **/*LiveTest.java + + + + + + + integration + + + + org.apache.maven.plugins + maven-surefire-plugin + + + integration-test + + test + + + + **/*LiveTest.java + + + **/*IntegrationTest.java + + + + + + + json + + + + + + + + spring-snapshots diff --git a/spring-boot/src/test/java/com/baeldung/WebjarsdemoApplicationTests.java b/spring-boot/src/test/java/com/baeldung/WebjarsdemoApplicationIntegrationTest.java similarity index 89% rename from spring-boot/src/test/java/com/baeldung/WebjarsdemoApplicationTests.java rename to spring-boot/src/test/java/com/baeldung/WebjarsdemoApplicationIntegrationTest.java index c43b13ea0b..3558682b97 100644 --- a/spring-boot/src/test/java/com/baeldung/WebjarsdemoApplicationTests.java +++ b/spring-boot/src/test/java/com/baeldung/WebjarsdemoApplicationIntegrationTest.java @@ -9,7 +9,7 @@ import org.springframework.test.context.web.WebAppConfiguration; @RunWith(SpringJUnit4ClassRunner.class) @SpringApplicationConfiguration(classes = WebjarsdemoApplication.class) @WebAppConfiguration -public class WebjarsdemoApplicationTests { +public class WebjarsdemoApplicationIntegrationTest { @Test public void contextLoads() { diff --git a/spring-boot/src/test/java/com/baeldung/git/CommitIdTest.java b/spring-boot/src/test/java/com/baeldung/git/CommitIdIntegrationTest.java similarity index 94% rename from spring-boot/src/test/java/com/baeldung/git/CommitIdTest.java rename to spring-boot/src/test/java/com/baeldung/git/CommitIdIntegrationTest.java index c0fc1befd3..348d594c05 100644 --- a/spring-boot/src/test/java/com/baeldung/git/CommitIdTest.java +++ b/spring-boot/src/test/java/com/baeldung/git/CommitIdIntegrationTest.java @@ -12,9 +12,9 @@ import static org.assertj.core.api.Assertions.assertThat; @RunWith(SpringRunner.class) @ContextConfiguration(classes = CommitIdApplication.class) -public class CommitIdTest { +public class CommitIdIntegrationTest { - private static final Logger LOG = LoggerFactory.getLogger(CommitIdTest.class); + private static final Logger LOG = LoggerFactory.getLogger(CommitIdIntegrationTest.class); @Value("${git.commit.message.short:UNKNOWN}") private String commitMessage; diff --git a/spring-boot/src/test/java/org/baeldung/SpringBootApplicationTest.java b/spring-boot/src/test/java/org/baeldung/SpringBootApplicationIntegrationTest.java similarity index 97% rename from spring-boot/src/test/java/org/baeldung/SpringBootApplicationTest.java rename to spring-boot/src/test/java/org/baeldung/SpringBootApplicationIntegrationTest.java index 1255180e44..3c5444942c 100644 --- a/spring-boot/src/test/java/org/baeldung/SpringBootApplicationTest.java +++ b/spring-boot/src/test/java/org/baeldung/SpringBootApplicationIntegrationTest.java @@ -26,7 +26,7 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers. @RunWith(SpringJUnit4ClassRunner.class) @SpringApplicationConfiguration(classes = Application.class) @WebAppConfiguration -public class SpringBootApplicationTest { +public class SpringBootApplicationIntegrationTest { @Autowired private WebApplicationContext webApplicationContext; private MockMvc mockMvc; diff --git a/spring-boot/src/test/java/org/baeldung/SpringBootJPATest.java b/spring-boot/src/test/java/org/baeldung/SpringBootJPAIntegrationTest.java similarity index 95% rename from spring-boot/src/test/java/org/baeldung/SpringBootJPATest.java rename to spring-boot/src/test/java/org/baeldung/SpringBootJPAIntegrationTest.java index 8a6b5139fe..233684bc24 100644 --- a/spring-boot/src/test/java/org/baeldung/SpringBootJPATest.java +++ b/spring-boot/src/test/java/org/baeldung/SpringBootJPAIntegrationTest.java @@ -13,7 +13,7 @@ import static org.junit.Assert.assertNotNull; @RunWith(SpringJUnit4ClassRunner.class) @SpringApplicationConfiguration(classes = Application.class) -public class SpringBootJPATest { +public class SpringBootJPAIntegrationTest { @Autowired private GenericEntityRepository genericEntityRepository; diff --git a/spring-boot/src/test/java/org/baeldung/SpringBootMailTest.java b/spring-boot/src/test/java/org/baeldung/SpringBootMailIntegrationTest.java similarity index 98% rename from spring-boot/src/test/java/org/baeldung/SpringBootMailTest.java rename to spring-boot/src/test/java/org/baeldung/SpringBootMailIntegrationTest.java index f4ce158661..cec25f20f9 100644 --- a/spring-boot/src/test/java/org/baeldung/SpringBootMailTest.java +++ b/spring-boot/src/test/java/org/baeldung/SpringBootMailIntegrationTest.java @@ -24,7 +24,7 @@ import static org.junit.Assert.assertThat; @RunWith(SpringJUnit4ClassRunner.class) @SpringApplicationConfiguration(classes = Application.class) -public class SpringBootMailTest { +public class SpringBootMailIntegrationTest { @Autowired private JavaMailSender javaMailSender; diff --git a/spring-boot/src/test/java/org/baeldung/boot/ApplicationTests.java b/spring-boot/src/test/java/org/baeldung/boot/ApplicationIntegrationTest.java similarity index 92% rename from spring-boot/src/test/java/org/baeldung/boot/ApplicationTests.java rename to spring-boot/src/test/java/org/baeldung/boot/ApplicationIntegrationTest.java index 7911465048..57a8abc1ee 100644 --- a/spring-boot/src/test/java/org/baeldung/boot/ApplicationTests.java +++ b/spring-boot/src/test/java/org/baeldung/boot/ApplicationIntegrationTest.java @@ -10,7 +10,7 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; @RunWith(SpringJUnit4ClassRunner.class) @SpringBootTest(classes = Application.class) @TestPropertySource("classpath:exception.properties") -public class ApplicationTests { +public class ApplicationIntegrationTest { @Test public void contextLoads() { } diff --git a/spring-boot/src/test/java/org/baeldung/boot/DemoApplicationTests.java b/spring-boot/src/test/java/org/baeldung/boot/DemoApplicationIntegrationTest.java similarity index 90% rename from spring-boot/src/test/java/org/baeldung/boot/DemoApplicationTests.java rename to spring-boot/src/test/java/org/baeldung/boot/DemoApplicationIntegrationTest.java index 7f9b2ba912..4fcea35b4a 100644 --- a/spring-boot/src/test/java/org/baeldung/boot/DemoApplicationTests.java +++ b/spring-boot/src/test/java/org/baeldung/boot/DemoApplicationIntegrationTest.java @@ -9,7 +9,7 @@ import org.springframework.test.context.web.WebAppConfiguration; @RunWith(SpringJUnit4ClassRunner.class) @SpringBootTest(classes = DemoApplication.class) @WebAppConfiguration -public class DemoApplicationTests { +public class DemoApplicationIntegrationTest { @Test public void contextLoads() { diff --git a/spring-boot/src/test/java/org/baeldung/boot/repository/FooRepositoryTest.java b/spring-boot/src/test/java/org/baeldung/boot/repository/FooRepositoryIntegrationTest.java similarity index 84% rename from spring-boot/src/test/java/org/baeldung/boot/repository/FooRepositoryTest.java rename to spring-boot/src/test/java/org/baeldung/boot/repository/FooRepositoryIntegrationTest.java index 9de7790a75..a844b26b2d 100644 --- a/spring-boot/src/test/java/org/baeldung/boot/repository/FooRepositoryTest.java +++ b/spring-boot/src/test/java/org/baeldung/boot/repository/FooRepositoryIntegrationTest.java @@ -2,7 +2,7 @@ package org.baeldung.boot.repository; import static org.junit.Assert.assertThat; -import org.baeldung.boot.DemoApplicationTests; +import org.baeldung.boot.DemoApplicationIntegrationTest; import org.baeldung.boot.model.Foo; import static org.hamcrest.Matchers.notNullValue; @@ -14,7 +14,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; @Transactional -public class FooRepositoryTest extends DemoApplicationTests { +public class FooRepositoryIntegrationTest extends DemoApplicationIntegrationTest { @Autowired private FooRepository fooRepository; diff --git a/spring-boot/src/test/java/org/baeldung/boot/repository/HibernateSessionTest.java b/spring-boot/src/test/java/org/baeldung/boot/repository/HibernateSessionIntegrationTest.java similarity index 88% rename from spring-boot/src/test/java/org/baeldung/boot/repository/HibernateSessionTest.java rename to spring-boot/src/test/java/org/baeldung/boot/repository/HibernateSessionIntegrationTest.java index 4cb1b60cde..be992bcc36 100644 --- a/spring-boot/src/test/java/org/baeldung/boot/repository/HibernateSessionTest.java +++ b/spring-boot/src/test/java/org/baeldung/boot/repository/HibernateSessionIntegrationTest.java @@ -4,7 +4,7 @@ import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.CoreMatchers.notNullValue; import static org.junit.Assert.assertThat; -import org.baeldung.boot.ApplicationTests; +import org.baeldung.boot.ApplicationIntegrationTest; import org.baeldung.boot.model.Foo; import org.baeldung.session.exception.repository.FooRepository; import org.junit.Test; @@ -14,7 +14,7 @@ import org.springframework.transaction.annotation.Transactional; @Transactional @TestPropertySource("classpath:exception-hibernate.properties") -public class HibernateSessionTest extends ApplicationTests { +public class HibernateSessionIntegrationTest extends ApplicationIntegrationTest { @Autowired private FooRepository fooRepository; diff --git a/spring-boot/src/test/java/org/baeldung/boot/repository/NoHibernateSessionTest.java b/spring-boot/src/test/java/org/baeldung/boot/repository/NoHibernateSessionIntegrationTest.java similarity index 81% rename from spring-boot/src/test/java/org/baeldung/boot/repository/NoHibernateSessionTest.java rename to spring-boot/src/test/java/org/baeldung/boot/repository/NoHibernateSessionIntegrationTest.java index 5f5a49841a..55b7fa7216 100644 --- a/spring-boot/src/test/java/org/baeldung/boot/repository/NoHibernateSessionTest.java +++ b/spring-boot/src/test/java/org/baeldung/boot/repository/NoHibernateSessionIntegrationTest.java @@ -1,6 +1,6 @@ package org.baeldung.boot.repository; -import org.baeldung.boot.ApplicationTests; +import org.baeldung.boot.ApplicationIntegrationTest; import org.baeldung.boot.model.Foo; import org.baeldung.session.exception.repository.FooRepository; import org.hibernate.HibernateException; @@ -9,7 +9,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; @Transactional -public class NoHibernateSessionTest extends ApplicationTests { +public class NoHibernateSessionIntegrationTest extends ApplicationIntegrationTest { @Autowired private FooRepository fooRepository; diff --git a/spring-boot/src/test/java/org/baeldung/client/DetailsServiceClientTest.java b/spring-boot/src/test/java/org/baeldung/client/DetailsServiceClientIntegrationTest.java similarity index 96% rename from spring-boot/src/test/java/org/baeldung/client/DetailsServiceClientTest.java rename to spring-boot/src/test/java/org/baeldung/client/DetailsServiceClientIntegrationTest.java index ba0da968ad..5627855aa3 100644 --- a/spring-boot/src/test/java/org/baeldung/client/DetailsServiceClientTest.java +++ b/spring-boot/src/test/java/org/baeldung/client/DetailsServiceClientIntegrationTest.java @@ -16,7 +16,7 @@ import static org.springframework.test.web.client.response.MockRestResponseCreat @RunWith(SpringRunner.class) @RestClientTest(DetailsServiceClient.class) -public class DetailsServiceClientTest { +public class DetailsServiceClientIntegrationTest { @Autowired private DetailsServiceClient client; diff --git a/spring-cloud-data-flow/data-flow-shell/spring-shell.log b/spring-cloud-data-flow/data-flow-shell/spring-shell.log new file mode 100644 index 0000000000..d497215e2a --- /dev/null +++ b/spring-cloud-data-flow/data-flow-shell/spring-shell.log @@ -0,0 +1 @@ +// dataflow 1.2.0.RELEASE log opened at 2016-10-20 13:13:20 From a4f8b50c4f6a1e95a88e991459fa3f07419f28a8 Mon Sep 17 00:00:00 2001 From: DOHA Date: Thu, 20 Oct 2016 13:49:04 +0200 Subject: [PATCH 033/215] add integration test profile --- spring-autowire/pom.xml | 41 +++++++++++++++++++ ...st.java => FooServiceIntegrationTest.java} | 2 +- 2 files changed, 42 insertions(+), 1 deletion(-) rename spring-autowire/src/test/java/com/baeldung/autowire/sample/{FooServiceTest.java => FooServiceIntegrationTest.java} (94%) diff --git a/spring-autowire/pom.xml b/spring-autowire/pom.xml index e28efdae61..fd03c77605 100644 --- a/spring-autowire/pom.xml +++ b/spring-autowire/pom.xml @@ -57,7 +57,48 @@ org.apache.maven.plugins maven-surefire-plugin ${maven-surefire-plugin.version} + + + **/*IntegrationTest.java + **/*LiveTest.java + + + + + + integration + + + + org.apache.maven.plugins + maven-surefire-plugin + + + integration-test + + test + + + + **/*LiveTest.java + + + **/*IntegrationTest.java + + + + + + + json + + + + + + + diff --git a/spring-autowire/src/test/java/com/baeldung/autowire/sample/FooServiceTest.java b/spring-autowire/src/test/java/com/baeldung/autowire/sample/FooServiceIntegrationTest.java similarity index 94% rename from spring-autowire/src/test/java/com/baeldung/autowire/sample/FooServiceTest.java rename to spring-autowire/src/test/java/com/baeldung/autowire/sample/FooServiceIntegrationTest.java index 50e89fcc55..34ba7902ca 100644 --- a/spring-autowire/src/test/java/com/baeldung/autowire/sample/FooServiceTest.java +++ b/spring-autowire/src/test/java/com/baeldung/autowire/sample/FooServiceIntegrationTest.java @@ -10,7 +10,7 @@ import org.springframework.test.context.support.AnnotationConfigContextLoader; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = AppConfig.class, loader = AnnotationConfigContextLoader.class) -public class FooServiceTest { +public class FooServiceIntegrationTest { @Autowired FooService fooService; From 5a0c407987dfd93eb6672170c7665b3f850bb005 Mon Sep 17 00:00:00 2001 From: DOHA Date: Thu, 20 Oct 2016 14:14:55 +0200 Subject: [PATCH 034/215] add integration test profile --- spring-all/pom.xml | 58 ++++++++++++------- ...syncAnnotationExampleIntegrationTest.java} | 2 +- ....java => AsyncWithXMLIntegrationTest.java} | 2 +- ... ControllerAnnotationIntegrationTest.java} | 2 +- ...st.java => ControllerIntegrationTest.java} | 2 +- ... DataAccessAnnotationIntegrationTest.java} | 2 +- ...taAccessFieldCallbackIntegrationTest.java} | 2 +- ...t.java => EmployeeDAOIntegrationTest.java} | 2 +- ...ProfileWithAnnotationIntegrationTest.java} | 2 +- ...ProfileWithAnnotationIntegrationTest.java} | 2 +- ...PlaceHolderPropertiesIntegrationTest.java} | 2 +- ...pertySourcePropertiesIntegrationTest.java} | 2 +- ...uledAnnotationExampleIntegrationTest.java} | 2 +- ...hedulingWithXmlConfigIntegrationTest.java} | 2 +- ...> AttributeAnnotationIntegrationTest.java} | 2 +- ...a => CacheRefinementsIntegrationTest.java} | 2 +- ...va => ComposedMappingIntegrationTest.java} | 2 +- ...nConstructorInjectionIntegrationTest.java} | 2 +- ...> ImplicitConstructorIntegrationTest.java} | 2 +- ...faultMethodsInjectionIntegrationTest.java} | 2 +- ...java => TransactionalIntegrationTest.java} | 2 +- ...ava => ObjectProviderIntegrationTest.java} | 2 +- ...a => ScopeAnnotationsIntegrationTest.java} | 2 +- ...ousCustomSpringEventsIntegrationTest.java} | 2 +- ...textRefreshedListenerIntegrationTest.java} | 2 +- ...ousCustomSpringEventsIntegrationTest.java} | 2 +- ...java => SpringStartupIntegrationTest.java} | 2 +- ...pringStartupXMLConfigIntegrationTest.java} | 2 +- 28 files changed, 63 insertions(+), 49 deletions(-) rename spring-all/src/test/java/org/baeldung/async/{AsyncAnnotationExampleTest.java => AsyncAnnotationExampleIntegrationTest.java} (97%) rename spring-all/src/test/java/org/baeldung/async/{AsyncWithXMLTest.java => AsyncWithXMLIntegrationTest.java} (95%) rename spring-all/src/test/java/org/baeldung/controller/{ControllerAnnotationTest.java => ControllerAnnotationIntegrationTest.java} (95%) rename spring-all/src/test/java/org/baeldung/controller/{ControllerTest.java => ControllerIntegrationTest.java} (98%) rename spring-all/src/test/java/org/baeldung/customannotation/{DataAccessAnnotationTest.java => DataAccessAnnotationIntegrationTest.java} (97%) rename spring-all/src/test/java/org/baeldung/customannotation/{DataAccessFieldCallbackTest.java => DataAccessFieldCallbackIntegrationTest.java} (97%) rename spring-all/src/test/java/org/baeldung/jdbc/{EmployeeDAOTest.java => EmployeeDAOIntegrationTest.java} (99%) rename spring-all/src/test/java/org/baeldung/profiles/{DevProfileWithAnnotationTest.java => DevProfileWithAnnotationIntegrationTest.java} (93%) rename spring-all/src/test/java/org/baeldung/profiles/{ProductionProfileWithAnnotationTest.java => ProductionProfileWithAnnotationIntegrationTest.java} (94%) rename spring-all/src/test/java/org/baeldung/properties/parentchild/{ParentChildPropertyPlaceHolderPropertiesTest.java => ParentChildPropertyPlaceHolderPropertiesIntegrationTest.java} (96%) rename spring-all/src/test/java/org/baeldung/properties/parentchild/{ParentChildPropertySourcePropertiesTest.java => ParentChildPropertySourcePropertiesIntegrationTest.java} (96%) rename spring-all/src/test/java/org/baeldung/scheduling/{ScheduledAnnotationExampleTest.java => ScheduledAnnotationExampleIntegrationTest.java} (90%) rename spring-all/src/test/java/org/baeldung/scheduling/{SchedulingWithXmlConfigTest.java => SchedulingWithXmlConfigIntegrationTest.java} (89%) rename spring-all/src/test/java/org/baeldung/spring43/attributeannotations/{AttributeAnnotationTest.java => AttributeAnnotationIntegrationTest.java} (94%) rename spring-all/src/test/java/org/baeldung/spring43/cache/{CacheRefinementsTest.java => CacheRefinementsIntegrationTest.java} (92%) rename spring-all/src/test/java/org/baeldung/spring43/composedmapping/{ComposedMappingTest.java => ComposedMappingIntegrationTest.java} (94%) rename spring-all/src/test/java/org/baeldung/spring43/ctor/{ConfigurationConstructorInjectionTest.java => ConfigurationConstructorInjectionIntegrationTest.java} (85%) rename spring-all/src/test/java/org/baeldung/spring43/ctor/{ImplicitConstructorTest.java => ImplicitConstructorIntegrationTest.java} (86%) rename spring-all/src/test/java/org/baeldung/spring43/defaultmethods/{DefaultMethodsInjectionTest.java => DefaultMethodsInjectionIntegrationTest.java} (87%) rename spring-all/src/test/java/org/baeldung/spring43/defaultmethods/{TransactionalTest.java => TransactionalIntegrationTest.java} (76%) rename spring-all/src/test/java/org/baeldung/spring43/depresolution/{ObjectProviderTest.java => ObjectProviderIntegrationTest.java} (87%) rename spring-all/src/test/java/org/baeldung/spring43/scopeannotations/{ScopeAnnotationsTest.java => ScopeAnnotationsIntegrationTest.java} (97%) rename spring-all/src/test/java/org/baeldung/springevents/asynchronous/{AsynchronousCustomSpringEventsTest.java => AsynchronousCustomSpringEventsIntegrationTest.java} (93%) rename spring-all/src/test/java/org/baeldung/springevents/synchronous/{ContextRefreshedListenerTest.java => ContextRefreshedListenerIntegrationTest.java} (92%) rename spring-all/src/test/java/org/baeldung/springevents/synchronous/{SynchronousCustomSpringEventsTest.java => SynchronousCustomSpringEventsIntegrationTest.java} (93%) rename spring-all/src/test/java/org/baeldung/startup/{SpringStartupTest.java => SpringStartupIntegrationTest.java} (97%) rename spring-all/src/test/java/org/baeldung/startup/{SpringStartupXMLConfigTest.java => SpringStartupXMLConfigIntegrationTest.java} (93%) diff --git a/spring-all/pom.xml b/spring-all/pom.xml index 003cdacc2c..23f2531b51 100644 --- a/spring-all/pom.xml +++ b/spring-all/pom.xml @@ -224,7 +224,7 @@ maven-surefire-plugin - + **/*IntegrationTest.java @@ -232,31 +232,45 @@ - - org.codehaus.cargo - cargo-maven2-plugin - ${cargo-maven2-plugin.version} - - true - - jetty8x - embedded - - - - - - - 8082 - - - - - + + + integration + + + + org.apache.maven.plugins + maven-surefire-plugin + + + integration-test + + test + + + + **/*LiveTest.java + + + **/*IntegrationTest.java + + + + + + + json + + + + + + + + 4.3.1.RELEASE diff --git a/spring-all/src/test/java/org/baeldung/async/AsyncAnnotationExampleTest.java b/spring-all/src/test/java/org/baeldung/async/AsyncAnnotationExampleIntegrationTest.java similarity index 97% rename from spring-all/src/test/java/org/baeldung/async/AsyncAnnotationExampleTest.java rename to spring-all/src/test/java/org/baeldung/async/AsyncAnnotationExampleIntegrationTest.java index 2f41766cb6..0c010cf732 100644 --- a/spring-all/src/test/java/org/baeldung/async/AsyncAnnotationExampleTest.java +++ b/spring-all/src/test/java/org/baeldung/async/AsyncAnnotationExampleIntegrationTest.java @@ -13,7 +13,7 @@ import org.springframework.test.context.support.AnnotationConfigContextLoader; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = { SpringAsyncConfig.class }, loader = AnnotationConfigContextLoader.class) -public class AsyncAnnotationExampleTest { +public class AsyncAnnotationExampleIntegrationTest { @Autowired private AsyncComponent asyncAnnotationExample; diff --git a/spring-all/src/test/java/org/baeldung/async/AsyncWithXMLTest.java b/spring-all/src/test/java/org/baeldung/async/AsyncWithXMLIntegrationTest.java similarity index 95% rename from spring-all/src/test/java/org/baeldung/async/AsyncWithXMLTest.java rename to spring-all/src/test/java/org/baeldung/async/AsyncWithXMLIntegrationTest.java index b91666261c..ffaa653a9a 100644 --- a/spring-all/src/test/java/org/baeldung/async/AsyncWithXMLTest.java +++ b/spring-all/src/test/java/org/baeldung/async/AsyncWithXMLIntegrationTest.java @@ -8,7 +8,7 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration("classpath:springAsync-config.xml") -public class AsyncWithXMLTest { +public class AsyncWithXMLIntegrationTest { @Autowired private AsyncComponent asyncAnnotationExample; diff --git a/spring-all/src/test/java/org/baeldung/controller/ControllerAnnotationTest.java b/spring-all/src/test/java/org/baeldung/controller/ControllerAnnotationIntegrationTest.java similarity index 95% rename from spring-all/src/test/java/org/baeldung/controller/ControllerAnnotationTest.java rename to spring-all/src/test/java/org/baeldung/controller/ControllerAnnotationIntegrationTest.java index 84bc3a8033..82c8704360 100644 --- a/spring-all/src/test/java/org/baeldung/controller/ControllerAnnotationTest.java +++ b/spring-all/src/test/java/org/baeldung/controller/ControllerAnnotationIntegrationTest.java @@ -21,7 +21,7 @@ import org.springframework.web.servlet.ModelAndView; @RunWith(SpringJUnit4ClassRunner.class) @WebAppConfiguration @ContextConfiguration(classes = { WebConfig.class }, loader = AnnotationConfigWebContextLoader.class) -public class ControllerAnnotationTest { +public class ControllerAnnotationIntegrationTest { private MockMvc mockMvc; diff --git a/spring-all/src/test/java/org/baeldung/controller/ControllerTest.java b/spring-all/src/test/java/org/baeldung/controller/ControllerIntegrationTest.java similarity index 98% rename from spring-all/src/test/java/org/baeldung/controller/ControllerTest.java rename to spring-all/src/test/java/org/baeldung/controller/ControllerIntegrationTest.java index 47915b8ce9..8e8a021530 100644 --- a/spring-all/src/test/java/org/baeldung/controller/ControllerTest.java +++ b/spring-all/src/test/java/org/baeldung/controller/ControllerIntegrationTest.java @@ -20,7 +20,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; @RunWith(SpringJUnit4ClassRunner.class) @WebAppConfiguration @ContextConfiguration({ "classpath:test-mvc.xml" }) -public class ControllerTest { +public class ControllerIntegrationTest { private MockMvc mockMvc; diff --git a/spring-all/src/test/java/org/baeldung/customannotation/DataAccessAnnotationTest.java b/spring-all/src/test/java/org/baeldung/customannotation/DataAccessAnnotationIntegrationTest.java similarity index 97% rename from spring-all/src/test/java/org/baeldung/customannotation/DataAccessAnnotationTest.java rename to spring-all/src/test/java/org/baeldung/customannotation/DataAccessAnnotationIntegrationTest.java index ec0d46876e..ae3d53fb9b 100644 --- a/spring-all/src/test/java/org/baeldung/customannotation/DataAccessAnnotationTest.java +++ b/spring-all/src/test/java/org/baeldung/customannotation/DataAccessAnnotationIntegrationTest.java @@ -14,7 +14,7 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = { CustomAnnotationConfiguration.class }) -public class DataAccessAnnotationTest { +public class DataAccessAnnotationIntegrationTest { @DataAccess(entity = Person.class) private GenericDAO personGenericDAO; diff --git a/spring-all/src/test/java/org/baeldung/customannotation/DataAccessFieldCallbackTest.java b/spring-all/src/test/java/org/baeldung/customannotation/DataAccessFieldCallbackIntegrationTest.java similarity index 97% rename from spring-all/src/test/java/org/baeldung/customannotation/DataAccessFieldCallbackTest.java rename to spring-all/src/test/java/org/baeldung/customannotation/DataAccessFieldCallbackIntegrationTest.java index e47d03c961..bab2574cd2 100644 --- a/spring-all/src/test/java/org/baeldung/customannotation/DataAccessFieldCallbackTest.java +++ b/spring-all/src/test/java/org/baeldung/customannotation/DataAccessFieldCallbackIntegrationTest.java @@ -17,7 +17,7 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = { CustomAnnotationConfiguration.class }) -public class DataAccessFieldCallbackTest { +public class DataAccessFieldCallbackIntegrationTest { @Autowired private ConfigurableListableBeanFactory configurableListableBeanFactory; diff --git a/spring-all/src/test/java/org/baeldung/jdbc/EmployeeDAOTest.java b/spring-all/src/test/java/org/baeldung/jdbc/EmployeeDAOIntegrationTest.java similarity index 99% rename from spring-all/src/test/java/org/baeldung/jdbc/EmployeeDAOTest.java rename to spring-all/src/test/java/org/baeldung/jdbc/EmployeeDAOIntegrationTest.java index d544409254..4a92aa838f 100644 --- a/spring-all/src/test/java/org/baeldung/jdbc/EmployeeDAOTest.java +++ b/spring-all/src/test/java/org/baeldung/jdbc/EmployeeDAOIntegrationTest.java @@ -15,7 +15,7 @@ import org.springframework.test.context.support.AnnotationConfigContextLoader; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = { SpringJdbcConfig.class }, loader = AnnotationConfigContextLoader.class) -public class EmployeeDAOTest { +public class EmployeeDAOIntegrationTest { @Autowired private EmployeeDAO employeeDao; diff --git a/spring-all/src/test/java/org/baeldung/profiles/DevProfileWithAnnotationTest.java b/spring-all/src/test/java/org/baeldung/profiles/DevProfileWithAnnotationIntegrationTest.java similarity index 93% rename from spring-all/src/test/java/org/baeldung/profiles/DevProfileWithAnnotationTest.java rename to spring-all/src/test/java/org/baeldung/profiles/DevProfileWithAnnotationIntegrationTest.java index 2b65928da8..cf5ca132e6 100644 --- a/spring-all/src/test/java/org/baeldung/profiles/DevProfileWithAnnotationTest.java +++ b/spring-all/src/test/java/org/baeldung/profiles/DevProfileWithAnnotationIntegrationTest.java @@ -12,7 +12,7 @@ import org.springframework.test.context.support.AnnotationConfigContextLoader; @RunWith(SpringJUnit4ClassRunner.class) @ActiveProfiles("dev") @ContextConfiguration(classes = { SpringProfilesConfig.class }, loader = AnnotationConfigContextLoader.class) -public class DevProfileWithAnnotationTest { +public class DevProfileWithAnnotationIntegrationTest { @Autowired DatasourceConfig datasourceConfig; diff --git a/spring-all/src/test/java/org/baeldung/profiles/ProductionProfileWithAnnotationTest.java b/spring-all/src/test/java/org/baeldung/profiles/ProductionProfileWithAnnotationIntegrationTest.java similarity index 94% rename from spring-all/src/test/java/org/baeldung/profiles/ProductionProfileWithAnnotationTest.java rename to spring-all/src/test/java/org/baeldung/profiles/ProductionProfileWithAnnotationIntegrationTest.java index 551636bd31..5bacaef07b 100644 --- a/spring-all/src/test/java/org/baeldung/profiles/ProductionProfileWithAnnotationTest.java +++ b/spring-all/src/test/java/org/baeldung/profiles/ProductionProfileWithAnnotationIntegrationTest.java @@ -13,7 +13,7 @@ import org.springframework.test.context.support.AnnotationConfigContextLoader; @RunWith(SpringJUnit4ClassRunner.class) @ActiveProfiles("production") @ContextConfiguration(classes = { SpringProfilesConfig.class }, loader = AnnotationConfigContextLoader.class) -public class ProductionProfileWithAnnotationTest { +public class ProductionProfileWithAnnotationIntegrationTest { @Autowired DatasourceConfig datasourceConfig; diff --git a/spring-all/src/test/java/org/baeldung/properties/parentchild/ParentChildPropertyPlaceHolderPropertiesTest.java b/spring-all/src/test/java/org/baeldung/properties/parentchild/ParentChildPropertyPlaceHolderPropertiesIntegrationTest.java similarity index 96% rename from spring-all/src/test/java/org/baeldung/properties/parentchild/ParentChildPropertyPlaceHolderPropertiesTest.java rename to spring-all/src/test/java/org/baeldung/properties/parentchild/ParentChildPropertyPlaceHolderPropertiesIntegrationTest.java index 92af3f52f0..e0eccc978a 100644 --- a/spring-all/src/test/java/org/baeldung/properties/parentchild/ParentChildPropertyPlaceHolderPropertiesTest.java +++ b/spring-all/src/test/java/org/baeldung/properties/parentchild/ParentChildPropertyPlaceHolderPropertiesIntegrationTest.java @@ -18,7 +18,7 @@ import org.springframework.web.context.WebApplicationContext; @RunWith(SpringJUnit4ClassRunner.class) @WebAppConfiguration @ContextHierarchy({ @ContextConfiguration(classes = ParentConfig2.class), @ContextConfiguration(classes = ChildConfig2.class) }) -public class ParentChildPropertyPlaceHolderPropertiesTest { +public class ParentChildPropertyPlaceHolderPropertiesIntegrationTest { @Autowired private WebApplicationContext wac; diff --git a/spring-all/src/test/java/org/baeldung/properties/parentchild/ParentChildPropertySourcePropertiesTest.java b/spring-all/src/test/java/org/baeldung/properties/parentchild/ParentChildPropertySourcePropertiesIntegrationTest.java similarity index 96% rename from spring-all/src/test/java/org/baeldung/properties/parentchild/ParentChildPropertySourcePropertiesTest.java rename to spring-all/src/test/java/org/baeldung/properties/parentchild/ParentChildPropertySourcePropertiesIntegrationTest.java index 3ffd490c87..e9990523a7 100644 --- a/spring-all/src/test/java/org/baeldung/properties/parentchild/ParentChildPropertySourcePropertiesTest.java +++ b/spring-all/src/test/java/org/baeldung/properties/parentchild/ParentChildPropertySourcePropertiesIntegrationTest.java @@ -18,7 +18,7 @@ import org.springframework.web.context.WebApplicationContext; @RunWith(SpringJUnit4ClassRunner.class) @WebAppConfiguration @ContextHierarchy({ @ContextConfiguration(classes = ParentConfig.class), @ContextConfiguration(classes = ChildConfig.class) }) -public class ParentChildPropertySourcePropertiesTest { +public class ParentChildPropertySourcePropertiesIntegrationTest { @Autowired private WebApplicationContext wac; diff --git a/spring-all/src/test/java/org/baeldung/scheduling/ScheduledAnnotationExampleTest.java b/spring-all/src/test/java/org/baeldung/scheduling/ScheduledAnnotationExampleIntegrationTest.java similarity index 90% rename from spring-all/src/test/java/org/baeldung/scheduling/ScheduledAnnotationExampleTest.java rename to spring-all/src/test/java/org/baeldung/scheduling/ScheduledAnnotationExampleIntegrationTest.java index 9317c7bb7f..c5ca78aaa1 100644 --- a/spring-all/src/test/java/org/baeldung/scheduling/ScheduledAnnotationExampleTest.java +++ b/spring-all/src/test/java/org/baeldung/scheduling/ScheduledAnnotationExampleIntegrationTest.java @@ -8,7 +8,7 @@ import org.springframework.test.context.support.AnnotationConfigContextLoader; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = { SpringSchedulingConfig.class }, loader = AnnotationConfigContextLoader.class) -public class ScheduledAnnotationExampleTest { +public class ScheduledAnnotationExampleIntegrationTest { @Test public void testScheduledAnnotation() throws InterruptedException { diff --git a/spring-all/src/test/java/org/baeldung/scheduling/SchedulingWithXmlConfigTest.java b/spring-all/src/test/java/org/baeldung/scheduling/SchedulingWithXmlConfigIntegrationTest.java similarity index 89% rename from spring-all/src/test/java/org/baeldung/scheduling/SchedulingWithXmlConfigTest.java rename to spring-all/src/test/java/org/baeldung/scheduling/SchedulingWithXmlConfigIntegrationTest.java index 0fca4d21c8..08df73f8fd 100644 --- a/spring-all/src/test/java/org/baeldung/scheduling/SchedulingWithXmlConfigTest.java +++ b/spring-all/src/test/java/org/baeldung/scheduling/SchedulingWithXmlConfigIntegrationTest.java @@ -7,7 +7,7 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration("classpath:springScheduled-config.xml") -public class SchedulingWithXmlConfigTest { +public class SchedulingWithXmlConfigIntegrationTest { @Test public void testXmlBasedScheduling() throws InterruptedException { diff --git a/spring-all/src/test/java/org/baeldung/spring43/attributeannotations/AttributeAnnotationTest.java b/spring-all/src/test/java/org/baeldung/spring43/attributeannotations/AttributeAnnotationIntegrationTest.java similarity index 94% rename from spring-all/src/test/java/org/baeldung/spring43/attributeannotations/AttributeAnnotationTest.java rename to spring-all/src/test/java/org/baeldung/spring43/attributeannotations/AttributeAnnotationIntegrationTest.java index 5162a067d7..fff2716a64 100644 --- a/spring-all/src/test/java/org/baeldung/spring43/attributeannotations/AttributeAnnotationTest.java +++ b/spring-all/src/test/java/org/baeldung/spring43/attributeannotations/AttributeAnnotationIntegrationTest.java @@ -17,7 +17,7 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers. @ContextConfiguration(classes = AttributeAnnotationConfiguration.class) @WebAppConfiguration -public class AttributeAnnotationTest extends AbstractJUnit4SpringContextTests { +public class AttributeAnnotationIntegrationTest extends AbstractJUnit4SpringContextTests { private MockMvc mockMvc; diff --git a/spring-all/src/test/java/org/baeldung/spring43/cache/CacheRefinementsTest.java b/spring-all/src/test/java/org/baeldung/spring43/cache/CacheRefinementsIntegrationTest.java similarity index 92% rename from spring-all/src/test/java/org/baeldung/spring43/cache/CacheRefinementsTest.java rename to spring-all/src/test/java/org/baeldung/spring43/cache/CacheRefinementsIntegrationTest.java index bfd6e5047c..986932dafe 100644 --- a/spring-all/src/test/java/org/baeldung/spring43/cache/CacheRefinementsTest.java +++ b/spring-all/src/test/java/org/baeldung/spring43/cache/CacheRefinementsIntegrationTest.java @@ -12,7 +12,7 @@ import org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests; import static org.junit.Assert.assertEquals; @ContextConfiguration(classes = CacheRefinementsConfiguration.class) -public class CacheRefinementsTest extends AbstractJUnit4SpringContextTests { +public class CacheRefinementsIntegrationTest extends AbstractJUnit4SpringContextTests { private ExecutorService executorService = Executors.newFixedThreadPool(10); diff --git a/spring-all/src/test/java/org/baeldung/spring43/composedmapping/ComposedMappingTest.java b/spring-all/src/test/java/org/baeldung/spring43/composedmapping/ComposedMappingIntegrationTest.java similarity index 94% rename from spring-all/src/test/java/org/baeldung/spring43/composedmapping/ComposedMappingTest.java rename to spring-all/src/test/java/org/baeldung/spring43/composedmapping/ComposedMappingIntegrationTest.java index 75d828c3d3..d0af48cd0e 100644 --- a/spring-all/src/test/java/org/baeldung/spring43/composedmapping/ComposedMappingTest.java +++ b/spring-all/src/test/java/org/baeldung/spring43/composedmapping/ComposedMappingIntegrationTest.java @@ -17,7 +17,7 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers. @ContextConfiguration(classes = ComposedMappingConfiguration.class) @WebAppConfiguration -public class ComposedMappingTest extends AbstractJUnit4SpringContextTests { +public class ComposedMappingIntegrationTest extends AbstractJUnit4SpringContextTests { @Autowired private AppointmentService appointmentService; diff --git a/spring-all/src/test/java/org/baeldung/spring43/ctor/ConfigurationConstructorInjectionTest.java b/spring-all/src/test/java/org/baeldung/spring43/ctor/ConfigurationConstructorInjectionIntegrationTest.java similarity index 85% rename from spring-all/src/test/java/org/baeldung/spring43/ctor/ConfigurationConstructorInjectionTest.java rename to spring-all/src/test/java/org/baeldung/spring43/ctor/ConfigurationConstructorInjectionIntegrationTest.java index 3edf693a13..871a985479 100644 --- a/spring-all/src/test/java/org/baeldung/spring43/ctor/ConfigurationConstructorInjectionTest.java +++ b/spring-all/src/test/java/org/baeldung/spring43/ctor/ConfigurationConstructorInjectionIntegrationTest.java @@ -8,7 +8,7 @@ import org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests; import static org.junit.Assert.assertNotNull; @ContextConfiguration(classes = { FooRepositoryConfiguration.class, FooServiceConfiguration.class }) -public class ConfigurationConstructorInjectionTest extends AbstractJUnit4SpringContextTests { +public class ConfigurationConstructorInjectionIntegrationTest extends AbstractJUnit4SpringContextTests { @Autowired public FooService fooService; diff --git a/spring-all/src/test/java/org/baeldung/spring43/ctor/ImplicitConstructorTest.java b/spring-all/src/test/java/org/baeldung/spring43/ctor/ImplicitConstructorIntegrationTest.java similarity index 86% rename from spring-all/src/test/java/org/baeldung/spring43/ctor/ImplicitConstructorTest.java rename to spring-all/src/test/java/org/baeldung/spring43/ctor/ImplicitConstructorIntegrationTest.java index be0cf77a62..83fa11294e 100644 --- a/spring-all/src/test/java/org/baeldung/spring43/ctor/ImplicitConstructorTest.java +++ b/spring-all/src/test/java/org/baeldung/spring43/ctor/ImplicitConstructorIntegrationTest.java @@ -8,7 +8,7 @@ import org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests; import static org.junit.Assert.assertNotNull; @ContextConfiguration("classpath:implicit-ctor-context.xml") -public class ImplicitConstructorTest extends AbstractJUnit4SpringContextTests { +public class ImplicitConstructorIntegrationTest extends AbstractJUnit4SpringContextTests { @Autowired private FooService fooService; diff --git a/spring-all/src/test/java/org/baeldung/spring43/defaultmethods/DefaultMethodsInjectionTest.java b/spring-all/src/test/java/org/baeldung/spring43/defaultmethods/DefaultMethodsInjectionIntegrationTest.java similarity index 87% rename from spring-all/src/test/java/org/baeldung/spring43/defaultmethods/DefaultMethodsInjectionTest.java rename to spring-all/src/test/java/org/baeldung/spring43/defaultmethods/DefaultMethodsInjectionIntegrationTest.java index e29d89a679..956df44821 100644 --- a/spring-all/src/test/java/org/baeldung/spring43/defaultmethods/DefaultMethodsInjectionTest.java +++ b/spring-all/src/test/java/org/baeldung/spring43/defaultmethods/DefaultMethodsInjectionIntegrationTest.java @@ -10,7 +10,7 @@ import org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests; import static org.junit.Assert.assertEquals; @ContextConfiguration("classpath:defaultmethods-context.xml") -public class DefaultMethodsInjectionTest extends AbstractJUnit4SpringContextTests { +public class DefaultMethodsInjectionIntegrationTest extends AbstractJUnit4SpringContextTests { @Autowired private IDateHolder dateHolder; diff --git a/spring-all/src/test/java/org/baeldung/spring43/defaultmethods/TransactionalTest.java b/spring-all/src/test/java/org/baeldung/spring43/defaultmethods/TransactionalIntegrationTest.java similarity index 76% rename from spring-all/src/test/java/org/baeldung/spring43/defaultmethods/TransactionalTest.java rename to spring-all/src/test/java/org/baeldung/spring43/defaultmethods/TransactionalIntegrationTest.java index 89c96ba1d4..b4ac7e8ccf 100644 --- a/spring-all/src/test/java/org/baeldung/spring43/defaultmethods/TransactionalTest.java +++ b/spring-all/src/test/java/org/baeldung/spring43/defaultmethods/TransactionalIntegrationTest.java @@ -5,7 +5,7 @@ import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.AbstractTransactionalJUnit4SpringContextTests; @ContextConfiguration(classes = TransactionalTestConfiguration.class) -public class TransactionalTest extends AbstractTransactionalJUnit4SpringContextTests implements ITransactionalTest { +public class TransactionalIntegrationTest extends AbstractTransactionalJUnit4SpringContextTests implements ITransactionalTest { @Test public void whenDefaultMethodAnnotatedWithBeforeTransaction_thenDefaultMethodIsExecuted() { diff --git a/spring-all/src/test/java/org/baeldung/spring43/depresolution/ObjectProviderTest.java b/spring-all/src/test/java/org/baeldung/spring43/depresolution/ObjectProviderIntegrationTest.java similarity index 87% rename from spring-all/src/test/java/org/baeldung/spring43/depresolution/ObjectProviderTest.java rename to spring-all/src/test/java/org/baeldung/spring43/depresolution/ObjectProviderIntegrationTest.java index eeeb005f81..6d06bfdc2a 100644 --- a/spring-all/src/test/java/org/baeldung/spring43/depresolution/ObjectProviderTest.java +++ b/spring-all/src/test/java/org/baeldung/spring43/depresolution/ObjectProviderIntegrationTest.java @@ -8,7 +8,7 @@ import org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests; import static org.junit.Assert.assertNotNull; @ContextConfiguration(classes = ObjectProviderConfiguration.class) -public class ObjectProviderTest extends AbstractJUnit4SpringContextTests { +public class ObjectProviderIntegrationTest extends AbstractJUnit4SpringContextTests { @Autowired private FooService fooService; diff --git a/spring-all/src/test/java/org/baeldung/spring43/scopeannotations/ScopeAnnotationsTest.java b/spring-all/src/test/java/org/baeldung/spring43/scopeannotations/ScopeAnnotationsIntegrationTest.java similarity index 97% rename from spring-all/src/test/java/org/baeldung/spring43/scopeannotations/ScopeAnnotationsTest.java rename to spring-all/src/test/java/org/baeldung/spring43/scopeannotations/ScopeAnnotationsIntegrationTest.java index ecf14f0d6c..69cce15029 100644 --- a/spring-all/src/test/java/org/baeldung/spring43/scopeannotations/ScopeAnnotationsTest.java +++ b/spring-all/src/test/java/org/baeldung/spring43/scopeannotations/ScopeAnnotationsIntegrationTest.java @@ -19,7 +19,7 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers. @ContextConfiguration(classes = ScopeAnnotationsConfiguration.class) @WebAppConfiguration -public class ScopeAnnotationsTest extends AbstractJUnit4SpringContextTests { +public class ScopeAnnotationsIntegrationTest extends AbstractJUnit4SpringContextTests { private MockMvc mockMvc; diff --git a/spring-all/src/test/java/org/baeldung/springevents/asynchronous/AsynchronousCustomSpringEventsTest.java b/spring-all/src/test/java/org/baeldung/springevents/asynchronous/AsynchronousCustomSpringEventsIntegrationTest.java similarity index 93% rename from spring-all/src/test/java/org/baeldung/springevents/asynchronous/AsynchronousCustomSpringEventsTest.java rename to spring-all/src/test/java/org/baeldung/springevents/asynchronous/AsynchronousCustomSpringEventsIntegrationTest.java index 2b45ae4e68..e12baed7e0 100644 --- a/spring-all/src/test/java/org/baeldung/springevents/asynchronous/AsynchronousCustomSpringEventsTest.java +++ b/spring-all/src/test/java/org/baeldung/springevents/asynchronous/AsynchronousCustomSpringEventsIntegrationTest.java @@ -10,7 +10,7 @@ import org.springframework.test.context.support.AnnotationConfigContextLoader; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = { AsynchronousSpringEventsConfig.class }, loader = AnnotationConfigContextLoader.class) -public class AsynchronousCustomSpringEventsTest { +public class AsynchronousCustomSpringEventsIntegrationTest { @Autowired private CustomSpringEventPublisher publisher; diff --git a/spring-all/src/test/java/org/baeldung/springevents/synchronous/ContextRefreshedListenerTest.java b/spring-all/src/test/java/org/baeldung/springevents/synchronous/ContextRefreshedListenerIntegrationTest.java similarity index 92% rename from spring-all/src/test/java/org/baeldung/springevents/synchronous/ContextRefreshedListenerTest.java rename to spring-all/src/test/java/org/baeldung/springevents/synchronous/ContextRefreshedListenerIntegrationTest.java index d971698e3f..ac8758bbf6 100644 --- a/spring-all/src/test/java/org/baeldung/springevents/synchronous/ContextRefreshedListenerTest.java +++ b/spring-all/src/test/java/org/baeldung/springevents/synchronous/ContextRefreshedListenerIntegrationTest.java @@ -9,7 +9,7 @@ import org.springframework.test.context.support.AnnotationConfigContextLoader; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = { SynchronousSpringEventsConfig.class }, loader = AnnotationConfigContextLoader.class) -public class ContextRefreshedListenerTest { +public class ContextRefreshedListenerIntegrationTest { @Test public void testContextRefreshedListener() throws InterruptedException { diff --git a/spring-all/src/test/java/org/baeldung/springevents/synchronous/SynchronousCustomSpringEventsTest.java b/spring-all/src/test/java/org/baeldung/springevents/synchronous/SynchronousCustomSpringEventsIntegrationTest.java similarity index 93% rename from spring-all/src/test/java/org/baeldung/springevents/synchronous/SynchronousCustomSpringEventsTest.java rename to spring-all/src/test/java/org/baeldung/springevents/synchronous/SynchronousCustomSpringEventsIntegrationTest.java index b559ca9fc9..f9783f57dc 100644 --- a/spring-all/src/test/java/org/baeldung/springevents/synchronous/SynchronousCustomSpringEventsTest.java +++ b/spring-all/src/test/java/org/baeldung/springevents/synchronous/SynchronousCustomSpringEventsIntegrationTest.java @@ -9,7 +9,7 @@ import org.springframework.test.context.support.AnnotationConfigContextLoader; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = { SynchronousSpringEventsConfig.class }, loader = AnnotationConfigContextLoader.class) -public class SynchronousCustomSpringEventsTest { +public class SynchronousCustomSpringEventsIntegrationTest { @Autowired private CustomSpringEventPublisher publisher; diff --git a/spring-all/src/test/java/org/baeldung/startup/SpringStartupTest.java b/spring-all/src/test/java/org/baeldung/startup/SpringStartupIntegrationTest.java similarity index 97% rename from spring-all/src/test/java/org/baeldung/startup/SpringStartupTest.java rename to spring-all/src/test/java/org/baeldung/startup/SpringStartupIntegrationTest.java index 523a27c2c4..6263482948 100644 --- a/spring-all/src/test/java/org/baeldung/startup/SpringStartupTest.java +++ b/spring-all/src/test/java/org/baeldung/startup/SpringStartupIntegrationTest.java @@ -12,7 +12,7 @@ import org.springframework.test.context.support.AnnotationConfigContextLoader; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = { SpringStartupConfig.class }, loader = AnnotationConfigContextLoader.class) -public class SpringStartupTest { +public class SpringStartupIntegrationTest { @Autowired private ApplicationContext ctx; diff --git a/spring-all/src/test/java/org/baeldung/startup/SpringStartupXMLConfigTest.java b/spring-all/src/test/java/org/baeldung/startup/SpringStartupXMLConfigIntegrationTest.java similarity index 93% rename from spring-all/src/test/java/org/baeldung/startup/SpringStartupXMLConfigTest.java rename to spring-all/src/test/java/org/baeldung/startup/SpringStartupXMLConfigIntegrationTest.java index 19a35bb92b..a46d24fa3b 100644 --- a/spring-all/src/test/java/org/baeldung/startup/SpringStartupXMLConfigTest.java +++ b/spring-all/src/test/java/org/baeldung/startup/SpringStartupXMLConfigIntegrationTest.java @@ -9,7 +9,7 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration("classpath:startupConfig.xml") -public class SpringStartupXMLConfigTest { +public class SpringStartupXMLConfigIntegrationTest { @Autowired private ApplicationContext ctx; From c1017af8a09d9b10a5821c237a01d263b785084e Mon Sep 17 00:00:00 2001 From: DOHA Date: Thu, 20 Oct 2016 14:21:12 +0200 Subject: [PATCH 035/215] add integration test profile --- spring-akka/pom.xml | 51 ++++++++++++++++++- ...st.java => SpringAkkaIntegrationTest.java} | 2 +- 2 files changed, 50 insertions(+), 3 deletions(-) rename spring-akka/src/test/java/org/baeldung/akka/{SpringAkkaTest.java => SpringAkkaIntegrationTest.java} (94%) diff --git a/spring-akka/pom.xml b/spring-akka/pom.xml index 6299448ec8..eb33ca4848 100644 --- a/spring-akka/pom.xml +++ b/spring-akka/pom.xml @@ -65,9 +65,54 @@ + + org.apache.maven.plugins + maven-surefire-plugin + ${maven-surefire-plugin.version} + + + **/*IntegrationTest.java + **/*LiveTest.java + + + - - + + + + + integration + + + + org.apache.maven.plugins + maven-surefire-plugin + + + integration-test + + test + + + + **/*LiveTest.java + + + **/*IntegrationTest.java + + + + + + + json + + + + + + + 4.3.2.RELEASE @@ -75,6 +120,8 @@ 4.12 3.5.1 + 2.19.1 + \ No newline at end of file diff --git a/spring-akka/src/test/java/org/baeldung/akka/SpringAkkaTest.java b/spring-akka/src/test/java/org/baeldung/akka/SpringAkkaIntegrationTest.java similarity index 94% rename from spring-akka/src/test/java/org/baeldung/akka/SpringAkkaTest.java rename to spring-akka/src/test/java/org/baeldung/akka/SpringAkkaIntegrationTest.java index e5351e9d0f..c5da0f747e 100644 --- a/spring-akka/src/test/java/org/baeldung/akka/SpringAkkaTest.java +++ b/spring-akka/src/test/java/org/baeldung/akka/SpringAkkaIntegrationTest.java @@ -20,7 +20,7 @@ import static akka.pattern.Patterns.ask; import static org.baeldung.akka.SpringExtension.SPRING_EXTENSION_PROVIDER; @ContextConfiguration(classes = AppConfiguration.class) -public class SpringAkkaTest extends AbstractJUnit4SpringContextTests { +public class SpringAkkaIntegrationTest extends AbstractJUnit4SpringContextTests { @Autowired private ActorSystem system; From 6e9f4a6f29cdfbbbd4aebdbe90705908112c5cae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ambrus=20Adri=C3=A1n-Zolt=C3=A1n?= Date: Thu, 20 Oct 2016 19:33:41 +0300 Subject: [PATCH 036/215] Added module in root pom file. --- pom.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/pom.xml b/pom.xml index 5526c1e2a3..4497d08ade 100644 --- a/pom.xml +++ b/pom.xml @@ -109,6 +109,7 @@ spring-security-basic-auth spring-security-custom-permission + spring-security-custom-voter spring-security-mvc-custom spring-security-mvc-digest-auth spring-security-mvc-ldap From 511d96614d086daf4216e880b8de09b4aff3dd53 Mon Sep 17 00:00:00 2001 From: Sameera Date: Thu, 20 Oct 2016 23:10:17 +0530 Subject: [PATCH 037/215] PrintScreen code samples moved to core-java module --- .../com/baeldung/printscreen}/Screenshot.java | 2 +- .../baeldung/printscreen}/ScreenshotTest.java | 2 +- printscreen/pom.xml | 26 ------------------- 3 files changed, 2 insertions(+), 28 deletions(-) rename {printscreen/src/main/java/org/baeldung/corejava => core-java/src/main/java/com/baeldung/printscreen}/Screenshot.java (97%) rename {printscreen/src/test/java/org/baeldung/corejava => core-java/src/test/java/com/baeldung/printscreen}/ScreenshotTest.java (96%) delete mode 100644 printscreen/pom.xml diff --git a/printscreen/src/main/java/org/baeldung/corejava/Screenshot.java b/core-java/src/main/java/com/baeldung/printscreen/Screenshot.java similarity index 97% rename from printscreen/src/main/java/org/baeldung/corejava/Screenshot.java rename to core-java/src/main/java/com/baeldung/printscreen/Screenshot.java index d33761932f..500860640a 100644 --- a/printscreen/src/main/java/org/baeldung/corejava/Screenshot.java +++ b/core-java/src/main/java/com/baeldung/printscreen/Screenshot.java @@ -1,4 +1,4 @@ -package org.baeldung.corejava;; +package com.baeldung.printscreen; import javax.imageio.ImageIO; import java.awt.*; diff --git a/printscreen/src/test/java/org/baeldung/corejava/ScreenshotTest.java b/core-java/src/test/java/com/baeldung/printscreen/ScreenshotTest.java similarity index 96% rename from printscreen/src/test/java/org/baeldung/corejava/ScreenshotTest.java rename to core-java/src/test/java/com/baeldung/printscreen/ScreenshotTest.java index 588c2eea78..5c0341cb36 100644 --- a/printscreen/src/test/java/org/baeldung/corejava/ScreenshotTest.java +++ b/core-java/src/test/java/com/baeldung/printscreen/ScreenshotTest.java @@ -1,4 +1,4 @@ -package org.baeldung.corejava; +package com.baeldung.printscreen; import org.junit.After; import org.junit.Before; diff --git a/printscreen/pom.xml b/printscreen/pom.xml deleted file mode 100644 index ddb813a7a2..0000000000 --- a/printscreen/pom.xml +++ /dev/null @@ -1,26 +0,0 @@ - - 4.0.0 - - com.baeldung - corejava-printscreen - 1.0-SNAPSHOT - jar - - How to Print Screen in Java - https://github.com/eugenp/tutorials - - - UTF-8 - 4.12 - - - - - junit - junit - ${junit.version} - test - - - From cdbd83e8518b2cf0dcf66ce8d64b105fde479015 Mon Sep 17 00:00:00 2001 From: DOHA Date: Thu, 20 Oct 2016 21:53:32 +0200 Subject: [PATCH 038/215] add integration test profile --- spring-mvc-java/pom.xml | 54 ++++++++++++------- ...arDependencyA => CircularDependencyA.java} | 0 ...arDependencyB => CircularDependencyB.java} | 0 .../CircularDependencyIntegrationTest.java | 35 ++++++++++++ .../circulardependency/CircularDependencyTest | 35 ------------ .../{TestConfig => TestConfig.java} | 0 .../HtmlUnitAndSpringIntegrationTest.java | 4 +- 7 files changed, 73 insertions(+), 55 deletions(-) rename spring-mvc-java/src/main/java/com/baeldung/circulardependency/{CircularDependencyA => CircularDependencyA.java} (100%) rename spring-mvc-java/src/main/java/com/baeldung/circulardependency/{CircularDependencyB => CircularDependencyB.java} (100%) create mode 100644 spring-mvc-java/src/test/java/com/baeldung/circulardependency/CircularDependencyIntegrationTest.java delete mode 100644 spring-mvc-java/src/test/java/com/baeldung/circulardependency/CircularDependencyTest rename spring-mvc-java/src/test/java/com/baeldung/circulardependency/{TestConfig => TestConfig.java} (100%) diff --git a/spring-mvc-java/pom.xml b/spring-mvc-java/pom.xml index 8248343105..011de70ad2 100644 --- a/spring-mvc-java/pom.xml +++ b/spring-mvc-java/pom.xml @@ -208,28 +208,44 @@ - - org.codehaus.cargo - cargo-maven2-plugin - ${cargo-maven2-plugin.version} - - - jetty8x - embedded - - - - - - - 8082 - - - - + + + integration + + + + org.apache.maven.plugins + maven-surefire-plugin + + + integration-test + + test + + + + **/*LiveTest.java + + + **/*IntegrationTest.java + + + + + + + json + + + + + + + + 4.2.5.RELEASE diff --git a/spring-mvc-java/src/main/java/com/baeldung/circulardependency/CircularDependencyA b/spring-mvc-java/src/main/java/com/baeldung/circulardependency/CircularDependencyA.java similarity index 100% rename from spring-mvc-java/src/main/java/com/baeldung/circulardependency/CircularDependencyA rename to spring-mvc-java/src/main/java/com/baeldung/circulardependency/CircularDependencyA.java diff --git a/spring-mvc-java/src/main/java/com/baeldung/circulardependency/CircularDependencyB b/spring-mvc-java/src/main/java/com/baeldung/circulardependency/CircularDependencyB.java similarity index 100% rename from spring-mvc-java/src/main/java/com/baeldung/circulardependency/CircularDependencyB rename to spring-mvc-java/src/main/java/com/baeldung/circulardependency/CircularDependencyB.java diff --git a/spring-mvc-java/src/test/java/com/baeldung/circulardependency/CircularDependencyIntegrationTest.java b/spring-mvc-java/src/test/java/com/baeldung/circulardependency/CircularDependencyIntegrationTest.java new file mode 100644 index 0000000000..42847f4dd1 --- /dev/null +++ b/spring-mvc-java/src/test/java/com/baeldung/circulardependency/CircularDependencyIntegrationTest.java @@ -0,0 +1,35 @@ +package com.baeldung.circulardependency; + +import org.junit.Assert; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.ApplicationContext; +import org.springframework.context.annotation.Bean; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(classes = { TestConfig.class }) +public class CircularDependencyIntegrationTest { + + @Autowired + ApplicationContext context; + + @Bean + public CircularDependencyA getCircularDependencyA() { + return new CircularDependencyA(); + } + + @Bean + public CircularDependencyB getCircularDependencyB() { + return new CircularDependencyB(); + } + + @Test + public void givenCircularDependency_whenSetterInjection_thenItWorks() { + final CircularDependencyA circA = context.getBean(CircularDependencyA.class); + + Assert.assertEquals("Hi!", circA.getCircB().getMessage()); + } +} diff --git a/spring-mvc-java/src/test/java/com/baeldung/circulardependency/CircularDependencyTest b/spring-mvc-java/src/test/java/com/baeldung/circulardependency/CircularDependencyTest deleted file mode 100644 index 4229f21f10..0000000000 --- a/spring-mvc-java/src/test/java/com/baeldung/circulardependency/CircularDependencyTest +++ /dev/null @@ -1,35 +0,0 @@ -package com.baeldung.circulardependency; - -import org.junit.Assert; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.ApplicationContext; -import org.springframework.context.annotation.Bean; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; - -@RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration(classes = { TestConfig.class }) -public class CircularDependencyTest { - - @Autowired - ApplicationContext context; - - @Bean - public CircularDependencyA getCircularDependencyA() { - return new CircularDependencyA(); - } - - @Bean - public CircularDependencyB getCircularDependencyB() { - return new CircularDependencyB(); - } - - @Test - public void givenCircularDependency_whenSetterInjection_thenItWorks() { - final CircularDependencyA circA = context.getBean(CircularDependencyA.class); - - Assert.assertEquals("Hi!", circA.getCircB().getMessage()); - } -} diff --git a/spring-mvc-java/src/test/java/com/baeldung/circulardependency/TestConfig b/spring-mvc-java/src/test/java/com/baeldung/circulardependency/TestConfig.java similarity index 100% rename from spring-mvc-java/src/test/java/com/baeldung/circulardependency/TestConfig rename to spring-mvc-java/src/test/java/com/baeldung/circulardependency/TestConfig.java diff --git a/spring-mvc-java/src/test/java/com/baeldung/htmlunit/HtmlUnitAndSpringIntegrationTest.java b/spring-mvc-java/src/test/java/com/baeldung/htmlunit/HtmlUnitAndSpringIntegrationTest.java index 7a23908fe5..406975b6cc 100644 --- a/spring-mvc-java/src/test/java/com/baeldung/htmlunit/HtmlUnitAndSpringIntegrationTest.java +++ b/spring-mvc-java/src/test/java/com/baeldung/htmlunit/HtmlUnitAndSpringIntegrationTest.java @@ -5,6 +5,7 @@ import java.net.MalformedURLException; import org.junit.Assert; import org.junit.Before; +import org.junit.Ignore; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; @@ -39,9 +40,10 @@ public class HtmlUnitAndSpringIntegrationTest { // @Test + @Ignore("Related view message.html does not exist check MessageController") public void givenAMessage_whenSent_thenItShows() throws FailingHttpStatusCodeException, MalformedURLException, IOException { final String text = "Hello world!"; - HtmlPage page = webClient.getPage("http://localhost/message/showForm"); + final HtmlPage page = webClient.getPage("http://localhost/message/showForm"); System.out.println(page.asXml()); final HtmlTextInput messageText = page.getHtmlElementById("message"); From fd1a5796a91be4db4d30c2166c98e4a94a39046d Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Thu, 20 Oct 2016 23:10:14 +0200 Subject: [PATCH 039/215] Refactor Screenshot examples --- .../com/baeldung/printscreen/Screenshot.java | 13 +++++------- .../baeldung/printscreen/ScreenshotTest.java | 21 ++++--------------- .../ehcache/SquareCalculatorTest.java | 18 ++++++++-------- 3 files changed, 18 insertions(+), 34 deletions(-) diff --git a/core-java/src/main/java/com/baeldung/printscreen/Screenshot.java b/core-java/src/main/java/com/baeldung/printscreen/Screenshot.java index 500860640a..7c29a61842 100644 --- a/core-java/src/main/java/com/baeldung/printscreen/Screenshot.java +++ b/core-java/src/main/java/com/baeldung/printscreen/Screenshot.java @@ -7,20 +7,17 @@ import java.io.File; public class Screenshot { - private String filePath; - private String filenamePrefix; - private String fileType; - private int timeToWait; + private final String filePath; + private final String filenamePrefix; + private final String fileType; - public Screenshot(String filePath, String filenamePrefix, - String fileType, int timeToWait) { + public Screenshot(String filePath, String filenamePrefix, String fileType) { this.filePath = filePath; this.filenamePrefix = filenamePrefix; this.fileType = fileType; - this.timeToWait = timeToWait; } - public void getScreenshot() throws Exception { + public void getScreenshot(int timeToWait) throws Exception { Thread.sleep(timeToWait); Rectangle rectangle = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize()); Robot robot = new Robot(); diff --git a/core-java/src/test/java/com/baeldung/printscreen/ScreenshotTest.java b/core-java/src/test/java/com/baeldung/printscreen/ScreenshotTest.java index 5c0341cb36..895f514f4a 100644 --- a/core-java/src/test/java/com/baeldung/printscreen/ScreenshotTest.java +++ b/core-java/src/test/java/com/baeldung/printscreen/ScreenshotTest.java @@ -1,34 +1,21 @@ package com.baeldung.printscreen; import org.junit.After; -import org.junit.Before; import org.junit.Test; import java.io.File; -import static org.junit.Assert.*; +import static org.junit.Assert.assertTrue; public class ScreenshotTest { - private Screenshot screenshot; - private String filePath; - private String fileName; - private String fileType; - private File file; - - @Before - public void setUp() throws Exception { - filePath = ""; - fileName = "Screenshot"; - fileType = "jpg"; - file = new File(filePath + fileName + "." + fileType); - screenshot = new Screenshot(filePath, fileName, fileType, 2000); - } + private Screenshot screenshot = new Screenshot("", "Screenshot", "jpg"); + private File file = new File("Screenshot.jpg"); @Test public void testGetScreenshot() throws Exception { - screenshot.getScreenshot(); + screenshot.getScreenshot(2000); assertTrue(file.exists()); } diff --git a/spring-all/src/test/java/org/baeldung/ehcache/SquareCalculatorTest.java b/spring-all/src/test/java/org/baeldung/ehcache/SquareCalculatorTest.java index 875fd2a25e..ab7aebf7a1 100644 --- a/spring-all/src/test/java/org/baeldung/ehcache/SquareCalculatorTest.java +++ b/spring-all/src/test/java/org/baeldung/ehcache/SquareCalculatorTest.java @@ -1,20 +1,20 @@ package org.baeldung.ehcache; -import static org.junit.Assert.*; - import org.baeldung.ehcache.calculator.SquaredCalculator; import org.baeldung.ehcache.config.CacheHelper; import org.junit.Before; import org.junit.Test; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + public class SquareCalculatorTest { - SquaredCalculator squaredCalculator = new SquaredCalculator(); - CacheHelper cacheHelper = new CacheHelper(); + private SquaredCalculator squaredCalculator = new SquaredCalculator(); + private CacheHelper cacheHelper = new CacheHelper(); @Before public void setup() { squaredCalculator.setCache(cacheHelper); - } @Test @@ -22,7 +22,7 @@ public class SquareCalculatorTest { for (int i = 10; i < 15; i++) { assertFalse(cacheHelper.getSquareNumberCache().containsKey(i)); System.out.println("Square value of " + i + " is: " - + squaredCalculator.getSquareValueOfNumber(i) + "\n"); + + squaredCalculator.getSquareValueOfNumber(i) + "\n"); } } @@ -31,13 +31,13 @@ public class SquareCalculatorTest { for (int i = 10; i < 15; i++) { assertFalse(cacheHelper.getSquareNumberCache().containsKey(i)); System.out.println("Square value of " + i + " is: " - + squaredCalculator.getSquareValueOfNumber(i) + "\n"); + + squaredCalculator.getSquareValueOfNumber(i) + "\n"); } - + for (int i = 10; i < 15; i++) { assertTrue(cacheHelper.getSquareNumberCache().containsKey(i)); System.out.println("Square value of " + i + " is: " - + squaredCalculator.getSquareValueOfNumber(i) + "\n"); + + squaredCalculator.getSquareValueOfNumber(i) + "\n"); } } } From 89754421a293f8882b6b7cb4f632d5a027c67db6 Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Thu, 20 Oct 2016 23:14:05 +0200 Subject: [PATCH 040/215] Refactor Screenshot examples 2 --- .../com/baeldung/printscreen/Screenshot.java | 20 ++++--------------- 1 file changed, 4 insertions(+), 16 deletions(-) diff --git a/core-java/src/main/java/com/baeldung/printscreen/Screenshot.java b/core-java/src/main/java/com/baeldung/printscreen/Screenshot.java index 7c29a61842..27fd84e374 100644 --- a/core-java/src/main/java/com/baeldung/printscreen/Screenshot.java +++ b/core-java/src/main/java/com/baeldung/printscreen/Screenshot.java @@ -7,14 +7,10 @@ import java.io.File; public class Screenshot { - private final String filePath; - private final String filenamePrefix; - private final String fileType; + private final String path; - public Screenshot(String filePath, String filenamePrefix, String fileType) { - this.filePath = filePath; - this.filenamePrefix = filenamePrefix; - this.fileType = fileType; + public Screenshot(String path) { + this.path = path; } public void getScreenshot(int timeToWait) throws Exception { @@ -22,14 +18,6 @@ public class Screenshot { Rectangle rectangle = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize()); Robot robot = new Robot(); BufferedImage img = robot.createScreenCapture(rectangle); - ImageIO.write(img, fileType, setupFileNamePath()); - } - - private File setupFileNamePath() { - return new File(filePath + filenamePrefix + "." + fileType); - } - - private Rectangle getScreenSizedRectangle(final Dimension d) { - return new Rectangle(0, 0, d.width, d.height); + ImageIO.write(img, "jpg", new File(path)); } } From 1018c4b3fb3acedac854011e69cac0c925560284 Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Thu, 20 Oct 2016 23:18:50 +0200 Subject: [PATCH 041/215] Refactor JedisTest --- .../src/test/java/com/baeldung/JedisTest.java | 25 +++++-------------- 1 file changed, 6 insertions(+), 19 deletions(-) diff --git a/redis/src/test/java/com/baeldung/JedisTest.java b/redis/src/test/java/com/baeldung/JedisTest.java index 766fd7b5e9..582bb266aa 100644 --- a/redis/src/test/java/com/baeldung/JedisTest.java +++ b/redis/src/test/java/com/baeldung/JedisTest.java @@ -1,28 +1,15 @@ package com.baeldung; +import org.junit.*; +import redis.clients.jedis.*; +import redis.embedded.RedisServer; + import java.io.IOException; import java.time.Duration; import java.util.HashMap; import java.util.Map; import java.util.Set; -import org.junit.After; -import org.junit.AfterClass; -import org.junit.Assert; -import org.junit.BeforeClass; -import org.junit.Test; - -import redis.clients.jedis.Jedis; -import redis.clients.jedis.JedisPool; -import redis.clients.jedis.JedisPoolConfig; -import redis.clients.jedis.Pipeline; -import redis.clients.jedis.Response; -import redis.clients.jedis.Transaction; -import redis.embedded.RedisServer; - -/** - * Unit test for Redis Java library - Jedis. - */ public class JedisTest { private Jedis jedis; @@ -140,9 +127,9 @@ public class JedisTest { scores.put("PlayerTwo", 1500.0); scores.put("PlayerThree", 8200.0); - for (String player : scores.keySet()) { + scores.keySet().forEach(player -> { jedis.zadd(key, scores.get(player), player); - } + }); Set players = jedis.zrevrange(key, 0, 1); Assert.assertEquals("PlayerThree", players.iterator().next()); From 395a6731d9a1bfac956c820ca8e86f0b3f0026ea Mon Sep 17 00:00:00 2001 From: DOHA Date: Fri, 21 Oct 2016 00:11:19 +0200 Subject: [PATCH 042/215] add integration test profile --- rest-testing/pom.xml | 42 +++++++++++++++++++ ...Test.java => CucumberIntegrationTest.java} | 2 +- 2 files changed, 43 insertions(+), 1 deletion(-) rename rest-testing/src/test/java/com/baeldung/rest/cucumber/{CucumberTest.java => CucumberIntegrationTest.java} (84%) diff --git a/rest-testing/pom.xml b/rest-testing/pom.xml index 819e8de8a5..90c160af15 100644 --- a/rest-testing/pom.xml +++ b/rest-testing/pom.xml @@ -148,12 +148,54 @@ org.apache.maven.plugins maven-surefire-plugin ${maven-surefire-plugin.version} + + + **/*IntegrationTest.java + **/*LiveTest.java + + + + + integration + + + + org.apache.maven.plugins + maven-surefire-plugin + + + integration-test + + test + + + + **/*UnitTest.java + + + **/*IntegrationTest.java + **/*LiveTest.java + + + + + + + json + + + + + + + + 2.7.8 diff --git a/rest-testing/src/test/java/com/baeldung/rest/cucumber/CucumberTest.java b/rest-testing/src/test/java/com/baeldung/rest/cucumber/CucumberIntegrationTest.java similarity index 84% rename from rest-testing/src/test/java/com/baeldung/rest/cucumber/CucumberTest.java rename to rest-testing/src/test/java/com/baeldung/rest/cucumber/CucumberIntegrationTest.java index 041de592e9..f80178a43d 100644 --- a/rest-testing/src/test/java/com/baeldung/rest/cucumber/CucumberTest.java +++ b/rest-testing/src/test/java/com/baeldung/rest/cucumber/CucumberIntegrationTest.java @@ -6,5 +6,5 @@ import cucumber.api.junit.Cucumber; @RunWith(Cucumber.class) @CucumberOptions(features = "classpath:Feature") -public class CucumberTest { +public class CucumberIntegrationTest { } \ No newline at end of file From 13cf6590ba0e0e5738a6cf8c7d51b35503a4010a Mon Sep 17 00:00:00 2001 From: DOHA Date: Fri, 21 Oct 2016 00:24:15 +0200 Subject: [PATCH 043/215] add integration test profile --- querydsl/pom.xml | 49 +++++++++++++++++++ ...est.java => PersonDaoIntegrationTest.java} | 2 +- 2 files changed, 50 insertions(+), 1 deletion(-) rename querydsl/src/test/java/org/baeldung/dao/{PersonDaoTest.java => PersonDaoIntegrationTest.java} (98%) diff --git a/querydsl/pom.xml b/querydsl/pom.xml index bed0cf90e5..13528526ea 100644 --- a/querydsl/pom.xml +++ b/querydsl/pom.xml @@ -20,6 +20,7 @@ 5.2.1.Final 4.1.3 1.7.21 + 2.19.1 @@ -166,7 +167,55 @@ + + + org.apache.maven.plugins + maven-surefire-plugin + ${maven-surefire-plugin.version} + + + **/*IntegrationTest.java + **/*LiveTest.java + + + + + + + integration + + + + org.apache.maven.plugins + maven-surefire-plugin + + + integration-test + + test + + + + **/*LiveTest.java + + + **/*IntegrationTest.java + + + + + + + json + + + + + + + + \ No newline at end of file diff --git a/querydsl/src/test/java/org/baeldung/dao/PersonDaoTest.java b/querydsl/src/test/java/org/baeldung/dao/PersonDaoIntegrationTest.java similarity index 98% rename from querydsl/src/test/java/org/baeldung/dao/PersonDaoTest.java rename to querydsl/src/test/java/org/baeldung/dao/PersonDaoIntegrationTest.java index 0e5996a8c8..a666aea8da 100644 --- a/querydsl/src/test/java/org/baeldung/dao/PersonDaoTest.java +++ b/querydsl/src/test/java/org/baeldung/dao/PersonDaoIntegrationTest.java @@ -17,7 +17,7 @@ import junit.framework.Assert; @RunWith(SpringJUnit4ClassRunner.class) @Transactional @TransactionConfiguration(defaultRollback = true) -public class PersonDaoTest { +public class PersonDaoIntegrationTest { @Autowired private PersonDao personDao; From 60d60508c38580ddcb2763794b895d152be4b784 Mon Sep 17 00:00:00 2001 From: DOHA Date: Fri, 21 Oct 2016 13:08:10 +0200 Subject: [PATCH 044/215] add integration test profile --- mapstruct/pom.xml | 52 ++++++++++++++++++- ...urceDestinationMapperIntegrationTest.java} | 2 +- 2 files changed, 51 insertions(+), 3 deletions(-) rename mapstruct/src/test/java/com/baeldung/mapper/{SimpleSourceDestinationMapperTest.java => SimpleSourceDestinationMapperIntegrationTest.java} (96%) diff --git a/mapstruct/pom.xml b/mapstruct/pom.xml index 4159ef35c9..aaa3e95f8c 100644 --- a/mapstruct/pom.xml +++ b/mapstruct/pom.xml @@ -55,6 +55,54 @@ - - + + + org.apache.maven.plugins + maven-surefire-plugin + 2.19.1 + + + **/*IntegrationTest.java + **/*LiveTest.java + + + + + + + + + integration + + + + org.apache.maven.plugins + maven-surefire-plugin + + + integration-test + + test + + + + **/*LiveTest.java + + + **/*IntegrationTest.java + + + + + + + json + + + + + + + + diff --git a/mapstruct/src/test/java/com/baeldung/mapper/SimpleSourceDestinationMapperTest.java b/mapstruct/src/test/java/com/baeldung/mapper/SimpleSourceDestinationMapperIntegrationTest.java similarity index 96% rename from mapstruct/src/test/java/com/baeldung/mapper/SimpleSourceDestinationMapperTest.java rename to mapstruct/src/test/java/com/baeldung/mapper/SimpleSourceDestinationMapperIntegrationTest.java index a7addf33a7..31d60c0d7d 100644 --- a/mapstruct/src/test/java/com/baeldung/mapper/SimpleSourceDestinationMapperTest.java +++ b/mapstruct/src/test/java/com/baeldung/mapper/SimpleSourceDestinationMapperIntegrationTest.java @@ -12,7 +12,7 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration("classpath:applicationContext.xml") -public class SimpleSourceDestinationMapperTest { +public class SimpleSourceDestinationMapperIntegrationTest { @Autowired SimpleSourceDestinationMapper simpleSourceDestinationMapper; From 60a1c5f481e2db0911cbaf7b4106bd95b63c5d71 Mon Sep 17 00:00:00 2001 From: DOHA Date: Fri, 21 Oct 2016 14:02:01 +0200 Subject: [PATCH 045/215] add integration test profile --- jooq-spring/pom.xml | 47 +++++++++++++++++++ ...=> PersistenceContextIntegrationTest.java} | 2 +- ...eryTest.java => QueryIntegrationTest.java} | 4 +- ...st.java => SpringBootIntegrationTest.java} | 2 +- 4 files changed, 51 insertions(+), 4 deletions(-) rename jooq-spring/src/test/java/com/baeldung/jooq/introduction/{PersistenceContext.java => PersistenceContextIntegrationTest.java} (98%) rename jooq-spring/src/test/java/com/baeldung/jooq/introduction/{QueryTest.java => QueryIntegrationTest.java} (97%) rename jooq-spring/src/test/java/com/baeldung/jooq/springboot/{SpringBootTest.java => SpringBootIntegrationTest.java} (99%) diff --git a/jooq-spring/pom.xml b/jooq-spring/pom.xml index e77ff0cbfd..96a3de11db 100644 --- a/jooq-spring/pom.xml +++ b/jooq-spring/pom.xml @@ -161,9 +161,55 @@ + + org.apache.maven.plugins + maven-surefire-plugin + + + **/*IntegrationTest.java + **/*LiveTest.java + + + + + + + integration + + + + org.apache.maven.plugins + maven-surefire-plugin + + + integration-test + + test + + + + **/*LiveTest.java + + + **/*IntegrationTest.java + + + + + + + json + + + + + + + + 3.7.3 1.4.191 @@ -173,6 +219,7 @@ 4.12 3.5.1 + 2.19.1 \ No newline at end of file diff --git a/jooq-spring/src/test/java/com/baeldung/jooq/introduction/PersistenceContext.java b/jooq-spring/src/test/java/com/baeldung/jooq/introduction/PersistenceContextIntegrationTest.java similarity index 98% rename from jooq-spring/src/test/java/com/baeldung/jooq/introduction/PersistenceContext.java rename to jooq-spring/src/test/java/com/baeldung/jooq/introduction/PersistenceContextIntegrationTest.java index df628f9f78..06290ae8db 100644 --- a/jooq-spring/src/test/java/com/baeldung/jooq/introduction/PersistenceContext.java +++ b/jooq-spring/src/test/java/com/baeldung/jooq/introduction/PersistenceContextIntegrationTest.java @@ -22,7 +22,7 @@ import javax.sql.DataSource; @ComponentScan({ "com.baeldung.jooq.introduction.db.public_.tables" }) @EnableTransactionManagement @PropertySource("classpath:intro_config.properties") -public class PersistenceContext { +public class PersistenceContextIntegrationTest { @Autowired private Environment environment; diff --git a/jooq-spring/src/test/java/com/baeldung/jooq/introduction/QueryTest.java b/jooq-spring/src/test/java/com/baeldung/jooq/introduction/QueryIntegrationTest.java similarity index 97% rename from jooq-spring/src/test/java/com/baeldung/jooq/introduction/QueryTest.java rename to jooq-spring/src/test/java/com/baeldung/jooq/introduction/QueryIntegrationTest.java index 68f975dd6d..28bc4c63c7 100644 --- a/jooq-spring/src/test/java/com/baeldung/jooq/introduction/QueryTest.java +++ b/jooq-spring/src/test/java/com/baeldung/jooq/introduction/QueryIntegrationTest.java @@ -17,10 +17,10 @@ import static com.baeldung.jooq.introduction.db.public_.tables.AuthorBook.AUTHOR import static com.baeldung.jooq.introduction.db.public_.tables.Book.BOOK; import static org.junit.Assert.assertEquals; -@ContextConfiguration(classes = PersistenceContext.class) +@ContextConfiguration(classes = PersistenceContextIntegrationTest.class) @Transactional(transactionManager = "transactionManager") @RunWith(SpringJUnit4ClassRunner.class) -public class QueryTest { +public class QueryIntegrationTest { @Autowired private DSLContext dsl; diff --git a/jooq-spring/src/test/java/com/baeldung/jooq/springboot/SpringBootTest.java b/jooq-spring/src/test/java/com/baeldung/jooq/springboot/SpringBootIntegrationTest.java similarity index 99% rename from jooq-spring/src/test/java/com/baeldung/jooq/springboot/SpringBootTest.java rename to jooq-spring/src/test/java/com/baeldung/jooq/springboot/SpringBootIntegrationTest.java index f9427f30fb..fa3f342ecd 100644 --- a/jooq-spring/src/test/java/com/baeldung/jooq/springboot/SpringBootTest.java +++ b/jooq-spring/src/test/java/com/baeldung/jooq/springboot/SpringBootIntegrationTest.java @@ -20,7 +20,7 @@ import static org.junit.Assert.assertEquals; @SpringApplicationConfiguration(Application.class) @Transactional("transactionManager") @RunWith(SpringJUnit4ClassRunner.class) -public class SpringBootTest { +public class SpringBootIntegrationTest { @Autowired private DSLContext dsl; From a22daf9513b5e42afeb4b09b4ff0962b8e987430 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ambrus=20Adri=C3=A1n-Zolt=C3=A1n?= Date: Fri, 21 Oct 2016 17:49:14 +0300 Subject: [PATCH 046/215] Added test cases --- spring-security-custom-voter/pom.xml | 40 ++++++++++++++++++ .../test/java/org/baeldung/web/LiveTest.java | 42 +++++++++++++++++++ 2 files changed, 82 insertions(+) create mode 100644 spring-security-custom-voter/src/test/java/org/baeldung/web/LiveTest.java diff --git a/spring-security-custom-voter/pom.xml b/spring-security-custom-voter/pom.xml index 800fe356b4..727efa48ab 100644 --- a/spring-security-custom-voter/pom.xml +++ b/spring-security-custom-voter/pom.xml @@ -21,6 +21,7 @@ UTF-8 UTF-8 + 3.0.1 1.8 @@ -43,6 +44,45 @@ spring-boot-starter-test test + + + + + junit + junit + test + + + + org.hamcrest + hamcrest-core + test + + + + org.hamcrest + hamcrest-library + test + + + + org.springframework + spring-test + 4.3.3.RELEASE + + + + org.springframework.security + spring-security-test + 4.1.3.RELEASE + test + + + + org.springframework.security + spring-security-web + 4.1.3.RELEASE + diff --git a/spring-security-custom-voter/src/test/java/org/baeldung/web/LiveTest.java b/spring-security-custom-voter/src/test/java/org/baeldung/web/LiveTest.java new file mode 100644 index 0000000000..3ddeab5920 --- /dev/null +++ b/spring-security-custom-voter/src/test/java/org/baeldung/web/LiveTest.java @@ -0,0 +1,42 @@ +package org.baeldung.web; + +import org.junit.Before; +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.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.web.WebAppConfiguration; +import org.springframework.test.web.servlet.MockMvc; +import org.springframework.test.web.servlet.setup.MockMvcBuilders; +import org.springframework.web.context.WebApplicationContext; + +import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestBuilders.formLogin; +import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.user; +import static org.springframework.security.test.web.servlet.response.SecurityMockMvcResultMatchers.authenticated; +import static org.springframework.security.test.web.servlet.setup.SecurityMockMvcConfigurers.springSecurity; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; + +@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration @WebAppConfiguration @SpringBootTest public class LiveTest { + @Autowired private WebApplicationContext context; + + private MockMvc mvc; + + @Before public void setup() { + mvc = MockMvcBuilders.webAppContextSetup(context).apply(springSecurity()).build(); + } + + @Test public void givenUnauthenticatedUser_whenAccessingMainPage_thenRedirect() throws Exception { + mvc.perform(get("/")).andExpect(status().is3xxRedirection()); + } + + @Test public void givenValidUsernameAndPassword_whenLogin_thenOK() throws Exception { + mvc.perform(formLogin("/login").user("user").password("pass")).andExpect(authenticated()); + } + + @Test public void givenAuthenticatedAdmin_whenAccessingMainPage_thenOK() throws Exception { + mvc.perform(get("/").with(user("admin").password("pass").roles("ADMIN"))).andExpect(status().isOk()); + } +} From 1d3ac0836f12ccb5a59fb619b2bcfd339e89fbaa Mon Sep 17 00:00:00 2001 From: Eugen Date: Fri, 21 Oct 2016 20:50:38 +0300 Subject: [PATCH 047/215] Update README.md --- spring-all/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/spring-all/README.md b/spring-all/README.md index aae98440f3..90ae69300a 100644 --- a/spring-all/README.md +++ b/spring-all/README.md @@ -15,3 +15,4 @@ The "REST With Spring" Classes: http://bit.ly/restwithspring - [Guide To Running Logic on Startup in Spring](http://www.baeldung.com/running-setup-logic-on-startup-in-spring) - [Quick Guide to Spring Controllers](http://www.baeldung.com/spring-controllers) - [Quick Guide to Spring Bean Scopes](http://www.baeldung.com/spring-bean-scopes) +- [Introduction To Ehcache](http://www.baeldung.com/ehcache) From 9aef7f21ece55732e512175a3e562698e8aa1ea5 Mon Sep 17 00:00:00 2001 From: Chris Anatalio Date: Fri, 21 Oct 2016 16:32:58 -0700 Subject: [PATCH 048/215] BAEL-223: Clean up and update dependencies --- spring-boot-data-dynamodb/pom.xml | 54 ++++++++---------- .../main/java/com/baeldung/Application.java | 13 +++++ .../spring/data/es/config/DynamoDBConfig.java | 13 ++--- .../spring/data/es/model/ProductInfo.java | 2 + .../ProductInfoRepository.java | 8 +-- .../main/java/org/baeldung/Application.java | 13 ----- .../src/main/resources/application.properties | 7 ++- .../ProductInfoRepositoryIntegrationTest.java | 55 +++++++++---------- 8 files changed, 78 insertions(+), 87 deletions(-) create mode 100644 spring-boot-data-dynamodb/src/main/java/com/baeldung/Application.java rename spring-boot-data-dynamodb/src/main/java/com/baeldung/spring/data/es/{repository => repositories}/ProductInfoRepository.java (87%) delete mode 100644 spring-boot-data-dynamodb/src/main/java/org/baeldung/Application.java diff --git a/spring-boot-data-dynamodb/pom.xml b/spring-boot-data-dynamodb/pom.xml index 9c6c5a875f..11e1366f3e 100644 --- a/spring-boot-data-dynamodb/pom.xml +++ b/spring-boot-data-dynamodb/pom.xml @@ -2,7 +2,7 @@ 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 - spring-boot + spring-boot-dynamodb 0.0.1-SNAPSHOT jar Spring Boot Actuator @@ -17,27 +17,29 @@ - org.baeldung.boot.DemoApplication + com.baeldung.Application UTF-8 1.8 4.3.1.RELEASE - - - org.springframework.boot - spring-boot-starter-thymeleaf - + + + + org.springframework.data + spring-data-releasetrain + Gosling-SR1 + pom + import + + + + + org.springframework.boot spring-boot-starter-web - - - org.springframework.boot - spring-boot-starter-data-jpa - - org.springframework.boot spring-boot-starter-actuator @@ -77,28 +79,13 @@ org.springframework.boot spring-boot-starter-mail - - org.subethamail - subethasmtp - 3.1.7 - test - - + org.webjars bootstrap 3.3.4 - - org.webjars - jquery - 2.1.4 - - - org.springframework.data - spring-data-jpa - 1.10.2.RELEASE - + com.amazonaws aws-java-sdk-dynamodb @@ -108,7 +95,12 @@ com.github.derjust spring-data-dynamodb 4.3.1 - + + + org.apache.httpcomponents + httpclient + 4.5.2 + diff --git a/spring-boot-data-dynamodb/src/main/java/com/baeldung/Application.java b/spring-boot-data-dynamodb/src/main/java/com/baeldung/Application.java new file mode 100644 index 0000000000..f5e0e98fd4 --- /dev/null +++ b/spring-boot-data-dynamodb/src/main/java/com/baeldung/Application.java @@ -0,0 +1,13 @@ +package com.baeldung; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.ComponentScan; + +@SpringBootApplication +@ComponentScan(basePackages = { "com.baeldung" }) +public class Application { + public static void main(String[] args) { + SpringApplication.run(Application.class, args); + } +} diff --git a/spring-boot-data-dynamodb/src/main/java/com/baeldung/spring/data/es/config/DynamoDBConfig.java b/spring-boot-data-dynamodb/src/main/java/com/baeldung/spring/data/es/config/DynamoDBConfig.java index f98292ea06..4bc8a128bc 100644 --- a/spring-boot-data-dynamodb/src/main/java/com/baeldung/spring/data/es/config/DynamoDBConfig.java +++ b/spring-boot-data-dynamodb/src/main/java/com/baeldung/spring/data/es/config/DynamoDBConfig.java @@ -1,18 +1,17 @@ package com.baeldung.spring.data.es.config; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.ComponentScan; -import org.springframework.context.annotation.Configuration; -import org.springframework.util.StringUtils; - import com.amazonaws.auth.AWSCredentials; import com.amazonaws.auth.BasicAWSCredentials; import com.amazonaws.services.dynamodbv2.AmazonDynamoDB; import com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient; +import org.socialsignin.spring.data.dynamodb.repository.config.EnableDynamoDBRepositories; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.util.StringUtils; @Configuration -@ComponentScan(basePackages = { "com.baeldung.spring.data.es" }) +@EnableDynamoDBRepositories(basePackages = "com.baeldung.spring.data.es.repositories") public class DynamoDBConfig { @Value("${amazon.dynamodb.endpoint}") diff --git a/spring-boot-data-dynamodb/src/main/java/com/baeldung/spring/data/es/model/ProductInfo.java b/spring-boot-data-dynamodb/src/main/java/com/baeldung/spring/data/es/model/ProductInfo.java index 4c97d14045..3e75c9e6f2 100644 --- a/spring-boot-data-dynamodb/src/main/java/com/baeldung/spring/data/es/model/ProductInfo.java +++ b/spring-boot-data-dynamodb/src/main/java/com/baeldung/spring/data/es/model/ProductInfo.java @@ -3,7 +3,9 @@ package com.baeldung.spring.data.es.model; import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBAttribute; import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBAutoGeneratedKey; import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBHashKey; +import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBTable; +@DynamoDBTable(tableName = "ProductInfo") public class ProductInfo { private String id; private String msrp; diff --git a/spring-boot-data-dynamodb/src/main/java/com/baeldung/spring/data/es/repository/ProductInfoRepository.java b/spring-boot-data-dynamodb/src/main/java/com/baeldung/spring/data/es/repositories/ProductInfoRepository.java similarity index 87% rename from spring-boot-data-dynamodb/src/main/java/com/baeldung/spring/data/es/repository/ProductInfoRepository.java rename to spring-boot-data-dynamodb/src/main/java/com/baeldung/spring/data/es/repositories/ProductInfoRepository.java index a30ff1c4aa..c5eee49634 100644 --- a/spring-boot-data-dynamodb/src/main/java/com/baeldung/spring/data/es/repository/ProductInfoRepository.java +++ b/spring-boot-data-dynamodb/src/main/java/com/baeldung/spring/data/es/repositories/ProductInfoRepository.java @@ -1,14 +1,12 @@ -package com.baeldung.spring.data.es.repository; - -import java.util.List; +package com.baeldung.spring.data.es.repositories; +import com.baeldung.spring.data.es.model.ProductInfo; import org.socialsignin.spring.data.dynamodb.repository.EnableScan; import org.springframework.data.repository.CrudRepository; -import com.baeldung.spring.data.es.model.ProductInfo; +import java.util.List; @EnableScan public interface ProductInfoRepository extends CrudRepository { - List findById(String id); } diff --git a/spring-boot-data-dynamodb/src/main/java/org/baeldung/Application.java b/spring-boot-data-dynamodb/src/main/java/org/baeldung/Application.java deleted file mode 100644 index aae0c427a9..0000000000 --- a/spring-boot-data-dynamodb/src/main/java/org/baeldung/Application.java +++ /dev/null @@ -1,13 +0,0 @@ -package org.baeldung; - -import org.springframework.boot.SpringApplication; -import org.springframework.context.ApplicationContext; - -@org.springframework.boot.autoconfigure.SpringBootApplication -public class Application { - private static ApplicationContext applicationContext; - - public static void main(String[] args) { - applicationContext = SpringApplication.run(Application.class, args); - } -} diff --git a/spring-boot-data-dynamodb/src/main/resources/application.properties b/spring-boot-data-dynamodb/src/main/resources/application.properties index fb5c8e2da0..e6911bc9e7 100644 --- a/spring-boot-data-dynamodb/src/main/resources/application.properties +++ b/spring-boot-data-dynamodb/src/main/resources/application.properties @@ -24,4 +24,9 @@ security.user.name=admin1 security.user.password=secret1 management.security.role=SUPERUSER -logging.level.org.springframework=INFO \ No newline at end of file +logging.level.org.springframework=INFO + +#AWS Keys +amazon.dynamodb.endpoint=http://localhost:8000/ +amazon.aws.accesskey=test1 +amazon.aws.secretkey=test1 \ No newline at end of file diff --git a/spring-boot-data-dynamodb/src/test/java/com/baeldung/spring/data/es/repository/ProductInfoRepositoryIntegrationTest.java b/spring-boot-data-dynamodb/src/test/java/com/baeldung/spring/data/es/repository/ProductInfoRepositoryIntegrationTest.java index 2421505acd..73ce60e79a 100644 --- a/spring-boot-data-dynamodb/src/test/java/com/baeldung/spring/data/es/repository/ProductInfoRepositoryIntegrationTest.java +++ b/spring-boot-data-dynamodb/src/test/java/com/baeldung/spring/data/es/repository/ProductInfoRepositoryIntegrationTest.java @@ -1,15 +1,22 @@ package com.baeldung.spring.data.es.repository; -import static org.junit.Assert.assertTrue; - -import java.util.List; - -import org.baeldung.Application; +import com.amazonaws.services.dynamodbv2.AmazonDynamoDB; +import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapper; +import com.amazonaws.services.dynamodbv2.document.Table; +import com.amazonaws.services.dynamodbv2.model.CreateTableRequest; +import com.amazonaws.services.dynamodbv2.model.CreateTableResult; +import com.amazonaws.services.dynamodbv2.model.ProvisionedThroughput; +import com.amazonaws.services.dynamodbv2.model.ResourceInUseException; +import com.baeldung.Application; +import com.baeldung.spring.data.es.config.DynamoDBConfig; +import com.baeldung.spring.data.es.model.ProductInfo; +import com.baeldung.spring.data.es.repositories.ProductInfoRepository; import org.junit.Before; import org.junit.Ignore; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.autoconfigure.PropertyPlaceholderAutoConfiguration; import org.springframework.boot.test.IntegrationTest; import org.springframework.boot.test.SpringApplicationConfiguration; import org.springframework.test.context.ActiveProfiles; @@ -17,17 +24,12 @@ import org.springframework.test.context.TestPropertySource; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.web.WebAppConfiguration; -import com.amazonaws.services.dynamodbv2.AmazonDynamoDB; -import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapper; -import com.amazonaws.services.dynamodbv2.document.DynamoDB; -import com.amazonaws.services.dynamodbv2.document.Table; -import com.amazonaws.services.dynamodbv2.model.CreateTableRequest; -import com.amazonaws.services.dynamodbv2.model.ProvisionedThroughput; -import com.amazonaws.services.dynamodbv2.model.ResourceInUseException; -import com.baeldung.spring.data.es.model.ProductInfo; +import java.util.List; + +import static org.junit.Assert.assertTrue; @RunWith(SpringJUnit4ClassRunner.class) -@SpringApplicationConfiguration(classes = Application.class) +@SpringApplicationConfiguration(classes = {Application.class, DynamoDBConfig.class, PropertyPlaceholderAutoConfiguration.class}) @WebAppConfiguration @IntegrationTest @ActiveProfiles("local") @@ -36,48 +38,41 @@ public class ProductInfoRepositoryIntegrationTest { private DynamoDBMapper dynamoDBMapper; - @Autowired - private DynamoDB dynamoDB; - @Autowired private AmazonDynamoDB amazonDynamoDB; @Autowired - ProductInfoRepository ProductInfoRepository; + ProductInfoRepository repository; private static final String EXPECTED_COST = "20"; private static final String EXPECTED_PRICE = "50"; - @BeforeClass - @Ignore - public static void setUp() throws Exception { + @Before + public void setup() throws Exception { try { dynamoDBMapper = new DynamoDBMapper(amazonDynamoDB); - CreateTableRequest tableRequest = dynamoDBMapper.generateCreateTableRequest(ProductInfo.class); // 1 + CreateTableRequest tableRequest = dynamoDBMapper.generateCreateTableRequest(ProductInfo.class); - tableRequest.setProvisionedThroughput(new ProvisionedThroughput(1L, 1L)); // 2 + tableRequest.setProvisionedThroughput(new ProvisionedThroughput(1L, 1L)); - Table table = dynamoDB.createTable(tableRequest); // 3 - - table.waitForActive(); // 4 + amazonDynamoDB.createTable(tableRequest); } catch (ResourceInUseException e) { // Do nothing, table already created } // TODO How to handle different environments. i.e. AVOID deleting all entries in ProductInfoion table - dynamoDBMapper.batchDelete((List) ProductInfoRepository.findAll()); + dynamoDBMapper.batchDelete((List) repository.findAll()); } - @Ignore @Test public void givenItemWithExpectedCost_whenRunFindAll_thenItemIsFound() { ProductInfo productInfo = new ProductInfo(EXPECTED_COST, EXPECTED_PRICE); - ProductInfoRepository.save(productInfo); + repository.save(productInfo); - List result = (List) ProductInfoRepository.findAll(); + List result = (List) repository.findAll(); assertTrue("Not empty", result.size() > 0); assertTrue("Contains item with expected cost", result.get(0).getCost().equals(EXPECTED_COST)); } From 5444f7c1dfa26336ef68a5e1fa3a56bc7a165166 Mon Sep 17 00:00:00 2001 From: Chris Anatalio Date: Fri, 21 Oct 2016 16:48:16 -0700 Subject: [PATCH 049/215] BAEL-223: Clean up imports and annotations --- .../repository/ProductInfoRepositoryIntegrationTest.java | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/spring-boot-data-dynamodb/src/test/java/com/baeldung/spring/data/es/repository/ProductInfoRepositoryIntegrationTest.java b/spring-boot-data-dynamodb/src/test/java/com/baeldung/spring/data/es/repository/ProductInfoRepositoryIntegrationTest.java index 73ce60e79a..df727cf727 100644 --- a/spring-boot-data-dynamodb/src/test/java/com/baeldung/spring/data/es/repository/ProductInfoRepositoryIntegrationTest.java +++ b/spring-boot-data-dynamodb/src/test/java/com/baeldung/spring/data/es/repository/ProductInfoRepositoryIntegrationTest.java @@ -2,21 +2,16 @@ package com.baeldung.spring.data.es.repository; import com.amazonaws.services.dynamodbv2.AmazonDynamoDB; import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapper; -import com.amazonaws.services.dynamodbv2.document.Table; import com.amazonaws.services.dynamodbv2.model.CreateTableRequest; -import com.amazonaws.services.dynamodbv2.model.CreateTableResult; import com.amazonaws.services.dynamodbv2.model.ProvisionedThroughput; import com.amazonaws.services.dynamodbv2.model.ResourceInUseException; import com.baeldung.Application; -import com.baeldung.spring.data.es.config.DynamoDBConfig; import com.baeldung.spring.data.es.model.ProductInfo; import com.baeldung.spring.data.es.repositories.ProductInfoRepository; import org.junit.Before; -import org.junit.Ignore; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.autoconfigure.PropertyPlaceholderAutoConfiguration; import org.springframework.boot.test.IntegrationTest; import org.springframework.boot.test.SpringApplicationConfiguration; import org.springframework.test.context.ActiveProfiles; @@ -29,7 +24,7 @@ import java.util.List; import static org.junit.Assert.assertTrue; @RunWith(SpringJUnit4ClassRunner.class) -@SpringApplicationConfiguration(classes = {Application.class, DynamoDBConfig.class, PropertyPlaceholderAutoConfiguration.class}) +@SpringApplicationConfiguration(classes = Application.class) @WebAppConfiguration @IntegrationTest @ActiveProfiles("local") From d55903a667e6d494c4dbdc9d68108bcd6dc9c695 Mon Sep 17 00:00:00 2001 From: slavisa-baeldung Date: Sat, 22 Oct 2016 07:16:14 +0200 Subject: [PATCH 050/215] BAEL-276 - URL encoding --- .../encoderdecoder/EncoderDecoder.java | 72 +++++++++++++++---- 1 file changed, 59 insertions(+), 13 deletions(-) diff --git a/core-java-8/src/test/java/com/baeldung/encoderdecoder/EncoderDecoder.java b/core-java-8/src/test/java/com/baeldung/encoderdecoder/EncoderDecoder.java index 62d2663994..208a23eb91 100644 --- a/core-java-8/src/test/java/com/baeldung/encoderdecoder/EncoderDecoder.java +++ b/core-java-8/src/test/java/com/baeldung/encoderdecoder/EncoderDecoder.java @@ -3,36 +3,82 @@ package com.baeldung.encoderdecoder; import org.hamcrest.CoreMatchers; import org.junit.Assert; import org.junit.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import java.io.UnsupportedEncodingException; +import java.net.MalformedURLException; +import java.net.URL; import java.net.URLDecoder; import java.net.URLEncoder; import java.nio.charset.StandardCharsets; +import java.util.Arrays; +import java.util.HashMap; +import java.util.Map; +import java.util.function.Function; +import java.util.stream.Collectors; public class EncoderDecoder { - @Test - public void givenPlainURL_whenUsingUTF8EncodingScheme_thenEncodeURL() throws UnsupportedEncodingException { - String plainURL = "http://www.baeldung.com" ; - String encodedURL = URLEncoder.encode(plainURL, StandardCharsets.UTF_8.toString()); + private static final String URL = "http://www.baeldung.com?key1=value+1&key2=value%40%21%242&key3=value%253"; + private static final Logger LOGGER = LoggerFactory.getLogger(EncoderDecoder.class); - Assert.assertThat("http%3A%2F%2Fwww.baeldung.com", CoreMatchers.is(encodedURL)); + private String encodeValue(String value) { + String encoded = null; + try { + encoded = URLEncoder.encode(value, StandardCharsets.UTF_8.toString()); + } catch (UnsupportedEncodingException e) { + LOGGER.error("Error encoding parameter {}", e.getMessage(), e); + } + return encoded; + } + + + private String decode(String value) { + String decoded = null; + try { + decoded = URLDecoder.decode(value, StandardCharsets.UTF_8.toString()); + } catch (UnsupportedEncodingException e) { + LOGGER.error("Error encoding parameter {}", e.getMessage(), e); + } + return decoded; } @Test - public void givenEncodedURL_whenUsingUTF8EncodingScheme_thenDecodeURL() throws UnsupportedEncodingException { - String encodedURL = "http%3A%2F%2Fwww.baeldung.com" ; - String decodedURL = URLDecoder.decode(encodedURL, StandardCharsets.UTF_8.toString()); + public void givenURL_whenAnalyze_thenCorrect() throws Exception { + URL url = new URL(URL); - Assert.assertThat("http://www.baeldung.com", CoreMatchers.is(decodedURL)); + Assert.assertThat(url.getProtocol(), CoreMatchers.is("http")); + Assert.assertThat(url.getHost(), CoreMatchers.is("www.baeldung.com")); + Assert.assertThat(url.getQuery(), CoreMatchers.is("key1=value+1&key2=value%40%21%242&key3=value%253")); } @Test - public void givenEncodedURL_whenUsingWrongEncodingScheme_thenDecodeInvalidURL() throws UnsupportedEncodingException { - String encodedURL = "http%3A%2F%2Fwww.baeldung.com"; + public void givenRequestParam_whenUTF8Scheme_thenEncode() throws Exception { + Map requestParams = new HashMap<>(); + requestParams.put("key1", "value 1"); + requestParams.put("key2", "value@!$2"); + requestParams.put("key3", "value%3"); - String decodedURL = URLDecoder.decode(encodedURL, StandardCharsets.UTF_16.toString()); + String encodedQuery = requestParams.keySet().stream() + .map(key -> key + "=" + encodeValue(requestParams.get(key))) + .collect(Collectors.joining("&")); + String encodedURL = "http://www.baeldung.com?" + encodedQuery; - Assert.assertFalse("http://www.baeldung.com".equals(decodedURL)); + Assert.assertThat(URL, CoreMatchers.is(encodedURL)); } + + @Test + public void givenRequestParam_whenUTF8Scheme_thenDecodeRequestParams() throws Exception { + URL url = new URL(URL); + String query = url.getQuery(); + + String decodedQuery = Arrays.stream(query.split("&")) + .map(param -> param.split("=")[0] + "=" + decode(param.split("=")[1])) + .collect(Collectors.joining("&")); + + Assert.assertEquals( + "http://www.baeldung.com?key1=value 1&key2=value@!$2&key3=value%3", url.getProtocol() + "://" + url.getHost() + "?" + decodedQuery); + } + } From ac277fdc8a660904a47425f46156e3c2a3f64dbc Mon Sep 17 00:00:00 2001 From: Sandeep Kumar Date: Sat, 22 Oct 2016 10:51:53 +0530 Subject: [PATCH 051/215] Handling Optional as per orElseThrow criteria --- .../java/com/baeldung/selenium/SeleniumExample.java | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/selenium-junit-testng/src/main/java/com/baeldung/selenium/SeleniumExample.java b/selenium-junit-testng/src/main/java/com/baeldung/selenium/SeleniumExample.java index 1007bf7503..ce60a1f638 100644 --- a/selenium-junit-testng/src/main/java/com/baeldung/selenium/SeleniumExample.java +++ b/selenium-junit-testng/src/main/java/com/baeldung/selenium/SeleniumExample.java @@ -1,6 +1,7 @@ package main.java.com.baeldung.selenium; import java.util.List; +import java.util.NoSuchElementException; import java.util.concurrent.TimeUnit; import org.openqa.selenium.By; @@ -28,16 +29,16 @@ public class SeleniumExample { return webDriver.getTitle(); } - public void getAboutBaeldungPage() { + public void getAboutBaeldungPage() throws Exception { closeOverlay(); clickAboutLink(); clickAboutUsLink(); } - private void closeOverlay() { + private void closeOverlay() throws Exception { List webElementList = webDriver.findElements(By.tagName("a")); - if (webElementList != null && !webElementList.isEmpty()) { - webElementList.stream().filter(webElement -> "Close".equalsIgnoreCase(webElement.getAttribute("title"))).findAny().get().click(); + if (webElementList != null && !webElementList.isEmpty() && webElementList.stream().filter(webElement -> "Close".equalsIgnoreCase(webElement.getAttribute("title"))).findAny().isPresent()) { + webElementList.stream().filter(webElement -> "Close".equalsIgnoreCase(webElement.getAttribute("title"))).findAny().orElseThrow(NoSuchElementException::new).click(); } } @@ -50,8 +51,6 @@ public class SeleniumExample { } public boolean isAuthorInformationAvailable() { - return webDriver - .findElement(By.xpath("//*[contains(text(), 'Eugen – an engineer')]")) - .isDisplayed(); + return webDriver.findElement(By.xpath("//*[contains(text(), 'Eugen – an engineer')]")).isDisplayed(); } } From 37ccb60f1d312e3de9049569e2d8c15c886fa3f7 Mon Sep 17 00:00:00 2001 From: ambrusadrianz Date: Sat, 22 Oct 2016 15:50:19 +0300 Subject: [PATCH 052/215] [BAEL-123] Created an example about custom AccessDecisionVoters in Spring Security. (#728) * Created an example about custom AccessDecisionVoters in Spring Security. * Added module in root pom file. * Added test cases --- pom.xml | 1 + spring-security-custom-voter/pom.xml | 96 +++++++++++++++++++ .../main/java/org/baeldung/Application.java | 12 +++ .../baeldung/security/MinuteBasedVoter.java | 38 ++++++++ .../baeldung/security/WebSecurityConfig.java | 69 +++++++++++++ .../baeldung/security/XmlSecurityConfig.java | 15 +++ .../main/java/org/baeldung/web/MvcConfig.java | 18 ++++ .../src/main/resources/spring-security.xml | 40 ++++++++ .../src/main/resources/templates/private.html | 10 ++ .../src/main/webapp/WEB-INF/web.xml | 47 +++++++++ .../test/java/org/baeldung/web/LiveTest.java | 42 ++++++++ 11 files changed, 388 insertions(+) create mode 100644 spring-security-custom-voter/pom.xml create mode 100644 spring-security-custom-voter/src/main/java/org/baeldung/Application.java create mode 100644 spring-security-custom-voter/src/main/java/org/baeldung/security/MinuteBasedVoter.java create mode 100644 spring-security-custom-voter/src/main/java/org/baeldung/security/WebSecurityConfig.java create mode 100644 spring-security-custom-voter/src/main/java/org/baeldung/security/XmlSecurityConfig.java create mode 100644 spring-security-custom-voter/src/main/java/org/baeldung/web/MvcConfig.java create mode 100644 spring-security-custom-voter/src/main/resources/spring-security.xml create mode 100644 spring-security-custom-voter/src/main/resources/templates/private.html create mode 100644 spring-security-custom-voter/src/main/webapp/WEB-INF/web.xml create mode 100644 spring-security-custom-voter/src/test/java/org/baeldung/web/LiveTest.java diff --git a/pom.xml b/pom.xml index eee9f07ab9..9979ff95a5 100644 --- a/pom.xml +++ b/pom.xml @@ -107,6 +107,7 @@ spring-security-basic-auth spring-security-custom-permission + spring-security-custom-voter spring-security-mvc-custom spring-security-mvc-digest-auth spring-security-mvc-ldap diff --git a/spring-security-custom-voter/pom.xml b/spring-security-custom-voter/pom.xml new file mode 100644 index 0000000000..727efa48ab --- /dev/null +++ b/spring-security-custom-voter/pom.xml @@ -0,0 +1,96 @@ + + + 4.0.0 + + org.baeldung + spring-security-custom-voter + 0.0.1-SNAPSHOT + war + + spring-security-custom-voter + Custom AccessDecisionVoter with Spring Security + + + org.springframework.boot + spring-boot-starter-parent + 1.4.1.RELEASE + + + + + UTF-8 + UTF-8 + 3.0.1 + 1.8 + + + + + org.springframework.boot + spring-boot-starter-security + + + org.springframework.boot + spring-boot-starter-thymeleaf + + + org.springframework.boot + spring-boot-starter-web + + + + org.springframework.boot + spring-boot-starter-test + test + + + + + + junit + junit + test + + + + org.hamcrest + hamcrest-core + test + + + + org.hamcrest + hamcrest-library + test + + + + org.springframework + spring-test + 4.3.3.RELEASE + + + + org.springframework.security + spring-security-test + 4.1.3.RELEASE + test + + + + org.springframework.security + spring-security-web + 4.1.3.RELEASE + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + diff --git a/spring-security-custom-voter/src/main/java/org/baeldung/Application.java b/spring-security-custom-voter/src/main/java/org/baeldung/Application.java new file mode 100644 index 0000000000..a9d6f3b8b1 --- /dev/null +++ b/spring-security-custom-voter/src/main/java/org/baeldung/Application.java @@ -0,0 +1,12 @@ +package org.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/spring-security-custom-voter/src/main/java/org/baeldung/security/MinuteBasedVoter.java b/spring-security-custom-voter/src/main/java/org/baeldung/security/MinuteBasedVoter.java new file mode 100644 index 0000000000..8d22c52b0d --- /dev/null +++ b/spring-security-custom-voter/src/main/java/org/baeldung/security/MinuteBasedVoter.java @@ -0,0 +1,38 @@ +package org.baeldung.security; + +import org.springframework.security.access.AccessDecisionVoter; +import org.springframework.security.access.ConfigAttribute; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.GrantedAuthority; + +import java.time.LocalDateTime; +import java.util.Collection; +import java.util.List; +import java.util.stream.Collectors; + +public class MinuteBasedVoter implements AccessDecisionVoter { + @Override + public boolean supports(ConfigAttribute attribute) { + return true; + } + + @Override + public boolean supports(Class clazz) { + return true; + } + + @Override + public int vote(Authentication authentication, Object object, Collection collection) { + List roles = authentication + .getAuthorities() + .stream().map(GrantedAuthority::getAuthority) + .collect(Collectors.toList()); + + for (String role: roles) { + if ("ROLE_USER".equals(role) && LocalDateTime.now().getMinute() % 2 != 0) { + return ACCESS_DENIED; + } + } + return ACCESS_ABSTAIN; + } +} diff --git a/spring-security-custom-voter/src/main/java/org/baeldung/security/WebSecurityConfig.java b/spring-security-custom-voter/src/main/java/org/baeldung/security/WebSecurityConfig.java new file mode 100644 index 0000000000..b3fb196424 --- /dev/null +++ b/spring-security-custom-voter/src/main/java/org/baeldung/security/WebSecurityConfig.java @@ -0,0 +1,69 @@ +package org.baeldung.security; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.security.access.AccessDecisionManager; +import org.springframework.security.access.AccessDecisionVoter; +import org.springframework.security.access.vote.AuthenticatedVoter; +import org.springframework.security.access.vote.RoleVoter; +import org.springframework.security.access.vote.UnanimousBased; +import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; +import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; +import org.springframework.security.web.access.expression.WebExpressionVoter; +import org.springframework.security.web.util.matcher.AntPathRequestMatcher; + +import java.util.Arrays; +import java.util.List; + +@Configuration +@EnableWebSecurity +public class WebSecurityConfig extends WebSecurityConfigurerAdapter { + @Autowired + public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception { + // @formatter: off + auth.inMemoryAuthentication() + .withUser("user").password("pass").roles("USER") + .and() + .withUser("admin").password("pass").roles("ADMIN"); + // @formatter: on + } + + @Override + protected void configure(HttpSecurity http) throws Exception { + // @formatter: off + http + // needed so our login could work + .csrf() + .disable() + .authorizeRequests() + .anyRequest() + .authenticated() + .accessDecisionManager(accessDecisionManager()) + .antMatchers("/").hasAnyRole("ROLE_ADMIN", "ROLE_USER") + .and() + .formLogin() + .permitAll() + .and() + .logout() + .permitAll() + .deleteCookies("JSESSIONID") + .logoutSuccessUrl("/login"); + // @formatter: on + } + + @Bean + public AccessDecisionManager accessDecisionManager() { + // @formatter: off + List> decisionVoters = + Arrays.asList( + new WebExpressionVoter(), + new RoleVoter(), + new AuthenticatedVoter(), + new MinuteBasedVoter()); + // @formatter: on + return new UnanimousBased(decisionVoters); + } +} diff --git a/spring-security-custom-voter/src/main/java/org/baeldung/security/XmlSecurityConfig.java b/spring-security-custom-voter/src/main/java/org/baeldung/security/XmlSecurityConfig.java new file mode 100644 index 0000000000..45e095c66e --- /dev/null +++ b/spring-security-custom-voter/src/main/java/org/baeldung/security/XmlSecurityConfig.java @@ -0,0 +1,15 @@ +package org.baeldung.security; + +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.ImportResource; + +/** + * Created by ambrusadrianz on 09/10/2016. + */ +@Configuration +//@ImportResource({"classpath:spring-security.xml"}) +public class XmlSecurityConfig { + public XmlSecurityConfig() { + super(); + } +} diff --git a/spring-security-custom-voter/src/main/java/org/baeldung/web/MvcConfig.java b/spring-security-custom-voter/src/main/java/org/baeldung/web/MvcConfig.java new file mode 100644 index 0000000000..5d38dca1ff --- /dev/null +++ b/spring-security-custom-voter/src/main/java/org/baeldung/web/MvcConfig.java @@ -0,0 +1,18 @@ +package org.baeldung.web; + +import org.springframework.context.annotation.Configuration; +import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; +import org.springframework.web.servlet.config.annotation.ViewControllerRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; + +/** + * Created by ambrusadrianz on 30/09/2016. + */ + +@Configuration +public class MvcConfig extends WebMvcConfigurerAdapter { + @Override + public void addViewControllers(ViewControllerRegistry registry) { + registry.addViewController("/").setViewName("private"); + } +} diff --git a/spring-security-custom-voter/src/main/resources/spring-security.xml b/spring-security-custom-voter/src/main/resources/spring-security.xml new file mode 100644 index 0000000000..117638289e --- /dev/null +++ b/spring-security-custom-voter/src/main/resources/spring-security.xml @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/spring-security-custom-voter/src/main/resources/templates/private.html b/spring-security-custom-voter/src/main/resources/templates/private.html new file mode 100644 index 0000000000..5af8c7a13e --- /dev/null +++ b/spring-security-custom-voter/src/main/resources/templates/private.html @@ -0,0 +1,10 @@ + + + + Private + + +

Congrats!

+ + \ No newline at end of file diff --git a/spring-security-custom-voter/src/main/webapp/WEB-INF/web.xml b/spring-security-custom-voter/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 0000000000..d69bce35ae --- /dev/null +++ b/spring-security-custom-voter/src/main/webapp/WEB-INF/web.xml @@ -0,0 +1,47 @@ + + + + Spring Secured Application + + + + mvc + org.springframework.web.servlet.DispatcherServlet + 1 + + + mvc + / + + + + contextClass + + org.springframework.web.context.support.AnnotationConfigWebApplicationContext + + + + contextConfigLocation + org.baeldung.spring.web.config + + + + org.springframework.web.context.ContextLoaderListener + + + + + + springSecurityFilterChain + org.springframework.web.filter.DelegatingFilterProxy + + + springSecurityFilterChain + /* + + + \ No newline at end of file diff --git a/spring-security-custom-voter/src/test/java/org/baeldung/web/LiveTest.java b/spring-security-custom-voter/src/test/java/org/baeldung/web/LiveTest.java new file mode 100644 index 0000000000..3ddeab5920 --- /dev/null +++ b/spring-security-custom-voter/src/test/java/org/baeldung/web/LiveTest.java @@ -0,0 +1,42 @@ +package org.baeldung.web; + +import org.junit.Before; +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.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.web.WebAppConfiguration; +import org.springframework.test.web.servlet.MockMvc; +import org.springframework.test.web.servlet.setup.MockMvcBuilders; +import org.springframework.web.context.WebApplicationContext; + +import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestBuilders.formLogin; +import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.user; +import static org.springframework.security.test.web.servlet.response.SecurityMockMvcResultMatchers.authenticated; +import static org.springframework.security.test.web.servlet.setup.SecurityMockMvcConfigurers.springSecurity; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; + +@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration @WebAppConfiguration @SpringBootTest public class LiveTest { + @Autowired private WebApplicationContext context; + + private MockMvc mvc; + + @Before public void setup() { + mvc = MockMvcBuilders.webAppContextSetup(context).apply(springSecurity()).build(); + } + + @Test public void givenUnauthenticatedUser_whenAccessingMainPage_thenRedirect() throws Exception { + mvc.perform(get("/")).andExpect(status().is3xxRedirection()); + } + + @Test public void givenValidUsernameAndPassword_whenLogin_thenOK() throws Exception { + mvc.perform(formLogin("/login").user("user").password("pass")).andExpect(authenticated()); + } + + @Test public void givenAuthenticatedAdmin_whenAccessingMainPage_thenOK() throws Exception { + mvc.perform(get("/").with(user("admin").password("pass").roles("ADMIN"))).andExpect(status().isOk()); + } +} From 18dfed06d0c68fe46eeffc0d7730a64d49d76f75 Mon Sep 17 00:00:00 2001 From: DOHA Date: Sat, 22 Oct 2016 15:08:10 +0200 Subject: [PATCH 053/215] add integration test profile --- jjwt/pom.xml | 49 +++++++++++++++++-- ...va => DemoApplicationIntegrationTest.java} | 2 +- 2 files changed, 47 insertions(+), 4 deletions(-) rename jjwt/src/test/java/io/jsonwebtoken/jjwtfun/{DemoApplicationTests.java => DemoApplicationIntegrationTest.java} (91%) diff --git a/jjwt/pom.xml b/jjwt/pom.xml index 24f1c5c5ab..d2a3f1cdd8 100644 --- a/jjwt/pom.xml +++ b/jjwt/pom.xml @@ -58,8 +58,51 @@ org.springframework.boot spring-boot-maven-plugin + + org.apache.maven.plugins + maven-surefire-plugin + + + **/*IntegrationTest.java + **/*LiveTest.java + + + -
- - +
+ + + + integration + + + + org.apache.maven.plugins + maven-surefire-plugin + + + integration-test + + test + + + + **/*LiveTest.java + + + **/*IntegrationTest.java + + + + + + + json + + + + + + + diff --git a/jjwt/src/test/java/io/jsonwebtoken/jjwtfun/DemoApplicationTests.java b/jjwt/src/test/java/io/jsonwebtoken/jjwtfun/DemoApplicationIntegrationTest.java similarity index 91% rename from jjwt/src/test/java/io/jsonwebtoken/jjwtfun/DemoApplicationTests.java rename to jjwt/src/test/java/io/jsonwebtoken/jjwtfun/DemoApplicationIntegrationTest.java index 82138ea23e..df147232d9 100644 --- a/jjwt/src/test/java/io/jsonwebtoken/jjwtfun/DemoApplicationTests.java +++ b/jjwt/src/test/java/io/jsonwebtoken/jjwtfun/DemoApplicationIntegrationTest.java @@ -9,7 +9,7 @@ import org.springframework.test.context.web.WebAppConfiguration; @RunWith(SpringJUnit4ClassRunner.class) @SpringApplicationConfiguration(classes = JJWTFunApplication.class) @WebAppConfiguration -public class DemoApplicationTests { +public class DemoApplicationIntegrationTest { @Test public void contextLoads() { From d60874a90d873b334f46c7d08190fb3d941c0387 Mon Sep 17 00:00:00 2001 From: DOHA Date: Sat, 22 Oct 2016 17:01:45 +0200 Subject: [PATCH 054/215] add integration test profile --- java-cassandra/pom.xml | 49 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 48 insertions(+), 1 deletion(-) diff --git a/java-cassandra/pom.xml b/java-cassandra/pom.xml index a91c3b9b62..92d3a8ede6 100644 --- a/java-cassandra/pom.xml +++ b/java-cassandra/pom.xml @@ -76,8 +76,54 @@ 1.8 + + org.apache.maven.plugins + maven-surefire-plugin + ${maven-surefire-plugin.version} + + + **/*IntegrationTest.java + **/*LiveTest.java + + + - + + + + + integration + + + + org.apache.maven.plugins + maven-surefire-plugin + + + integration-test + + test + + + + **/*LiveTest.java + + + **/*IntegrationTest.java + + + + + + + json + + + + + + + UTF-8 @@ -97,6 +143,7 @@ 3.5.1 + 2.19.1 3.1.0 From 5c7d521402e858d532255ce506b628f447705c13 Mon Sep 17 00:00:00 2001 From: DOHA Date: Sat, 22 Oct 2016 17:07:54 +0200 Subject: [PATCH 055/215] add integration test profile --- hystrix/pom.xml | 49 +++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 47 insertions(+), 2 deletions(-) diff --git a/hystrix/pom.xml b/hystrix/pom.xml index 42828e1c97..54c17f1487 100644 --- a/hystrix/pom.xml +++ b/hystrix/pom.xml @@ -112,9 +112,54 @@ 1.8 + + org.apache.maven.plugins + maven-surefire-plugin + ${maven-surefire-plugin.version} + + + **/*IntegrationTest.java + **/*LiveTest.java + + + - - + + + + + integration + + + + org.apache.maven.plugins + maven-surefire-plugin + + + integration-test + + test + + + + **/*LiveTest.java + + + **/*IntegrationTest.java + + + + + + + json + + + + + + + From c9b956e9b949561ee557b7a8b886b3411568f4da Mon Sep 17 00:00:00 2001 From: DOHA Date: Sat, 22 Oct 2016 17:21:26 +0200 Subject: [PATCH 056/215] add integration test profile --- dependency-injection/pom.xml | 42 +++++++++++++++++-- ...ava => FieldAutowiredIntegrationTest.java} | 2 +- ...=> FieldAutowiredNameIntegrationTest.java} | 2 +- ...eldQualifierAutowiredIntegrationTest.java} | 2 +- ... => FieldByNameInjectIntegrationTest.java} | 2 +- ...t.java => FieldInjectIntegrationTest.java} | 2 +- ... FieldQualifierInjectIntegrationTest.java} | 2 +- ...ieldResourceInjectionIntegrationTest.java} | 2 +- ...odByQualifierResourceIntegrationTest.java} | 2 +- ... MethodByTypeResourceIntegrationTest.java} | 2 +- ...thodResourceInjectionIntegrationTest.java} | 2 +- ...java => NamedResourceIntegrationTest.java} | 2 +- ...fierResourceInjectionIntegrationTest.java} | 2 +- ...tterResourceInjectionIntegrationTest.java} | 2 +- 14 files changed, 52 insertions(+), 16 deletions(-) rename dependency-injection/src/test/java/com/baeldung/autowired/{FieldAutowiredTest.java => FieldAutowiredIntegrationTest.java} (95%) rename dependency-injection/src/test/java/com/baeldung/autowired/{FieldAutowiredNameTest.java => FieldAutowiredNameIntegrationTest.java} (95%) rename dependency-injection/src/test/java/com/baeldung/autowired/{FieldQualifierAutowiredTest.java => FieldQualifierAutowiredIntegrationTest.java} (96%) rename dependency-injection/src/test/java/com/baeldung/inject/{FieldByNameInjectTest.java => FieldByNameInjectIntegrationTest.java} (95%) rename dependency-injection/src/test/java/com/baeldung/inject/{FieldInjectTest.java => FieldInjectIntegrationTest.java} (95%) rename dependency-injection/src/test/java/com/baeldung/inject/{FieldQualifierInjectTest.java => FieldQualifierInjectIntegrationTest.java} (96%) rename dependency-injection/src/test/java/com/baeldung/resource/{FieldResourceInjectionTest.java => FieldResourceInjectionIntegrationTest.java} (94%) rename dependency-injection/src/test/java/com/baeldung/resource/{MethodByQualifierResourceTest.java => MethodByQualifierResourceIntegrationTest.java} (96%) rename dependency-injection/src/test/java/com/baeldung/resource/{MethodByTypeResourceTest.java => MethodByTypeResourceIntegrationTest.java} (95%) rename dependency-injection/src/test/java/com/baeldung/resource/{MethodResourceInjectionTest.java => MethodResourceInjectionIntegrationTest.java} (95%) rename dependency-injection/src/test/java/com/baeldung/resource/{NamedResourceTest.java => NamedResourceIntegrationTest.java} (95%) rename dependency-injection/src/test/java/com/baeldung/resource/{QualifierResourceInjectionTest.java => QualifierResourceInjectionIntegrationTest.java} (95%) rename dependency-injection/src/test/java/com/baeldung/resource/{SetterResourceInjectionTest.java => SetterResourceInjectionIntegrationTest.java} (95%) diff --git a/dependency-injection/pom.xml b/dependency-injection/pom.xml index 9e78a66ad6..9b94ba7b35 100644 --- a/dependency-injection/pom.xml +++ b/dependency-injection/pom.xml @@ -66,9 +66,10 @@ org.apache.maven.plugins maven-surefire-plugin - - **/*Test.java - + + **/*IntegrationTest.java + **/*LiveTest.java + @@ -85,6 +86,41 @@ + + + integration + + + + org.apache.maven.plugins + maven-surefire-plugin + + + integration-test + + test + + + + **/*LiveTest.java + + + **/*IntegrationTest.java + + + + + + + json + + + + + + + + 2.6 diff --git a/dependency-injection/src/test/java/com/baeldung/autowired/FieldAutowiredTest.java b/dependency-injection/src/test/java/com/baeldung/autowired/FieldAutowiredIntegrationTest.java similarity index 95% rename from dependency-injection/src/test/java/com/baeldung/autowired/FieldAutowiredTest.java rename to dependency-injection/src/test/java/com/baeldung/autowired/FieldAutowiredIntegrationTest.java index b736871f85..a78799f1d9 100644 --- a/dependency-injection/src/test/java/com/baeldung/autowired/FieldAutowiredTest.java +++ b/dependency-injection/src/test/java/com/baeldung/autowired/FieldAutowiredIntegrationTest.java @@ -16,7 +16,7 @@ import static org.junit.Assert.assertNotNull; @ContextConfiguration( loader = AnnotationConfigContextLoader.class, classes = ApplicationContextTestAutowiredType.class) -public class FieldAutowiredTest { +public class FieldAutowiredIntegrationTest { @Autowired private ArbitraryDependency fieldDependency; diff --git a/dependency-injection/src/test/java/com/baeldung/autowired/FieldAutowiredNameTest.java b/dependency-injection/src/test/java/com/baeldung/autowired/FieldAutowiredNameIntegrationTest.java similarity index 95% rename from dependency-injection/src/test/java/com/baeldung/autowired/FieldAutowiredNameTest.java rename to dependency-injection/src/test/java/com/baeldung/autowired/FieldAutowiredNameIntegrationTest.java index cbdac68543..8f09e73c33 100644 --- a/dependency-injection/src/test/java/com/baeldung/autowired/FieldAutowiredNameTest.java +++ b/dependency-injection/src/test/java/com/baeldung/autowired/FieldAutowiredNameIntegrationTest.java @@ -16,7 +16,7 @@ import static org.junit.Assert.assertNotNull; @ContextConfiguration( loader = AnnotationConfigContextLoader.class, classes = ApplicationContextTestAutowiredName.class) -public class FieldAutowiredNameTest { +public class FieldAutowiredNameIntegrationTest { @Autowired private ArbitraryDependency autowiredFieldDependency; diff --git a/dependency-injection/src/test/java/com/baeldung/autowired/FieldQualifierAutowiredTest.java b/dependency-injection/src/test/java/com/baeldung/autowired/FieldQualifierAutowiredIntegrationTest.java similarity index 96% rename from dependency-injection/src/test/java/com/baeldung/autowired/FieldQualifierAutowiredTest.java rename to dependency-injection/src/test/java/com/baeldung/autowired/FieldQualifierAutowiredIntegrationTest.java index cbc3d56f67..01317aef6f 100644 --- a/dependency-injection/src/test/java/com/baeldung/autowired/FieldQualifierAutowiredTest.java +++ b/dependency-injection/src/test/java/com/baeldung/autowired/FieldQualifierAutowiredIntegrationTest.java @@ -17,7 +17,7 @@ import static org.junit.Assert.assertNotNull; @ContextConfiguration( loader = AnnotationConfigContextLoader.class, classes = ApplicationContextTestAutowiredQualifier.class) -public class FieldQualifierAutowiredTest { +public class FieldQualifierAutowiredIntegrationTest { @Autowired @Qualifier("autowiredFieldDependency") diff --git a/dependency-injection/src/test/java/com/baeldung/inject/FieldByNameInjectTest.java b/dependency-injection/src/test/java/com/baeldung/inject/FieldByNameInjectIntegrationTest.java similarity index 95% rename from dependency-injection/src/test/java/com/baeldung/inject/FieldByNameInjectTest.java rename to dependency-injection/src/test/java/com/baeldung/inject/FieldByNameInjectIntegrationTest.java index 665c9f1ddc..f5897febab 100644 --- a/dependency-injection/src/test/java/com/baeldung/inject/FieldByNameInjectTest.java +++ b/dependency-injection/src/test/java/com/baeldung/inject/FieldByNameInjectIntegrationTest.java @@ -18,7 +18,7 @@ import static org.junit.Assert.assertNotNull; @ContextConfiguration( loader = AnnotationConfigContextLoader.class, classes = ApplicationContextTestInjectName.class) -public class FieldByNameInjectTest { +public class FieldByNameInjectIntegrationTest { @Inject @Named("yetAnotherFieldInjectDependency") diff --git a/dependency-injection/src/test/java/com/baeldung/inject/FieldInjectTest.java b/dependency-injection/src/test/java/com/baeldung/inject/FieldInjectIntegrationTest.java similarity index 95% rename from dependency-injection/src/test/java/com/baeldung/inject/FieldInjectTest.java rename to dependency-injection/src/test/java/com/baeldung/inject/FieldInjectIntegrationTest.java index 7561c39e76..45b7c8015c 100644 --- a/dependency-injection/src/test/java/com/baeldung/inject/FieldInjectTest.java +++ b/dependency-injection/src/test/java/com/baeldung/inject/FieldInjectIntegrationTest.java @@ -17,7 +17,7 @@ import static org.junit.Assert.assertNotNull; @ContextConfiguration( loader = AnnotationConfigContextLoader.class, classes = ApplicationContextTestInjectType.class) -public class FieldInjectTest { +public class FieldInjectIntegrationTest { @Inject private ArbitraryDependency fieldInjectDependency; diff --git a/dependency-injection/src/test/java/com/baeldung/inject/FieldQualifierInjectTest.java b/dependency-injection/src/test/java/com/baeldung/inject/FieldQualifierInjectIntegrationTest.java similarity index 96% rename from dependency-injection/src/test/java/com/baeldung/inject/FieldQualifierInjectTest.java rename to dependency-injection/src/test/java/com/baeldung/inject/FieldQualifierInjectIntegrationTest.java index 7e5f7e7453..0fd6a0e4c1 100644 --- a/dependency-injection/src/test/java/com/baeldung/inject/FieldQualifierInjectTest.java +++ b/dependency-injection/src/test/java/com/baeldung/inject/FieldQualifierInjectIntegrationTest.java @@ -17,7 +17,7 @@ import static org.junit.Assert.assertNotNull; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(loader = AnnotationConfigContextLoader.class, classes = ApplicationContextTestInjectQualifier.class) -public class FieldQualifierInjectTest { +public class FieldQualifierInjectIntegrationTest { @Inject @Qualifier("defaultFile") diff --git a/dependency-injection/src/test/java/com/baeldung/resource/FieldResourceInjectionTest.java b/dependency-injection/src/test/java/com/baeldung/resource/FieldResourceInjectionIntegrationTest.java similarity index 94% rename from dependency-injection/src/test/java/com/baeldung/resource/FieldResourceInjectionTest.java rename to dependency-injection/src/test/java/com/baeldung/resource/FieldResourceInjectionIntegrationTest.java index ef7e7b0aeb..63a25cb499 100644 --- a/dependency-injection/src/test/java/com/baeldung/resource/FieldResourceInjectionTest.java +++ b/dependency-injection/src/test/java/com/baeldung/resource/FieldResourceInjectionIntegrationTest.java @@ -17,7 +17,7 @@ import static org.junit.Assert.assertNotNull; @ContextConfiguration( loader = AnnotationConfigContextLoader.class, classes = ApplicationContextTestResourceNameType.class) -public class FieldResourceInjectionTest { +public class FieldResourceInjectionIntegrationTest { @Resource(name = "namedFile") private File defaultFile; diff --git a/dependency-injection/src/test/java/com/baeldung/resource/MethodByQualifierResourceTest.java b/dependency-injection/src/test/java/com/baeldung/resource/MethodByQualifierResourceIntegrationTest.java similarity index 96% rename from dependency-injection/src/test/java/com/baeldung/resource/MethodByQualifierResourceTest.java rename to dependency-injection/src/test/java/com/baeldung/resource/MethodByQualifierResourceIntegrationTest.java index 95e9fc0bd5..f5bb9f10cf 100644 --- a/dependency-injection/src/test/java/com/baeldung/resource/MethodByQualifierResourceTest.java +++ b/dependency-injection/src/test/java/com/baeldung/resource/MethodByQualifierResourceIntegrationTest.java @@ -18,7 +18,7 @@ import static org.junit.Assert.assertNotNull; @ContextConfiguration( loader = AnnotationConfigContextLoader.class, classes = ApplicationContextTestResourceQualifier.class) -public class MethodByQualifierResourceTest { +public class MethodByQualifierResourceIntegrationTest { private File arbDependency; private File anotherArbDependency; diff --git a/dependency-injection/src/test/java/com/baeldung/resource/MethodByTypeResourceTest.java b/dependency-injection/src/test/java/com/baeldung/resource/MethodByTypeResourceIntegrationTest.java similarity index 95% rename from dependency-injection/src/test/java/com/baeldung/resource/MethodByTypeResourceTest.java rename to dependency-injection/src/test/java/com/baeldung/resource/MethodByTypeResourceIntegrationTest.java index ad9a9a4fb6..171cbfea47 100644 --- a/dependency-injection/src/test/java/com/baeldung/resource/MethodByTypeResourceTest.java +++ b/dependency-injection/src/test/java/com/baeldung/resource/MethodByTypeResourceIntegrationTest.java @@ -17,7 +17,7 @@ import static org.junit.Assert.assertNotNull; @ContextConfiguration( loader = AnnotationConfigContextLoader.class, classes = ApplicationContextTestResourceNameType.class) -public class MethodByTypeResourceTest { +public class MethodByTypeResourceIntegrationTest { private File defaultFile; diff --git a/dependency-injection/src/test/java/com/baeldung/resource/MethodResourceInjectionTest.java b/dependency-injection/src/test/java/com/baeldung/resource/MethodResourceInjectionIntegrationTest.java similarity index 95% rename from dependency-injection/src/test/java/com/baeldung/resource/MethodResourceInjectionTest.java rename to dependency-injection/src/test/java/com/baeldung/resource/MethodResourceInjectionIntegrationTest.java index 1622d8896c..2e1c3c39a9 100644 --- a/dependency-injection/src/test/java/com/baeldung/resource/MethodResourceInjectionTest.java +++ b/dependency-injection/src/test/java/com/baeldung/resource/MethodResourceInjectionIntegrationTest.java @@ -17,7 +17,7 @@ import static org.junit.Assert.assertNotNull; @ContextConfiguration( loader = AnnotationConfigContextLoader.class, classes = ApplicationContextTestResourceNameType.class) -public class MethodResourceInjectionTest { +public class MethodResourceInjectionIntegrationTest { private File defaultFile; diff --git a/dependency-injection/src/test/java/com/baeldung/resource/NamedResourceTest.java b/dependency-injection/src/test/java/com/baeldung/resource/NamedResourceIntegrationTest.java similarity index 95% rename from dependency-injection/src/test/java/com/baeldung/resource/NamedResourceTest.java rename to dependency-injection/src/test/java/com/baeldung/resource/NamedResourceIntegrationTest.java index da104ecaae..d52660e9b8 100644 --- a/dependency-injection/src/test/java/com/baeldung/resource/NamedResourceTest.java +++ b/dependency-injection/src/test/java/com/baeldung/resource/NamedResourceIntegrationTest.java @@ -16,7 +16,7 @@ import static org.junit.Assert.assertNotNull; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(loader = AnnotationConfigContextLoader.class, classes = ApplicationContextTestResourceNameType.class) -public class NamedResourceTest { +public class NamedResourceIntegrationTest { @Resource(name = "namedFile") private File testFile; diff --git a/dependency-injection/src/test/java/com/baeldung/resource/QualifierResourceInjectionTest.java b/dependency-injection/src/test/java/com/baeldung/resource/QualifierResourceInjectionIntegrationTest.java similarity index 95% rename from dependency-injection/src/test/java/com/baeldung/resource/QualifierResourceInjectionTest.java rename to dependency-injection/src/test/java/com/baeldung/resource/QualifierResourceInjectionIntegrationTest.java index 024c8e2bbe..3f812350c9 100644 --- a/dependency-injection/src/test/java/com/baeldung/resource/QualifierResourceInjectionTest.java +++ b/dependency-injection/src/test/java/com/baeldung/resource/QualifierResourceInjectionIntegrationTest.java @@ -18,7 +18,7 @@ import static org.junit.Assert.assertNotNull; @ContextConfiguration( loader = AnnotationConfigContextLoader.class, classes = ApplicationContextTestResourceQualifier.class) -public class QualifierResourceInjectionTest { +public class QualifierResourceInjectionIntegrationTest { @Resource @Qualifier("defaultFile") diff --git a/dependency-injection/src/test/java/com/baeldung/resource/SetterResourceInjectionTest.java b/dependency-injection/src/test/java/com/baeldung/resource/SetterResourceInjectionIntegrationTest.java similarity index 95% rename from dependency-injection/src/test/java/com/baeldung/resource/SetterResourceInjectionTest.java rename to dependency-injection/src/test/java/com/baeldung/resource/SetterResourceInjectionIntegrationTest.java index aa7cfda975..ae13b2336a 100644 --- a/dependency-injection/src/test/java/com/baeldung/resource/SetterResourceInjectionTest.java +++ b/dependency-injection/src/test/java/com/baeldung/resource/SetterResourceInjectionIntegrationTest.java @@ -16,7 +16,7 @@ import static org.junit.Assert.assertNotNull; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(loader = AnnotationConfigContextLoader.class, classes = ApplicationContextTestResourceNameType.class) -public class SetterResourceInjectionTest { +public class SetterResourceInjectionIntegrationTest { private File defaultFile; From d8c4b20e71201d04e03f3dd6600342f391d2ec7f Mon Sep 17 00:00:00 2001 From: DOHA Date: Sat, 22 Oct 2016 19:27:31 +0200 Subject: [PATCH 057/215] add integration test profile --- cdi/pom.xml | 52 +++++++++++++++++++ ... => SpringInterceptorIntegrationTest.java} | 2 +- 2 files changed, 53 insertions(+), 1 deletion(-) rename cdi/src/test/java/com/baeldung/test/{TestSpringInterceptor.java => SpringInterceptorIntegrationTest.java} (95%) diff --git a/cdi/pom.xml b/cdi/pom.xml index b771857938..30dd167fa8 100644 --- a/cdi/pom.xml +++ b/cdi/pom.xml @@ -45,8 +45,60 @@ + + + + + org.apache.maven.plugins + maven-surefire-plugin + ${maven-surefire-plugin.version} + + + **/*IntegrationTest.java + **/*LiveTest.java + + + + + + + + + integration + + + + org.apache.maven.plugins + maven-surefire-plugin + + + integration-test + + test + + + + **/*LiveTest.java + + + **/*IntegrationTest.java + + + + + + + json + + + + + + + 4.3.1.RELEASE + 2.19.1 \ No newline at end of file diff --git a/cdi/src/test/java/com/baeldung/test/TestSpringInterceptor.java b/cdi/src/test/java/com/baeldung/test/SpringInterceptorIntegrationTest.java similarity index 95% rename from cdi/src/test/java/com/baeldung/test/TestSpringInterceptor.java rename to cdi/src/test/java/com/baeldung/test/SpringInterceptorIntegrationTest.java index 1f3a8d83e3..cffa2256ca 100644 --- a/cdi/src/test/java/com/baeldung/test/TestSpringInterceptor.java +++ b/cdi/src/test/java/com/baeldung/test/SpringInterceptorIntegrationTest.java @@ -16,7 +16,7 @@ import com.baeldung.spring.service.SpringSuperService; @RunWith(SpringRunner.class) @ContextConfiguration(classes = { AppConfig.class }) -public class TestSpringInterceptor { +public class SpringInterceptorIntegrationTest { @Autowired SpringSuperService springSuperService; From 366914a25ead8352c66290acd6047e6a6524b2d4 Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Sat, 22 Oct 2016 20:22:23 +0200 Subject: [PATCH 058/215] Fix Screenshot Test --- .../src/test/java/com/baeldung/printscreen/ScreenshotTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core-java/src/test/java/com/baeldung/printscreen/ScreenshotTest.java b/core-java/src/test/java/com/baeldung/printscreen/ScreenshotTest.java index 895f514f4a..7e35fc3e30 100644 --- a/core-java/src/test/java/com/baeldung/printscreen/ScreenshotTest.java +++ b/core-java/src/test/java/com/baeldung/printscreen/ScreenshotTest.java @@ -10,7 +10,7 @@ import static org.junit.Assert.assertTrue; public class ScreenshotTest { - private Screenshot screenshot = new Screenshot("", "Screenshot", "jpg"); + private Screenshot screenshot = new Screenshot("Screenshot.jpg"); private File file = new File("Screenshot.jpg"); @Test From b018c6ca3b38994c7b01a4f362d0d634536ea620 Mon Sep 17 00:00:00 2001 From: Nancy Bosecker Date: Sat, 22 Oct 2016 22:47:44 -0700 Subject: [PATCH 059/215] Fixed http ssl apache 4.4 test, moved from Sandbox to Live class (#764) * Moved project to core-java from eclipse folder * Fixed http ssl test, moved from Sandbox to Live. --- .../httpclient/HttpsClientSslLiveTest.java | 31 ++++++++++++++++++- .../base/HttpClientSandboxLiveTest.java | 11 ------- 2 files changed, 30 insertions(+), 12 deletions(-) diff --git a/httpclient/src/test/java/org/baeldung/httpclient/HttpsClientSslLiveTest.java b/httpclient/src/test/java/org/baeldung/httpclient/HttpsClientSslLiveTest.java index 952ce3af25..34f99b9fb6 100644 --- a/httpclient/src/test/java/org/baeldung/httpclient/HttpsClientSslLiveTest.java +++ b/httpclient/src/test/java/org/baeldung/httpclient/HttpsClientSslLiveTest.java @@ -1,10 +1,12 @@ package org.baeldung.httpclient; -import static org.hamcrest.Matchers.equalTo; import static org.junit.Assert.assertThat; import java.io.IOException; import java.security.GeneralSecurityException; +import java.security.KeyManagementException; +import java.security.KeyStoreException; +import java.security.NoSuchAlgorithmException; import java.security.cert.X509Certificate; import javax.net.ssl.SSLContext; @@ -16,6 +18,7 @@ import org.apache.http.client.methods.HttpGet; import org.apache.http.conn.ClientConnectionManager; import org.apache.http.conn.scheme.Scheme; import org.apache.http.conn.scheme.SchemeRegistry; +import org.apache.http.conn.ssl.NoopHostnameVerifier; import org.apache.http.conn.ssl.SSLConnectionSocketFactory; import org.apache.http.conn.ssl.SSLContextBuilder; import org.apache.http.conn.ssl.SSLContexts; @@ -108,4 +111,30 @@ public class HttpsClientSslLiveTest { assertThat(response.getStatusLine().getStatusCode(), equalTo(200)); } + @Test + public final void givenIgnoringCertificates_whenHttpsUrlIsConsumed_thenCorrect() throws ClientProtocolException, IOException { + + TrustStrategy acceptingTrustStrategy = new TrustStrategy() { + @Override + public boolean isTrusted(X509Certificate[] certificate, String authType) { + return true; + } + }; + + SSLContext sslContext = null; + try { + sslContext = new SSLContextBuilder().loadTrustMaterial(null, acceptingTrustStrategy).build(); + + } catch (KeyManagementException | NoSuchAlgorithmException | KeyStoreException e) { + e.printStackTrace(); + } + + CloseableHttpClient client = HttpClients.custom().setSSLContext(sslContext).setSSLHostnameVerifier(new NoopHostnameVerifier()).build(); + final HttpGet httpGet = new HttpGet("https://sesar3.geoinfogeochem.org/sample/igsn/ODP000002"); + httpGet.setHeader("Accept", "application/xml"); + + final HttpResponse response = client.execute(httpGet); + assertThat(response.getStatusLine().getStatusCode(), equalTo(200)); + } + } diff --git a/httpclient/src/test/java/org/baeldung/httpclient/base/HttpClientSandboxLiveTest.java b/httpclient/src/test/java/org/baeldung/httpclient/base/HttpClientSandboxLiveTest.java index 2333e2f8c9..ce4057aa6d 100644 --- a/httpclient/src/test/java/org/baeldung/httpclient/base/HttpClientSandboxLiveTest.java +++ b/httpclient/src/test/java/org/baeldung/httpclient/base/HttpClientSandboxLiveTest.java @@ -59,15 +59,4 @@ public class HttpClientSandboxLiveTest { System.out.println(response.getStatusLine()); } - - @Test - public final void givenIgnoringCertificates_whenHttpsUrlIsConsumed_thenCorrect() throws ClientProtocolException, IOException { - final CloseableHttpClient httpClient = HttpClients.custom().setSSLHostnameVerifier(new NoopHostnameVerifier()).build(); - - final HttpGet httpGet = new HttpGet("https://sesar3.geoinfogeochem.org/sample/igsn/ODP000002"); - httpGet.setHeader("Accept", "application/xml"); - - response = httpClient.execute(httpGet); - } - } From d0a376e6226b9658003d59ac0eb0872f7fdd457b Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Sun, 23 Oct 2016 07:54:09 +0200 Subject: [PATCH 060/215] Refactor HttpClient test --- .../httpclient/HttpsClientSslLiveTest.java | 57 ++++++------------- .../httpclient/base/HttpClientLiveTest.java | 25 ++++---- .../base/HttpClientSandboxLiveTest.java | 11 ++-- 3 files changed, 33 insertions(+), 60 deletions(-) diff --git a/httpclient/src/test/java/org/baeldung/httpclient/HttpsClientSslLiveTest.java b/httpclient/src/test/java/org/baeldung/httpclient/HttpsClientSslLiveTest.java index 34f99b9fb6..66b4f5cff4 100644 --- a/httpclient/src/test/java/org/baeldung/httpclient/HttpsClientSslLiveTest.java +++ b/httpclient/src/test/java/org/baeldung/httpclient/HttpsClientSslLiveTest.java @@ -1,30 +1,11 @@ package org.baeldung.httpclient; -import static org.junit.Assert.assertThat; - -import java.io.IOException; -import java.security.GeneralSecurityException; -import java.security.KeyManagementException; -import java.security.KeyStoreException; -import java.security.NoSuchAlgorithmException; -import java.security.cert.X509Certificate; - -import javax.net.ssl.SSLContext; -import javax.net.ssl.SSLException; - import org.apache.http.HttpResponse; -import org.apache.http.client.ClientProtocolException; import org.apache.http.client.methods.HttpGet; import org.apache.http.conn.ClientConnectionManager; import org.apache.http.conn.scheme.Scheme; import org.apache.http.conn.scheme.SchemeRegistry; -import org.apache.http.conn.ssl.NoopHostnameVerifier; -import org.apache.http.conn.ssl.SSLConnectionSocketFactory; -import org.apache.http.conn.ssl.SSLContextBuilder; -import org.apache.http.conn.ssl.SSLContexts; -import org.apache.http.conn.ssl.SSLSocketFactory; -import org.apache.http.conn.ssl.TrustSelfSignedStrategy; -import org.apache.http.conn.ssl.TrustStrategy; +import org.apache.http.conn.ssl.*; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.impl.client.HttpClientBuilder; @@ -32,6 +13,17 @@ import org.apache.http.impl.client.HttpClients; import org.apache.http.impl.conn.PoolingClientConnectionManager; import org.junit.Test; +import javax.net.ssl.SSLContext; +import javax.net.ssl.SSLException; +import java.io.IOException; +import java.security.GeneralSecurityException; +import java.security.KeyManagementException; +import java.security.KeyStoreException; +import java.security.NoSuchAlgorithmException; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.junit.Assert.assertThat; + /** * This test requires a localhost server over HTTPS
* It should only be manually run, not part of the automated build @@ -45,7 +37,7 @@ public class HttpsClientSslLiveTest { // tests @Test(expected = SSLException.class) - public final void whenHttpsUrlIsConsumed_thenException() throws ClientProtocolException, IOException { + public final void whenHttpsUrlIsConsumed_thenException() throws IOException { final CloseableHttpClient httpClient = HttpClientBuilder.create().build(); final HttpGet getMethod = new HttpGet(HOST_WITH_SSL); @@ -56,12 +48,7 @@ public class HttpsClientSslLiveTest { @SuppressWarnings("deprecation") @Test public final void givenHttpClientPre4_3_whenAcceptingAllCertificates_thenCanConsumeHttpsUriWithSelfSignedCertificate() throws IOException, GeneralSecurityException { - final TrustStrategy acceptingTrustStrategy = new TrustStrategy() { - @Override - public final boolean isTrusted(final X509Certificate[] certificate, final String authType) { - return true; - } - }; + final TrustStrategy acceptingTrustStrategy = (certificate, authType) -> true; final SSLSocketFactory sf = new SSLSocketFactory(acceptingTrustStrategy, SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); final SchemeRegistry registry = new SchemeRegistry(); registry.register(new Scheme("https", 443, sf)); @@ -78,12 +65,7 @@ public class HttpsClientSslLiveTest { @Test public final void givenHttpClientAfter4_3_whenAcceptingAllCertificates_thenCanConsumeHttpsUriWithSelfSignedCertificate() throws IOException, GeneralSecurityException { - final TrustStrategy acceptingTrustStrategy = new TrustStrategy() { - @Override - public final boolean isTrusted(final X509Certificate[] certificate, final String authType) { - return true; - } - }; + final TrustStrategy acceptingTrustStrategy = (certificate, authType) -> true; final SSLContext sslContext = SSLContexts.custom().loadTrustMaterial(null, acceptingTrustStrategy).build(); final SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslContext, SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); @@ -112,14 +94,9 @@ public class HttpsClientSslLiveTest { } @Test - public final void givenIgnoringCertificates_whenHttpsUrlIsConsumed_thenCorrect() throws ClientProtocolException, IOException { + public final void givenIgnoringCertificates_whenHttpsUrlIsConsumed_thenCorrect() throws IOException { - TrustStrategy acceptingTrustStrategy = new TrustStrategy() { - @Override - public boolean isTrusted(X509Certificate[] certificate, String authType) { - return true; - } - }; + TrustStrategy acceptingTrustStrategy = (certificate, authType) -> true; SSLContext sslContext = null; try { diff --git a/httpclient/src/test/java/org/baeldung/httpclient/base/HttpClientLiveTest.java b/httpclient/src/test/java/org/baeldung/httpclient/base/HttpClientLiveTest.java index 23c1fdf430..878d220f67 100644 --- a/httpclient/src/test/java/org/baeldung/httpclient/base/HttpClientLiveTest.java +++ b/httpclient/src/test/java/org/baeldung/httpclient/base/HttpClientLiveTest.java @@ -1,16 +1,8 @@ package org.baeldung.httpclient.base; -import static org.hamcrest.Matchers.emptyArray; -import static org.hamcrest.Matchers.not; -import static org.junit.Assert.assertThat; - -import java.io.IOException; -import java.io.InputStream; - import org.apache.http.Header; import org.apache.http.HttpEntity; import org.apache.http.HttpHeaders; -import org.apache.http.client.ClientProtocolException; import org.apache.http.client.config.RequestConfig; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpGet; @@ -23,6 +15,13 @@ import org.junit.After; import org.junit.Before; import org.junit.Test; +import java.io.IOException; +import java.io.InputStream; + +import static org.hamcrest.Matchers.emptyArray; +import static org.hamcrest.Matchers.not; +import static org.junit.Assert.assertThat; + public class HttpClientLiveTest { private static final String SAMPLE_URL = "http://www.github.com"; @@ -56,7 +55,7 @@ public class HttpClientLiveTest { // tests @Test(expected = ConnectTimeoutException.class) - public final void givenLowTimeout_whenExecutingRequestWithTimeout_thenException() throws ClientProtocolException, IOException { + public final void givenLowTimeout_whenExecutingRequestWithTimeout_thenException() throws IOException { final RequestConfig requestConfig = RequestConfig.custom().setConnectionRequestTimeout(50).setConnectTimeout(50).setSocketTimeout(20).build(); final HttpGet request = new HttpGet(SAMPLE_URL); request.setConfig(requestConfig); @@ -66,20 +65,20 @@ public class HttpClientLiveTest { // tests - configs @Test - public final void givenHttpClientIsConfiguredWithCustomConnectionManager_whenExecutingRequest_thenNoExceptions() throws ClientProtocolException, IOException { + public final void givenHttpClientIsConfiguredWithCustomConnectionManager_whenExecutingRequest_thenNoExceptions() throws IOException { instance = HttpClientBuilder.create().setConnectionManager(new BasicHttpClientConnectionManager()).build(); response = instance.execute(new HttpGet(SAMPLE_URL)); } @Test - public final void givenCustomHeaderIsSet_whenSendingRequest_thenNoExceptions() throws ClientProtocolException, IOException { + public final void givenCustomHeaderIsSet_whenSendingRequest_thenNoExceptions() throws IOException { final HttpGet request = new HttpGet(SAMPLE_URL); request.addHeader(HttpHeaders.ACCEPT, "application/xml"); response = instance.execute(request); } @Test - public final void givenRequestWasSet_whenAnalyzingTheHeadersOfTheResponse_thenCorrect() throws ClientProtocolException, IOException { + public final void givenRequestWasSet_whenAnalyzingTheHeadersOfTheResponse_thenCorrect() throws IOException { response = instance.execute(new HttpGet(SAMPLE_URL)); final Header[] headers = response.getHeaders(HttpHeaders.CONTENT_TYPE); @@ -89,7 +88,7 @@ public class HttpClientLiveTest { // tests - cancel request @Test - public final void whenRequestIsCanceled_thenCorrect() throws ClientProtocolException, IOException { + public final void whenRequestIsCanceled_thenCorrect() throws IOException { instance = HttpClients.custom().build(); final HttpGet request = new HttpGet(SAMPLE_URL); response = instance.execute(request); diff --git a/httpclient/src/test/java/org/baeldung/httpclient/base/HttpClientSandboxLiveTest.java b/httpclient/src/test/java/org/baeldung/httpclient/base/HttpClientSandboxLiveTest.java index ce4057aa6d..c82022eb3f 100644 --- a/httpclient/src/test/java/org/baeldung/httpclient/base/HttpClientSandboxLiveTest.java +++ b/httpclient/src/test/java/org/baeldung/httpclient/base/HttpClientSandboxLiveTest.java @@ -1,23 +1,20 @@ package org.baeldung.httpclient.base; -import java.io.IOException; -import java.io.InputStream; - import org.apache.http.HttpEntity; import org.apache.http.auth.AuthScope; import org.apache.http.auth.UsernamePasswordCredentials; -import org.apache.http.client.ClientProtocolException; import org.apache.http.client.CredentialsProvider; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpGet; -import org.apache.http.conn.ssl.NoopHostnameVerifier; import org.apache.http.impl.client.BasicCredentialsProvider; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClientBuilder; -import org.apache.http.impl.client.HttpClients; import org.junit.After; import org.junit.Test; +import java.io.IOException; +import java.io.InputStream; + public class HttpClientSandboxLiveTest { private CloseableHttpClient client; @@ -47,7 +44,7 @@ public class HttpClientSandboxLiveTest { // simple request - response @Test - public final void givenGetRequestExecuted_whenAnalyzingTheResponse_thenCorrectStatusCode() throws ClientProtocolException, IOException { + public final void givenGetRequestExecuted_whenAnalyzingTheResponse_thenCorrectStatusCode() throws IOException { final CredentialsProvider credentialsProvider = new BasicCredentialsProvider(); final AuthScope authscp = new AuthScope("localhost", 8080); credentialsProvider.setCredentials(authscp, new UsernamePasswordCredentials("user1", "user1Pass")); From bfddf3344d5f65342c2cbbc8871c925f678ca6f4 Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Sun, 23 Oct 2016 07:55:07 +0200 Subject: [PATCH 061/215] Refactor LiveTest --- .../base/HttpClientSandboxLiveTest.java | 36 ++++++------------- 1 file changed, 10 insertions(+), 26 deletions(-) diff --git a/httpclient/src/test/java/org/baeldung/httpclient/base/HttpClientSandboxLiveTest.java b/httpclient/src/test/java/org/baeldung/httpclient/base/HttpClientSandboxLiveTest.java index c82022eb3f..22b32e7ef5 100644 --- a/httpclient/src/test/java/org/baeldung/httpclient/base/HttpClientSandboxLiveTest.java +++ b/httpclient/src/test/java/org/baeldung/httpclient/base/HttpClientSandboxLiveTest.java @@ -9,7 +9,6 @@ import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.BasicCredentialsProvider; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClientBuilder; -import org.junit.After; import org.junit.Test; import java.io.IOException; @@ -17,15 +16,18 @@ import java.io.InputStream; public class HttpClientSandboxLiveTest { - private CloseableHttpClient client; + @Test + public final void givenGetRequestExecuted_whenAnalyzingTheResponse_thenCorrectStatusCode() throws IOException { + final CredentialsProvider credentialsProvider = new BasicCredentialsProvider(); + final AuthScope authscp = new AuthScope("localhost", 8080); + credentialsProvider.setCredentials(authscp, new UsernamePasswordCredentials("user1", "user1Pass")); - private CloseableHttpResponse response; + CloseableHttpClient client = HttpClientBuilder.create().setDefaultCredentialsProvider(credentialsProvider).build(); - @After - public final void after() throws IllegalStateException, IOException { - if (response == null) { - return; - } + final HttpGet httpGet = new HttpGet("http://localhost:8080/spring-security-rest-basic-auth/api/foos/1"); + CloseableHttpResponse response = client.execute(httpGet); + + System.out.println(response.getStatusLine()); try { final HttpEntity entity = response.getEntity(); @@ -38,22 +40,4 @@ public class HttpClientSandboxLiveTest { response.close(); } } - - // tests - - // simple request - response - - @Test - public final void givenGetRequestExecuted_whenAnalyzingTheResponse_thenCorrectStatusCode() throws IOException { - final CredentialsProvider credentialsProvider = new BasicCredentialsProvider(); - final AuthScope authscp = new AuthScope("localhost", 8080); - credentialsProvider.setCredentials(authscp, new UsernamePasswordCredentials("user1", "user1Pass")); - - client = HttpClientBuilder.create().setDefaultCredentialsProvider(credentialsProvider).build(); - - final HttpGet httpGet = new HttpGet("http://localhost:8080/spring-security-rest-basic-auth/api/foos/1"); - response = client.execute(httpGet); - - System.out.println(response.getStatusLine()); - } } From 1e53355b1315be5b34bb3f807b82c97248013b52 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ambrus=20Adri=C3=A1n-Zolt=C3=A1n?= Date: Sun, 23 Oct 2016 10:52:59 +0300 Subject: [PATCH 062/215] Changed collect, forEach call to filter, findAny, orElseGet --- .../java/org/baeldung/security/MinuteBasedVoter.java | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/spring-security-custom-voter/src/main/java/org/baeldung/security/MinuteBasedVoter.java b/spring-security-custom-voter/src/main/java/org/baeldung/security/MinuteBasedVoter.java index 8d22c52b0d..ae698789e1 100644 --- a/spring-security-custom-voter/src/main/java/org/baeldung/security/MinuteBasedVoter.java +++ b/spring-security-custom-voter/src/main/java/org/baeldung/security/MinuteBasedVoter.java @@ -23,16 +23,17 @@ public class MinuteBasedVoter implements AccessDecisionVoter { @Override public int vote(Authentication authentication, Object object, Collection collection) { - List roles = authentication + String role = authentication .getAuthorities() .stream().map(GrantedAuthority::getAuthority) - .collect(Collectors.toList()); + .filter("ROLE_USER"::equals) + .findAny() + .orElseGet(() -> "ROLE_ADMIN"); - for (String role: roles) { - if ("ROLE_USER".equals(role) && LocalDateTime.now().getMinute() % 2 != 0) { + if ("ROLE_USER".equals(role) && LocalDateTime.now().getMinute() % 2 != 0) { return ACCESS_DENIED; - } } + return ACCESS_ABSTAIN; } } From 4670b8dbdabaf3dd0294c69f93d6399322e55509 Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Sun, 23 Oct 2016 11:25:09 +0200 Subject: [PATCH 063/215] Sockets moved to core-java --- core-java/README.md | 1 + .../java/com/baeldung/socket/EchoClient.java | 0 .../com/baeldung/socket/EchoMultiServer.java | 2 +- .../java/com/baeldung/socket/EchoServer.java | 2 +- .../java/com/baeldung/socket/GreetClient.java | 0 .../java/com/baeldung/socket/GreetServer.java | 0 .../com/baeldung/socket/EchoMultiTest.java | 6 ++-- .../java/com/baeldung/socket/EchoTest.java | 2 +- .../com/baeldung/socket/GreetServerTest.java | 0 sockets/README.md | 2 -- sockets/pom.xml | 30 ------------------- 11 files changed, 7 insertions(+), 38 deletions(-) rename {sockets => core-java}/src/main/java/com/baeldung/socket/EchoClient.java (100%) rename {sockets => core-java}/src/main/java/com/baeldung/socket/EchoMultiServer.java (97%) rename {sockets => core-java}/src/main/java/com/baeldung/socket/EchoServer.java (96%) rename {sockets => core-java}/src/main/java/com/baeldung/socket/GreetClient.java (100%) rename {sockets => core-java}/src/main/java/com/baeldung/socket/GreetServer.java (100%) rename {sockets => core-java}/src/test/java/com/baeldung/socket/EchoMultiTest.java (91%) rename {sockets => core-java}/src/test/java/com/baeldung/socket/EchoTest.java (95%) rename {sockets => core-java}/src/test/java/com/baeldung/socket/GreetServerTest.java (100%) delete mode 100644 sockets/README.md delete mode 100644 sockets/pom.xml diff --git a/core-java/README.md b/core-java/README.md index 440af67252..fbbfa65589 100644 --- a/core-java/README.md +++ b/core-java/README.md @@ -18,3 +18,4 @@ - [MD5 Hashing in Java](http://www.baeldung.com/java-md5) - [Guide to the Java ArrayList](http://www.baeldung.com/java-arraylist) - [Guide to Java Reflection](http://www.baeldung.com/java-reflection) +- [A Guide to Java Sockets](http://www.baeldung.com/a-guide-to-java-sockets) diff --git a/sockets/src/main/java/com/baeldung/socket/EchoClient.java b/core-java/src/main/java/com/baeldung/socket/EchoClient.java similarity index 100% rename from sockets/src/main/java/com/baeldung/socket/EchoClient.java rename to core-java/src/main/java/com/baeldung/socket/EchoClient.java diff --git a/sockets/src/main/java/com/baeldung/socket/EchoMultiServer.java b/core-java/src/main/java/com/baeldung/socket/EchoMultiServer.java similarity index 97% rename from sockets/src/main/java/com/baeldung/socket/EchoMultiServer.java rename to core-java/src/main/java/com/baeldung/socket/EchoMultiServer.java index 2ece1ceebe..1177b82c87 100644 --- a/sockets/src/main/java/com/baeldung/socket/EchoMultiServer.java +++ b/core-java/src/main/java/com/baeldung/socket/EchoMultiServer.java @@ -46,7 +46,7 @@ public class EchoMultiServer { clientSocket.getInputStream())); String inputLine; while ((inputLine = in.readLine()) != null) { - if (".".equals(inputLine)) { + if ("".equals(inputLine)) { out.println("bye"); break; } diff --git a/sockets/src/main/java/com/baeldung/socket/EchoServer.java b/core-java/src/main/java/com/baeldung/socket/EchoServer.java similarity index 96% rename from sockets/src/main/java/com/baeldung/socket/EchoServer.java rename to core-java/src/main/java/com/baeldung/socket/EchoServer.java index 3607afa7f5..395624933c 100644 --- a/sockets/src/main/java/com/baeldung/socket/EchoServer.java +++ b/core-java/src/main/java/com/baeldung/socket/EchoServer.java @@ -18,7 +18,7 @@ public class EchoServer { clientSocket.getInputStream())); String inputLine; while ((inputLine = in.readLine()) != null) { - if (".".equals(inputLine)) { + if ("".equals(inputLine)) { out.println("good bye"); break; } diff --git a/sockets/src/main/java/com/baeldung/socket/GreetClient.java b/core-java/src/main/java/com/baeldung/socket/GreetClient.java similarity index 100% rename from sockets/src/main/java/com/baeldung/socket/GreetClient.java rename to core-java/src/main/java/com/baeldung/socket/GreetClient.java diff --git a/sockets/src/main/java/com/baeldung/socket/GreetServer.java b/core-java/src/main/java/com/baeldung/socket/GreetServer.java similarity index 100% rename from sockets/src/main/java/com/baeldung/socket/GreetServer.java rename to core-java/src/main/java/com/baeldung/socket/GreetServer.java diff --git a/sockets/src/test/java/com/baeldung/socket/EchoMultiTest.java b/core-java/src/test/java/com/baeldung/socket/EchoMultiTest.java similarity index 91% rename from sockets/src/test/java/com/baeldung/socket/EchoMultiTest.java rename to core-java/src/test/java/com/baeldung/socket/EchoMultiTest.java index 19a59c211c..ef08385551 100644 --- a/sockets/src/test/java/com/baeldung/socket/EchoMultiTest.java +++ b/core-java/src/test/java/com/baeldung/socket/EchoMultiTest.java @@ -21,7 +21,7 @@ public class EchoMultiTest { client.startConnection("127.0.0.1", 5555); String msg1 = client.sendMessage("hello"); String msg2 = client.sendMessage("world"); - String terminate = client.sendMessage("."); + String terminate = client.sendMessage(""); assertEquals(msg1, "hello"); assertEquals(msg2, "world"); assertEquals(terminate, "bye"); @@ -34,7 +34,7 @@ public class EchoMultiTest { client.startConnection("127.0.0.1", 5555); String msg1 = client.sendMessage("hello"); String msg2 = client.sendMessage("world"); - String terminate = client.sendMessage("."); + String terminate = client.sendMessage(""); assertEquals(msg1, "hello"); assertEquals(msg2, "world"); assertEquals(terminate, "bye"); @@ -47,7 +47,7 @@ public class EchoMultiTest { client.startConnection("127.0.0.1", 5555); String msg1 = client.sendMessage("hello"); String msg2 = client.sendMessage("world"); - String terminate = client.sendMessage("."); + String terminate = client.sendMessage(""); assertEquals(msg1, "hello"); assertEquals(msg2, "world"); assertEquals(terminate, "bye"); diff --git a/sockets/src/test/java/com/baeldung/socket/EchoTest.java b/core-java/src/test/java/com/baeldung/socket/EchoTest.java similarity index 95% rename from sockets/src/test/java/com/baeldung/socket/EchoTest.java rename to core-java/src/test/java/com/baeldung/socket/EchoTest.java index 0f0c02e4d8..c12bd28a29 100644 --- a/sockets/src/test/java/com/baeldung/socket/EchoTest.java +++ b/core-java/src/test/java/com/baeldung/socket/EchoTest.java @@ -26,7 +26,7 @@ public class EchoTest { String resp1 = client.sendMessage("hello"); String resp2 = client.sendMessage("world"); String resp3 = client.sendMessage("!"); - String resp4 = client.sendMessage("."); + String resp4 = client.sendMessage(""); assertEquals("hello", resp1); assertEquals("world", resp2); assertEquals("!", resp3); diff --git a/sockets/src/test/java/com/baeldung/socket/GreetServerTest.java b/core-java/src/test/java/com/baeldung/socket/GreetServerTest.java similarity index 100% rename from sockets/src/test/java/com/baeldung/socket/GreetServerTest.java rename to core-java/src/test/java/com/baeldung/socket/GreetServerTest.java diff --git a/sockets/README.md b/sockets/README.md deleted file mode 100644 index ad8811ee80..0000000000 --- a/sockets/README.md +++ /dev/null @@ -1,2 +0,0 @@ -### Relevant Articles: -- [A Guide to Java Sockets](http://www.baeldung.com/a-guide-to-java-sockets) diff --git a/sockets/pom.xml b/sockets/pom.xml deleted file mode 100644 index 24e8e436f3..0000000000 --- a/sockets/pom.xml +++ /dev/null @@ -1,30 +0,0 @@ - - 4.0.0 - com.baeldung - sockets - 1.0 - sockets - - - - org.apache.maven.plugins - maven-compiler-plugin - 3.3 - - 8 - 8 - - - - - - - junit - junit - 4.3 - test - - - - From 803145826525fd88d3138d12fc9513f5cb16b8a5 Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Sun, 23 Oct 2016 11:53:43 +0200 Subject: [PATCH 064/215] Refactor Socket tests --- .../com/baeldung/socket/EchoMultiTest.java | 20 ++++++++++--------- .../java/com/baeldung/socket/EchoTest.java | 16 +++++++++------ .../com/baeldung/socket/GreetServerTest.java | 13 ++++++++---- 3 files changed, 30 insertions(+), 19 deletions(-) diff --git a/core-java/src/test/java/com/baeldung/socket/EchoMultiTest.java b/core-java/src/test/java/com/baeldung/socket/EchoMultiTest.java index ef08385551..ccb5f48ddb 100644 --- a/core-java/src/test/java/com/baeldung/socket/EchoMultiTest.java +++ b/core-java/src/test/java/com/baeldung/socket/EchoMultiTest.java @@ -1,7 +1,6 @@ package com.baeldung.socket; -import org.junit.After; -import org.junit.Before; +import org.junit.BeforeClass; import org.junit.Test; import java.util.concurrent.Executors; @@ -10,18 +9,22 @@ import static org.junit.Assert.assertEquals; public class EchoMultiTest { - { - Executors.newSingleThreadExecutor().submit(() -> new EchoMultiServer().start(5555)); - } + private static final Integer PORT = 5555; + @BeforeClass + public static void start() throws InterruptedException { + Executors.newSingleThreadExecutor().submit(() -> new EchoMultiServer().start(PORT)); + Thread.sleep(500); + } @Test public void givenClient1_whenServerResponds_thenCorrect() { EchoClient client = new EchoClient(); - client.startConnection("127.0.0.1", 5555); + client.startConnection("127.0.0.1", PORT); String msg1 = client.sendMessage("hello"); String msg2 = client.sendMessage("world"); String terminate = client.sendMessage(""); + assertEquals(msg1, "hello"); assertEquals(msg2, "world"); assertEquals(terminate, "bye"); @@ -31,7 +34,7 @@ public class EchoMultiTest { @Test public void givenClient2_whenServerResponds_thenCorrect() { EchoClient client = new EchoClient(); - client.startConnection("127.0.0.1", 5555); + client.startConnection("127.0.0.1", PORT); String msg1 = client.sendMessage("hello"); String msg2 = client.sendMessage("world"); String terminate = client.sendMessage(""); @@ -44,7 +47,7 @@ public class EchoMultiTest { @Test public void givenClient3_whenServerResponds_thenCorrect() { EchoClient client = new EchoClient(); - client.startConnection("127.0.0.1", 5555); + client.startConnection("127.0.0.1", PORT); String msg1 = client.sendMessage("hello"); String msg2 = client.sendMessage("world"); String terminate = client.sendMessage(""); @@ -53,5 +56,4 @@ public class EchoMultiTest { assertEquals(terminate, "bye"); client.stopConnection(); } - } diff --git a/core-java/src/test/java/com/baeldung/socket/EchoTest.java b/core-java/src/test/java/com/baeldung/socket/EchoTest.java index c12bd28a29..76391f0f20 100644 --- a/core-java/src/test/java/com/baeldung/socket/EchoTest.java +++ b/core-java/src/test/java/com/baeldung/socket/EchoTest.java @@ -2,6 +2,7 @@ package com.baeldung.socket; import org.junit.After; import org.junit.Before; +import org.junit.BeforeClass; import org.junit.Test; import java.util.concurrent.Executors; @@ -9,15 +10,19 @@ import java.util.concurrent.Executors; import static org.junit.Assert.assertEquals; public class EchoTest { - { - Executors.newSingleThreadExecutor().submit(() -> new EchoServer().start(4444)); - } + private static final Integer PORT = 4444; - EchoClient client = new EchoClient(); + @BeforeClass + public static void start() throws InterruptedException { + Executors.newSingleThreadExecutor().submit(() -> new EchoServer().start(PORT)); + Thread.sleep(500); + } + + private EchoClient client = new EchoClient(); @Before public void init() { - client.startConnection("127.0.0.1", 4444); + client.startConnection("127.0.0.1", PORT); } @Test @@ -37,5 +42,4 @@ public class EchoTest { public void tearDown() { client.stopConnection(); } - } diff --git a/core-java/src/test/java/com/baeldung/socket/GreetServerTest.java b/core-java/src/test/java/com/baeldung/socket/GreetServerTest.java index fedc32fb39..caf56a8c76 100644 --- a/core-java/src/test/java/com/baeldung/socket/GreetServerTest.java +++ b/core-java/src/test/java/com/baeldung/socket/GreetServerTest.java @@ -2,6 +2,7 @@ package com.baeldung.socket; import org.junit.After; import org.junit.Before; +import org.junit.BeforeClass; import org.junit.Test; import java.util.concurrent.Executors; @@ -10,16 +11,20 @@ import static org.junit.Assert.assertEquals; public class GreetServerTest { - GreetClient client; + private GreetClient client; - { - Executors.newSingleThreadExecutor().submit(() -> new GreetServer().start(6666)); + private static final Integer PORT = 6666; + + @BeforeClass + public static void start() throws InterruptedException { + Executors.newSingleThreadExecutor().submit(() -> new GreetServer().start(PORT)); + Thread.sleep(500); } @Before public void init() { client = new GreetClient(); - client.startConnection("127.0.0.1", 6666); + client.startConnection("127.0.0.1", PORT); } From 65daa3aee2de7c813e852b1627be5fd288eac0eb Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Sun, 23 Oct 2016 11:57:11 +0200 Subject: [PATCH 065/215] Refactor examples --- core-java/src/main/java/com/baeldung/socket/EchoClient.java | 3 +-- .../src/main/java/com/baeldung/socket/EchoMultiServer.java | 2 +- core-java/src/main/java/com/baeldung/socket/EchoServer.java | 2 +- .../src/main/java/com/baeldung/socket/GreetClient.java | 3 +-- .../src/test/java/com/baeldung/socket/EchoMultiTest.java | 6 +++--- core-java/src/test/java/com/baeldung/socket/EchoTest.java | 2 +- 6 files changed, 8 insertions(+), 10 deletions(-) diff --git a/core-java/src/main/java/com/baeldung/socket/EchoClient.java b/core-java/src/main/java/com/baeldung/socket/EchoClient.java index e8ec97c80a..1ddf752a03 100644 --- a/core-java/src/main/java/com/baeldung/socket/EchoClient.java +++ b/core-java/src/main/java/com/baeldung/socket/EchoClient.java @@ -23,8 +23,7 @@ public class EchoClient { public String sendMessage(String msg) { try { out.println(msg); - String resp = in.readLine(); - return resp; + return in.readLine(); } catch (Exception e) { return null; } diff --git a/core-java/src/main/java/com/baeldung/socket/EchoMultiServer.java b/core-java/src/main/java/com/baeldung/socket/EchoMultiServer.java index 1177b82c87..2ece1ceebe 100644 --- a/core-java/src/main/java/com/baeldung/socket/EchoMultiServer.java +++ b/core-java/src/main/java/com/baeldung/socket/EchoMultiServer.java @@ -46,7 +46,7 @@ public class EchoMultiServer { clientSocket.getInputStream())); String inputLine; while ((inputLine = in.readLine()) != null) { - if ("".equals(inputLine)) { + if (".".equals(inputLine)) { out.println("bye"); break; } diff --git a/core-java/src/main/java/com/baeldung/socket/EchoServer.java b/core-java/src/main/java/com/baeldung/socket/EchoServer.java index 395624933c..3607afa7f5 100644 --- a/core-java/src/main/java/com/baeldung/socket/EchoServer.java +++ b/core-java/src/main/java/com/baeldung/socket/EchoServer.java @@ -18,7 +18,7 @@ public class EchoServer { clientSocket.getInputStream())); String inputLine; while ((inputLine = in.readLine()) != null) { - if ("".equals(inputLine)) { + if (".".equals(inputLine)) { out.println("good bye"); break; } diff --git a/core-java/src/main/java/com/baeldung/socket/GreetClient.java b/core-java/src/main/java/com/baeldung/socket/GreetClient.java index 7252827c87..21959c7469 100644 --- a/core-java/src/main/java/com/baeldung/socket/GreetClient.java +++ b/core-java/src/main/java/com/baeldung/socket/GreetClient.java @@ -26,8 +26,7 @@ public class GreetClient { public String sendMessage(String msg) { try { out.println(msg); - String resp = in.readLine(); - return resp; + return in.readLine(); } catch (Exception e) { return null; } diff --git a/core-java/src/test/java/com/baeldung/socket/EchoMultiTest.java b/core-java/src/test/java/com/baeldung/socket/EchoMultiTest.java index ccb5f48ddb..fcf353281d 100644 --- a/core-java/src/test/java/com/baeldung/socket/EchoMultiTest.java +++ b/core-java/src/test/java/com/baeldung/socket/EchoMultiTest.java @@ -23,7 +23,7 @@ public class EchoMultiTest { client.startConnection("127.0.0.1", PORT); String msg1 = client.sendMessage("hello"); String msg2 = client.sendMessage("world"); - String terminate = client.sendMessage(""); + String terminate = client.sendMessage("."); assertEquals(msg1, "hello"); assertEquals(msg2, "world"); @@ -37,7 +37,7 @@ public class EchoMultiTest { client.startConnection("127.0.0.1", PORT); String msg1 = client.sendMessage("hello"); String msg2 = client.sendMessage("world"); - String terminate = client.sendMessage(""); + String terminate = client.sendMessage("."); assertEquals(msg1, "hello"); assertEquals(msg2, "world"); assertEquals(terminate, "bye"); @@ -50,7 +50,7 @@ public class EchoMultiTest { client.startConnection("127.0.0.1", PORT); String msg1 = client.sendMessage("hello"); String msg2 = client.sendMessage("world"); - String terminate = client.sendMessage(""); + String terminate = client.sendMessage("."); assertEquals(msg1, "hello"); assertEquals(msg2, "world"); assertEquals(terminate, "bye"); diff --git a/core-java/src/test/java/com/baeldung/socket/EchoTest.java b/core-java/src/test/java/com/baeldung/socket/EchoTest.java index 76391f0f20..cb09d42f79 100644 --- a/core-java/src/test/java/com/baeldung/socket/EchoTest.java +++ b/core-java/src/test/java/com/baeldung/socket/EchoTest.java @@ -31,7 +31,7 @@ public class EchoTest { String resp1 = client.sendMessage("hello"); String resp2 = client.sendMessage("world"); String resp3 = client.sendMessage("!"); - String resp4 = client.sendMessage(""); + String resp4 = client.sendMessage("."); assertEquals("hello", resp1); assertEquals("world", resp2); assertEquals("!", resp3); From 8cdc680e6f76174625e5eba32f18d3f521301e3a Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Sun, 23 Oct 2016 12:11:23 +0200 Subject: [PATCH 066/215] Remove gson-jackson-performance --- gson-jackson-performance/README.md | 6 ------ 1 file changed, 6 deletions(-) delete mode 100644 gson-jackson-performance/README.md diff --git a/gson-jackson-performance/README.md b/gson-jackson-performance/README.md deleted file mode 100644 index e662219718..0000000000 --- a/gson-jackson-performance/README.md +++ /dev/null @@ -1,6 +0,0 @@ -## Performance of Gson and Jackson - -Standalone java programs to measure the performance of both JSON APIs based on file size and object graph complexity. - -###Relevant Articles: -- [Jackson vs Gson: A Quick Look At Performance](http://www.baeldung.com/jackson-gson-performance) From bc9b170e89c1fa927eabc83fe268f35ddc88021e Mon Sep 17 00:00:00 2001 From: DOHA Date: Sun, 23 Oct 2016 12:19:55 +0200 Subject: [PATCH 067/215] configure test profiles --- apache-cxf/cxf-introduction/pom.xml | 65 ++++++++++- ...{StudentTest.java => StudentLiveTest.java} | 30 +++-- apache-cxf/cxf-jaxrs-implementation/pom.xml | 65 ++++++++++- ...{ServiceTest.java => ServiceLiveTest.java} | 107 +++++++++--------- apache-cxf/cxf-spring/pom.xml | 4 +- ...{StudentTest.java => StudentLiveTest.java} | 2 +- 6 files changed, 198 insertions(+), 75 deletions(-) rename apache-cxf/cxf-introduction/src/test/java/com/baeldung/cxf/introduction/{StudentTest.java => StudentLiveTest.java} (65%) rename apache-cxf/cxf-jaxrs-implementation/src/test/java/com/baeldung/cxf/jaxrs/implementation/{ServiceTest.java => ServiceLiveTest.java} (63%) rename apache-cxf/cxf-spring/src/test/java/com/baeldung/cxf/spring/{StudentTest.java => StudentLiveTest.java} (97%) diff --git a/apache-cxf/cxf-introduction/pom.xml b/apache-cxf/cxf-introduction/pom.xml index 232a4f0089..9629dfda1b 100644 --- a/apache-cxf/cxf-introduction/pom.xml +++ b/apache-cxf/cxf-introduction/pom.xml @@ -11,6 +11,7 @@ 3.1.6 + 2.19.1 @@ -26,7 +27,7 @@ 2.19.1 - **/StudentTest.java + **/*LiveTest.java @@ -44,4 +45,66 @@ ${cxf.version} + + + + live + + + + org.codehaus.cargo + cargo-maven2-plugin + 1.4.19 + + + tomcat8x + embedded + + + + localhost + 8082 + + + + + + start-server + pre-integration-test + + start + + + + stop-server + post-integration-test + + stop + + + + + + + maven-surefire-plugin + ${surefire.version} + + + integration-test + + test + + + + none + + + + + + + + + + diff --git a/apache-cxf/cxf-introduction/src/test/java/com/baeldung/cxf/introduction/StudentTest.java b/apache-cxf/cxf-introduction/src/test/java/com/baeldung/cxf/introduction/StudentLiveTest.java similarity index 65% rename from apache-cxf/cxf-introduction/src/test/java/com/baeldung/cxf/introduction/StudentTest.java rename to apache-cxf/cxf-introduction/src/test/java/com/baeldung/cxf/introduction/StudentLiveTest.java index e1e5b60ec3..1c50fcb9b6 100644 --- a/apache-cxf/cxf-introduction/src/test/java/com/baeldung/cxf/introduction/StudentTest.java +++ b/apache-cxf/cxf-introduction/src/test/java/com/baeldung/cxf/introduction/StudentLiveTest.java @@ -2,20 +2,16 @@ package com.baeldung.cxf.introduction; import static org.junit.Assert.assertEquals; -import org.junit.Before; -import org.junit.Test; - import java.util.Map; import javax.xml.namespace.QName; import javax.xml.ws.Service; import javax.xml.ws.soap.SOAPBinding; -import com.baeldung.cxf.introduction.Baeldung; -import com.baeldung.cxf.introduction.Student; -import com.baeldung.cxf.introduction.StudentImpl; +import org.junit.Before; +import org.junit.Test; -public class StudentTest { +public class StudentLiveTest { private static QName SERVICE_NAME = new QName("http://introduction.cxf.baeldung.com/", "Baeldung"); private static QName PORT_NAME = new QName("http://introduction.cxf.baeldung.com/", "BaeldungPort"); @@ -25,7 +21,7 @@ public class StudentTest { { service = Service.create(SERVICE_NAME); - String endpointAddress = "http://localhost:8080/baeldung"; + final String endpointAddress = "http://localhost:8082/cxf-introduction/baeldung"; service.addPort(PORT_NAME, SOAPBinding.SOAP11HTTP_BINDING, endpointAddress); } @@ -37,28 +33,28 @@ public class StudentTest { @Test public void whenUsingHelloMethod_thenCorrect() { - String endpointResponse = baeldungProxy.hello("Baeldung"); - String localResponse = baeldungImpl.hello("Baeldung"); + final String endpointResponse = baeldungProxy.hello("Baeldung"); + final String localResponse = baeldungImpl.hello("Baeldung"); assertEquals(localResponse, endpointResponse); } @Test public void whenUsingHelloStudentMethod_thenCorrect() { - Student student = new StudentImpl("John Doe"); - String endpointResponse = baeldungProxy.helloStudent(student); - String localResponse = baeldungImpl.helloStudent(student); + final Student student = new StudentImpl("John Doe"); + final String endpointResponse = baeldungProxy.helloStudent(student); + final String localResponse = baeldungImpl.helloStudent(student); assertEquals(localResponse, endpointResponse); } @Test public void usingGetStudentsMethod_thenCorrect() { - Student student1 = new StudentImpl("Adam"); + final Student student1 = new StudentImpl("Adam"); baeldungProxy.helloStudent(student1); - Student student2 = new StudentImpl("Eve"); + final Student student2 = new StudentImpl("Eve"); baeldungProxy.helloStudent(student2); - - Map students = baeldungProxy.getStudents(); + + final Map students = baeldungProxy.getStudents(); assertEquals("Adam", students.get(1).getName()); assertEquals("Eve", students.get(2).getName()); } diff --git a/apache-cxf/cxf-jaxrs-implementation/pom.xml b/apache-cxf/cxf-jaxrs-implementation/pom.xml index 1f83ecf934..24dad05a0f 100644 --- a/apache-cxf/cxf-jaxrs-implementation/pom.xml +++ b/apache-cxf/cxf-jaxrs-implementation/pom.xml @@ -13,6 +13,7 @@ UTF-8 3.1.7 4.5.2 + 2.19.1
@@ -28,7 +29,7 @@ 2.19.1 - **/ServiceTest + **/*LiveTest.java @@ -51,4 +52,66 @@ ${httpclient.version} + + + + live + + + + org.codehaus.cargo + cargo-maven2-plugin + 1.4.19 + + + tomcat8x + embedded + + + + localhost + 8082 + + + + + + start-server + pre-integration-test + + start + + + + stop-server + post-integration-test + + stop + + + + + + + maven-surefire-plugin + ${surefire.version} + + + integration-test + + test + + + + none + + + + + + + + + + diff --git a/apache-cxf/cxf-jaxrs-implementation/src/test/java/com/baeldung/cxf/jaxrs/implementation/ServiceTest.java b/apache-cxf/cxf-jaxrs-implementation/src/test/java/com/baeldung/cxf/jaxrs/implementation/ServiceLiveTest.java similarity index 63% rename from apache-cxf/cxf-jaxrs-implementation/src/test/java/com/baeldung/cxf/jaxrs/implementation/ServiceTest.java rename to apache-cxf/cxf-jaxrs-implementation/src/test/java/com/baeldung/cxf/jaxrs/implementation/ServiceLiveTest.java index b8fc833194..692def81f5 100644 --- a/apache-cxf/cxf-jaxrs-implementation/src/test/java/com/baeldung/cxf/jaxrs/implementation/ServiceTest.java +++ b/apache-cxf/cxf-jaxrs-implementation/src/test/java/com/baeldung/cxf/jaxrs/implementation/ServiceLiveTest.java @@ -1,5 +1,14 @@ package com.baeldung.cxf.jaxrs.implementation; +import static org.junit.Assert.assertEquals; + +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.net.URL; + +import javax.xml.bind.JAXB; + import org.apache.http.HttpResponse; import org.apache.http.client.methods.HttpDelete; import org.apache.http.client.methods.HttpPost; @@ -11,119 +20,111 @@ import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; -import javax.xml.bind.JAXB; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.net.URL; - -import static org.junit.Assert.assertEquals; - -public class ServiceTest { - private static final String BASE_URL = "http://localhost:8080/baeldung/courses/"; +public class ServiceLiveTest { + private static final String BASE_URL = "http://localhost:8082/baeldung/courses/"; private static CloseableHttpClient client; - + @BeforeClass public static void createClient() { client = HttpClients.createDefault(); } - + @AfterClass public static void closeClient() throws IOException { client.close(); } - + @Test public void whenUpdateNonExistentCourse_thenReceiveNotFoundResponse() throws IOException { - HttpPut httpPut = new HttpPut(BASE_URL + "3"); - InputStream resourceStream = this.getClass().getClassLoader().getResourceAsStream("non_existent_course.xml"); + final HttpPut httpPut = new HttpPut(BASE_URL + "3"); + final InputStream resourceStream = this.getClass().getClassLoader().getResourceAsStream("non_existent_course.xml"); httpPut.setEntity(new InputStreamEntity(resourceStream)); httpPut.setHeader("Content-Type", "text/xml"); - - HttpResponse response = client.execute(httpPut); + + final HttpResponse response = client.execute(httpPut); assertEquals(404, response.getStatusLine().getStatusCode()); } - + @Test public void whenUpdateUnchangedCourse_thenReceiveNotModifiedResponse() throws IOException { - HttpPut httpPut = new HttpPut(BASE_URL + "1"); - InputStream resourceStream = this.getClass().getClassLoader().getResourceAsStream("unchanged_course.xml"); + final HttpPut httpPut = new HttpPut(BASE_URL + "1"); + final InputStream resourceStream = this.getClass().getClassLoader().getResourceAsStream("unchanged_course.xml"); httpPut.setEntity(new InputStreamEntity(resourceStream)); httpPut.setHeader("Content-Type", "text/xml"); - - HttpResponse response = client.execute(httpPut); + + final HttpResponse response = client.execute(httpPut); assertEquals(304, response.getStatusLine().getStatusCode()); } - + @Test public void whenUpdateValidCourse_thenReceiveOKResponse() throws IOException { - HttpPut httpPut = new HttpPut(BASE_URL + "2"); - InputStream resourceStream = this.getClass().getClassLoader().getResourceAsStream("changed_course.xml"); + final HttpPut httpPut = new HttpPut(BASE_URL + "2"); + final InputStream resourceStream = this.getClass().getClassLoader().getResourceAsStream("changed_course.xml"); httpPut.setEntity(new InputStreamEntity(resourceStream)); httpPut.setHeader("Content-Type", "text/xml"); - - HttpResponse response = client.execute(httpPut); + + final HttpResponse response = client.execute(httpPut); assertEquals(200, response.getStatusLine().getStatusCode()); - - Course course = getCourse(2); + + final Course course = getCourse(2); assertEquals(2, course.getId()); assertEquals("Apache CXF Support for RESTful", course.getName()); } - + @Test public void whenCreateConflictStudent_thenReceiveConflictResponse() throws IOException { - HttpPost httpPost = new HttpPost(BASE_URL + "1/students"); - InputStream resourceStream = this.getClass().getClassLoader().getResourceAsStream("conflict_student.xml"); + final HttpPost httpPost = new HttpPost(BASE_URL + "1/students"); + final InputStream resourceStream = this.getClass().getClassLoader().getResourceAsStream("conflict_student.xml"); httpPost.setEntity(new InputStreamEntity(resourceStream)); httpPost.setHeader("Content-Type", "text/xml"); - - HttpResponse response = client.execute(httpPost); + + final HttpResponse response = client.execute(httpPost); assertEquals(409, response.getStatusLine().getStatusCode()); } @Test public void whenCreateValidStudent_thenReceiveOKResponse() throws IOException { - HttpPost httpPost = new HttpPost(BASE_URL + "2/students"); - InputStream resourceStream = this.getClass().getClassLoader().getResourceAsStream("created_student.xml"); + final HttpPost httpPost = new HttpPost(BASE_URL + "2/students"); + final InputStream resourceStream = this.getClass().getClassLoader().getResourceAsStream("created_student.xml"); httpPost.setEntity(new InputStreamEntity(resourceStream)); httpPost.setHeader("Content-Type", "text/xml"); - - HttpResponse response = client.execute(httpPost); + + final HttpResponse response = client.execute(httpPost); assertEquals(200, response.getStatusLine().getStatusCode()); - - Student student = getStudent(2, 3); + + final Student student = getStudent(2, 3); assertEquals(3, student.getId()); assertEquals("Student C", student.getName()); } - + @Test public void whenDeleteInvalidStudent_thenReceiveNotFoundResponse() throws IOException { - HttpDelete httpDelete = new HttpDelete(BASE_URL + "1/students/3"); - HttpResponse response = client.execute(httpDelete); + final HttpDelete httpDelete = new HttpDelete(BASE_URL + "1/students/3"); + final HttpResponse response = client.execute(httpDelete); assertEquals(404, response.getStatusLine().getStatusCode()); - } - + } + @Test public void whenDeleteValidStudent_thenReceiveOKResponse() throws IOException { - HttpDelete httpDelete = new HttpDelete(BASE_URL + "1/students/1"); - HttpResponse response = client.execute(httpDelete); + final HttpDelete httpDelete = new HttpDelete(BASE_URL + "1/students/1"); + final HttpResponse response = client.execute(httpDelete); assertEquals(200, response.getStatusLine().getStatusCode()); - - Course course = getCourse(1); + + final Course course = getCourse(1); assertEquals(1, course.getStudents().size()); assertEquals(2, course.getStudents().get(0).getId()); assertEquals("Student B", course.getStudents().get(0).getName()); } private Course getCourse(int courseOrder) throws IOException { - URL url = new URL(BASE_URL + courseOrder); - InputStream input = url.openStream(); + final URL url = new URL(BASE_URL + courseOrder); + final InputStream input = url.openStream(); return JAXB.unmarshal(new InputStreamReader(input), Course.class); } private Student getStudent(int courseOrder, int studentOrder) throws IOException { - URL url = new URL(BASE_URL + courseOrder + "/students/" + studentOrder); - InputStream input = url.openStream(); + final URL url = new URL(BASE_URL + courseOrder + "/students/" + studentOrder); + final InputStream input = url.openStream(); return JAXB.unmarshal(new InputStreamReader(input), Student.class); } } \ No newline at end of file diff --git a/apache-cxf/cxf-spring/pom.xml b/apache-cxf/cxf-spring/pom.xml index 85e68300f0..8f1dee965a 100644 --- a/apache-cxf/cxf-spring/pom.xml +++ b/apache-cxf/cxf-spring/pom.xml @@ -51,7 +51,7 @@ ${surefire.version} - StudentTest.java + **/*LiveTest.java @@ -60,7 +60,7 @@ - integration + live diff --git a/apache-cxf/cxf-spring/src/test/java/com/baeldung/cxf/spring/StudentTest.java b/apache-cxf/cxf-spring/src/test/java/com/baeldung/cxf/spring/StudentLiveTest.java similarity index 97% rename from apache-cxf/cxf-spring/src/test/java/com/baeldung/cxf/spring/StudentTest.java rename to apache-cxf/cxf-spring/src/test/java/com/baeldung/cxf/spring/StudentLiveTest.java index 7466944e04..80a8f6c3b8 100644 --- a/apache-cxf/cxf-spring/src/test/java/com/baeldung/cxf/spring/StudentTest.java +++ b/apache-cxf/cxf-spring/src/test/java/com/baeldung/cxf/spring/StudentLiveTest.java @@ -6,7 +6,7 @@ import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext; -public class StudentTest { +public class StudentLiveTest { private ApplicationContext context = new AnnotationConfigApplicationContext(ClientConfiguration.class); private Baeldung baeldungProxy = (Baeldung) context.getBean("client"); From 951552c7428c2aab1f531ffda16f74a070481d92 Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Sun, 23 Oct 2016 12:27:49 +0200 Subject: [PATCH 068/215] Rename autovalue-tutorial -> autovalue --- {autovalue-tutorial => autovalue}/README.md | 0 {autovalue-tutorial => autovalue}/pom.xml | 0 .../src/main/java/com/baeldung/autovalue/AutoValueMoney.java | 0 .../java/com/baeldung/autovalue/AutoValueMoneyWithBuilder.java | 0 .../src/main/java/com/baeldung/autovalue/Foo.java | 0 .../src/main/java/com/baeldung/autovalue/ImmutableMoney.java | 0 .../src/main/java/com/baeldung/autovalue/MutableMoney.java | 0 .../src/test/java/com/baeldung/autovalue/MoneyTest.java | 0 pom.xml | 2 +- 9 files changed, 1 insertion(+), 1 deletion(-) rename {autovalue-tutorial => autovalue}/README.md (100%) rename {autovalue-tutorial => autovalue}/pom.xml (100%) rename {autovalue-tutorial => autovalue}/src/main/java/com/baeldung/autovalue/AutoValueMoney.java (100%) rename {autovalue-tutorial => autovalue}/src/main/java/com/baeldung/autovalue/AutoValueMoneyWithBuilder.java (100%) rename {autovalue-tutorial => autovalue}/src/main/java/com/baeldung/autovalue/Foo.java (100%) rename {autovalue-tutorial => autovalue}/src/main/java/com/baeldung/autovalue/ImmutableMoney.java (100%) rename {autovalue-tutorial => autovalue}/src/main/java/com/baeldung/autovalue/MutableMoney.java (100%) rename {autovalue-tutorial => autovalue}/src/test/java/com/baeldung/autovalue/MoneyTest.java (100%) diff --git a/autovalue-tutorial/README.md b/autovalue/README.md similarity index 100% rename from autovalue-tutorial/README.md rename to autovalue/README.md diff --git a/autovalue-tutorial/pom.xml b/autovalue/pom.xml similarity index 100% rename from autovalue-tutorial/pom.xml rename to autovalue/pom.xml diff --git a/autovalue-tutorial/src/main/java/com/baeldung/autovalue/AutoValueMoney.java b/autovalue/src/main/java/com/baeldung/autovalue/AutoValueMoney.java similarity index 100% rename from autovalue-tutorial/src/main/java/com/baeldung/autovalue/AutoValueMoney.java rename to autovalue/src/main/java/com/baeldung/autovalue/AutoValueMoney.java diff --git a/autovalue-tutorial/src/main/java/com/baeldung/autovalue/AutoValueMoneyWithBuilder.java b/autovalue/src/main/java/com/baeldung/autovalue/AutoValueMoneyWithBuilder.java similarity index 100% rename from autovalue-tutorial/src/main/java/com/baeldung/autovalue/AutoValueMoneyWithBuilder.java rename to autovalue/src/main/java/com/baeldung/autovalue/AutoValueMoneyWithBuilder.java diff --git a/autovalue-tutorial/src/main/java/com/baeldung/autovalue/Foo.java b/autovalue/src/main/java/com/baeldung/autovalue/Foo.java similarity index 100% rename from autovalue-tutorial/src/main/java/com/baeldung/autovalue/Foo.java rename to autovalue/src/main/java/com/baeldung/autovalue/Foo.java diff --git a/autovalue-tutorial/src/main/java/com/baeldung/autovalue/ImmutableMoney.java b/autovalue/src/main/java/com/baeldung/autovalue/ImmutableMoney.java similarity index 100% rename from autovalue-tutorial/src/main/java/com/baeldung/autovalue/ImmutableMoney.java rename to autovalue/src/main/java/com/baeldung/autovalue/ImmutableMoney.java diff --git a/autovalue-tutorial/src/main/java/com/baeldung/autovalue/MutableMoney.java b/autovalue/src/main/java/com/baeldung/autovalue/MutableMoney.java similarity index 100% rename from autovalue-tutorial/src/main/java/com/baeldung/autovalue/MutableMoney.java rename to autovalue/src/main/java/com/baeldung/autovalue/MutableMoney.java diff --git a/autovalue-tutorial/src/test/java/com/baeldung/autovalue/MoneyTest.java b/autovalue/src/test/java/com/baeldung/autovalue/MoneyTest.java similarity index 100% rename from autovalue-tutorial/src/test/java/com/baeldung/autovalue/MoneyTest.java rename to autovalue/src/test/java/com/baeldung/autovalue/MoneyTest.java diff --git a/pom.xml b/pom.xml index 9979ff95a5..0a8b39b14f 100644 --- a/pom.xml +++ b/pom.xml @@ -17,7 +17,7 @@ assertj apache-cxf - autovalue-tutorial + autovalue cdi core-java From fc1aaef4717cf0734263e1268070accc68e6c189 Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Sun, 23 Oct 2016 14:19:10 +0200 Subject: [PATCH 069/215] Rename dependency-injection -> spring-core --- {dependency-injection => spring-core}/.gitignore | 0 {dependency-injection => spring-core}/README.md | 0 {dependency-injection => spring-core}/pom.xml | 0 .../ApplicationContextTestAutowiredName.java | 0 .../ApplicationContextTestAutowiredQualifier.java | 0 .../ApplicationContextTestAutowiredType.java | 0 .../ApplicationContextTestInjectName.java | 0 .../ApplicationContextTestInjectQualifier.java | 0 .../ApplicationContextTestInjectType.java | 0 .../ApplicationContextTestResourceNameType.java | 0 .../ApplicationContextTestResourceQualifier.java | 0 .../dependency/AnotherArbitraryDependency.java | 0 .../com/baeldung/dependency/ArbitraryDependency.java | 0 .../dependency/YetAnotherArbitraryDependency.java | 0 .../autowired/FieldAutowiredIntegrationTest.java | 0 .../autowired/FieldAutowiredNameIntegrationTest.java | 0 .../FieldQualifierAutowiredIntegrationTest.java | 0 .../inject/FieldByNameInjectIntegrationTest.java | 0 .../baeldung/inject/FieldInjectIntegrationTest.java | 0 .../inject/FieldQualifierInjectIntegrationTest.java | 0 .../FieldResourceInjectionIntegrationTest.java | 0 .../MethodByQualifierResourceIntegrationTest.java | 0 .../MethodByTypeResourceIntegrationTest.java | 0 .../MethodResourceInjectionIntegrationTest.java | 0 .../resource/NamedResourceIntegrationTest.java | 0 .../QualifierResourceInjectionIntegrationTest.java | 0 .../SetterResourceInjectionIntegrationTest.java | 0 .../spring/web/config/MainWebAppInitializer.java | 12 +++++------- 28 files changed, 5 insertions(+), 7 deletions(-) rename {dependency-injection => spring-core}/.gitignore (100%) rename {dependency-injection => spring-core}/README.md (100%) rename {dependency-injection => spring-core}/pom.xml (100%) rename {dependency-injection => spring-core}/src/main/java/com/baeldung/configuration/ApplicationContextTestAutowiredName.java (100%) rename {dependency-injection => spring-core}/src/main/java/com/baeldung/configuration/ApplicationContextTestAutowiredQualifier.java (100%) rename {dependency-injection => spring-core}/src/main/java/com/baeldung/configuration/ApplicationContextTestAutowiredType.java (100%) rename {dependency-injection => spring-core}/src/main/java/com/baeldung/configuration/ApplicationContextTestInjectName.java (100%) rename {dependency-injection => spring-core}/src/main/java/com/baeldung/configuration/ApplicationContextTestInjectQualifier.java (100%) rename {dependency-injection => spring-core}/src/main/java/com/baeldung/configuration/ApplicationContextTestInjectType.java (100%) rename {dependency-injection => spring-core}/src/main/java/com/baeldung/configuration/ApplicationContextTestResourceNameType.java (100%) rename {dependency-injection => spring-core}/src/main/java/com/baeldung/configuration/ApplicationContextTestResourceQualifier.java (100%) rename {dependency-injection => spring-core}/src/main/java/com/baeldung/dependency/AnotherArbitraryDependency.java (100%) rename {dependency-injection => spring-core}/src/main/java/com/baeldung/dependency/ArbitraryDependency.java (100%) rename {dependency-injection => spring-core}/src/main/java/com/baeldung/dependency/YetAnotherArbitraryDependency.java (100%) rename {dependency-injection => spring-core}/src/test/java/com/baeldung/autowired/FieldAutowiredIntegrationTest.java (100%) rename {dependency-injection => spring-core}/src/test/java/com/baeldung/autowired/FieldAutowiredNameIntegrationTest.java (100%) rename {dependency-injection => spring-core}/src/test/java/com/baeldung/autowired/FieldQualifierAutowiredIntegrationTest.java (100%) rename {dependency-injection => spring-core}/src/test/java/com/baeldung/inject/FieldByNameInjectIntegrationTest.java (100%) rename {dependency-injection => spring-core}/src/test/java/com/baeldung/inject/FieldInjectIntegrationTest.java (100%) rename {dependency-injection => spring-core}/src/test/java/com/baeldung/inject/FieldQualifierInjectIntegrationTest.java (100%) rename {dependency-injection => spring-core}/src/test/java/com/baeldung/resource/FieldResourceInjectionIntegrationTest.java (100%) rename {dependency-injection => spring-core}/src/test/java/com/baeldung/resource/MethodByQualifierResourceIntegrationTest.java (100%) rename {dependency-injection => spring-core}/src/test/java/com/baeldung/resource/MethodByTypeResourceIntegrationTest.java (100%) rename {dependency-injection => spring-core}/src/test/java/com/baeldung/resource/MethodResourceInjectionIntegrationTest.java (100%) rename {dependency-injection => spring-core}/src/test/java/com/baeldung/resource/NamedResourceIntegrationTest.java (100%) rename {dependency-injection => spring-core}/src/test/java/com/baeldung/resource/QualifierResourceInjectionIntegrationTest.java (100%) rename {dependency-injection => spring-core}/src/test/java/com/baeldung/resource/SetterResourceInjectionIntegrationTest.java (100%) diff --git a/dependency-injection/.gitignore b/spring-core/.gitignore similarity index 100% rename from dependency-injection/.gitignore rename to spring-core/.gitignore diff --git a/dependency-injection/README.md b/spring-core/README.md similarity index 100% rename from dependency-injection/README.md rename to spring-core/README.md diff --git a/dependency-injection/pom.xml b/spring-core/pom.xml similarity index 100% rename from dependency-injection/pom.xml rename to spring-core/pom.xml diff --git a/dependency-injection/src/main/java/com/baeldung/configuration/ApplicationContextTestAutowiredName.java b/spring-core/src/main/java/com/baeldung/configuration/ApplicationContextTestAutowiredName.java similarity index 100% rename from dependency-injection/src/main/java/com/baeldung/configuration/ApplicationContextTestAutowiredName.java rename to spring-core/src/main/java/com/baeldung/configuration/ApplicationContextTestAutowiredName.java diff --git a/dependency-injection/src/main/java/com/baeldung/configuration/ApplicationContextTestAutowiredQualifier.java b/spring-core/src/main/java/com/baeldung/configuration/ApplicationContextTestAutowiredQualifier.java similarity index 100% rename from dependency-injection/src/main/java/com/baeldung/configuration/ApplicationContextTestAutowiredQualifier.java rename to spring-core/src/main/java/com/baeldung/configuration/ApplicationContextTestAutowiredQualifier.java diff --git a/dependency-injection/src/main/java/com/baeldung/configuration/ApplicationContextTestAutowiredType.java b/spring-core/src/main/java/com/baeldung/configuration/ApplicationContextTestAutowiredType.java similarity index 100% rename from dependency-injection/src/main/java/com/baeldung/configuration/ApplicationContextTestAutowiredType.java rename to spring-core/src/main/java/com/baeldung/configuration/ApplicationContextTestAutowiredType.java diff --git a/dependency-injection/src/main/java/com/baeldung/configuration/ApplicationContextTestInjectName.java b/spring-core/src/main/java/com/baeldung/configuration/ApplicationContextTestInjectName.java similarity index 100% rename from dependency-injection/src/main/java/com/baeldung/configuration/ApplicationContextTestInjectName.java rename to spring-core/src/main/java/com/baeldung/configuration/ApplicationContextTestInjectName.java diff --git a/dependency-injection/src/main/java/com/baeldung/configuration/ApplicationContextTestInjectQualifier.java b/spring-core/src/main/java/com/baeldung/configuration/ApplicationContextTestInjectQualifier.java similarity index 100% rename from dependency-injection/src/main/java/com/baeldung/configuration/ApplicationContextTestInjectQualifier.java rename to spring-core/src/main/java/com/baeldung/configuration/ApplicationContextTestInjectQualifier.java diff --git a/dependency-injection/src/main/java/com/baeldung/configuration/ApplicationContextTestInjectType.java b/spring-core/src/main/java/com/baeldung/configuration/ApplicationContextTestInjectType.java similarity index 100% rename from dependency-injection/src/main/java/com/baeldung/configuration/ApplicationContextTestInjectType.java rename to spring-core/src/main/java/com/baeldung/configuration/ApplicationContextTestInjectType.java diff --git a/dependency-injection/src/main/java/com/baeldung/configuration/ApplicationContextTestResourceNameType.java b/spring-core/src/main/java/com/baeldung/configuration/ApplicationContextTestResourceNameType.java similarity index 100% rename from dependency-injection/src/main/java/com/baeldung/configuration/ApplicationContextTestResourceNameType.java rename to spring-core/src/main/java/com/baeldung/configuration/ApplicationContextTestResourceNameType.java diff --git a/dependency-injection/src/main/java/com/baeldung/configuration/ApplicationContextTestResourceQualifier.java b/spring-core/src/main/java/com/baeldung/configuration/ApplicationContextTestResourceQualifier.java similarity index 100% rename from dependency-injection/src/main/java/com/baeldung/configuration/ApplicationContextTestResourceQualifier.java rename to spring-core/src/main/java/com/baeldung/configuration/ApplicationContextTestResourceQualifier.java diff --git a/dependency-injection/src/main/java/com/baeldung/dependency/AnotherArbitraryDependency.java b/spring-core/src/main/java/com/baeldung/dependency/AnotherArbitraryDependency.java similarity index 100% rename from dependency-injection/src/main/java/com/baeldung/dependency/AnotherArbitraryDependency.java rename to spring-core/src/main/java/com/baeldung/dependency/AnotherArbitraryDependency.java diff --git a/dependency-injection/src/main/java/com/baeldung/dependency/ArbitraryDependency.java b/spring-core/src/main/java/com/baeldung/dependency/ArbitraryDependency.java similarity index 100% rename from dependency-injection/src/main/java/com/baeldung/dependency/ArbitraryDependency.java rename to spring-core/src/main/java/com/baeldung/dependency/ArbitraryDependency.java diff --git a/dependency-injection/src/main/java/com/baeldung/dependency/YetAnotherArbitraryDependency.java b/spring-core/src/main/java/com/baeldung/dependency/YetAnotherArbitraryDependency.java similarity index 100% rename from dependency-injection/src/main/java/com/baeldung/dependency/YetAnotherArbitraryDependency.java rename to spring-core/src/main/java/com/baeldung/dependency/YetAnotherArbitraryDependency.java diff --git a/dependency-injection/src/test/java/com/baeldung/autowired/FieldAutowiredIntegrationTest.java b/spring-core/src/test/java/com/baeldung/autowired/FieldAutowiredIntegrationTest.java similarity index 100% rename from dependency-injection/src/test/java/com/baeldung/autowired/FieldAutowiredIntegrationTest.java rename to spring-core/src/test/java/com/baeldung/autowired/FieldAutowiredIntegrationTest.java diff --git a/dependency-injection/src/test/java/com/baeldung/autowired/FieldAutowiredNameIntegrationTest.java b/spring-core/src/test/java/com/baeldung/autowired/FieldAutowiredNameIntegrationTest.java similarity index 100% rename from dependency-injection/src/test/java/com/baeldung/autowired/FieldAutowiredNameIntegrationTest.java rename to spring-core/src/test/java/com/baeldung/autowired/FieldAutowiredNameIntegrationTest.java diff --git a/dependency-injection/src/test/java/com/baeldung/autowired/FieldQualifierAutowiredIntegrationTest.java b/spring-core/src/test/java/com/baeldung/autowired/FieldQualifierAutowiredIntegrationTest.java similarity index 100% rename from dependency-injection/src/test/java/com/baeldung/autowired/FieldQualifierAutowiredIntegrationTest.java rename to spring-core/src/test/java/com/baeldung/autowired/FieldQualifierAutowiredIntegrationTest.java diff --git a/dependency-injection/src/test/java/com/baeldung/inject/FieldByNameInjectIntegrationTest.java b/spring-core/src/test/java/com/baeldung/inject/FieldByNameInjectIntegrationTest.java similarity index 100% rename from dependency-injection/src/test/java/com/baeldung/inject/FieldByNameInjectIntegrationTest.java rename to spring-core/src/test/java/com/baeldung/inject/FieldByNameInjectIntegrationTest.java diff --git a/dependency-injection/src/test/java/com/baeldung/inject/FieldInjectIntegrationTest.java b/spring-core/src/test/java/com/baeldung/inject/FieldInjectIntegrationTest.java similarity index 100% rename from dependency-injection/src/test/java/com/baeldung/inject/FieldInjectIntegrationTest.java rename to spring-core/src/test/java/com/baeldung/inject/FieldInjectIntegrationTest.java diff --git a/dependency-injection/src/test/java/com/baeldung/inject/FieldQualifierInjectIntegrationTest.java b/spring-core/src/test/java/com/baeldung/inject/FieldQualifierInjectIntegrationTest.java similarity index 100% rename from dependency-injection/src/test/java/com/baeldung/inject/FieldQualifierInjectIntegrationTest.java rename to spring-core/src/test/java/com/baeldung/inject/FieldQualifierInjectIntegrationTest.java diff --git a/dependency-injection/src/test/java/com/baeldung/resource/FieldResourceInjectionIntegrationTest.java b/spring-core/src/test/java/com/baeldung/resource/FieldResourceInjectionIntegrationTest.java similarity index 100% rename from dependency-injection/src/test/java/com/baeldung/resource/FieldResourceInjectionIntegrationTest.java rename to spring-core/src/test/java/com/baeldung/resource/FieldResourceInjectionIntegrationTest.java diff --git a/dependency-injection/src/test/java/com/baeldung/resource/MethodByQualifierResourceIntegrationTest.java b/spring-core/src/test/java/com/baeldung/resource/MethodByQualifierResourceIntegrationTest.java similarity index 100% rename from dependency-injection/src/test/java/com/baeldung/resource/MethodByQualifierResourceIntegrationTest.java rename to spring-core/src/test/java/com/baeldung/resource/MethodByQualifierResourceIntegrationTest.java diff --git a/dependency-injection/src/test/java/com/baeldung/resource/MethodByTypeResourceIntegrationTest.java b/spring-core/src/test/java/com/baeldung/resource/MethodByTypeResourceIntegrationTest.java similarity index 100% rename from dependency-injection/src/test/java/com/baeldung/resource/MethodByTypeResourceIntegrationTest.java rename to spring-core/src/test/java/com/baeldung/resource/MethodByTypeResourceIntegrationTest.java diff --git a/dependency-injection/src/test/java/com/baeldung/resource/MethodResourceInjectionIntegrationTest.java b/spring-core/src/test/java/com/baeldung/resource/MethodResourceInjectionIntegrationTest.java similarity index 100% rename from dependency-injection/src/test/java/com/baeldung/resource/MethodResourceInjectionIntegrationTest.java rename to spring-core/src/test/java/com/baeldung/resource/MethodResourceInjectionIntegrationTest.java diff --git a/dependency-injection/src/test/java/com/baeldung/resource/NamedResourceIntegrationTest.java b/spring-core/src/test/java/com/baeldung/resource/NamedResourceIntegrationTest.java similarity index 100% rename from dependency-injection/src/test/java/com/baeldung/resource/NamedResourceIntegrationTest.java rename to spring-core/src/test/java/com/baeldung/resource/NamedResourceIntegrationTest.java diff --git a/dependency-injection/src/test/java/com/baeldung/resource/QualifierResourceInjectionIntegrationTest.java b/spring-core/src/test/java/com/baeldung/resource/QualifierResourceInjectionIntegrationTest.java similarity index 100% rename from dependency-injection/src/test/java/com/baeldung/resource/QualifierResourceInjectionIntegrationTest.java rename to spring-core/src/test/java/com/baeldung/resource/QualifierResourceInjectionIntegrationTest.java diff --git a/dependency-injection/src/test/java/com/baeldung/resource/SetterResourceInjectionIntegrationTest.java b/spring-core/src/test/java/com/baeldung/resource/SetterResourceInjectionIntegrationTest.java similarity index 100% rename from dependency-injection/src/test/java/com/baeldung/resource/SetterResourceInjectionIntegrationTest.java rename to spring-core/src/test/java/com/baeldung/resource/SetterResourceInjectionIntegrationTest.java diff --git a/spring-mvc-java/src/main/java/com/baeldung/spring/web/config/MainWebAppInitializer.java b/spring-mvc-java/src/main/java/com/baeldung/spring/web/config/MainWebAppInitializer.java index f428fc3223..80ce22edd6 100644 --- a/spring-mvc-java/src/main/java/com/baeldung/spring/web/config/MainWebAppInitializer.java +++ b/spring-mvc-java/src/main/java/com/baeldung/spring/web/config/MainWebAppInitializer.java @@ -1,17 +1,16 @@ package com.baeldung.spring.web.config; -import java.util.Set; - -import javax.servlet.ServletContext; -import javax.servlet.ServletException; -import javax.servlet.ServletRegistration; - import org.springframework.web.WebApplicationInitializer; import org.springframework.web.context.ContextLoaderListener; import org.springframework.web.context.support.AnnotationConfigWebApplicationContext; import org.springframework.web.context.support.GenericWebApplicationContext; import org.springframework.web.servlet.DispatcherServlet; +import javax.servlet.ServletContext; +import javax.servlet.ServletException; +import javax.servlet.ServletRegistration; +import java.util.Set; + public class MainWebAppInitializer implements WebApplicationInitializer { private static final String TMP_FOLDER = "/tmp"; @@ -28,7 +27,6 @@ public class MainWebAppInitializer implements WebApplicationInitializer { root.scan("com.baeldung.spring.web.config"); // root.getEnvironment().setDefaultProfiles("embedded"); - // Manages the lifecycle of the root application context sc.addListener(new ContextLoaderListener(root)); // Handles requests into the application From 26fbeb98da706708749575a9497254243c0c247f Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Sun, 23 Oct 2016 14:23:56 +0200 Subject: [PATCH 070/215] Rename module --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 0a8b39b14f..b38fe174c9 100644 --- a/pom.xml +++ b/pom.xml @@ -26,7 +26,6 @@ dozer - dependency-injection deltaspike patterns @@ -75,6 +74,7 @@ spring-autowire spring-batch spring-boot + spring-core spring-cucumber spring-data-cassandra spring-data-couchbase-2 From b1b4d4ff7fa9c70316352de43cbc44cce6574610 Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Sun, 23 Oct 2016 18:57:21 +0200 Subject: [PATCH 071/215] Rename jooq-spring -> spring-jooq --- pom.xml | 5 +++-- {jooq-spring => spring-jooq}/.gitignore | 0 {jooq-spring => spring-jooq}/README.md | 0 {jooq-spring => spring-jooq}/pom.xml | 0 .../src/main/resources/application.properties | 0 .../src/main/resources/intro_config.properties | 0 .../src/main/resources/intro_schema.sql | 0 .../com/baeldung/jooq/introduction/ExceptionTranslator.java | 0 .../jooq/introduction/PersistenceContextIntegrationTest.java | 0 .../com/baeldung/jooq/introduction/QueryIntegrationTest.java | 0 .../test/java/com/baeldung/jooq/springboot/Application.java | 0 .../com/baeldung/jooq/springboot/InitialConfiguration.java | 0 .../baeldung/jooq/springboot/SpringBootIntegrationTest.java | 0 13 files changed, 3 insertions(+), 2 deletions(-) rename {jooq-spring => spring-jooq}/.gitignore (100%) rename {jooq-spring => spring-jooq}/README.md (100%) rename {jooq-spring => spring-jooq}/pom.xml (100%) rename {jooq-spring => spring-jooq}/src/main/resources/application.properties (100%) rename {jooq-spring => spring-jooq}/src/main/resources/intro_config.properties (100%) rename {jooq-spring => spring-jooq}/src/main/resources/intro_schema.sql (100%) rename {jooq-spring => spring-jooq}/src/test/java/com/baeldung/jooq/introduction/ExceptionTranslator.java (100%) rename {jooq-spring => spring-jooq}/src/test/java/com/baeldung/jooq/introduction/PersistenceContextIntegrationTest.java (100%) rename {jooq-spring => spring-jooq}/src/test/java/com/baeldung/jooq/introduction/QueryIntegrationTest.java (100%) rename {jooq-spring => spring-jooq}/src/test/java/com/baeldung/jooq/springboot/Application.java (100%) rename {jooq-spring => spring-jooq}/src/test/java/com/baeldung/jooq/springboot/InitialConfiguration.java (100%) rename {jooq-spring => spring-jooq}/src/test/java/com/baeldung/jooq/springboot/SpringBootIntegrationTest.java (100%) diff --git a/pom.xml b/pom.xml index b38fe174c9..71d12fddcf 100644 --- a/pom.xml +++ b/pom.xml @@ -45,7 +45,7 @@ jackson javaxval jjwt - jooq-spring + jpa-storedprocedure json json-path @@ -87,8 +87,9 @@ spring-freemarker spring-hibernate3 spring-hibernate4 - spring-jpa spring-jms + spring-jooq + spring-jpa spring-katharsis spring-mockito spring-mvc-java diff --git a/jooq-spring/.gitignore b/spring-jooq/.gitignore similarity index 100% rename from jooq-spring/.gitignore rename to spring-jooq/.gitignore diff --git a/jooq-spring/README.md b/spring-jooq/README.md similarity index 100% rename from jooq-spring/README.md rename to spring-jooq/README.md diff --git a/jooq-spring/pom.xml b/spring-jooq/pom.xml similarity index 100% rename from jooq-spring/pom.xml rename to spring-jooq/pom.xml diff --git a/jooq-spring/src/main/resources/application.properties b/spring-jooq/src/main/resources/application.properties similarity index 100% rename from jooq-spring/src/main/resources/application.properties rename to spring-jooq/src/main/resources/application.properties diff --git a/jooq-spring/src/main/resources/intro_config.properties b/spring-jooq/src/main/resources/intro_config.properties similarity index 100% rename from jooq-spring/src/main/resources/intro_config.properties rename to spring-jooq/src/main/resources/intro_config.properties diff --git a/jooq-spring/src/main/resources/intro_schema.sql b/spring-jooq/src/main/resources/intro_schema.sql similarity index 100% rename from jooq-spring/src/main/resources/intro_schema.sql rename to spring-jooq/src/main/resources/intro_schema.sql diff --git a/jooq-spring/src/test/java/com/baeldung/jooq/introduction/ExceptionTranslator.java b/spring-jooq/src/test/java/com/baeldung/jooq/introduction/ExceptionTranslator.java similarity index 100% rename from jooq-spring/src/test/java/com/baeldung/jooq/introduction/ExceptionTranslator.java rename to spring-jooq/src/test/java/com/baeldung/jooq/introduction/ExceptionTranslator.java diff --git a/jooq-spring/src/test/java/com/baeldung/jooq/introduction/PersistenceContextIntegrationTest.java b/spring-jooq/src/test/java/com/baeldung/jooq/introduction/PersistenceContextIntegrationTest.java similarity index 100% rename from jooq-spring/src/test/java/com/baeldung/jooq/introduction/PersistenceContextIntegrationTest.java rename to spring-jooq/src/test/java/com/baeldung/jooq/introduction/PersistenceContextIntegrationTest.java diff --git a/jooq-spring/src/test/java/com/baeldung/jooq/introduction/QueryIntegrationTest.java b/spring-jooq/src/test/java/com/baeldung/jooq/introduction/QueryIntegrationTest.java similarity index 100% rename from jooq-spring/src/test/java/com/baeldung/jooq/introduction/QueryIntegrationTest.java rename to spring-jooq/src/test/java/com/baeldung/jooq/introduction/QueryIntegrationTest.java diff --git a/jooq-spring/src/test/java/com/baeldung/jooq/springboot/Application.java b/spring-jooq/src/test/java/com/baeldung/jooq/springboot/Application.java similarity index 100% rename from jooq-spring/src/test/java/com/baeldung/jooq/springboot/Application.java rename to spring-jooq/src/test/java/com/baeldung/jooq/springboot/Application.java diff --git a/jooq-spring/src/test/java/com/baeldung/jooq/springboot/InitialConfiguration.java b/spring-jooq/src/test/java/com/baeldung/jooq/springboot/InitialConfiguration.java similarity index 100% rename from jooq-spring/src/test/java/com/baeldung/jooq/springboot/InitialConfiguration.java rename to spring-jooq/src/test/java/com/baeldung/jooq/springboot/InitialConfiguration.java diff --git a/jooq-spring/src/test/java/com/baeldung/jooq/springboot/SpringBootIntegrationTest.java b/spring-jooq/src/test/java/com/baeldung/jooq/springboot/SpringBootIntegrationTest.java similarity index 100% rename from jooq-spring/src/test/java/com/baeldung/jooq/springboot/SpringBootIntegrationTest.java rename to spring-jooq/src/test/java/com/baeldung/jooq/springboot/SpringBootIntegrationTest.java From a757c7e301012dac6c2615bef93dc0d7b2a28cb0 Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Sun, 23 Oct 2016 19:07:13 +0200 Subject: [PATCH 072/215] Rename flyway-migration -> flyway --- {flyway-migration => flyway}/.gitignore | 6 +- {flyway-migration => flyway}/README.MD | 0 .../V1_0__create_employee_schema.sql | 14 ++-- .../V2_0__create_department_schema.sql | 14 ++-- .../myFlywayConfig.properties | 8 +-- {flyway-migration => flyway}/pom.xml | 66 +++++++++---------- pom.xml | 2 + 7 files changed, 56 insertions(+), 54 deletions(-) rename {flyway-migration => flyway}/.gitignore (92%) rename {flyway-migration => flyway}/README.MD (100%) rename {flyway-migration => flyway}/db/migration/V1_0__create_employee_schema.sql (96%) rename {flyway-migration => flyway}/db/migration/V2_0__create_department_schema.sql (96%) rename {flyway-migration => flyway}/myFlywayConfig.properties (97%) rename {flyway-migration => flyway}/pom.xml (91%) diff --git a/flyway-migration/.gitignore b/flyway/.gitignore similarity index 92% rename from flyway-migration/.gitignore rename to flyway/.gitignore index abffe04ed2..9cdd5b9542 100644 --- a/flyway-migration/.gitignore +++ b/flyway/.gitignore @@ -1,4 +1,4 @@ -.classpath -.project -.settings +.classpath +.project +.settings target/ \ No newline at end of file diff --git a/flyway-migration/README.MD b/flyway/README.MD similarity index 100% rename from flyway-migration/README.MD rename to flyway/README.MD diff --git a/flyway-migration/db/migration/V1_0__create_employee_schema.sql b/flyway/db/migration/V1_0__create_employee_schema.sql similarity index 96% rename from flyway-migration/db/migration/V1_0__create_employee_schema.sql rename to flyway/db/migration/V1_0__create_employee_schema.sql index 09408faecb..b6167bfacc 100644 --- a/flyway-migration/db/migration/V1_0__create_employee_schema.sql +++ b/flyway/db/migration/V1_0__create_employee_schema.sql @@ -1,8 +1,8 @@ -CREATE TABLE IF NOT EXISTS `employee` ( - -`id` int NOT NULL AUTO_INCREMENT PRIMARY KEY, -`name` varchar(20), -`email` varchar(50), -`date_of_birth` timestamp - +CREATE TABLE IF NOT EXISTS `employee` ( + +`id` int NOT NULL AUTO_INCREMENT PRIMARY KEY, +`name` varchar(20), +`email` varchar(50), +`date_of_birth` timestamp + )ENGINE=InnoDB DEFAULT CHARSET=UTF8; \ No newline at end of file diff --git a/flyway-migration/db/migration/V2_0__create_department_schema.sql b/flyway/db/migration/V2_0__create_department_schema.sql similarity index 96% rename from flyway-migration/db/migration/V2_0__create_department_schema.sql rename to flyway/db/migration/V2_0__create_department_schema.sql index 2b9d3364a5..c85cc81353 100644 --- a/flyway-migration/db/migration/V2_0__create_department_schema.sql +++ b/flyway/db/migration/V2_0__create_department_schema.sql @@ -1,8 +1,8 @@ -CREATE TABLE IF NOT EXISTS `department` ( - -`id` int NOT NULL AUTO_INCREMENT PRIMARY KEY, -`name` varchar(20) - -)ENGINE=InnoDB DEFAULT CHARSET=UTF8; - +CREATE TABLE IF NOT EXISTS `department` ( + +`id` int NOT NULL AUTO_INCREMENT PRIMARY KEY, +`name` varchar(20) + +)ENGINE=InnoDB DEFAULT CHARSET=UTF8; + ALTER TABLE `employee` ADD `dept_id` int AFTER `email`; \ No newline at end of file diff --git a/flyway-migration/myFlywayConfig.properties b/flyway/myFlywayConfig.properties similarity index 97% rename from flyway-migration/myFlywayConfig.properties rename to flyway/myFlywayConfig.properties index 22f3afefd3..8bb102930a 100644 --- a/flyway-migration/myFlywayConfig.properties +++ b/flyway/myFlywayConfig.properties @@ -1,5 +1,5 @@ -flyway.user=root -flyway.password=mysql -flyway.schemas=app-db -flyway.url=jdbc:mysql://localhost:3306/ +flyway.user=root +flyway.password=mysql +flyway.schemas=app-db +flyway.url=jdbc:mysql://localhost:3306/ flyway.locations=filesystem:db/migration \ No newline at end of file diff --git a/flyway-migration/pom.xml b/flyway/pom.xml similarity index 91% rename from flyway-migration/pom.xml rename to flyway/pom.xml index 6e9d683a0e..d53bc7dc41 100644 --- a/flyway-migration/pom.xml +++ b/flyway/pom.xml @@ -1,34 +1,34 @@ - - 4.0.0 - com.baeldung - flyway-migration - 1.0 - flyway-migration - A sample project to demonstrate Flyway migrations - - - mysql - mysql-connector-java - 6.0.3 - - - - - - org.flywaydb - flyway-maven-plugin - 4.0.3 - - - org.apache.maven.plugins - maven-compiler-plugin - 3.5.1 - - 1.8 - 1.8 - - - - + + 4.0.0 + com.baeldung + flyway + 1.0 + flyway + A sample project to demonstrate Flyway migrations + + + mysql + mysql-connector-java + 6.0.3 + + + + + + org.flywaydb + flyway-maven-plugin + 4.0.3 + + + org.apache.maven.plugins + maven-compiler-plugin + 3.5.1 + + 1.8 + 1.8 + + + + \ No newline at end of file diff --git a/pom.xml b/pom.xml index 71d12fddcf..bec40024b7 100644 --- a/pom.xml +++ b/pom.xml @@ -32,6 +32,8 @@ feign-client + flyway + gson guava guava18 From 9055ecbc6fc56e563eead2fc1ae615621e304af3 Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Sun, 23 Oct 2016 19:10:16 +0200 Subject: [PATCH 073/215] Rename xmlunit2-tutorial -> xmlunit2 --- pom.xml | 1 + {xmlunit2-tutorial => xmlunit2}/README.md | 0 {xmlunit2-tutorial => xmlunit2}/pom.xml | 2 +- .../baeldung/xmlunit/IgnoreAttributeDifferenceEvaluator.java | 0 .../src/test/java/com/baeldung/xmlunit/XMLUnitTest.java | 0 {xmlunit2-tutorial => xmlunit2}/src/test/resources/control.xml | 0 {xmlunit2-tutorial => xmlunit2}/src/test/resources/students.xml | 0 {xmlunit2-tutorial => xmlunit2}/src/test/resources/students.xsd | 0 .../src/test/resources/students_with_error.xml | 0 {xmlunit2-tutorial => xmlunit2}/src/test/resources/teachers.xml | 0 {xmlunit2-tutorial => xmlunit2}/src/test/resources/test.xml | 0 11 files changed, 2 insertions(+), 1 deletion(-) rename {xmlunit2-tutorial => xmlunit2}/README.md (100%) rename {xmlunit2-tutorial => xmlunit2}/pom.xml (96%) rename {xmlunit2-tutorial => xmlunit2}/src/main/java/com/baeldung/xmlunit/IgnoreAttributeDifferenceEvaluator.java (100%) rename {xmlunit2-tutorial => xmlunit2}/src/test/java/com/baeldung/xmlunit/XMLUnitTest.java (100%) rename {xmlunit2-tutorial => xmlunit2}/src/test/resources/control.xml (100%) rename {xmlunit2-tutorial => xmlunit2}/src/test/resources/students.xml (100%) rename {xmlunit2-tutorial => xmlunit2}/src/test/resources/students.xsd (100%) rename {xmlunit2-tutorial => xmlunit2}/src/test/resources/students_with_error.xml (100%) rename {xmlunit2-tutorial => xmlunit2}/src/test/resources/teachers.xml (100%) rename {xmlunit2-tutorial => xmlunit2}/src/test/resources/test.xml (100%) diff --git a/pom.xml b/pom.xml index bec40024b7..f1c23bfb55 100644 --- a/pom.xml +++ b/pom.xml @@ -129,6 +129,7 @@ jsf xml + xmlunit2 lombok redis diff --git a/xmlunit2-tutorial/README.md b/xmlunit2/README.md similarity index 100% rename from xmlunit2-tutorial/README.md rename to xmlunit2/README.md diff --git a/xmlunit2-tutorial/pom.xml b/xmlunit2/pom.xml similarity index 96% rename from xmlunit2-tutorial/pom.xml rename to xmlunit2/pom.xml index b4cb684f65..c80e3f37b2 100644 --- a/xmlunit2-tutorial/pom.xml +++ b/xmlunit2/pom.xml @@ -2,7 +2,7 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 4.0.0 com.baeldung - xmlunit2-tutorial + xmlunit2 1.0 XMLUnit-2 diff --git a/xmlunit2-tutorial/src/main/java/com/baeldung/xmlunit/IgnoreAttributeDifferenceEvaluator.java b/xmlunit2/src/main/java/com/baeldung/xmlunit/IgnoreAttributeDifferenceEvaluator.java similarity index 100% rename from xmlunit2-tutorial/src/main/java/com/baeldung/xmlunit/IgnoreAttributeDifferenceEvaluator.java rename to xmlunit2/src/main/java/com/baeldung/xmlunit/IgnoreAttributeDifferenceEvaluator.java diff --git a/xmlunit2-tutorial/src/test/java/com/baeldung/xmlunit/XMLUnitTest.java b/xmlunit2/src/test/java/com/baeldung/xmlunit/XMLUnitTest.java similarity index 100% rename from xmlunit2-tutorial/src/test/java/com/baeldung/xmlunit/XMLUnitTest.java rename to xmlunit2/src/test/java/com/baeldung/xmlunit/XMLUnitTest.java diff --git a/xmlunit2-tutorial/src/test/resources/control.xml b/xmlunit2/src/test/resources/control.xml similarity index 100% rename from xmlunit2-tutorial/src/test/resources/control.xml rename to xmlunit2/src/test/resources/control.xml diff --git a/xmlunit2-tutorial/src/test/resources/students.xml b/xmlunit2/src/test/resources/students.xml similarity index 100% rename from xmlunit2-tutorial/src/test/resources/students.xml rename to xmlunit2/src/test/resources/students.xml diff --git a/xmlunit2-tutorial/src/test/resources/students.xsd b/xmlunit2/src/test/resources/students.xsd similarity index 100% rename from xmlunit2-tutorial/src/test/resources/students.xsd rename to xmlunit2/src/test/resources/students.xsd diff --git a/xmlunit2-tutorial/src/test/resources/students_with_error.xml b/xmlunit2/src/test/resources/students_with_error.xml similarity index 100% rename from xmlunit2-tutorial/src/test/resources/students_with_error.xml rename to xmlunit2/src/test/resources/students_with_error.xml diff --git a/xmlunit2-tutorial/src/test/resources/teachers.xml b/xmlunit2/src/test/resources/teachers.xml similarity index 100% rename from xmlunit2-tutorial/src/test/resources/teachers.xml rename to xmlunit2/src/test/resources/teachers.xml diff --git a/xmlunit2-tutorial/src/test/resources/test.xml b/xmlunit2/src/test/resources/test.xml similarity index 100% rename from xmlunit2-tutorial/src/test/resources/test.xml rename to xmlunit2/src/test/resources/test.xml From 90ca6097627098d2203675524f56e3e51b1ce380 Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Sun, 23 Oct 2016 19:13:21 +0200 Subject: [PATCH 074/215] Rename jee7schedule -> jee7 --- {jee7schedule => jee7}/README.md | 0 {jee7schedule => jee7}/pom.xml | 0 .../baeldung/timer/AutomaticTimerBean.java | 0 .../baeldung/timer/FixedDelayTimerBean.java | 0 .../ProgrammaticAtFixedRateTimerBean.java | 0 .../baeldung/timer/ProgrammaticTimerBean.java | 0 ...ammaticWithInitialFixedDelayTimerBean.java | 0 .../com/baeldung/timer/ScheduleTimerBean.java | 0 .../java/com/baeldung/timer/TimerEvent.java | 0 .../baeldung/timer/TimerEventListener.java | 0 .../java/com/baeldung/timer/WorkerBean.java | 0 .../src/main/webapp/WEB-INF/beans.xml | 0 .../timer/AutomaticTimerBeanTest.java | 0 .../ProgrammaticAtFixedRateTimerBeanTest.java | 0 .../timer/ProgrammaticTimerBeanTest.java | 0 ...ogrammaticWithFixedDelayTimerBeanTest.java | 0 .../baeldung/timer/ScheduleTimerBeanTest.java | 0 .../baeldung/timer/WithinWindowMatcher.java | 0 pom.xml | 2 +- .../com/baeldung/xmlunit/XMLUnitTest.java | 33 ++++++++----------- 20 files changed, 14 insertions(+), 21 deletions(-) rename {jee7schedule => jee7}/README.md (100%) rename {jee7schedule => jee7}/pom.xml (100%) rename {jee7schedule => jee7}/src/main/java/com/baeldung/timer/AutomaticTimerBean.java (100%) rename {jee7schedule => jee7}/src/main/java/com/baeldung/timer/FixedDelayTimerBean.java (100%) rename {jee7schedule => jee7}/src/main/java/com/baeldung/timer/ProgrammaticAtFixedRateTimerBean.java (100%) rename {jee7schedule => jee7}/src/main/java/com/baeldung/timer/ProgrammaticTimerBean.java (100%) rename {jee7schedule => jee7}/src/main/java/com/baeldung/timer/ProgrammaticWithInitialFixedDelayTimerBean.java (100%) rename {jee7schedule => jee7}/src/main/java/com/baeldung/timer/ScheduleTimerBean.java (100%) rename {jee7schedule => jee7}/src/main/java/com/baeldung/timer/TimerEvent.java (100%) rename {jee7schedule => jee7}/src/main/java/com/baeldung/timer/TimerEventListener.java (100%) rename {jee7schedule => jee7}/src/main/java/com/baeldung/timer/WorkerBean.java (100%) rename {jee7schedule => jee7}/src/main/webapp/WEB-INF/beans.xml (100%) rename {jee7schedule => jee7}/src/test/java/com/baeldung/timer/AutomaticTimerBeanTest.java (100%) rename {jee7schedule => jee7}/src/test/java/com/baeldung/timer/ProgrammaticAtFixedRateTimerBeanTest.java (100%) rename {jee7schedule => jee7}/src/test/java/com/baeldung/timer/ProgrammaticTimerBeanTest.java (100%) rename {jee7schedule => jee7}/src/test/java/com/baeldung/timer/ProgrammaticWithFixedDelayTimerBeanTest.java (100%) rename {jee7schedule => jee7}/src/test/java/com/baeldung/timer/ScheduleTimerBeanTest.java (100%) rename {jee7schedule => jee7}/src/test/java/com/baeldung/timer/WithinWindowMatcher.java (100%) diff --git a/jee7schedule/README.md b/jee7/README.md similarity index 100% rename from jee7schedule/README.md rename to jee7/README.md diff --git a/jee7schedule/pom.xml b/jee7/pom.xml similarity index 100% rename from jee7schedule/pom.xml rename to jee7/pom.xml diff --git a/jee7schedule/src/main/java/com/baeldung/timer/AutomaticTimerBean.java b/jee7/src/main/java/com/baeldung/timer/AutomaticTimerBean.java similarity index 100% rename from jee7schedule/src/main/java/com/baeldung/timer/AutomaticTimerBean.java rename to jee7/src/main/java/com/baeldung/timer/AutomaticTimerBean.java diff --git a/jee7schedule/src/main/java/com/baeldung/timer/FixedDelayTimerBean.java b/jee7/src/main/java/com/baeldung/timer/FixedDelayTimerBean.java similarity index 100% rename from jee7schedule/src/main/java/com/baeldung/timer/FixedDelayTimerBean.java rename to jee7/src/main/java/com/baeldung/timer/FixedDelayTimerBean.java diff --git a/jee7schedule/src/main/java/com/baeldung/timer/ProgrammaticAtFixedRateTimerBean.java b/jee7/src/main/java/com/baeldung/timer/ProgrammaticAtFixedRateTimerBean.java similarity index 100% rename from jee7schedule/src/main/java/com/baeldung/timer/ProgrammaticAtFixedRateTimerBean.java rename to jee7/src/main/java/com/baeldung/timer/ProgrammaticAtFixedRateTimerBean.java diff --git a/jee7schedule/src/main/java/com/baeldung/timer/ProgrammaticTimerBean.java b/jee7/src/main/java/com/baeldung/timer/ProgrammaticTimerBean.java similarity index 100% rename from jee7schedule/src/main/java/com/baeldung/timer/ProgrammaticTimerBean.java rename to jee7/src/main/java/com/baeldung/timer/ProgrammaticTimerBean.java diff --git a/jee7schedule/src/main/java/com/baeldung/timer/ProgrammaticWithInitialFixedDelayTimerBean.java b/jee7/src/main/java/com/baeldung/timer/ProgrammaticWithInitialFixedDelayTimerBean.java similarity index 100% rename from jee7schedule/src/main/java/com/baeldung/timer/ProgrammaticWithInitialFixedDelayTimerBean.java rename to jee7/src/main/java/com/baeldung/timer/ProgrammaticWithInitialFixedDelayTimerBean.java diff --git a/jee7schedule/src/main/java/com/baeldung/timer/ScheduleTimerBean.java b/jee7/src/main/java/com/baeldung/timer/ScheduleTimerBean.java similarity index 100% rename from jee7schedule/src/main/java/com/baeldung/timer/ScheduleTimerBean.java rename to jee7/src/main/java/com/baeldung/timer/ScheduleTimerBean.java diff --git a/jee7schedule/src/main/java/com/baeldung/timer/TimerEvent.java b/jee7/src/main/java/com/baeldung/timer/TimerEvent.java similarity index 100% rename from jee7schedule/src/main/java/com/baeldung/timer/TimerEvent.java rename to jee7/src/main/java/com/baeldung/timer/TimerEvent.java diff --git a/jee7schedule/src/main/java/com/baeldung/timer/TimerEventListener.java b/jee7/src/main/java/com/baeldung/timer/TimerEventListener.java similarity index 100% rename from jee7schedule/src/main/java/com/baeldung/timer/TimerEventListener.java rename to jee7/src/main/java/com/baeldung/timer/TimerEventListener.java diff --git a/jee7schedule/src/main/java/com/baeldung/timer/WorkerBean.java b/jee7/src/main/java/com/baeldung/timer/WorkerBean.java similarity index 100% rename from jee7schedule/src/main/java/com/baeldung/timer/WorkerBean.java rename to jee7/src/main/java/com/baeldung/timer/WorkerBean.java diff --git a/jee7schedule/src/main/webapp/WEB-INF/beans.xml b/jee7/src/main/webapp/WEB-INF/beans.xml similarity index 100% rename from jee7schedule/src/main/webapp/WEB-INF/beans.xml rename to jee7/src/main/webapp/WEB-INF/beans.xml diff --git a/jee7schedule/src/test/java/com/baeldung/timer/AutomaticTimerBeanTest.java b/jee7/src/test/java/com/baeldung/timer/AutomaticTimerBeanTest.java similarity index 100% rename from jee7schedule/src/test/java/com/baeldung/timer/AutomaticTimerBeanTest.java rename to jee7/src/test/java/com/baeldung/timer/AutomaticTimerBeanTest.java diff --git a/jee7schedule/src/test/java/com/baeldung/timer/ProgrammaticAtFixedRateTimerBeanTest.java b/jee7/src/test/java/com/baeldung/timer/ProgrammaticAtFixedRateTimerBeanTest.java similarity index 100% rename from jee7schedule/src/test/java/com/baeldung/timer/ProgrammaticAtFixedRateTimerBeanTest.java rename to jee7/src/test/java/com/baeldung/timer/ProgrammaticAtFixedRateTimerBeanTest.java diff --git a/jee7schedule/src/test/java/com/baeldung/timer/ProgrammaticTimerBeanTest.java b/jee7/src/test/java/com/baeldung/timer/ProgrammaticTimerBeanTest.java similarity index 100% rename from jee7schedule/src/test/java/com/baeldung/timer/ProgrammaticTimerBeanTest.java rename to jee7/src/test/java/com/baeldung/timer/ProgrammaticTimerBeanTest.java diff --git a/jee7schedule/src/test/java/com/baeldung/timer/ProgrammaticWithFixedDelayTimerBeanTest.java b/jee7/src/test/java/com/baeldung/timer/ProgrammaticWithFixedDelayTimerBeanTest.java similarity index 100% rename from jee7schedule/src/test/java/com/baeldung/timer/ProgrammaticWithFixedDelayTimerBeanTest.java rename to jee7/src/test/java/com/baeldung/timer/ProgrammaticWithFixedDelayTimerBeanTest.java diff --git a/jee7schedule/src/test/java/com/baeldung/timer/ScheduleTimerBeanTest.java b/jee7/src/test/java/com/baeldung/timer/ScheduleTimerBeanTest.java similarity index 100% rename from jee7schedule/src/test/java/com/baeldung/timer/ScheduleTimerBeanTest.java rename to jee7/src/test/java/com/baeldung/timer/ScheduleTimerBeanTest.java diff --git a/jee7schedule/src/test/java/com/baeldung/timer/WithinWindowMatcher.java b/jee7/src/test/java/com/baeldung/timer/WithinWindowMatcher.java similarity index 100% rename from jee7schedule/src/test/java/com/baeldung/timer/WithinWindowMatcher.java rename to jee7/src/test/java/com/baeldung/timer/WithinWindowMatcher.java diff --git a/pom.xml b/pom.xml index f1c23bfb55..4e8b54446d 100644 --- a/pom.xml +++ b/pom.xml @@ -52,7 +52,7 @@ json json-path junit5 - jee7schedule + jee7 log4j diff --git a/xmlunit2/src/test/java/com/baeldung/xmlunit/XMLUnitTest.java b/xmlunit2/src/test/java/com/baeldung/xmlunit/XMLUnitTest.java index 175250f47b..5af3d48433 100644 --- a/xmlunit2/src/test/java/com/baeldung/xmlunit/XMLUnitTest.java +++ b/xmlunit2/src/test/java/com/baeldung/xmlunit/XMLUnitTest.java @@ -1,37 +1,30 @@ package com.baeldung.xmlunit; -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.equalTo; -import static org.hamcrest.Matchers.greaterThan; -import static org.hamcrest.core.IsNot.not; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; -import static org.xmlunit.matchers.CompareMatcher.isIdenticalTo; -import static org.xmlunit.matchers.CompareMatcher.isSimilarTo; -import static org.xmlunit.matchers.HasXPathMatcher.hasXPath; - -import java.io.File; -import java.util.Iterator; - import org.junit.Ignore; import org.junit.Test; import org.w3c.dom.NamedNodeMap; import org.w3c.dom.Node; import org.xmlunit.builder.DiffBuilder; import org.xmlunit.builder.Input; -import org.xmlunit.diff.ComparisonControllers; -import org.xmlunit.diff.DefaultNodeMatcher; -import org.xmlunit.diff.Diff; -import org.xmlunit.diff.Difference; -import org.xmlunit.diff.ElementSelectors; +import org.xmlunit.diff.*; import org.xmlunit.validation.Languages; import org.xmlunit.validation.ValidationProblem; import org.xmlunit.validation.ValidationResult; import org.xmlunit.validation.Validator; import org.xmlunit.xpath.JAXPXPathEngine; +import java.io.File; +import java.util.Iterator; + +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.equalTo; +import static org.hamcrest.Matchers.greaterThan; +import static org.hamcrest.core.IsNot.not; +import static org.junit.Assert.*; +import static org.xmlunit.matchers.CompareMatcher.isIdenticalTo; +import static org.xmlunit.matchers.CompareMatcher.isSimilarTo; +import static org.xmlunit.matchers.HasXPathMatcher.hasXPath; + public class XMLUnitTest { @Test public void givenWrongXml_whenValidateFailsAgainstXsd_thenCorrect() { From 7df435bb6fa0e59aa3835d6fb845a7667b191607 Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Sun, 23 Oct 2016 19:15:31 +0200 Subject: [PATCH 075/215] Rename feign-client -> feign --- {feign-client => feign}/README.md | 0 {feign-client => feign}/pom.xml | 0 .../com/baeldung/feign/BookControllerFeignClientBuilder.java | 0 .../src/main/java/com/baeldung/feign/clients/BookClient.java | 0 .../src/main/java/com/baeldung/feign/models/Book.java | 0 .../src/main/java/com/baeldung/feign/models/BookResource.java | 0 {feign-client => feign}/src/main/resources/log4j2.xml | 0 .../test/java/com/baeldung/feign/clients/BookClientTest.java | 0 pom.xml | 2 +- 9 files changed, 1 insertion(+), 1 deletion(-) rename {feign-client => feign}/README.md (100%) rename {feign-client => feign}/pom.xml (100%) rename {feign-client => feign}/src/main/java/com/baeldung/feign/BookControllerFeignClientBuilder.java (100%) rename {feign-client => feign}/src/main/java/com/baeldung/feign/clients/BookClient.java (100%) rename {feign-client => feign}/src/main/java/com/baeldung/feign/models/Book.java (100%) rename {feign-client => feign}/src/main/java/com/baeldung/feign/models/BookResource.java (100%) rename {feign-client => feign}/src/main/resources/log4j2.xml (100%) rename {feign-client => feign}/src/test/java/com/baeldung/feign/clients/BookClientTest.java (100%) diff --git a/feign-client/README.md b/feign/README.md similarity index 100% rename from feign-client/README.md rename to feign/README.md diff --git a/feign-client/pom.xml b/feign/pom.xml similarity index 100% rename from feign-client/pom.xml rename to feign/pom.xml diff --git a/feign-client/src/main/java/com/baeldung/feign/BookControllerFeignClientBuilder.java b/feign/src/main/java/com/baeldung/feign/BookControllerFeignClientBuilder.java similarity index 100% rename from feign-client/src/main/java/com/baeldung/feign/BookControllerFeignClientBuilder.java rename to feign/src/main/java/com/baeldung/feign/BookControllerFeignClientBuilder.java diff --git a/feign-client/src/main/java/com/baeldung/feign/clients/BookClient.java b/feign/src/main/java/com/baeldung/feign/clients/BookClient.java similarity index 100% rename from feign-client/src/main/java/com/baeldung/feign/clients/BookClient.java rename to feign/src/main/java/com/baeldung/feign/clients/BookClient.java diff --git a/feign-client/src/main/java/com/baeldung/feign/models/Book.java b/feign/src/main/java/com/baeldung/feign/models/Book.java similarity index 100% rename from feign-client/src/main/java/com/baeldung/feign/models/Book.java rename to feign/src/main/java/com/baeldung/feign/models/Book.java diff --git a/feign-client/src/main/java/com/baeldung/feign/models/BookResource.java b/feign/src/main/java/com/baeldung/feign/models/BookResource.java similarity index 100% rename from feign-client/src/main/java/com/baeldung/feign/models/BookResource.java rename to feign/src/main/java/com/baeldung/feign/models/BookResource.java diff --git a/feign-client/src/main/resources/log4j2.xml b/feign/src/main/resources/log4j2.xml similarity index 100% rename from feign-client/src/main/resources/log4j2.xml rename to feign/src/main/resources/log4j2.xml diff --git a/feign-client/src/test/java/com/baeldung/feign/clients/BookClientTest.java b/feign/src/test/java/com/baeldung/feign/clients/BookClientTest.java similarity index 100% rename from feign-client/src/test/java/com/baeldung/feign/clients/BookClientTest.java rename to feign/src/test/java/com/baeldung/feign/clients/BookClientTest.java diff --git a/pom.xml b/pom.xml index 4e8b54446d..0de16500d6 100644 --- a/pom.xml +++ b/pom.xml @@ -29,7 +29,7 @@ deltaspike patterns - feign-client + feign flyway From 62c6abfb4aa5c43020e60397d7652f0dbbfb66d0 Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Sun, 23 Oct 2016 19:49:03 +0200 Subject: [PATCH 076/215] Move Java8 Collectors example --- core-java-8/README.md | 1 - core-java/README.md | 1 + .../test/java/com/baeldung/collectors/Java8CollectorsTest.java | 0 3 files changed, 1 insertion(+), 1 deletion(-) rename {core-java-8 => core-java}/src/test/java/com/baeldung/collectors/Java8CollectorsTest.java (100%) diff --git a/core-java-8/README.md b/core-java-8/README.md index c130e6bd41..300d6ce33b 100644 --- a/core-java-8/README.md +++ b/core-java-8/README.md @@ -11,7 +11,6 @@ - [Lambda Expressions and Functional Interfaces: Tips and Best Practices](http://www.baeldung.com/java-8-lambda-expressions-tips) - [The Double Colon Operator in Java 8](http://www.baeldung.com/java-8-double-colon-operator) - [Java 8 Streams Advanced](http://www.baeldung.com/java-8-streams) -- [Java 8 Collectors](http://www.baeldung.com/java-8-collectors) - [Convert String to int or Integer in Java](http://www.baeldung.com/java-convert-string-to-int-or-integer) - [Convert char to String in Java](http://www.baeldung.com/java-convert-char-to-string) - [Guide to Java 8’s Functional Interfaces](http://www.baeldung.com/java-8-functional-interfaces) diff --git a/core-java/README.md b/core-java/README.md index fbbfa65589..a9310c1c16 100644 --- a/core-java/README.md +++ b/core-java/README.md @@ -19,3 +19,4 @@ - [Guide to the Java ArrayList](http://www.baeldung.com/java-arraylist) - [Guide to Java Reflection](http://www.baeldung.com/java-reflection) - [A Guide to Java Sockets](http://www.baeldung.com/a-guide-to-java-sockets) +- [Java 8 Collectors](http://www.baeldung.com/java-8-collectors) diff --git a/core-java-8/src/test/java/com/baeldung/collectors/Java8CollectorsTest.java b/core-java/src/test/java/com/baeldung/collectors/Java8CollectorsTest.java similarity index 100% rename from core-java-8/src/test/java/com/baeldung/collectors/Java8CollectorsTest.java rename to core-java/src/test/java/com/baeldung/collectors/Java8CollectorsTest.java From 93256245ffdff3a698587a0153f54862b80fee2c Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Sun, 23 Oct 2016 19:53:01 +0200 Subject: [PATCH 077/215] Move CompletableFuture examples --- core-java-8/README.md | 1 - core-java/README.md | 1 + .../com/baeldung/completablefuture/CompletableFutureTest.java | 0 3 files changed, 1 insertion(+), 1 deletion(-) rename {core-java-8 => core-java}/src/test/java/com/baeldung/completablefuture/CompletableFutureTest.java (100%) diff --git a/core-java-8/README.md b/core-java-8/README.md index 300d6ce33b..3d1d89896f 100644 --- a/core-java-8/README.md +++ b/core-java-8/README.md @@ -14,7 +14,6 @@ - [Convert String to int or Integer in Java](http://www.baeldung.com/java-convert-string-to-int-or-integer) - [Convert char to String in Java](http://www.baeldung.com/java-convert-char-to-string) - [Guide to Java 8’s Functional Interfaces](http://www.baeldung.com/java-8-functional-interfaces) -- [Guide To CompletableFuture](http://www.baeldung.com/java-completablefuture) - [Introduction to Thread Pools in Java](http://www.baeldung.com/thread-pool-java-and-guava) - [Guide to Java 8 Collectors](http://www.baeldung.com/java-8-collectors) - [The Java 8 Stream API Tutorial](http://www.baeldung.com/java-8-streams) diff --git a/core-java/README.md b/core-java/README.md index a9310c1c16..6671d7c2f4 100644 --- a/core-java/README.md +++ b/core-java/README.md @@ -20,3 +20,4 @@ - [Guide to Java Reflection](http://www.baeldung.com/java-reflection) - [A Guide to Java Sockets](http://www.baeldung.com/a-guide-to-java-sockets) - [Java 8 Collectors](http://www.baeldung.com/java-8-collectors) +- [Guide To CompletableFuture](http://www.baeldung.com/java-completablefuture) diff --git a/core-java-8/src/test/java/com/baeldung/completablefuture/CompletableFutureTest.java b/core-java/src/test/java/com/baeldung/completablefuture/CompletableFutureTest.java similarity index 100% rename from core-java-8/src/test/java/com/baeldung/completablefuture/CompletableFutureTest.java rename to core-java/src/test/java/com/baeldung/completablefuture/CompletableFutureTest.java From 6dc9bcf33104b02564d74397cf4e49ef0c57c044 Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Sun, 23 Oct 2016 19:55:41 +0200 Subject: [PATCH 078/215] Move FunctionalInterfaces examples --- core-java-8/README.md | 1 - core-java/README.md | 1 + .../functionalinterface/FunctionalInterfaceTest.java | 6 +++--- .../baeldung/functionalinterface/ShortToByteFunction.java | 0 4 files changed, 4 insertions(+), 4 deletions(-) rename {core-java-8 => core-java}/src/test/java/com/baeldung/functionalinterface/FunctionalInterfaceTest.java (100%) rename {core-java-8 => core-java}/src/test/java/com/baeldung/functionalinterface/ShortToByteFunction.java (100%) diff --git a/core-java-8/README.md b/core-java-8/README.md index 3d1d89896f..a835914b4d 100644 --- a/core-java-8/README.md +++ b/core-java-8/README.md @@ -13,7 +13,6 @@ - [Java 8 Streams Advanced](http://www.baeldung.com/java-8-streams) - [Convert String to int or Integer in Java](http://www.baeldung.com/java-convert-string-to-int-or-integer) - [Convert char to String in Java](http://www.baeldung.com/java-convert-char-to-string) -- [Guide to Java 8’s Functional Interfaces](http://www.baeldung.com/java-8-functional-interfaces) - [Introduction to Thread Pools in Java](http://www.baeldung.com/thread-pool-java-and-guava) - [Guide to Java 8 Collectors](http://www.baeldung.com/java-8-collectors) - [The Java 8 Stream API Tutorial](http://www.baeldung.com/java-8-streams) diff --git a/core-java/README.md b/core-java/README.md index 6671d7c2f4..c18e6670ca 100644 --- a/core-java/README.md +++ b/core-java/README.md @@ -21,3 +21,4 @@ - [A Guide to Java Sockets](http://www.baeldung.com/a-guide-to-java-sockets) - [Java 8 Collectors](http://www.baeldung.com/java-8-collectors) - [Guide To CompletableFuture](http://www.baeldung.com/java-completablefuture) +- [Guide to Java 8’s Functional Interfaces](http://www.baeldung.com/java-8-functional-interfaces) diff --git a/core-java-8/src/test/java/com/baeldung/functionalinterface/FunctionalInterfaceTest.java b/core-java/src/test/java/com/baeldung/functionalinterface/FunctionalInterfaceTest.java similarity index 100% rename from core-java-8/src/test/java/com/baeldung/functionalinterface/FunctionalInterfaceTest.java rename to core-java/src/test/java/com/baeldung/functionalinterface/FunctionalInterfaceTest.java index ce878026d4..e07bcc9a8d 100644 --- a/core-java-8/src/test/java/com/baeldung/functionalinterface/FunctionalInterfaceTest.java +++ b/core-java/src/test/java/com/baeldung/functionalinterface/FunctionalInterfaceTest.java @@ -1,5 +1,8 @@ package com.baeldung.functionalinterface; +import com.google.common.util.concurrent.Uninterruptibles; +import org.junit.Test; + import java.util.Arrays; import java.util.HashMap; import java.util.List; @@ -10,9 +13,6 @@ import java.util.function.Supplier; import java.util.stream.Collectors; import java.util.stream.Stream; -import com.google.common.util.concurrent.Uninterruptibles; -import org.junit.Test; - import static org.junit.Assert.*; public class FunctionalInterfaceTest { diff --git a/core-java-8/src/test/java/com/baeldung/functionalinterface/ShortToByteFunction.java b/core-java/src/test/java/com/baeldung/functionalinterface/ShortToByteFunction.java similarity index 100% rename from core-java-8/src/test/java/com/baeldung/functionalinterface/ShortToByteFunction.java rename to core-java/src/test/java/com/baeldung/functionalinterface/ShortToByteFunction.java From 6c3019540589d574f6dd3d7456ad6fd462e1c8b1 Mon Sep 17 00:00:00 2001 From: DOHA Date: Sun, 23 Oct 2016 20:26:51 +0200 Subject: [PATCH 079/215] minor fix --- apache-cxf/cxf-introduction/pom.xml | 63 +------------------ .../cxf/introduction/StudentLiveTest.java | 2 +- apache-cxf/cxf-jaxrs-implementation/pom.xml | 62 ------------------ .../jaxrs/implementation/ServiceLiveTest.java | 2 +- 4 files changed, 3 insertions(+), 126 deletions(-) diff --git a/apache-cxf/cxf-introduction/pom.xml b/apache-cxf/cxf-introduction/pom.xml index 9629dfda1b..0902bd690e 100644 --- a/apache-cxf/cxf-introduction/pom.xml +++ b/apache-cxf/cxf-introduction/pom.xml @@ -45,66 +45,5 @@ ${cxf.version} - - - - live - - - - org.codehaus.cargo - cargo-maven2-plugin - 1.4.19 - - - tomcat8x - embedded - - - - localhost - 8082 - - - - - - start-server - pre-integration-test - - start - - - - stop-server - post-integration-test - - stop - - - - - - - maven-surefire-plugin - ${surefire.version} - - - integration-test - - test - - - - none - - - - - - - - - - + diff --git a/apache-cxf/cxf-introduction/src/test/java/com/baeldung/cxf/introduction/StudentLiveTest.java b/apache-cxf/cxf-introduction/src/test/java/com/baeldung/cxf/introduction/StudentLiveTest.java index 1c50fcb9b6..60fc0a10e7 100644 --- a/apache-cxf/cxf-introduction/src/test/java/com/baeldung/cxf/introduction/StudentLiveTest.java +++ b/apache-cxf/cxf-introduction/src/test/java/com/baeldung/cxf/introduction/StudentLiveTest.java @@ -21,7 +21,7 @@ public class StudentLiveTest { { service = Service.create(SERVICE_NAME); - final String endpointAddress = "http://localhost:8082/cxf-introduction/baeldung"; + final String endpointAddress = "http://localhost:8080/baeldung"; service.addPort(PORT_NAME, SOAPBinding.SOAP11HTTP_BINDING, endpointAddress); } diff --git a/apache-cxf/cxf-jaxrs-implementation/pom.xml b/apache-cxf/cxf-jaxrs-implementation/pom.xml index 24dad05a0f..b3a81aef82 100644 --- a/apache-cxf/cxf-jaxrs-implementation/pom.xml +++ b/apache-cxf/cxf-jaxrs-implementation/pom.xml @@ -52,66 +52,4 @@ ${httpclient.version} - - - - live - - - - org.codehaus.cargo - cargo-maven2-plugin - 1.4.19 - - - tomcat8x - embedded - - - - localhost - 8082 - - - - - - start-server - pre-integration-test - - start - - - - stop-server - post-integration-test - - stop - - - - - - - maven-surefire-plugin - ${surefire.version} - - - integration-test - - test - - - - none - - - - - - - - - - diff --git a/apache-cxf/cxf-jaxrs-implementation/src/test/java/com/baeldung/cxf/jaxrs/implementation/ServiceLiveTest.java b/apache-cxf/cxf-jaxrs-implementation/src/test/java/com/baeldung/cxf/jaxrs/implementation/ServiceLiveTest.java index 692def81f5..29c34ae16b 100644 --- a/apache-cxf/cxf-jaxrs-implementation/src/test/java/com/baeldung/cxf/jaxrs/implementation/ServiceLiveTest.java +++ b/apache-cxf/cxf-jaxrs-implementation/src/test/java/com/baeldung/cxf/jaxrs/implementation/ServiceLiveTest.java @@ -21,7 +21,7 @@ import org.junit.BeforeClass; import org.junit.Test; public class ServiceLiveTest { - private static final String BASE_URL = "http://localhost:8082/baeldung/courses/"; + private static final String BASE_URL = "http://localhost:8080/baeldung/courses/"; private static CloseableHttpClient client; @BeforeClass From 709b24257f36d16321c69c3d8ff21c31fcec8b21 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ambrus=20Adri=C3=A1n-Zolt=C3=A1n?= Date: Sun, 23 Oct 2016 21:41:28 +0300 Subject: [PATCH 080/215] Further simplified the vote method. --- .../org/baeldung/security/MinuteBasedVoter.java | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/spring-security-custom-voter/src/main/java/org/baeldung/security/MinuteBasedVoter.java b/spring-security-custom-voter/src/main/java/org/baeldung/security/MinuteBasedVoter.java index 8d22c52b0d..e0f42aa16e 100644 --- a/spring-security-custom-voter/src/main/java/org/baeldung/security/MinuteBasedVoter.java +++ b/spring-security-custom-voter/src/main/java/org/baeldung/security/MinuteBasedVoter.java @@ -23,16 +23,13 @@ public class MinuteBasedVoter implements AccessDecisionVoter { @Override public int vote(Authentication authentication, Object object, Collection collection) { - List roles = authentication + return authentication .getAuthorities() - .stream().map(GrantedAuthority::getAuthority) - .collect(Collectors.toList()); - - for (String role: roles) { - if ("ROLE_USER".equals(role) && LocalDateTime.now().getMinute() % 2 != 0) { - return ACCESS_DENIED; - } - } - return ACCESS_ABSTAIN; + .stream() + .map(GrantedAuthority::getAuthority) + .filter(r -> "ROLE_USER".equals(r) && LocalDateTime.now().getMinute() % 2 != 0) + .findAny() + .map(s -> ACCESS_DENIED) + .orElseGet(() -> ACCESS_ABSTAIN); } } From fe620ec01ac20a562a79a259ab25fd4f930c0889 Mon Sep 17 00:00:00 2001 From: DOHA Date: Sun, 23 Oct 2016 21:11:03 +0200 Subject: [PATCH 081/215] rename test --- spring-exceptions/pom.xml | 2 +- .../BeanCreationExceptionTestSuite.java | 18 +++++++++--------- ...Cause1BeanCreationExceptionManualTest.java} | 2 +- ...Cause2BeanCreationExceptionManualTest.java} | 2 +- ...Cause3BeanCreationExceptionManualTest.java} | 2 +- ...Cause4BeanCreationExceptionManualTest.java} | 2 +- ...Cause5BeanCreationExceptionManualTest.java} | 2 +- ...Cause6BeanCreationExceptionManualTest.java} | 2 +- ...Cause7BeanCreationExceptionManualTest.java} | 2 +- ...Cause8BeanCreationExceptionManualTest.java} | 2 +- ...Cause9BeanCreationExceptionManualTest.java} | 2 +- ...eanDefinitionStoreExceptionManualTest.java} | 2 +- ...eanDefinitionStoreExceptionManualTest.java} | 2 +- ...eanDefinitionStoreExceptionManualTest.java} | 2 +- ...IntegrityViolationExceptionManualTest.java} | 2 +- ...IntegrityViolationExceptionManualTest.java} | 2 +- ...IntegrityViolationExceptionManualTest.java} | 2 +- ...a => Cause1MappingExceptionManualTest.java} | 2 +- ...a => Cause2MappingExceptionManualTest.java} | 2 +- ...a => Cause3MappingExceptionManualTest.java} | 2 +- ...a => Cause4MappingExceptionManualTest.java} | 2 +- ...tGetJdbcConnectionExceptionManualTest.java} | 2 +- ...a => DataIntegrityExceptionManualTest.java} | 2 +- ...a => DataRetrievalExceptionManualTest.java} | 2 +- ...> DataSourceLookupExceptionManualTest.java} | 2 +- ...validResourceUsageExceptionManualTest.java} | 2 +- ...SuchBeanDefinitionExceptionManualTest.java} | 2 +- ...SuchBeanDefinitionExceptionManualTest.java} | 2 +- ...SuchBeanDefinitionExceptionManualTest.java} | 2 +- ....java => PropertiesWithJavaManualTest.java} | 2 +- ... PropertiesWithMultipleXmlsManualTest.java} | 2 +- ...t.java => PropertiesWithXmlManualTest.java} | 2 +- 32 files changed, 40 insertions(+), 40 deletions(-) rename spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/{Cause1BeanCreationExceptionIntegrationTest.java => Cause1BeanCreationExceptionManualTest.java} (91%) rename spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/{Cause2BeanCreationExceptionIntegrationTest.java => Cause2BeanCreationExceptionManualTest.java} (91%) rename spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/{Cause3BeanCreationExceptionIntegrationTest.java => Cause3BeanCreationExceptionManualTest.java} (91%) rename spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/{Cause4BeanCreationExceptionIntegrationTest.java => Cause4BeanCreationExceptionManualTest.java} (91%) rename spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/{Cause5BeanCreationExceptionIntegrationTest.java => Cause5BeanCreationExceptionManualTest.java} (91%) rename spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/{Cause6BeanCreationExceptionIntegrationTest.java => Cause6BeanCreationExceptionManualTest.java} (91%) rename spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/{Cause7BeanCreationExceptionIntegrationTest.java => Cause7BeanCreationExceptionManualTest.java} (91%) rename spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/{Cause8BeanCreationExceptionIntegrationTest.java => Cause8BeanCreationExceptionManualTest.java} (91%) rename spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/{Cause9BeanCreationExceptionIntegrationTest.java => Cause9BeanCreationExceptionManualTest.java} (91%) rename spring-exceptions/src/test/java/org/baeldung/ex/beandefinitionstoreexception/{Cause1BeanDefinitionStoreExceptionIntegrationTest.java => Cause1BeanDefinitionStoreExceptionManualTest.java} (91%) rename spring-exceptions/src/test/java/org/baeldung/ex/beandefinitionstoreexception/{Cause2BeanDefinitionStoreExceptionIntegrationTest.java => Cause2BeanDefinitionStoreExceptionManualTest.java} (91%) rename spring-exceptions/src/test/java/org/baeldung/ex/beandefinitionstoreexception/{Cause3BeanDefinitionStoreExceptionIntegrationTest.java => Cause3BeanDefinitionStoreExceptionManualTest.java} (91%) rename spring-exceptions/src/test/java/org/baeldung/ex/dataintegrityviolationexception/{Cause1DataIntegrityViolationExceptionIntegrationTest.java => Cause1DataIntegrityViolationExceptionManualTest.java} (96%) rename spring-exceptions/src/test/java/org/baeldung/ex/dataintegrityviolationexception/{Cause2DataIntegrityViolationExceptionIntegrationTest.java => Cause2DataIntegrityViolationExceptionManualTest.java} (93%) rename spring-exceptions/src/test/java/org/baeldung/ex/dataintegrityviolationexception/{Cause3DataIntegrityViolationExceptionIntegrationTest.java => Cause3DataIntegrityViolationExceptionManualTest.java} (94%) rename spring-exceptions/src/test/java/org/baeldung/ex/mappingexception/{Cause1MappingExceptionIntegrationTest.java => Cause1MappingExceptionManualTest.java} (95%) rename spring-exceptions/src/test/java/org/baeldung/ex/mappingexception/{Cause2MappingExceptionIntegrationTest.java => Cause2MappingExceptionManualTest.java} (95%) rename spring-exceptions/src/test/java/org/baeldung/ex/mappingexception/{Cause3MappingExceptionIntegrationTest.java => Cause3MappingExceptionManualTest.java} (95%) rename spring-exceptions/src/test/java/org/baeldung/ex/mappingexception/{Cause4MappingExceptionIntegrationTest.java => Cause4MappingExceptionManualTest.java} (96%) rename spring-exceptions/src/test/java/org/baeldung/ex/nontransientdataaccessexception/{CannotGetJdbcConnectionExceptionIntegrationTest.java => CannotGetJdbcConnectionExceptionManualTest.java} (95%) rename spring-exceptions/src/test/java/org/baeldung/ex/nontransientdataaccessexception/{DataIntegrityExceptionIntegrationTest.java => DataIntegrityExceptionManualTest.java} (96%) rename spring-exceptions/src/test/java/org/baeldung/ex/nontransientdataaccessexception/{DataRetrievalExceptionIntegrationTest.java => DataRetrievalExceptionManualTest.java} (97%) rename spring-exceptions/src/test/java/org/baeldung/ex/nontransientdataaccessexception/{DataSourceLookupExceptionIntegrationTest.java => DataSourceLookupExceptionManualTest.java} (95%) rename spring-exceptions/src/test/java/org/baeldung/ex/nontransientdataaccessexception/{InvalidResourceUsageExceptionIntegrationTest.java => InvalidResourceUsageExceptionManualTest.java} (96%) rename spring-exceptions/src/test/java/org/baeldung/ex/nosuchbeandefinitionexception/{Cause1NoSuchBeanDefinitionExceptionIntegrationTest.java => Cause1NoSuchBeanDefinitionExceptionManualTest.java} (93%) rename spring-exceptions/src/test/java/org/baeldung/ex/nosuchbeandefinitionexception/{Cause2NoSuchBeanDefinitionExceptionIntegrationTest.java => Cause2NoSuchBeanDefinitionExceptionManualTest.java} (91%) rename spring-exceptions/src/test/java/org/baeldung/ex/nosuchbeandefinitionexception/{Cause3NoSuchBeanDefinitionExceptionIntegrationTest.java => Cause3NoSuchBeanDefinitionExceptionManualTest.java} (91%) rename spring-exceptions/src/test/java/org/baeldung/properties/core/{PropertiesWithJavaIntegrationTest.java => PropertiesWithJavaManualTest.java} (95%) rename spring-exceptions/src/test/java/org/baeldung/properties/core/{PropertiesWithMultipleXmlsIntegrationTest.java => PropertiesWithMultipleXmlsManualTest.java} (95%) rename spring-exceptions/src/test/java/org/baeldung/properties/core/{PropertiesWithXmlIntegrationTest.java => PropertiesWithXmlManualTest.java} (95%) diff --git a/spring-exceptions/pom.xml b/spring-exceptions/pom.xml index 12b7e5de79..6994a518fe 100644 --- a/spring-exceptions/pom.xml +++ b/spring-exceptions/pom.xml @@ -194,7 +194,7 @@ ${maven-surefire-plugin.version} - **/*IntegrationTest.java + **/*ManualTest.java diff --git a/spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/BeanCreationExceptionTestSuite.java b/spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/BeanCreationExceptionTestSuite.java index f88138fec2..9597c09568 100644 --- a/spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/BeanCreationExceptionTestSuite.java +++ b/spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/BeanCreationExceptionTestSuite.java @@ -5,15 +5,15 @@ import org.junit.runners.Suite; @RunWith(Suite.class) @Suite.SuiteClasses({ // @formatter:off - Cause1BeanCreationExceptionIntegrationTest.class - ,Cause2BeanCreationExceptionIntegrationTest.class - ,Cause3BeanCreationExceptionIntegrationTest.class - ,Cause4BeanCreationExceptionIntegrationTest.class - ,Cause5BeanCreationExceptionIntegrationTest.class - ,Cause6BeanCreationExceptionIntegrationTest.class - ,Cause7BeanCreationExceptionIntegrationTest.class - ,Cause8BeanCreationExceptionIntegrationTest.class - ,Cause9BeanCreationExceptionIntegrationTest.class + Cause1BeanCreationExceptionManualTest.class + ,Cause2BeanCreationExceptionManualTest.class + ,Cause3BeanCreationExceptionManualTest.class + ,Cause4BeanCreationExceptionManualTest.class + ,Cause5BeanCreationExceptionManualTest.class + ,Cause6BeanCreationExceptionManualTest.class + ,Cause7BeanCreationExceptionManualTest.class + ,Cause8BeanCreationExceptionManualTest.class + ,Cause9BeanCreationExceptionManualTest.class }) // @formatter:on public class BeanCreationExceptionTestSuite { // diff --git a/spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause1BeanCreationExceptionIntegrationTest.java b/spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause1BeanCreationExceptionManualTest.java similarity index 91% rename from spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause1BeanCreationExceptionIntegrationTest.java rename to spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause1BeanCreationExceptionManualTest.java index 56d916e25d..350347bb19 100644 --- a/spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause1BeanCreationExceptionIntegrationTest.java +++ b/spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause1BeanCreationExceptionManualTest.java @@ -9,7 +9,7 @@ import org.springframework.test.context.support.AnnotationConfigContextLoader; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = { Cause1ContextWithJavaConfig.class }, loader = AnnotationConfigContextLoader.class) -public class Cause1BeanCreationExceptionIntegrationTest { +public class Cause1BeanCreationExceptionManualTest { @Test public final void givenContextIsInitialized_thenNoException() { diff --git a/spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause2BeanCreationExceptionIntegrationTest.java b/spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause2BeanCreationExceptionManualTest.java similarity index 91% rename from spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause2BeanCreationExceptionIntegrationTest.java rename to spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause2BeanCreationExceptionManualTest.java index 968e7312de..c2b9561848 100644 --- a/spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause2BeanCreationExceptionIntegrationTest.java +++ b/spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause2BeanCreationExceptionManualTest.java @@ -9,7 +9,7 @@ import org.springframework.test.context.support.AnnotationConfigContextLoader; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = { Cause2ContextWithJavaConfig.class }, loader = AnnotationConfigContextLoader.class) -public class Cause2BeanCreationExceptionIntegrationTest { +public class Cause2BeanCreationExceptionManualTest { @Test public final void givenContextIsInitialized_thenNoException() { diff --git a/spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause3BeanCreationExceptionIntegrationTest.java b/spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause3BeanCreationExceptionManualTest.java similarity index 91% rename from spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause3BeanCreationExceptionIntegrationTest.java rename to spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause3BeanCreationExceptionManualTest.java index 4730d59334..7b9b49bf58 100644 --- a/spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause3BeanCreationExceptionIntegrationTest.java +++ b/spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause3BeanCreationExceptionManualTest.java @@ -9,7 +9,7 @@ import org.springframework.test.context.support.AnnotationConfigContextLoader; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = { Cause3ContextWithJavaConfig.class }, loader = AnnotationConfigContextLoader.class) -public class Cause3BeanCreationExceptionIntegrationTest { +public class Cause3BeanCreationExceptionManualTest { @Test public final void givenContextIsInitialized_thenNoException() { diff --git a/spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause4BeanCreationExceptionIntegrationTest.java b/spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause4BeanCreationExceptionManualTest.java similarity index 91% rename from spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause4BeanCreationExceptionIntegrationTest.java rename to spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause4BeanCreationExceptionManualTest.java index b5108c1ab4..3a6e30476c 100644 --- a/spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause4BeanCreationExceptionIntegrationTest.java +++ b/spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause4BeanCreationExceptionManualTest.java @@ -9,7 +9,7 @@ import org.springframework.test.context.support.AnnotationConfigContextLoader; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = { Cause4ContextWithJavaConfig.class }, loader = AnnotationConfigContextLoader.class) -public class Cause4BeanCreationExceptionIntegrationTest { +public class Cause4BeanCreationExceptionManualTest { @Test public final void givenContextIsInitialized_thenNoException() { diff --git a/spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause5BeanCreationExceptionIntegrationTest.java b/spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause5BeanCreationExceptionManualTest.java similarity index 91% rename from spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause5BeanCreationExceptionIntegrationTest.java rename to spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause5BeanCreationExceptionManualTest.java index 9a08ec45a1..e69a323f8d 100644 --- a/spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause5BeanCreationExceptionIntegrationTest.java +++ b/spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause5BeanCreationExceptionManualTest.java @@ -9,7 +9,7 @@ import org.springframework.test.context.support.AnnotationConfigContextLoader; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = { Cause5ContextWithJavaConfig.class }, loader = AnnotationConfigContextLoader.class) -public class Cause5BeanCreationExceptionIntegrationTest { +public class Cause5BeanCreationExceptionManualTest { @Test public final void givenContextIsInitialized_thenNoException() { diff --git a/spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause6BeanCreationExceptionIntegrationTest.java b/spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause6BeanCreationExceptionManualTest.java similarity index 91% rename from spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause6BeanCreationExceptionIntegrationTest.java rename to spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause6BeanCreationExceptionManualTest.java index 423a0a98a9..30fbd47635 100644 --- a/spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause6BeanCreationExceptionIntegrationTest.java +++ b/spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause6BeanCreationExceptionManualTest.java @@ -9,7 +9,7 @@ import org.springframework.test.context.support.AnnotationConfigContextLoader; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = { Cause6ContextWithJavaConfig.class }, loader = AnnotationConfigContextLoader.class) -public class Cause6BeanCreationExceptionIntegrationTest { +public class Cause6BeanCreationExceptionManualTest { @Test public final void givenContextIsInitialized_thenNoException() { diff --git a/spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause7BeanCreationExceptionIntegrationTest.java b/spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause7BeanCreationExceptionManualTest.java similarity index 91% rename from spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause7BeanCreationExceptionIntegrationTest.java rename to spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause7BeanCreationExceptionManualTest.java index a61e598b41..d832bddf72 100644 --- a/spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause7BeanCreationExceptionIntegrationTest.java +++ b/spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause7BeanCreationExceptionManualTest.java @@ -9,7 +9,7 @@ import org.springframework.test.context.support.AnnotationConfigContextLoader; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = { Cause7ContextWithJavaConfig.class }, loader = AnnotationConfigContextLoader.class) -public class Cause7BeanCreationExceptionIntegrationTest { +public class Cause7BeanCreationExceptionManualTest { @Test public final void givenContextIsInitialized_thenNoException() { diff --git a/spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause8BeanCreationExceptionIntegrationTest.java b/spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause8BeanCreationExceptionManualTest.java similarity index 91% rename from spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause8BeanCreationExceptionIntegrationTest.java rename to spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause8BeanCreationExceptionManualTest.java index 8550f307d5..a9f32b6d1a 100644 --- a/spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause8BeanCreationExceptionIntegrationTest.java +++ b/spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause8BeanCreationExceptionManualTest.java @@ -9,7 +9,7 @@ import org.springframework.test.context.support.AnnotationConfigContextLoader; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = { Cause8ContextWithJavaConfig.class }, loader = AnnotationConfigContextLoader.class) -public class Cause8BeanCreationExceptionIntegrationTest { +public class Cause8BeanCreationExceptionManualTest { @Test public final void givenContextIsInitialized_thenNoException() { diff --git a/spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause9BeanCreationExceptionIntegrationTest.java b/spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause9BeanCreationExceptionManualTest.java similarity index 91% rename from spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause9BeanCreationExceptionIntegrationTest.java rename to spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause9BeanCreationExceptionManualTest.java index ad1ba5f2f1..6af5fb3712 100644 --- a/spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause9BeanCreationExceptionIntegrationTest.java +++ b/spring-exceptions/src/test/java/org/baeldung/ex/beancreationexception/Cause9BeanCreationExceptionManualTest.java @@ -9,7 +9,7 @@ import org.springframework.test.context.support.AnnotationConfigContextLoader; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = { Cause9ContextWithJavaConfig.class }, loader = AnnotationConfigContextLoader.class) -public class Cause9BeanCreationExceptionIntegrationTest { +public class Cause9BeanCreationExceptionManualTest { @Test public final void givenContextIsInitialized_thenNoException() { diff --git a/spring-exceptions/src/test/java/org/baeldung/ex/beandefinitionstoreexception/Cause1BeanDefinitionStoreExceptionIntegrationTest.java b/spring-exceptions/src/test/java/org/baeldung/ex/beandefinitionstoreexception/Cause1BeanDefinitionStoreExceptionManualTest.java similarity index 91% rename from spring-exceptions/src/test/java/org/baeldung/ex/beandefinitionstoreexception/Cause1BeanDefinitionStoreExceptionIntegrationTest.java rename to spring-exceptions/src/test/java/org/baeldung/ex/beandefinitionstoreexception/Cause1BeanDefinitionStoreExceptionManualTest.java index 8de51a4bf0..1580546fa7 100644 --- a/spring-exceptions/src/test/java/org/baeldung/ex/beandefinitionstoreexception/Cause1BeanDefinitionStoreExceptionIntegrationTest.java +++ b/spring-exceptions/src/test/java/org/baeldung/ex/beandefinitionstoreexception/Cause1BeanDefinitionStoreExceptionManualTest.java @@ -9,7 +9,7 @@ import org.springframework.test.context.support.AnnotationConfigContextLoader; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = { Cause1ContextWithJavaConfig.class }, loader = AnnotationConfigContextLoader.class) -public class Cause1BeanDefinitionStoreExceptionIntegrationTest { +public class Cause1BeanDefinitionStoreExceptionManualTest { @Test public final void givenContextIsInitialized_thenNoException() { diff --git a/spring-exceptions/src/test/java/org/baeldung/ex/beandefinitionstoreexception/Cause2BeanDefinitionStoreExceptionIntegrationTest.java b/spring-exceptions/src/test/java/org/baeldung/ex/beandefinitionstoreexception/Cause2BeanDefinitionStoreExceptionManualTest.java similarity index 91% rename from spring-exceptions/src/test/java/org/baeldung/ex/beandefinitionstoreexception/Cause2BeanDefinitionStoreExceptionIntegrationTest.java rename to spring-exceptions/src/test/java/org/baeldung/ex/beandefinitionstoreexception/Cause2BeanDefinitionStoreExceptionManualTest.java index 8dbc50cda5..ce0db694dc 100644 --- a/spring-exceptions/src/test/java/org/baeldung/ex/beandefinitionstoreexception/Cause2BeanDefinitionStoreExceptionIntegrationTest.java +++ b/spring-exceptions/src/test/java/org/baeldung/ex/beandefinitionstoreexception/Cause2BeanDefinitionStoreExceptionManualTest.java @@ -9,7 +9,7 @@ import org.springframework.test.context.support.AnnotationConfigContextLoader; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = { Cause2ContextWithJavaConfig.class }, loader = AnnotationConfigContextLoader.class) -public class Cause2BeanDefinitionStoreExceptionIntegrationTest { +public class Cause2BeanDefinitionStoreExceptionManualTest { @Test public final void givenContextIsInitialized_thenNoException() { diff --git a/spring-exceptions/src/test/java/org/baeldung/ex/beandefinitionstoreexception/Cause3BeanDefinitionStoreExceptionIntegrationTest.java b/spring-exceptions/src/test/java/org/baeldung/ex/beandefinitionstoreexception/Cause3BeanDefinitionStoreExceptionManualTest.java similarity index 91% rename from spring-exceptions/src/test/java/org/baeldung/ex/beandefinitionstoreexception/Cause3BeanDefinitionStoreExceptionIntegrationTest.java rename to spring-exceptions/src/test/java/org/baeldung/ex/beandefinitionstoreexception/Cause3BeanDefinitionStoreExceptionManualTest.java index 370b67e2fa..c090ac7b5f 100644 --- a/spring-exceptions/src/test/java/org/baeldung/ex/beandefinitionstoreexception/Cause3BeanDefinitionStoreExceptionIntegrationTest.java +++ b/spring-exceptions/src/test/java/org/baeldung/ex/beandefinitionstoreexception/Cause3BeanDefinitionStoreExceptionManualTest.java @@ -9,7 +9,7 @@ import org.springframework.test.context.support.AnnotationConfigContextLoader; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = { Cause3ContextWithJavaConfig.class }, loader = AnnotationConfigContextLoader.class) -public class Cause3BeanDefinitionStoreExceptionIntegrationTest { +public class Cause3BeanDefinitionStoreExceptionManualTest { @Test public final void givenContextIsInitialized_thenNoException() { diff --git a/spring-exceptions/src/test/java/org/baeldung/ex/dataintegrityviolationexception/Cause1DataIntegrityViolationExceptionIntegrationTest.java b/spring-exceptions/src/test/java/org/baeldung/ex/dataintegrityviolationexception/Cause1DataIntegrityViolationExceptionManualTest.java similarity index 96% rename from spring-exceptions/src/test/java/org/baeldung/ex/dataintegrityviolationexception/Cause1DataIntegrityViolationExceptionIntegrationTest.java rename to spring-exceptions/src/test/java/org/baeldung/ex/dataintegrityviolationexception/Cause1DataIntegrityViolationExceptionManualTest.java index 0f46481116..056e052359 100644 --- a/spring-exceptions/src/test/java/org/baeldung/ex/dataintegrityviolationexception/Cause1DataIntegrityViolationExceptionIntegrationTest.java +++ b/spring-exceptions/src/test/java/org/baeldung/ex/dataintegrityviolationexception/Cause1DataIntegrityViolationExceptionManualTest.java @@ -15,7 +15,7 @@ import org.springframework.test.context.support.AnnotationConfigContextLoader; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = { Cause1DataContextWithJavaConfig.class }, loader = AnnotationConfigContextLoader.class) -public class Cause1DataIntegrityViolationExceptionIntegrationTest { +public class Cause1DataIntegrityViolationExceptionManualTest { @Autowired private IParentService service; diff --git a/spring-exceptions/src/test/java/org/baeldung/ex/dataintegrityviolationexception/Cause2DataIntegrityViolationExceptionIntegrationTest.java b/spring-exceptions/src/test/java/org/baeldung/ex/dataintegrityviolationexception/Cause2DataIntegrityViolationExceptionManualTest.java similarity index 93% rename from spring-exceptions/src/test/java/org/baeldung/ex/dataintegrityviolationexception/Cause2DataIntegrityViolationExceptionIntegrationTest.java rename to spring-exceptions/src/test/java/org/baeldung/ex/dataintegrityviolationexception/Cause2DataIntegrityViolationExceptionManualTest.java index 0ea0dd2f28..e36a027105 100644 --- a/spring-exceptions/src/test/java/org/baeldung/ex/dataintegrityviolationexception/Cause2DataIntegrityViolationExceptionIntegrationTest.java +++ b/spring-exceptions/src/test/java/org/baeldung/ex/dataintegrityviolationexception/Cause2DataIntegrityViolationExceptionManualTest.java @@ -13,7 +13,7 @@ import org.springframework.test.context.support.AnnotationConfigContextLoader; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = { Cause2DataContextWithJavaConfig.class }, loader = AnnotationConfigContextLoader.class) -public class Cause2DataIntegrityViolationExceptionIntegrationTest { +public class Cause2DataIntegrityViolationExceptionManualTest { @Autowired private IFooService fooService; diff --git a/spring-exceptions/src/test/java/org/baeldung/ex/dataintegrityviolationexception/Cause3DataIntegrityViolationExceptionIntegrationTest.java b/spring-exceptions/src/test/java/org/baeldung/ex/dataintegrityviolationexception/Cause3DataIntegrityViolationExceptionManualTest.java similarity index 94% rename from spring-exceptions/src/test/java/org/baeldung/ex/dataintegrityviolationexception/Cause3DataIntegrityViolationExceptionIntegrationTest.java rename to spring-exceptions/src/test/java/org/baeldung/ex/dataintegrityviolationexception/Cause3DataIntegrityViolationExceptionManualTest.java index 75d5793910..4194e1c9fe 100644 --- a/spring-exceptions/src/test/java/org/baeldung/ex/dataintegrityviolationexception/Cause3DataIntegrityViolationExceptionIntegrationTest.java +++ b/spring-exceptions/src/test/java/org/baeldung/ex/dataintegrityviolationexception/Cause3DataIntegrityViolationExceptionManualTest.java @@ -15,7 +15,7 @@ import org.springframework.test.context.support.AnnotationConfigContextLoader; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = { Cause3DataContextWithJavaConfig.class }, loader = AnnotationConfigContextLoader.class) -public class Cause3DataIntegrityViolationExceptionIntegrationTest { +public class Cause3DataIntegrityViolationExceptionManualTest { @Autowired private IFooService fooService; diff --git a/spring-exceptions/src/test/java/org/baeldung/ex/mappingexception/Cause1MappingExceptionIntegrationTest.java b/spring-exceptions/src/test/java/org/baeldung/ex/mappingexception/Cause1MappingExceptionManualTest.java similarity index 95% rename from spring-exceptions/src/test/java/org/baeldung/ex/mappingexception/Cause1MappingExceptionIntegrationTest.java rename to spring-exceptions/src/test/java/org/baeldung/ex/mappingexception/Cause1MappingExceptionManualTest.java index 671b0a473e..7ba9618a77 100644 --- a/spring-exceptions/src/test/java/org/baeldung/ex/mappingexception/Cause1MappingExceptionIntegrationTest.java +++ b/spring-exceptions/src/test/java/org/baeldung/ex/mappingexception/Cause1MappingExceptionManualTest.java @@ -14,7 +14,7 @@ import org.springframework.transaction.annotation.Transactional; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = { Cause1PersistenceConfig.class }, loader = AnnotationConfigContextLoader.class) -public class Cause1MappingExceptionIntegrationTest { +public class Cause1MappingExceptionManualTest { @Autowired private SessionFactory sessionFactory; diff --git a/spring-exceptions/src/test/java/org/baeldung/ex/mappingexception/Cause2MappingExceptionIntegrationTest.java b/spring-exceptions/src/test/java/org/baeldung/ex/mappingexception/Cause2MappingExceptionManualTest.java similarity index 95% rename from spring-exceptions/src/test/java/org/baeldung/ex/mappingexception/Cause2MappingExceptionIntegrationTest.java rename to spring-exceptions/src/test/java/org/baeldung/ex/mappingexception/Cause2MappingExceptionManualTest.java index eae5ebd9a2..66923fc6a9 100644 --- a/spring-exceptions/src/test/java/org/baeldung/ex/mappingexception/Cause2MappingExceptionIntegrationTest.java +++ b/spring-exceptions/src/test/java/org/baeldung/ex/mappingexception/Cause2MappingExceptionManualTest.java @@ -13,7 +13,7 @@ import org.springframework.transaction.annotation.Transactional; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = { Cause2PersistenceConfig.class }, loader = AnnotationConfigContextLoader.class) -public class Cause2MappingExceptionIntegrationTest { +public class Cause2MappingExceptionManualTest { @Autowired private SessionFactory sessionFactory; diff --git a/spring-exceptions/src/test/java/org/baeldung/ex/mappingexception/Cause3MappingExceptionIntegrationTest.java b/spring-exceptions/src/test/java/org/baeldung/ex/mappingexception/Cause3MappingExceptionManualTest.java similarity index 95% rename from spring-exceptions/src/test/java/org/baeldung/ex/mappingexception/Cause3MappingExceptionIntegrationTest.java rename to spring-exceptions/src/test/java/org/baeldung/ex/mappingexception/Cause3MappingExceptionManualTest.java index d6abe7db4f..e6888d1685 100644 --- a/spring-exceptions/src/test/java/org/baeldung/ex/mappingexception/Cause3MappingExceptionIntegrationTest.java +++ b/spring-exceptions/src/test/java/org/baeldung/ex/mappingexception/Cause3MappingExceptionManualTest.java @@ -14,7 +14,7 @@ import org.springframework.transaction.annotation.Transactional; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = { Cause3PersistenceConfig.class }, loader = AnnotationConfigContextLoader.class) -public class Cause3MappingExceptionIntegrationTest { +public class Cause3MappingExceptionManualTest { @Autowired private SessionFactory sessionFactory; diff --git a/spring-exceptions/src/test/java/org/baeldung/ex/mappingexception/Cause4MappingExceptionIntegrationTest.java b/spring-exceptions/src/test/java/org/baeldung/ex/mappingexception/Cause4MappingExceptionManualTest.java similarity index 96% rename from spring-exceptions/src/test/java/org/baeldung/ex/mappingexception/Cause4MappingExceptionIntegrationTest.java rename to spring-exceptions/src/test/java/org/baeldung/ex/mappingexception/Cause4MappingExceptionManualTest.java index 864da76e4b..760d082f54 100644 --- a/spring-exceptions/src/test/java/org/baeldung/ex/mappingexception/Cause4MappingExceptionIntegrationTest.java +++ b/spring-exceptions/src/test/java/org/baeldung/ex/mappingexception/Cause4MappingExceptionManualTest.java @@ -12,7 +12,7 @@ import org.hibernate.service.ServiceRegistry; import org.hibernate.service.ServiceRegistryBuilder; import org.junit.Test; -public class Cause4MappingExceptionIntegrationTest { +public class Cause4MappingExceptionManualTest { // tests diff --git a/spring-exceptions/src/test/java/org/baeldung/ex/nontransientdataaccessexception/CannotGetJdbcConnectionExceptionIntegrationTest.java b/spring-exceptions/src/test/java/org/baeldung/ex/nontransientdataaccessexception/CannotGetJdbcConnectionExceptionManualTest.java similarity index 95% rename from spring-exceptions/src/test/java/org/baeldung/ex/nontransientdataaccessexception/CannotGetJdbcConnectionExceptionIntegrationTest.java rename to spring-exceptions/src/test/java/org/baeldung/ex/nontransientdataaccessexception/CannotGetJdbcConnectionExceptionManualTest.java index 84038e4dcf..b7ed103394 100644 --- a/spring-exceptions/src/test/java/org/baeldung/ex/nontransientdataaccessexception/CannotGetJdbcConnectionExceptionIntegrationTest.java +++ b/spring-exceptions/src/test/java/org/baeldung/ex/nontransientdataaccessexception/CannotGetJdbcConnectionExceptionManualTest.java @@ -18,7 +18,7 @@ import org.springframework.test.context.support.AnnotationConfigContextLoader; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = { Cause5NonTransientConfig.class }, loader = AnnotationConfigContextLoader.class) -public class CannotGetJdbcConnectionExceptionIntegrationTest { +public class CannotGetJdbcConnectionExceptionManualTest { @Autowired private DataSource restDataSource; diff --git a/spring-exceptions/src/test/java/org/baeldung/ex/nontransientdataaccessexception/DataIntegrityExceptionIntegrationTest.java b/spring-exceptions/src/test/java/org/baeldung/ex/nontransientdataaccessexception/DataIntegrityExceptionManualTest.java similarity index 96% rename from spring-exceptions/src/test/java/org/baeldung/ex/nontransientdataaccessexception/DataIntegrityExceptionIntegrationTest.java rename to spring-exceptions/src/test/java/org/baeldung/ex/nontransientdataaccessexception/DataIntegrityExceptionManualTest.java index e62a455dd4..b98a210125 100644 --- a/spring-exceptions/src/test/java/org/baeldung/ex/nontransientdataaccessexception/DataIntegrityExceptionIntegrationTest.java +++ b/spring-exceptions/src/test/java/org/baeldung/ex/nontransientdataaccessexception/DataIntegrityExceptionManualTest.java @@ -17,7 +17,7 @@ import org.springframework.test.context.support.AnnotationConfigContextLoader; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = { Cause1NonTransientConfig.class }, loader = AnnotationConfigContextLoader.class) -public class DataIntegrityExceptionIntegrationTest { +public class DataIntegrityExceptionManualTest { @Autowired private IFooService fooService; diff --git a/spring-exceptions/src/test/java/org/baeldung/ex/nontransientdataaccessexception/DataRetrievalExceptionIntegrationTest.java b/spring-exceptions/src/test/java/org/baeldung/ex/nontransientdataaccessexception/DataRetrievalExceptionManualTest.java similarity index 97% rename from spring-exceptions/src/test/java/org/baeldung/ex/nontransientdataaccessexception/DataRetrievalExceptionIntegrationTest.java rename to spring-exceptions/src/test/java/org/baeldung/ex/nontransientdataaccessexception/DataRetrievalExceptionManualTest.java index 8a7c237708..122278580f 100644 --- a/spring-exceptions/src/test/java/org/baeldung/ex/nontransientdataaccessexception/DataRetrievalExceptionIntegrationTest.java +++ b/spring-exceptions/src/test/java/org/baeldung/ex/nontransientdataaccessexception/DataRetrievalExceptionManualTest.java @@ -17,7 +17,7 @@ import org.springframework.test.context.support.AnnotationConfigContextLoader; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = { Cause1NonTransientConfig.class }, loader = AnnotationConfigContextLoader.class) -public class DataRetrievalExceptionIntegrationTest { +public class DataRetrievalExceptionManualTest { @Autowired private DataSource restDataSource; diff --git a/spring-exceptions/src/test/java/org/baeldung/ex/nontransientdataaccessexception/DataSourceLookupExceptionIntegrationTest.java b/spring-exceptions/src/test/java/org/baeldung/ex/nontransientdataaccessexception/DataSourceLookupExceptionManualTest.java similarity index 95% rename from spring-exceptions/src/test/java/org/baeldung/ex/nontransientdataaccessexception/DataSourceLookupExceptionIntegrationTest.java rename to spring-exceptions/src/test/java/org/baeldung/ex/nontransientdataaccessexception/DataSourceLookupExceptionManualTest.java index 161bf3252b..4da5f94098 100644 --- a/spring-exceptions/src/test/java/org/baeldung/ex/nontransientdataaccessexception/DataSourceLookupExceptionIntegrationTest.java +++ b/spring-exceptions/src/test/java/org/baeldung/ex/nontransientdataaccessexception/DataSourceLookupExceptionManualTest.java @@ -13,7 +13,7 @@ import org.springframework.test.context.support.AnnotationConfigContextLoader; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = { Cause4NonTransientConfig.class }, loader = AnnotationConfigContextLoader.class) -public class DataSourceLookupExceptionIntegrationTest { +public class DataSourceLookupExceptionManualTest { @Test(expected = DataSourceLookupFailureException.class) public void whenLookupNonExistentDataSource_thenDataSourceLookupFailureException() { diff --git a/spring-exceptions/src/test/java/org/baeldung/ex/nontransientdataaccessexception/InvalidResourceUsageExceptionIntegrationTest.java b/spring-exceptions/src/test/java/org/baeldung/ex/nontransientdataaccessexception/InvalidResourceUsageExceptionManualTest.java similarity index 96% rename from spring-exceptions/src/test/java/org/baeldung/ex/nontransientdataaccessexception/InvalidResourceUsageExceptionIntegrationTest.java rename to spring-exceptions/src/test/java/org/baeldung/ex/nontransientdataaccessexception/InvalidResourceUsageExceptionManualTest.java index 316efba0b9..fc420acfe9 100644 --- a/spring-exceptions/src/test/java/org/baeldung/ex/nontransientdataaccessexception/InvalidResourceUsageExceptionIntegrationTest.java +++ b/spring-exceptions/src/test/java/org/baeldung/ex/nontransientdataaccessexception/InvalidResourceUsageExceptionManualTest.java @@ -16,7 +16,7 @@ import javax.sql.DataSource; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = { Cause1NonTransientConfig.class }, loader = AnnotationConfigContextLoader.class) -public class InvalidResourceUsageExceptionIntegrationTest { +public class InvalidResourceUsageExceptionManualTest { @Autowired private IFooService fooService; diff --git a/spring-exceptions/src/test/java/org/baeldung/ex/nosuchbeandefinitionexception/Cause1NoSuchBeanDefinitionExceptionIntegrationTest.java b/spring-exceptions/src/test/java/org/baeldung/ex/nosuchbeandefinitionexception/Cause1NoSuchBeanDefinitionExceptionManualTest.java similarity index 93% rename from spring-exceptions/src/test/java/org/baeldung/ex/nosuchbeandefinitionexception/Cause1NoSuchBeanDefinitionExceptionIntegrationTest.java rename to spring-exceptions/src/test/java/org/baeldung/ex/nosuchbeandefinitionexception/Cause1NoSuchBeanDefinitionExceptionManualTest.java index 1a9711b2d6..45ffdf9096 100644 --- a/spring-exceptions/src/test/java/org/baeldung/ex/nosuchbeandefinitionexception/Cause1NoSuchBeanDefinitionExceptionIntegrationTest.java +++ b/spring-exceptions/src/test/java/org/baeldung/ex/nosuchbeandefinitionexception/Cause1NoSuchBeanDefinitionExceptionManualTest.java @@ -15,7 +15,7 @@ import org.springframework.test.context.support.AnnotationConfigContextLoader; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = { Cause1ContextWithJavaConfig.class }, loader = AnnotationConfigContextLoader.class) -public class Cause1NoSuchBeanDefinitionExceptionIntegrationTest { +public class Cause1NoSuchBeanDefinitionExceptionManualTest { @Test public final void givenContextIsInitialized_thenNoException() { diff --git a/spring-exceptions/src/test/java/org/baeldung/ex/nosuchbeandefinitionexception/Cause2NoSuchBeanDefinitionExceptionIntegrationTest.java b/spring-exceptions/src/test/java/org/baeldung/ex/nosuchbeandefinitionexception/Cause2NoSuchBeanDefinitionExceptionManualTest.java similarity index 91% rename from spring-exceptions/src/test/java/org/baeldung/ex/nosuchbeandefinitionexception/Cause2NoSuchBeanDefinitionExceptionIntegrationTest.java rename to spring-exceptions/src/test/java/org/baeldung/ex/nosuchbeandefinitionexception/Cause2NoSuchBeanDefinitionExceptionManualTest.java index 90d7317f44..09ed2b4435 100644 --- a/spring-exceptions/src/test/java/org/baeldung/ex/nosuchbeandefinitionexception/Cause2NoSuchBeanDefinitionExceptionIntegrationTest.java +++ b/spring-exceptions/src/test/java/org/baeldung/ex/nosuchbeandefinitionexception/Cause2NoSuchBeanDefinitionExceptionManualTest.java @@ -9,7 +9,7 @@ import org.springframework.test.context.support.AnnotationConfigContextLoader; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = { Cause2ContextWithJavaConfig.class }, loader = AnnotationConfigContextLoader.class) -public class Cause2NoSuchBeanDefinitionExceptionIntegrationTest { +public class Cause2NoSuchBeanDefinitionExceptionManualTest { @Test public final void givenContextIsInitialized_thenNoException() { diff --git a/spring-exceptions/src/test/java/org/baeldung/ex/nosuchbeandefinitionexception/Cause3NoSuchBeanDefinitionExceptionIntegrationTest.java b/spring-exceptions/src/test/java/org/baeldung/ex/nosuchbeandefinitionexception/Cause3NoSuchBeanDefinitionExceptionManualTest.java similarity index 91% rename from spring-exceptions/src/test/java/org/baeldung/ex/nosuchbeandefinitionexception/Cause3NoSuchBeanDefinitionExceptionIntegrationTest.java rename to spring-exceptions/src/test/java/org/baeldung/ex/nosuchbeandefinitionexception/Cause3NoSuchBeanDefinitionExceptionManualTest.java index 0e2123b7ff..7dc016a568 100644 --- a/spring-exceptions/src/test/java/org/baeldung/ex/nosuchbeandefinitionexception/Cause3NoSuchBeanDefinitionExceptionIntegrationTest.java +++ b/spring-exceptions/src/test/java/org/baeldung/ex/nosuchbeandefinitionexception/Cause3NoSuchBeanDefinitionExceptionManualTest.java @@ -9,7 +9,7 @@ import org.springframework.test.context.support.AnnotationConfigContextLoader; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = { Cause3ContextWithJavaConfig.class }, loader = AnnotationConfigContextLoader.class) -public class Cause3NoSuchBeanDefinitionExceptionIntegrationTest { +public class Cause3NoSuchBeanDefinitionExceptionManualTest { @Test public final void givenContextIsInitialized_thenNoException() { diff --git a/spring-exceptions/src/test/java/org/baeldung/properties/core/PropertiesWithJavaIntegrationTest.java b/spring-exceptions/src/test/java/org/baeldung/properties/core/PropertiesWithJavaManualTest.java similarity index 95% rename from spring-exceptions/src/test/java/org/baeldung/properties/core/PropertiesWithJavaIntegrationTest.java rename to spring-exceptions/src/test/java/org/baeldung/properties/core/PropertiesWithJavaManualTest.java index d6c99502d7..91db8210b3 100644 --- a/spring-exceptions/src/test/java/org/baeldung/properties/core/PropertiesWithJavaIntegrationTest.java +++ b/spring-exceptions/src/test/java/org/baeldung/properties/core/PropertiesWithJavaManualTest.java @@ -13,7 +13,7 @@ import org.springframework.test.context.support.AnnotationConfigContextLoader; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = { PropertiesWithJavaConfig.class, PropertiesWithJavaConfigOther.class }, loader = AnnotationConfigContextLoader.class) -public class PropertiesWithJavaIntegrationTest { +public class PropertiesWithJavaManualTest { @Autowired private Environment env; diff --git a/spring-exceptions/src/test/java/org/baeldung/properties/core/PropertiesWithMultipleXmlsIntegrationTest.java b/spring-exceptions/src/test/java/org/baeldung/properties/core/PropertiesWithMultipleXmlsManualTest.java similarity index 95% rename from spring-exceptions/src/test/java/org/baeldung/properties/core/PropertiesWithMultipleXmlsIntegrationTest.java rename to spring-exceptions/src/test/java/org/baeldung/properties/core/PropertiesWithMultipleXmlsManualTest.java index 9fc793fc1b..201e554381 100644 --- a/spring-exceptions/src/test/java/org/baeldung/properties/core/PropertiesWithMultipleXmlsIntegrationTest.java +++ b/spring-exceptions/src/test/java/org/baeldung/properties/core/PropertiesWithMultipleXmlsManualTest.java @@ -13,7 +13,7 @@ import org.springframework.test.context.support.AnnotationConfigContextLoader; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = { PropertiesWithXmlConfigOne.class, PropertiesWithXmlConfigTwo.class }, loader = AnnotationConfigContextLoader.class) -public class PropertiesWithMultipleXmlsIntegrationTest { +public class PropertiesWithMultipleXmlsManualTest { @Autowired private Environment env; diff --git a/spring-exceptions/src/test/java/org/baeldung/properties/core/PropertiesWithXmlIntegrationTest.java b/spring-exceptions/src/test/java/org/baeldung/properties/core/PropertiesWithXmlManualTest.java similarity index 95% rename from spring-exceptions/src/test/java/org/baeldung/properties/core/PropertiesWithXmlIntegrationTest.java rename to spring-exceptions/src/test/java/org/baeldung/properties/core/PropertiesWithXmlManualTest.java index ff5eaab910..a54dd8a3fb 100644 --- a/spring-exceptions/src/test/java/org/baeldung/properties/core/PropertiesWithXmlIntegrationTest.java +++ b/spring-exceptions/src/test/java/org/baeldung/properties/core/PropertiesWithXmlManualTest.java @@ -12,7 +12,7 @@ import org.springframework.test.context.support.AnnotationConfigContextLoader; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = { PropertiesWithXmlConfig.class }, loader = AnnotationConfigContextLoader.class) -public class PropertiesWithXmlIntegrationTest { +public class PropertiesWithXmlManualTest { @Autowired private Environment env; From 496c8896a78c17b1be478847d89aee97ad15a7d2 Mon Sep 17 00:00:00 2001 From: DOHA Date: Sun, 23 Oct 2016 21:19:24 +0200 Subject: [PATCH 082/215] rename test --- spring-rest-docs/pom.xml | 2 +- ...iDocumentation.java => ApiDocumentationIntegrationTest.java} | 2 +- ...ion.java => GettingStartedDocumentationIntegrationTest.java} | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) rename spring-rest-docs/src/test/java/com/example/{ApiDocumentation.java => ApiDocumentationIntegrationTest.java} (99%) rename spring-rest-docs/src/test/java/com/example/{GettingStartedDocumentation.java => GettingStartedDocumentationIntegrationTest.java} (99%) diff --git a/spring-rest-docs/pom.xml b/spring-rest-docs/pom.xml index 04ee11d0de..8e758eeb4a 100644 --- a/spring-rest-docs/pom.xml +++ b/spring-rest-docs/pom.xml @@ -63,7 +63,7 @@ maven-surefire-plugin - **/*Documentation.java + **/*IntegrationTest.java diff --git a/spring-rest-docs/src/test/java/com/example/ApiDocumentation.java b/spring-rest-docs/src/test/java/com/example/ApiDocumentationIntegrationTest.java similarity index 99% rename from spring-rest-docs/src/test/java/com/example/ApiDocumentation.java rename to spring-rest-docs/src/test/java/com/example/ApiDocumentationIntegrationTest.java index 5b753aff0c..0912023fb7 100644 --- a/spring-rest-docs/src/test/java/com/example/ApiDocumentation.java +++ b/spring-rest-docs/src/test/java/com/example/ApiDocumentationIntegrationTest.java @@ -38,7 +38,7 @@ import static org.springframework.util.StringUtils.collectionToDelimitedString; @RunWith(SpringJUnit4ClassRunner.class) @SpringApplicationConfiguration(classes = SpringRestDocsApplication.class) @WebAppConfiguration -public class ApiDocumentation { +public class ApiDocumentationIntegrationTest { @Rule public final RestDocumentation restDocumentation = new RestDocumentation("target/generated-snippets"); diff --git a/spring-rest-docs/src/test/java/com/example/GettingStartedDocumentation.java b/spring-rest-docs/src/test/java/com/example/GettingStartedDocumentationIntegrationTest.java similarity index 99% rename from spring-rest-docs/src/test/java/com/example/GettingStartedDocumentation.java rename to spring-rest-docs/src/test/java/com/example/GettingStartedDocumentationIntegrationTest.java index 7aea9d303c..1af626d03b 100644 --- a/spring-rest-docs/src/test/java/com/example/GettingStartedDocumentation.java +++ b/spring-rest-docs/src/test/java/com/example/GettingStartedDocumentationIntegrationTest.java @@ -33,7 +33,7 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers. @RunWith(SpringJUnit4ClassRunner.class) @SpringApplicationConfiguration(classes = SpringRestDocsApplication.class) @WebAppConfiguration -public class GettingStartedDocumentation { +public class GettingStartedDocumentationIntegrationTest { @Rule public final RestDocumentation restDocumentation = new RestDocumentation("target/generated-snippets"); From d9c3a9d9cd94a6e6a7e3ec2b7e2545251cb70913 Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Sun, 23 Oct 2016 21:19:54 +0200 Subject: [PATCH 083/215] Move CharToString examples --- core-java-8/README.md | 1 - core-java/README.md | 1 + .../src/test/java/com/baeldung/CharToStringTest.java | 0 3 files changed, 1 insertion(+), 1 deletion(-) rename {core-java-8 => core-java}/src/test/java/com/baeldung/CharToStringTest.java (100%) diff --git a/core-java-8/README.md b/core-java-8/README.md index a835914b4d..a4c7833dd4 100644 --- a/core-java-8/README.md +++ b/core-java-8/README.md @@ -12,7 +12,6 @@ - [The Double Colon Operator in Java 8](http://www.baeldung.com/java-8-double-colon-operator) - [Java 8 Streams Advanced](http://www.baeldung.com/java-8-streams) - [Convert String to int or Integer in Java](http://www.baeldung.com/java-convert-string-to-int-or-integer) -- [Convert char to String in Java](http://www.baeldung.com/java-convert-char-to-string) - [Introduction to Thread Pools in Java](http://www.baeldung.com/thread-pool-java-and-guava) - [Guide to Java 8 Collectors](http://www.baeldung.com/java-8-collectors) - [The Java 8 Stream API Tutorial](http://www.baeldung.com/java-8-streams) diff --git a/core-java/README.md b/core-java/README.md index c18e6670ca..0bfce8b463 100644 --- a/core-java/README.md +++ b/core-java/README.md @@ -22,3 +22,4 @@ - [Java 8 Collectors](http://www.baeldung.com/java-8-collectors) - [Guide To CompletableFuture](http://www.baeldung.com/java-completablefuture) - [Guide to Java 8’s Functional Interfaces](http://www.baeldung.com/java-8-functional-interfaces) +- [Convert char to String in Java](http://www.baeldung.com/java-convert-char-to-string) \ No newline at end of file diff --git a/core-java-8/src/test/java/com/baeldung/CharToStringTest.java b/core-java/src/test/java/com/baeldung/CharToStringTest.java similarity index 100% rename from core-java-8/src/test/java/com/baeldung/CharToStringTest.java rename to core-java/src/test/java/com/baeldung/CharToStringTest.java From ce0cb0c375bbf6fac196d4bb8a3ae7562ecb0c14 Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Sun, 23 Oct 2016 21:22:07 +0200 Subject: [PATCH 084/215] Move Random List Element examples --- core-java/README.md | 3 ++- .../src/test/java/com/baeldung/RandomListElementTest.java | 0 2 files changed, 2 insertions(+), 1 deletion(-) rename {core-java-8 => core-java}/src/test/java/com/baeldung/RandomListElementTest.java (100%) diff --git a/core-java/README.md b/core-java/README.md index 0bfce8b463..8e28069ac3 100644 --- a/core-java/README.md +++ b/core-java/README.md @@ -22,4 +22,5 @@ - [Java 8 Collectors](http://www.baeldung.com/java-8-collectors) - [Guide To CompletableFuture](http://www.baeldung.com/java-completablefuture) - [Guide to Java 8’s Functional Interfaces](http://www.baeldung.com/java-8-functional-interfaces) -- [Convert char to String in Java](http://www.baeldung.com/java-convert-char-to-string) \ No newline at end of file +- [Convert char to String in Java](http://www.baeldung.com/java-convert-char-to-string) +- [Random List Element](http://www.baeldung.com/java-random-list-element) \ No newline at end of file diff --git a/core-java-8/src/test/java/com/baeldung/RandomListElementTest.java b/core-java/src/test/java/com/baeldung/RandomListElementTest.java similarity index 100% rename from core-java-8/src/test/java/com/baeldung/RandomListElementTest.java rename to core-java/src/test/java/com/baeldung/RandomListElementTest.java From d97ba21fb3acd25ce5b1a5e3d78d046710d681ed Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Sun, 23 Oct 2016 21:24:20 +0200 Subject: [PATCH 085/215] Move StringToInt examples --- core-java-8/README.md | 1 - core-java/README.md | 3 ++- .../src/test/java/com/baeldung/StringToIntOrIntegerTest.java | 0 3 files changed, 2 insertions(+), 2 deletions(-) rename {core-java-8 => core-java}/src/test/java/com/baeldung/StringToIntOrIntegerTest.java (100%) diff --git a/core-java-8/README.md b/core-java-8/README.md index a4c7833dd4..7a25040823 100644 --- a/core-java-8/README.md +++ b/core-java-8/README.md @@ -11,7 +11,6 @@ - [Lambda Expressions and Functional Interfaces: Tips and Best Practices](http://www.baeldung.com/java-8-lambda-expressions-tips) - [The Double Colon Operator in Java 8](http://www.baeldung.com/java-8-double-colon-operator) - [Java 8 Streams Advanced](http://www.baeldung.com/java-8-streams) -- [Convert String to int or Integer in Java](http://www.baeldung.com/java-convert-string-to-int-or-integer) - [Introduction to Thread Pools in Java](http://www.baeldung.com/thread-pool-java-and-guava) - [Guide to Java 8 Collectors](http://www.baeldung.com/java-8-collectors) - [The Java 8 Stream API Tutorial](http://www.baeldung.com/java-8-streams) diff --git a/core-java/README.md b/core-java/README.md index 8e28069ac3..45071d54ea 100644 --- a/core-java/README.md +++ b/core-java/README.md @@ -23,4 +23,5 @@ - [Guide To CompletableFuture](http://www.baeldung.com/java-completablefuture) - [Guide to Java 8’s Functional Interfaces](http://www.baeldung.com/java-8-functional-interfaces) - [Convert char to String in Java](http://www.baeldung.com/java-convert-char-to-string) -- [Random List Element](http://www.baeldung.com/java-random-list-element) \ No newline at end of file +- [Random List Element](http://www.baeldung.com/java-random-list-element) +- [Convert String to int or Integer in Java](http://www.baeldung.com/java-convert-string-to-int-or-integer) \ No newline at end of file diff --git a/core-java-8/src/test/java/com/baeldung/StringToIntOrIntegerTest.java b/core-java/src/test/java/com/baeldung/StringToIntOrIntegerTest.java similarity index 100% rename from core-java-8/src/test/java/com/baeldung/StringToIntOrIntegerTest.java rename to core-java/src/test/java/com/baeldung/StringToIntOrIntegerTest.java From 8860b29131f5019550a6d9af909c34eea228ce15 Mon Sep 17 00:00:00 2001 From: ambrusadrianz Date: Sun, 23 Oct 2016 22:33:17 +0300 Subject: [PATCH 086/215] Further simplified the vote method. (#768) --- .../org/baeldung/security/MinuteBasedVoter.java | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/spring-security-custom-voter/src/main/java/org/baeldung/security/MinuteBasedVoter.java b/spring-security-custom-voter/src/main/java/org/baeldung/security/MinuteBasedVoter.java index 3e3a26594f..a08079fcff 100644 --- a/spring-security-custom-voter/src/main/java/org/baeldung/security/MinuteBasedVoter.java +++ b/spring-security-custom-voter/src/main/java/org/baeldung/security/MinuteBasedVoter.java @@ -21,17 +21,13 @@ public class MinuteBasedVoter implements AccessDecisionVoter { @Override public int vote(Authentication authentication, Object object, Collection collection) { - String role = authentication + return authentication .getAuthorities() - .stream().map(GrantedAuthority::getAuthority) - .filter("ROLE_USER"::equals) + .stream() + .map(GrantedAuthority::getAuthority) + .filter(r -> "ROLE_USER".equals(r) && LocalDateTime.now().getMinute() % 2 != 0) .findAny() - .orElseGet(() -> "ROLE_ADMIN"); - - if ("ROLE_USER".equals(role) && LocalDateTime.now().getMinute() % 2 != 0) { - return ACCESS_DENIED; - } - - return ACCESS_ABSTAIN; + .map(s -> ACCESS_DENIED) + .orElseGet(() -> ACCESS_ABSTAIN); } } From 0902c3d9e0bd6cf9f40f7e5326d2cfc2d7585adc Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Sun, 23 Oct 2016 22:36:44 +0200 Subject: [PATCH 087/215] Collapse core-java-8 into core-java --- core-java-8/README.md | 15 +- .../main/java/com/baeldung/enums/Pizza.java | 91 ------ .../baeldung/enums/PizzaDeliveryStrategy.java | 18 -- .../PizzaDeliverySystemConfiguration.java | 22 -- .../baeldung/datetime/UseLocalDateTest.java | 55 ---- .../datetime/UseLocalDateTimeTest.java | 19 -- .../baeldung/datetime/UseLocalTimeTest.java | 36 --- .../com/baeldung/datetime/UsePeriodTest.java | 29 -- .../datetime/UseZonedDateTimeTest.java | 20 -- .../doublecolon/TestComputerUtils.java | 91 ------ .../encoderdecoder/EncoderDecoder.java | 84 ------ .../java/com/baeldung/enums/PizzaTest.java | 80 ------ .../com/baeldung/file/FileOperationsTest.java | 121 -------- .../java8/Java8CollectionCleanupUnitTest.java | 48 ---- ...Java8DefaultStaticIntefaceMethodsTest.java | 27 -- .../java8/Java8ExecutorServiceTest.java | 156 ----------- .../com/baeldung/java8/Java8ForkJoinTest.java | 100 ------- .../Java8FunctionalInteracesLambdasTest.java | 94 ------- .../java8/Java8MethodReferenceTest.java | 67 ----- .../com/baeldung/java8/Java8OptionalTest.java | 118 -------- .../com/baeldung/java8/Java8SortUnitTest.java | 115 -------- .../baeldung/java8/Java8StreamApiTest.java | 263 ------------------ .../com/baeldung/java8/Java8StreamsTest.java | 113 -------- .../baeldung/java8/JavaFolderSizeTest.java | 115 -------- .../java8/JavaTryWithResourcesTest.java | 86 ------ .../base64/ApacheCommonsEncodeDecodeTest.java | 56 ---- .../java8/base64/Java8EncodeDecodeTest.java | 109 -------- .../java/com/baeldung/java8/entity/Human.java | 89 ------ .../threadpool/CoreThreadPoolTest.java | 146 ---------- .../threadpool/GuavaThreadPoolTest.java | 56 ---- .../baeldung/util/CurrentDateTimeTest.java | 41 --- core-java-8/src/test/resources/test.txt | 1 - core-java/README.md | 17 +- .../src/main/java/com/baeldung}/.gitignore | 0 .../src/main/java/com/baeldung/Adder.java | 0 .../src/main/java/com/baeldung/AdderImpl.java | 0 .../src/main/java/com/baeldung/Bar.java | 0 .../src/main/java/com/baeldung/Baz.java | 0 .../src/main/java/com/baeldung/Foo.java | 0 .../main/java/com/baeldung/FooExtended.java | 0 .../src/main/java/com/baeldung/UseFoo.java | 0 .../main/java/com/baeldung/datetime/README.md | 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 .../com/baeldung/doublecolon/Computer.java | 0 .../baeldung/doublecolon/ComputerUtils.java | 0 .../com/baeldung/doublecolon/MacbookPro.java | 0 .../function/ComputerPredicate.java | 0 .../doublecolon/function/TriFunction.java | 0 .../main/java/com/baeldung/enums/Pizza.java | 41 +-- .../PizzaDeliverySystemConfiguration.java | 1 + .../main/java/com/baeldung/enums/README.md | 0 .../forkjoin/CustomRecursiveAction.java | 0 .../forkjoin/CustomRecursiveTask.java | 0 .../com/baeldung/forkjoin/util/PoolUtil.java | 0 .../com/baeldung/java_8_features/Address.java | 0 .../java_8_features/CustomException.java | 0 .../com/baeldung/java_8_features/Detail.java | 0 .../java_8_features/OptionalAddress.java | 0 .../java_8_features/OptionalUser.java | 0 .../com/baeldung/java_8_features/User.java | 0 .../com/baeldung/java_8_features/Vehicle.java | 0 .../baeldung/java_8_features/VehicleImpl.java | 0 .../java/com/baeldung/streamApi/Product.java | 0 .../com/baeldung/threadpool/CountingTask.java | 0 .../ExitingExecutorServiceExample.java | 0 .../com/baeldung/threadpool/TreeNode.java | 0 .../java/com/baeldung/unzip/UnzipFile.java | 0 .../java/com/baeldung/zip/ZipDirectory.java | 0 .../main/java/com/baeldung/zip/ZipFile.java | 0 .../com/baeldung/zip/ZipMultipleFiles.java | 0 .../src/main/resources/dirCompressed.zip | Bin .../src/main/resources/multiCompressed.zip | Bin .../baeldung/dateapi/ConversionExample.java | 0 .../baeldung/dateapi/JavaUtilTimeTest.java | 0 80 files changed, 29 insertions(+), 2511 deletions(-) delete mode 100644 core-java-8/src/main/java/com/baeldung/enums/Pizza.java delete mode 100644 core-java-8/src/main/java/com/baeldung/enums/PizzaDeliveryStrategy.java delete mode 100644 core-java-8/src/main/java/com/baeldung/enums/PizzaDeliverySystemConfiguration.java delete mode 100644 core-java-8/src/test/java/com/baeldung/datetime/UseLocalDateTest.java delete mode 100644 core-java-8/src/test/java/com/baeldung/datetime/UseLocalDateTimeTest.java delete mode 100644 core-java-8/src/test/java/com/baeldung/datetime/UseLocalTimeTest.java delete mode 100644 core-java-8/src/test/java/com/baeldung/datetime/UsePeriodTest.java delete mode 100644 core-java-8/src/test/java/com/baeldung/datetime/UseZonedDateTimeTest.java delete mode 100644 core-java-8/src/test/java/com/baeldung/doublecolon/TestComputerUtils.java delete mode 100644 core-java-8/src/test/java/com/baeldung/encoderdecoder/EncoderDecoder.java delete mode 100644 core-java-8/src/test/java/com/baeldung/enums/PizzaTest.java delete mode 100644 core-java-8/src/test/java/com/baeldung/file/FileOperationsTest.java delete mode 100644 core-java-8/src/test/java/com/baeldung/java8/Java8CollectionCleanupUnitTest.java delete mode 100644 core-java-8/src/test/java/com/baeldung/java8/Java8DefaultStaticIntefaceMethodsTest.java delete mode 100644 core-java-8/src/test/java/com/baeldung/java8/Java8ExecutorServiceTest.java delete mode 100644 core-java-8/src/test/java/com/baeldung/java8/Java8ForkJoinTest.java delete mode 100644 core-java-8/src/test/java/com/baeldung/java8/Java8FunctionalInteracesLambdasTest.java delete mode 100644 core-java-8/src/test/java/com/baeldung/java8/Java8MethodReferenceTest.java delete mode 100644 core-java-8/src/test/java/com/baeldung/java8/Java8OptionalTest.java delete mode 100644 core-java-8/src/test/java/com/baeldung/java8/Java8SortUnitTest.java delete mode 100644 core-java-8/src/test/java/com/baeldung/java8/Java8StreamApiTest.java delete mode 100644 core-java-8/src/test/java/com/baeldung/java8/Java8StreamsTest.java delete mode 100644 core-java-8/src/test/java/com/baeldung/java8/JavaFolderSizeTest.java delete mode 100644 core-java-8/src/test/java/com/baeldung/java8/JavaTryWithResourcesTest.java delete mode 100644 core-java-8/src/test/java/com/baeldung/java8/base64/ApacheCommonsEncodeDecodeTest.java delete mode 100644 core-java-8/src/test/java/com/baeldung/java8/base64/Java8EncodeDecodeTest.java delete mode 100644 core-java-8/src/test/java/com/baeldung/java8/entity/Human.java delete mode 100644 core-java-8/src/test/java/com/baeldung/threadpool/CoreThreadPoolTest.java delete mode 100644 core-java-8/src/test/java/com/baeldung/threadpool/GuavaThreadPoolTest.java delete mode 100644 core-java-8/src/test/java/com/baeldung/util/CurrentDateTimeTest.java delete mode 100644 core-java-8/src/test/resources/test.txt rename {core-java-8/src/main/java => core-java/src/main/java/com/baeldung}/.gitignore (100%) rename {core-java-8 => core-java}/src/main/java/com/baeldung/Adder.java (100%) rename {core-java-8 => core-java}/src/main/java/com/baeldung/AdderImpl.java (100%) rename {core-java-8 => core-java}/src/main/java/com/baeldung/Bar.java (100%) rename {core-java-8 => core-java}/src/main/java/com/baeldung/Baz.java (100%) rename {core-java-8 => core-java}/src/main/java/com/baeldung/Foo.java (100%) rename {core-java-8 => core-java}/src/main/java/com/baeldung/FooExtended.java (100%) rename {core-java-8 => core-java}/src/main/java/com/baeldung/UseFoo.java (100%) rename {core-java-8 => core-java}/src/main/java/com/baeldung/datetime/README.md (100%) rename {core-java-8 => core-java}/src/main/java/com/baeldung/datetime/UseDuration.java (100%) rename {core-java-8 => core-java}/src/main/java/com/baeldung/datetime/UseLocalDate.java (100%) rename {core-java-8 => core-java}/src/main/java/com/baeldung/datetime/UseLocalDateTime.java (100%) rename {core-java-8 => core-java}/src/main/java/com/baeldung/datetime/UseLocalTime.java (100%) rename {core-java-8 => core-java}/src/main/java/com/baeldung/datetime/UsePeriod.java (100%) rename {core-java-8 => core-java}/src/main/java/com/baeldung/datetime/UseToInstant.java (100%) rename {core-java-8 => core-java}/src/main/java/com/baeldung/datetime/UseZonedDateTime.java (100%) rename {core-java-8 => core-java}/src/main/java/com/baeldung/doublecolon/Computer.java (100%) rename {core-java-8 => core-java}/src/main/java/com/baeldung/doublecolon/ComputerUtils.java (100%) rename {core-java-8 => core-java}/src/main/java/com/baeldung/doublecolon/MacbookPro.java (100%) rename {core-java-8 => core-java}/src/main/java/com/baeldung/doublecolon/function/ComputerPredicate.java (100%) rename {core-java-8 => core-java}/src/main/java/com/baeldung/doublecolon/function/TriFunction.java (100%) rename {core-java-8 => core-java}/src/main/java/com/baeldung/enums/README.md (100%) rename {core-java-8 => core-java}/src/main/java/com/baeldung/forkjoin/CustomRecursiveAction.java (100%) rename {core-java-8 => core-java}/src/main/java/com/baeldung/forkjoin/CustomRecursiveTask.java (100%) rename {core-java-8 => core-java}/src/main/java/com/baeldung/forkjoin/util/PoolUtil.java (100%) rename {core-java-8 => core-java}/src/main/java/com/baeldung/java_8_features/Address.java (100%) rename {core-java-8 => core-java}/src/main/java/com/baeldung/java_8_features/CustomException.java (100%) rename {core-java-8 => core-java}/src/main/java/com/baeldung/java_8_features/Detail.java (100%) rename {core-java-8 => core-java}/src/main/java/com/baeldung/java_8_features/OptionalAddress.java (100%) rename {core-java-8 => core-java}/src/main/java/com/baeldung/java_8_features/OptionalUser.java (100%) rename {core-java-8 => core-java}/src/main/java/com/baeldung/java_8_features/User.java (100%) rename {core-java-8 => core-java}/src/main/java/com/baeldung/java_8_features/Vehicle.java (100%) rename {core-java-8 => core-java}/src/main/java/com/baeldung/java_8_features/VehicleImpl.java (100%) rename {core-java-8 => core-java}/src/main/java/com/baeldung/streamApi/Product.java (100%) rename {core-java-8 => core-java}/src/main/java/com/baeldung/threadpool/CountingTask.java (100%) rename {core-java-8 => core-java}/src/main/java/com/baeldung/threadpool/ExitingExecutorServiceExample.java (100%) rename {core-java-8 => core-java}/src/main/java/com/baeldung/threadpool/TreeNode.java (100%) rename {core-java-8 => core-java}/src/main/java/com/baeldung/unzip/UnzipFile.java (100%) rename {core-java-8 => core-java}/src/main/java/com/baeldung/zip/ZipDirectory.java (100%) rename {core-java-8 => core-java}/src/main/java/com/baeldung/zip/ZipFile.java (100%) rename {core-java-8 => core-java}/src/main/java/com/baeldung/zip/ZipMultipleFiles.java (100%) rename {core-java-8 => core-java}/src/main/resources/dirCompressed.zip (100%) rename {core-java-8 => core-java}/src/main/resources/multiCompressed.zip (100%) rename {core-java-8 => core-java}/src/test/java/com/baeldung/dateapi/ConversionExample.java (100%) rename {core-java-8 => core-java}/src/test/java/com/baeldung/dateapi/JavaUtilTimeTest.java (100%) diff --git a/core-java-8/README.md b/core-java-8/README.md index 7a25040823..86429222ea 100644 --- a/core-java-8/README.md +++ b/core-java-8/README.md @@ -3,17 +3,4 @@ ## Core Java 8 Cookbooks and Examples ### Relevant Articles: -- [Java 8 – Powerful Comparison with Lambdas](http://www.baeldung.com/java-8-sort-lambda) -- [Java – Directory Size](http://www.baeldung.com/java-folder-size) -- [Java – Try with Resources](http://www.baeldung.com/java-try-with-resources) -- [A Guide to the Java ExecutorService](http://www.baeldung.com/java-executor-service-tutorial) -- [Java 8 New Features](http://www.baeldung.com/java-8-new-features) -- [Lambda Expressions and Functional Interfaces: Tips and Best Practices](http://www.baeldung.com/java-8-lambda-expressions-tips) -- [The Double Colon Operator in Java 8](http://www.baeldung.com/java-8-double-colon-operator) -- [Java 8 Streams Advanced](http://www.baeldung.com/java-8-streams) -- [Introduction to Thread Pools in Java](http://www.baeldung.com/thread-pool-java-and-guava) -- [Guide to Java 8 Collectors](http://www.baeldung.com/java-8-collectors) -- [The Java 8 Stream API Tutorial](http://www.baeldung.com/java-8-streams) -- [New Features in Java 8](http://www.baeldung.com/java-8-new-features) -- [Introduction to Java 8 Streams](http://www.baeldung.com/java-8-streams-introduction) -- [Guide to the Fork/Join Framework in Java](http://www.baeldung.com/java-fork-join) + diff --git a/core-java-8/src/main/java/com/baeldung/enums/Pizza.java b/core-java-8/src/main/java/com/baeldung/enums/Pizza.java deleted file mode 100644 index 5bc2d9a9eb..0000000000 --- a/core-java-8/src/main/java/com/baeldung/enums/Pizza.java +++ /dev/null @@ -1,91 +0,0 @@ -package com.baeldung.enums; - -import java.util.EnumMap; -import java.util.EnumSet; -import java.util.List; -import java.util.stream.Collectors; - -public class Pizza { - - private static EnumSet deliveredPizzaStatuses = - EnumSet.of(PizzaStatusEnum.DELIVERED); - - private PizzaStatusEnum status; - - public enum PizzaStatusEnum { - ORDERED(5) { - @Override - public boolean isOrdered() { - return true; - } - }, - READY(2) { - @Override - public boolean isReady() { - return true; - } - }, - DELIVERED(0) { - @Override - public boolean isDelivered() { - return true; - } - }; - - private int timeToDelivery; - - public boolean isOrdered() { - return false; - } - - public boolean isReady() { - return false; - } - - public boolean isDelivered() { - return false; - } - - public int getTimeToDelivery() { - return timeToDelivery; - } - - PizzaStatusEnum(int timeToDelivery) { - this.timeToDelivery = timeToDelivery; - } - } - - public PizzaStatusEnum getStatus() { - return status; - } - - public void setStatus(PizzaStatusEnum status) { - this.status = status; - } - - public boolean isDeliverable() { - return this.status.isReady(); - } - - public void printTimeToDeliver() { - System.out.println("Time to delivery is " + this.getStatus().getTimeToDelivery() + " days"); - } - - public static List getAllUndeliveredPizzas(List input) { - return input.stream().filter((s) -> !deliveredPizzaStatuses.contains(s.getStatus())).collect(Collectors.toList()); - } - - public static EnumMap> groupPizzaByStatus(List pzList) { - return pzList.stream().collect( - Collectors.groupingBy(Pizza::getStatus, - () -> new EnumMap<>(PizzaStatusEnum.class), Collectors.toList())); - } - - public void deliver() { - if (isDeliverable()) { - PizzaDeliverySystemConfiguration.getInstance().getDeliveryStrategy().deliver(this); - this.setStatus(PizzaStatusEnum.DELIVERED); - } - } - -} \ No newline at end of file diff --git a/core-java-8/src/main/java/com/baeldung/enums/PizzaDeliveryStrategy.java b/core-java-8/src/main/java/com/baeldung/enums/PizzaDeliveryStrategy.java deleted file mode 100644 index ed65919387..0000000000 --- a/core-java-8/src/main/java/com/baeldung/enums/PizzaDeliveryStrategy.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.baeldung.enums; - -public enum PizzaDeliveryStrategy { - EXPRESS { - @Override - public void deliver(Pizza pz) { - System.out.println("Pizza will be delivered in express mode"); - } - }, - NORMAL { - @Override - public void deliver(Pizza pz) { - System.out.println("Pizza will be delivered in normal mode"); - } - }; - - public abstract void deliver(Pizza pz); -} diff --git a/core-java-8/src/main/java/com/baeldung/enums/PizzaDeliverySystemConfiguration.java b/core-java-8/src/main/java/com/baeldung/enums/PizzaDeliverySystemConfiguration.java deleted file mode 100644 index 5ccff5e959..0000000000 --- a/core-java-8/src/main/java/com/baeldung/enums/PizzaDeliverySystemConfiguration.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.baeldung.enums; - - -public enum PizzaDeliverySystemConfiguration { - INSTANCE; - - PizzaDeliverySystemConfiguration() { - // Do the configuration initialization which - // involves overriding defaults like delivery strategy - } - - private PizzaDeliveryStrategy deliveryStrategy = PizzaDeliveryStrategy.NORMAL; - - public static PizzaDeliverySystemConfiguration getInstance() { - return INSTANCE; - } - - public PizzaDeliveryStrategy getDeliveryStrategy() { - return deliveryStrategy; - } - -} diff --git a/core-java-8/src/test/java/com/baeldung/datetime/UseLocalDateTest.java b/core-java-8/src/test/java/com/baeldung/datetime/UseLocalDateTest.java deleted file mode 100644 index 8af33393be..0000000000 --- a/core-java-8/src/test/java/com/baeldung/datetime/UseLocalDateTest.java +++ /dev/null @@ -1,55 +0,0 @@ -package com.baeldung.datetime; - -import java.time.DayOfWeek; -import java.time.LocalDate; -import java.time.LocalDateTime; -import java.time.Month; - -import org.junit.Assert; -import org.junit.Test; - -public class UseLocalDateTest { - - UseLocalDate useLocalDate = new UseLocalDate(); - - @Test - public void givenValues_whenUsingFactoryOf_thenLocalDate(){ - Assert.assertEquals("2016-05-10",useLocalDate.getLocalDateUsingFactoryOfMethod(2016,5,10).toString()); - } - - @Test - public void givenString_whenUsingParse_thenLocalDate(){ - Assert.assertEquals("2016-05-10",useLocalDate.getLocalDateUsingParseMethod("2016-05-10").toString()); - } - - @Test - public void whenUsingClock_thenLocalDate(){ - Assert.assertEquals(LocalDate.now(),useLocalDate.getLocalDateFromClock()); - } - - @Test - public void givenDate_whenUsingPlus_thenNextDay(){ - Assert.assertEquals(LocalDate.now().plusDays(1),useLocalDate.getNextDay(LocalDate.now())); - } - - @Test - public void givenDate_whenUsingMinus_thenPreviousDay(){ - Assert.assertEquals(LocalDate.now().minusDays(1),useLocalDate.getPreviousDay(LocalDate.now())); - } - - @Test - public void givenToday_whenUsingGetDayOfWeek_thenDayOfWeek(){ - Assert.assertEquals(DayOfWeek.SUNDAY,useLocalDate.getDayOfWeek(LocalDate.parse("2016-05-22"))); - } - - @Test - public void givenToday_whenUsingWithTemporalAdjuster_thenFirstDayOfMonth(){ - Assert.assertEquals(1,useLocalDate.getFirstDayOfMonth().getDayOfMonth()); - } - - @Test - public void givenLocalDate_whenUsingAtStartOfDay_thenReturnMidnight(){ - Assert.assertEquals(LocalDateTime.parse("2016-05-22T00:00:00"),useLocalDate.getStartOfDay(LocalDate.parse("2016-05-22"))); - } - -} diff --git a/core-java-8/src/test/java/com/baeldung/datetime/UseLocalDateTimeTest.java b/core-java-8/src/test/java/com/baeldung/datetime/UseLocalDateTimeTest.java deleted file mode 100644 index 69a289fd02..0000000000 --- a/core-java-8/src/test/java/com/baeldung/datetime/UseLocalDateTimeTest.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.baeldung.datetime; - -import java.time.LocalDate; -import java.time.LocalTime; -import java.time.Month; - -import org.junit.Assert; -import org.junit.Test; - -public class UseLocalDateTimeTest { - - UseLocalDateTime useLocalDateTime = new UseLocalDateTime(); - - @Test - public void givenString_whenUsingParse_thenLocalDateTime(){ - Assert.assertEquals(LocalDate.of(2016, Month.MAY, 10),useLocalDateTime.getLocalDateTimeUsingParseMethod("2016-05-10T06:30").toLocalDate()); - Assert.assertEquals(LocalTime.of(6,30),useLocalDateTime.getLocalDateTimeUsingParseMethod("2016-05-10T06:30").toLocalTime()); - } -} diff --git a/core-java-8/src/test/java/com/baeldung/datetime/UseLocalTimeTest.java b/core-java-8/src/test/java/com/baeldung/datetime/UseLocalTimeTest.java deleted file mode 100644 index 7776fad363..0000000000 --- a/core-java-8/src/test/java/com/baeldung/datetime/UseLocalTimeTest.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.baeldung.datetime; - -import java.time.LocalTime; - -import org.junit.Assert; -import org.junit.Test; - -public class UseLocalTimeTest { - - UseLocalTime useLocalTime = new UseLocalTime(); - - @Test - public void givenValues_whenUsingFactoryOf_thenLocalTime(){ - Assert.assertEquals("07:07:07",useLocalTime.getLocalTimeUsingFactoryOfMethod(7,7,7).toString()); - } - - @Test - public void givenString_whenUsingParse_thenLocalTime(){ - 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()); - } - - @Test - public void getHourFromLocalTime(){ - Assert.assertEquals(1, useLocalTime.getHourFromLocalTime(LocalTime.of(1,1))); - } - - @Test - public void getLocalTimeWithMinuteSetToValue(){ - Assert.assertEquals(LocalTime.of(10, 20), useLocalTime.getLocalTimeWithMinuteSetToValue(LocalTime.of(10,10), 20)); - } -} diff --git a/core-java-8/src/test/java/com/baeldung/datetime/UsePeriodTest.java b/core-java-8/src/test/java/com/baeldung/datetime/UsePeriodTest.java deleted file mode 100644 index 8a3228aaa5..0000000000 --- a/core-java-8/src/test/java/com/baeldung/datetime/UsePeriodTest.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.baeldung.datetime; - -import java.time.LocalDate; -import java.time.LocalDateTime; -import java.time.Period; -import java.time.ZoneId; -import java.time.ZonedDateTime; - -import org.junit.Assert; -import org.junit.Test; - -public class UsePeriodTest { - UsePeriod usingPeriod=new UsePeriod(); - - @Test - public void givenPeriodAndLocalDate_thenCalculateModifiedDate(){ - Period period = Period.ofDays(1); - LocalDate localDate = LocalDate.parse("2007-05-10"); - Assert.assertEquals(localDate.plusDays(1),usingPeriod.modifyDates(localDate, period)); - } - - @Test - public void givenDates_thenGetPeriod(){ - LocalDate localDate1 = LocalDate.parse("2007-05-10"); - LocalDate localDate2 = LocalDate.parse("2007-05-15"); - - Assert.assertEquals(Period.ofDays(5), usingPeriod.getDifferenceBetweenDates(localDate1, localDate2)); - } -} diff --git a/core-java-8/src/test/java/com/baeldung/datetime/UseZonedDateTimeTest.java b/core-java-8/src/test/java/com/baeldung/datetime/UseZonedDateTimeTest.java deleted file mode 100644 index 5af01ad678..0000000000 --- a/core-java-8/src/test/java/com/baeldung/datetime/UseZonedDateTimeTest.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.baeldung.datetime; - -import java.time.LocalDateTime; -import java.time.ZoneId; -import java.time.ZonedDateTime; - -import org.junit.Assert; -import org.junit.Test; - -public class UseZonedDateTimeTest { - - UseZonedDateTime zonedDateTime=new UseZonedDateTime(); - - @Test - public void givenZoneId_thenZonedDateTime(){ - ZoneId zoneId=ZoneId.of("Europe/Paris"); - ZonedDateTime zonedDatetime=zonedDateTime.getZonedDateTime(LocalDateTime.parse("2016-05-20T06:30"), zoneId); - Assert.assertEquals(zoneId,ZoneId.from(zonedDatetime)); - } -} diff --git a/core-java-8/src/test/java/com/baeldung/doublecolon/TestComputerUtils.java b/core-java-8/src/test/java/com/baeldung/doublecolon/TestComputerUtils.java deleted file mode 100644 index 85194f5aa6..0000000000 --- a/core-java-8/src/test/java/com/baeldung/doublecolon/TestComputerUtils.java +++ /dev/null @@ -1,91 +0,0 @@ -package com.baeldung.doublecolon; - -import com.baeldung.doublecolon.function.TriFunction; -import org.junit.After; -import org.junit.Assert; -import org.junit.Before; -import org.junit.Test; - -import java.util.Arrays; -import java.util.Comparator; -import java.util.List; -import java.util.function.BiFunction; - -import static com.baeldung.doublecolon.ComputerUtils.*; - -public class TestComputerUtils { - - @Before - public void setup() { - } - - @After - public void tearDown() { - } - - @Test - public void testConstructorReference() { - - Computer c1 = new Computer(2015, "white"); - Computer c2 = new Computer(2009, "black"); - Computer c3 = new Computer(2014, "black"); - - BiFunction c4Function = Computer::new; - Computer c4 = c4Function.apply(2013, "white"); - BiFunction c5Function = Computer::new; - Computer c5 = c5Function.apply(2010, "black"); - BiFunction c6Function = Computer::new; - Computer c6 = c6Function.apply(2008, "black"); - - List inventory = Arrays.asList(c1, c2, c3, c4, c5, c6); - - List blackComputer = filter(inventory, blackPredicate); - Assert.assertEquals("The black Computers are: ", blackComputer.size(), 4); - - List after2010Computer = filter(inventory, after2010Predicate); - Assert.assertEquals("The Computer bought after 2010 are: ", after2010Computer.size(), 3); - - List before2011Computer = filter(inventory, c -> c.getAge() < 2011); - Assert.assertEquals("The Computer bought before 2011 are: ", before2011Computer.size(), 3); - - inventory.sort(Comparator.comparing(Computer::getAge)); - - Assert.assertEquals("Oldest Computer in inventory", c6, inventory.get(0)); - - } - - @Test - public void testStaticMethodReference() { - - Computer c1 = new Computer(2015, "white", 35); - Computer c2 = new Computer(2009, "black", 65); - TriFunction c6Function = Computer::new; - Computer c3 = c6Function.apply(2008, "black", 90); - - List inventory = Arrays.asList(c1, c2, c3); - inventory.forEach(ComputerUtils::repair); - - Assert.assertEquals("Computer repaired", new Integer(100), c1.getHealty()); - } - - @Test - public void testInstanceMethodArbitraryObjectParticularType() { - - Computer c1 = new Computer(2015, "white", 35); - Computer c2 = new MacbookPro(2009, "black", 65); - List inventory = Arrays.asList(c1, c2); - inventory.forEach(Computer::turnOnPc); - - } - - @Test - public void testSuperMethodReference() { - - final TriFunction integerStringIntegerObjectTriFunction = MacbookPro::new; - final MacbookPro macbookPro = integerStringIntegerObjectTriFunction.apply(2010, "black", 100); - Double initialValue = new Double(999.99); - final Double actualValue = macbookPro.calculateValue(initialValue); - Assert.assertEquals(766.659, actualValue, 0.0); - } - -} diff --git a/core-java-8/src/test/java/com/baeldung/encoderdecoder/EncoderDecoder.java b/core-java-8/src/test/java/com/baeldung/encoderdecoder/EncoderDecoder.java deleted file mode 100644 index 208a23eb91..0000000000 --- a/core-java-8/src/test/java/com/baeldung/encoderdecoder/EncoderDecoder.java +++ /dev/null @@ -1,84 +0,0 @@ -package com.baeldung.encoderdecoder; - -import org.hamcrest.CoreMatchers; -import org.junit.Assert; -import org.junit.Test; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.io.UnsupportedEncodingException; -import java.net.MalformedURLException; -import java.net.URL; -import java.net.URLDecoder; -import java.net.URLEncoder; -import java.nio.charset.StandardCharsets; -import java.util.Arrays; -import java.util.HashMap; -import java.util.Map; -import java.util.function.Function; -import java.util.stream.Collectors; - -public class EncoderDecoder { - - private static final String URL = "http://www.baeldung.com?key1=value+1&key2=value%40%21%242&key3=value%253"; - private static final Logger LOGGER = LoggerFactory.getLogger(EncoderDecoder.class); - - private String encodeValue(String value) { - String encoded = null; - try { - encoded = URLEncoder.encode(value, StandardCharsets.UTF_8.toString()); - } catch (UnsupportedEncodingException e) { - LOGGER.error("Error encoding parameter {}", e.getMessage(), e); - } - return encoded; - } - - - private String decode(String value) { - String decoded = null; - try { - decoded = URLDecoder.decode(value, StandardCharsets.UTF_8.toString()); - } catch (UnsupportedEncodingException e) { - LOGGER.error("Error encoding parameter {}", e.getMessage(), e); - } - return decoded; - } - - @Test - public void givenURL_whenAnalyze_thenCorrect() throws Exception { - URL url = new URL(URL); - - Assert.assertThat(url.getProtocol(), CoreMatchers.is("http")); - Assert.assertThat(url.getHost(), CoreMatchers.is("www.baeldung.com")); - Assert.assertThat(url.getQuery(), CoreMatchers.is("key1=value+1&key2=value%40%21%242&key3=value%253")); - } - - @Test - public void givenRequestParam_whenUTF8Scheme_thenEncode() throws Exception { - Map requestParams = new HashMap<>(); - requestParams.put("key1", "value 1"); - requestParams.put("key2", "value@!$2"); - requestParams.put("key3", "value%3"); - - String encodedQuery = requestParams.keySet().stream() - .map(key -> key + "=" + encodeValue(requestParams.get(key))) - .collect(Collectors.joining("&")); - String encodedURL = "http://www.baeldung.com?" + encodedQuery; - - Assert.assertThat(URL, CoreMatchers.is(encodedURL)); - } - - @Test - public void givenRequestParam_whenUTF8Scheme_thenDecodeRequestParams() throws Exception { - URL url = new URL(URL); - String query = url.getQuery(); - - String decodedQuery = Arrays.stream(query.split("&")) - .map(param -> param.split("=")[0] + "=" + decode(param.split("=")[1])) - .collect(Collectors.joining("&")); - - Assert.assertEquals( - "http://www.baeldung.com?key1=value 1&key2=value@!$2&key3=value%3", url.getProtocol() + "://" + url.getHost() + "?" + decodedQuery); - } - -} diff --git a/core-java-8/src/test/java/com/baeldung/enums/PizzaTest.java b/core-java-8/src/test/java/com/baeldung/enums/PizzaTest.java deleted file mode 100644 index deeebaa240..0000000000 --- a/core-java-8/src/test/java/com/baeldung/enums/PizzaTest.java +++ /dev/null @@ -1,80 +0,0 @@ -package com.baeldung.enums; - - -import org.junit.Test; - -import java.util.ArrayList; -import java.util.EnumMap; -import java.util.List; - -import static junit.framework.TestCase.assertTrue; - -public class PizzaTest { - - @Test - public void givenPizaOrder_whenReady_thenDeliverable() { - Pizza testPz = new Pizza(); - testPz.setStatus(Pizza.PizzaStatusEnum.READY); - assertTrue(testPz.isDeliverable()); - } - - @Test - public void givenPizaOrders_whenRetrievingUnDeliveredPzs_thenCorrectlyRetrieved() { - List pzList = new ArrayList<>(); - Pizza pz1 = new Pizza(); - pz1.setStatus(Pizza.PizzaStatusEnum.DELIVERED); - - Pizza pz2 = new Pizza(); - pz2.setStatus(Pizza.PizzaStatusEnum.ORDERED); - - Pizza pz3 = new Pizza(); - pz3.setStatus(Pizza.PizzaStatusEnum.ORDERED); - - Pizza pz4 = new Pizza(); - pz4.setStatus(Pizza.PizzaStatusEnum.READY); - - pzList.add(pz1); - pzList.add(pz2); - pzList.add(pz3); - pzList.add(pz4); - - List undeliveredPzs = Pizza.getAllUndeliveredPizzas(pzList); - assertTrue(undeliveredPzs.size() == 3); - } - - @Test - public void givenPizaOrders_whenGroupByStatusCalled_thenCorrectlyGrouped() { - - List pzList = new ArrayList<>(); - Pizza pz1 = new Pizza(); - pz1.setStatus(Pizza.PizzaStatusEnum.DELIVERED); - - Pizza pz2 = new Pizza(); - pz2.setStatus(Pizza.PizzaStatusEnum.ORDERED); - - Pizza pz3 = new Pizza(); - pz3.setStatus(Pizza.PizzaStatusEnum.ORDERED); - - Pizza pz4 = new Pizza(); - pz4.setStatus(Pizza.PizzaStatusEnum.READY); - - pzList.add(pz1); - pzList.add(pz2); - pzList.add(pz3); - pzList.add(pz4); - - EnumMap> map = Pizza.groupPizzaByStatus(pzList); - assertTrue(map.get(Pizza.PizzaStatusEnum.DELIVERED).size() == 1); - assertTrue(map.get(Pizza.PizzaStatusEnum.ORDERED).size() == 2); - assertTrue(map.get(Pizza.PizzaStatusEnum.READY).size() == 1); - } - - @Test - public void givenPizaOrder_whenDelivered_thenPizzaGetsDeliveredAndStatusChanges() { - Pizza pz = new Pizza(); - pz.setStatus(Pizza.PizzaStatusEnum.READY); - pz.deliver(); - assertTrue(pz.getStatus() == Pizza.PizzaStatusEnum.DELIVERED); - } - -} diff --git a/core-java-8/src/test/java/com/baeldung/file/FileOperationsTest.java b/core-java-8/src/test/java/com/baeldung/file/FileOperationsTest.java deleted file mode 100644 index e21af9552a..0000000000 --- a/core-java-8/src/test/java/com/baeldung/file/FileOperationsTest.java +++ /dev/null @@ -1,121 +0,0 @@ -package com.baeldung.file; - -import org.apache.commons.io.FileUtils; -import org.hamcrest.CoreMatchers; -import org.hamcrest.Matchers; -import org.junit.Assert; -import org.junit.Test; - -import java.io.BufferedReader; -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.net.URISyntaxException; -import java.net.URL; -import java.net.URLConnection; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.util.stream.Stream; - -public class FileOperationsTest { - - @Test - public void givenFileName_whenUsingClassloader_thenFileData() throws IOException { - String expectedData = "Hello World from fileTest.txt!!!"; - - ClassLoader classLoader = getClass().getClassLoader(); - File file = new File(classLoader.getResource("fileTest.txt").getFile()); - InputStream inputStream = new FileInputStream(file); - String data = readFromInputStream(inputStream); - - Assert.assertEquals(expectedData, data.trim()); - } - - @Test - public void givenFileNameAsAbsolutePath_whenUsingClasspath_thenFileData() throws IOException { - String expectedData = "Hello World from fileTest.txt!!!"; - - Class clazz = FileOperationsTest.class; - InputStream inputStream = clazz.getResourceAsStream("/fileTest.txt"); - String data = readFromInputStream(inputStream); - - Assert.assertEquals(expectedData, data.trim()); - } - - @Test - public void givenFileName_whenUsingJarFile_thenFileData() throws IOException { - String expectedData = "BSD License"; - - Class clazz = Matchers.class; - InputStream inputStream = clazz.getResourceAsStream("/LICENSE.txt"); - String data = readFromInputStream(inputStream); - - Assert.assertThat(data.trim(), CoreMatchers.containsString(expectedData)); - } - - @Test - public void givenURLName_whenUsingURL_thenFileData() throws IOException { - String expectedData = "Baeldung"; - - URL urlObject = new URL("http://www.baeldung.com/"); - - URLConnection urlConnection = urlObject.openConnection(); - - InputStream inputStream = urlConnection.getInputStream(); - String data = readFromInputStream(inputStream); - - Assert.assertThat(data.trim(), CoreMatchers.containsString(expectedData)); - } - - @Test - public void givenFileName_whenUsingFileUtils_thenFileData() throws IOException { - String expectedData = "Hello World from fileTest.txt!!!"; - - ClassLoader classLoader = getClass().getClassLoader(); - File file = new File(classLoader.getResource("fileTest.txt").getFile()); - String data = FileUtils.readFileToString(file); - - Assert.assertEquals(expectedData, data.trim()); - } - - @Test - public void givenFilePath_whenUsingFilesReadAllBytes_thenFileData() throws IOException, URISyntaxException { - String expectedData = "Hello World from fileTest.txt!!!"; - - Path path = Paths.get(getClass().getClassLoader().getResource("fileTest.txt").toURI()); - - byte[] fileBytes = Files.readAllBytes(path); - String data = new String(fileBytes); - - Assert.assertEquals(expectedData, data.trim()); - } - - @Test - public void givenFilePath_whenUsingFilesLines_thenFileData() throws IOException, URISyntaxException { - String expectedData = "Hello World from fileTest.txt!!!"; - - Path path = Paths.get(getClass().getClassLoader().getResource("fileTest.txt").toURI()); - - StringBuilder data = new StringBuilder(); - Stream lines = Files.lines(path); - lines.forEach(line -> data.append(line).append("\n")); - lines.close(); - - Assert.assertEquals(expectedData, data.toString().trim()); - } - - private String readFromInputStream(InputStream inputStream) throws IOException { - StringBuilder resultStringBuilder = new StringBuilder(); - try (BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream))) { - String line; - while ((line = bufferedReader.readLine()) != null) { - resultStringBuilder.append(line).append("\n"); - } - } - - return resultStringBuilder.toString(); - } -} \ No newline at end of file diff --git a/core-java-8/src/test/java/com/baeldung/java8/Java8CollectionCleanupUnitTest.java b/core-java-8/src/test/java/com/baeldung/java8/Java8CollectionCleanupUnitTest.java deleted file mode 100644 index ef4b80c6e8..0000000000 --- a/core-java-8/src/test/java/com/baeldung/java8/Java8CollectionCleanupUnitTest.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.baeldung.java8; - -import com.google.common.collect.Lists; -import org.junit.Test; - -import java.util.List; -import java.util.stream.Collectors; - -import static org.hamcrest.Matchers.hasSize; -import static org.junit.Assert.assertThat; - -public class Java8CollectionCleanupUnitTest { - - // tests - - - @Test - public void givenListContainsNulls_whenFilteringParallel_thenCorrect() { - final List list = Lists.newArrayList(null, 1, 2, null, 3, null); - final List listWithoutNulls = list.parallelStream().filter(i -> i != null).collect(Collectors.toList()); - - assertThat(listWithoutNulls, hasSize(3)); - } - - @Test - public void givenListContainsNulls_whenFilteringSerial_thenCorrect() { - final List list = Lists.newArrayList(null, 1, 2, null, 3, null); - final List listWithoutNulls = list.stream().filter(i -> i != null).collect(Collectors.toList()); - - assertThat(listWithoutNulls, hasSize(3)); - } - - @Test - public void givenListContainsNulls_whenRemovingNullsWithRemoveIf_thenCorrect() { - final List listWithoutNulls = Lists.newArrayList(null, 1, 2, null, 3, null); - listWithoutNulls.removeIf(p -> p == null); - - assertThat(listWithoutNulls, hasSize(3)); - } - - @Test - public void givenListContainsDuplicates_whenRemovingDuplicatesWithJava8_thenCorrect() { - final List listWithDuplicates = Lists.newArrayList(1, 1, 2, 2, 3, 3); - final List listWithoutDuplicates = listWithDuplicates.parallelStream().distinct().collect(Collectors.toList()); - - assertThat(listWithoutDuplicates, hasSize(3)); - } - -} diff --git a/core-java-8/src/test/java/com/baeldung/java8/Java8DefaultStaticIntefaceMethodsTest.java b/core-java-8/src/test/java/com/baeldung/java8/Java8DefaultStaticIntefaceMethodsTest.java deleted file mode 100644 index 21a5e34b9b..0000000000 --- a/core-java-8/src/test/java/com/baeldung/java8/Java8DefaultStaticIntefaceMethodsTest.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.baeldung.java8; - -import com.baeldung.java_8_features.Vehicle; -import com.baeldung.java_8_features.VehicleImpl; -import org.junit.Test; - -import static org.junit.Assert.assertEquals; - -public class Java8DefaultStaticIntefaceMethodsTest { - - @Test - public void callStaticInterfaceMethdosMethods_whenExpectedResults_thenCorrect() { - Vehicle vehicle = new VehicleImpl(); - String overview = vehicle.getOverview(); - long[] startPosition = vehicle.startPosition(); - - assertEquals(overview, "ATV made by N&F Vehicles"); - assertEquals(startPosition[0], 23); - assertEquals(startPosition[1], 15); - } - - @Test - public void callDefaultInterfaceMethods_whenExpectedResults_thenCorrect() { - String producer = Vehicle.producer(); - assertEquals(producer, "N&F Vehicles"); - } -} diff --git a/core-java-8/src/test/java/com/baeldung/java8/Java8ExecutorServiceTest.java b/core-java-8/src/test/java/com/baeldung/java8/Java8ExecutorServiceTest.java deleted file mode 100644 index 581ccec182..0000000000 --- a/core-java-8/src/test/java/com/baeldung/java8/Java8ExecutorServiceTest.java +++ /dev/null @@ -1,156 +0,0 @@ -package com.baeldung.java8; - - -import org.junit.Before; -import org.junit.Test; - -import java.util.ArrayList; -import java.util.List; -import java.util.concurrent.*; - -import static org.junit.Assert.*; - - -public class Java8ExecutorServiceTest { - - private Runnable runnableTask; - private Callable callableTask; - private List> callableTasks; - - @Before - public void init() { - - runnableTask = () -> { - try { - TimeUnit.MILLISECONDS.sleep(300); - } catch (InterruptedException e) { - e.printStackTrace(); - } - }; - - callableTask = () -> { - TimeUnit.MILLISECONDS.sleep(300); - return "Task's execution"; - }; - - callableTasks = new ArrayList<>(); - callableTasks.add(callableTask); - callableTasks.add(callableTask); - callableTasks.add(callableTask); - } - - @Test - public void creationSubmittingTaskShuttingDown_whenShutDown_thenCorrect() { - - ExecutorService executorService = Executors.newFixedThreadPool(10); - executorService.submit(runnableTask); - executorService.submit(callableTask); - executorService.shutdown(); - - assertTrue(executorService.isShutdown()); - } - - @Test - public void creationSubmittingTasksShuttingDownNow_whenShutDownAfterAwating_thenCorrect() { - - ExecutorService threadPoolExecutor = - new ThreadPoolExecutor(1, 1, 0L, TimeUnit.MILLISECONDS, - new LinkedBlockingQueue<>()); - - for (int i = 0; i < 100; i++) { - threadPoolExecutor.submit(callableTask); - } - - List notExecutedTasks = smartShutdown(threadPoolExecutor); - - assertTrue(threadPoolExecutor.isShutdown()); - assertFalse(notExecutedTasks.isEmpty()); - assertTrue(notExecutedTasks.size() > 0 && notExecutedTasks.size() < 98); - } - - private List smartShutdown(ExecutorService executorService) { - - List notExecutedTasks = new ArrayList<>(); - executorService.shutdown(); - try { - if (!executorService.awaitTermination(800, TimeUnit.MILLISECONDS)) { - notExecutedTasks = executorService.shutdownNow(); - } - } catch (InterruptedException e) { - notExecutedTasks = executorService.shutdownNow(); - } - return notExecutedTasks; - } - - @Test - public void submittingTasks_whenExecutedOneAndAll_thenCorrect() { - - ExecutorService executorService = Executors.newFixedThreadPool(10); - - String result = null; - List> futures = new ArrayList<>(); - try { - result = executorService.invokeAny(callableTasks); - futures = executorService.invokeAll(callableTasks); - } catch (InterruptedException | ExecutionException e) { - e.printStackTrace(); - } - - assertEquals("Task's execution", result); - assertTrue(futures.size() == 3); - } - - @Test - public void submittingTaskShuttingDown_whenGetExpectedResult_thenCorrect() { - - ExecutorService executorService = Executors.newFixedThreadPool(10); - - Future future = executorService.submit(callableTask); - String result = null; - try { - result = future.get(); - result = future.get(200, TimeUnit.MILLISECONDS); - } catch (InterruptedException | ExecutionException | TimeoutException e) { - e.printStackTrace(); - } - - executorService.shutdown(); - - assertEquals("Task's execution", result); - } - - @Test - public void submittingTask_whenCanceled_thenCorrect() { - - ExecutorService executorService = Executors.newFixedThreadPool(10); - - Future future = executorService.submit(callableTask); - - boolean canceled = future.cancel(true); - boolean isCancelled = future.isCancelled(); - - executorService.shutdown(); - - assertTrue(canceled); - assertTrue(isCancelled); - } - - @Test - public void submittingTaskScheduling_whenExecuted_thenCorrect() { - - ScheduledExecutorService executorService = Executors - .newSingleThreadScheduledExecutor(); - - Future resultFuture = executorService.schedule(callableTask, 1, TimeUnit.SECONDS); - String result = null; - try { - result = resultFuture.get(); - } catch (InterruptedException | ExecutionException e) { - e.printStackTrace(); - } - - executorService.shutdown(); - - assertEquals("Task's execution", result); - } -} diff --git a/core-java-8/src/test/java/com/baeldung/java8/Java8ForkJoinTest.java b/core-java-8/src/test/java/com/baeldung/java8/Java8ForkJoinTest.java deleted file mode 100644 index 273b2d78db..0000000000 --- a/core-java-8/src/test/java/com/baeldung/java8/Java8ForkJoinTest.java +++ /dev/null @@ -1,100 +0,0 @@ -package com.baeldung.java8; - - -import com.baeldung.forkjoin.CustomRecursiveAction; -import com.baeldung.forkjoin.CustomRecursiveTask; -import com.baeldung.forkjoin.util.PoolUtil; -import org.junit.Before; -import org.junit.Test; - -import java.util.Random; -import java.util.concurrent.ForkJoinPool; - -import static org.junit.Assert.*; - -public class Java8ForkJoinTest { - - private int[] arr; - private CustomRecursiveTask customRecursiveTask; - - @Before - public void init() { - Random random = new Random(); - arr = new int[50]; - for (int i = 0; i < arr.length; i++) { - arr[i] = random.nextInt(35); - } - customRecursiveTask = new CustomRecursiveTask(arr); - } - - - @Test - public void callPoolUtil_whenExistsAndExpectedType_thenCorrect() { - - ForkJoinPool forkJoinPool = PoolUtil.forkJoinPool; - ForkJoinPool forkJoinPoolTwo = PoolUtil.forkJoinPool; - - assertNotNull(forkJoinPool); - assertEquals(2, forkJoinPool.getParallelism()); - assertEquals(forkJoinPool, forkJoinPoolTwo); - - } - - @Test - public void callCommonPool_whenExistsAndExpectedType_thenCorrect() { - - ForkJoinPool commonPool = ForkJoinPool.commonPool(); - ForkJoinPool commonPoolTwo = ForkJoinPool.commonPool(); - - assertNotNull(commonPool); - assertEquals(commonPool, commonPoolTwo); - - } - - @Test - public void executeRecursiveAction_whenExecuted_thenCorrect() { - - CustomRecursiveAction myRecursiveAction = new CustomRecursiveAction("ddddffffgggghhhh"); - ForkJoinPool.commonPool().invoke(myRecursiveAction); - - assertTrue(myRecursiveAction.isDone()); - - } - - @Test - public void executeRecursiveTask_whenExecuted_thenCorrect() { - - ForkJoinPool forkJoinPool = ForkJoinPool.commonPool(); - - forkJoinPool.execute(customRecursiveTask); - int result = customRecursiveTask.join(); - assertTrue(customRecursiveTask.isDone()); - - forkJoinPool.submit(customRecursiveTask); - int resultTwo = customRecursiveTask.join(); - assertTrue(customRecursiveTask.isDone()); - - } - - @Test - public void executeRecursiveTaskWithFJ_whenExecuted_thenCorrect() { - - CustomRecursiveTask customRecursiveTaskFirst = new CustomRecursiveTask(arr); - CustomRecursiveTask customRecursiveTaskSecond = new CustomRecursiveTask(arr); - CustomRecursiveTask customRecursiveTaskLast = new CustomRecursiveTask(arr); - - customRecursiveTaskFirst.fork(); - customRecursiveTaskSecond.fork(); - customRecursiveTaskLast.fork(); - int result = 0; - result += customRecursiveTaskLast.join(); - result += customRecursiveTaskSecond.join(); - result += customRecursiveTaskFirst.join(); - - assertTrue(customRecursiveTaskFirst.isDone()); - assertTrue(customRecursiveTaskSecond.isDone()); - assertTrue(customRecursiveTaskLast.isDone()); - assertTrue(result != 0); - - } -} diff --git a/core-java-8/src/test/java/com/baeldung/java8/Java8FunctionalInteracesLambdasTest.java b/core-java-8/src/test/java/com/baeldung/java8/Java8FunctionalInteracesLambdasTest.java deleted file mode 100644 index faaf3ae407..0000000000 --- a/core-java-8/src/test/java/com/baeldung/java8/Java8FunctionalInteracesLambdasTest.java +++ /dev/null @@ -1,94 +0,0 @@ -package com.baeldung.java8; - -import com.baeldung.Foo; -import com.baeldung.FooExtended; -import com.baeldung.UseFoo; -import org.junit.Before; -import org.junit.Test; - -import java.util.function.Function; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotEquals; - -public class Java8FunctionalInteracesLambdasTest { - - private UseFoo useFoo; - - @Before - public void init() { - useFoo = new UseFoo(); - } - - @Test - public void functionalInterfaceInstantiation_whenReturnDefiniteString_thenCorrect() { - final Foo foo = parameter -> parameter + "from lambda"; - final String result = useFoo.add("Message ", foo); - - assertEquals("Message from lambda", result); - } - - @Test - public void standardFIParameter_whenReturnDefiniteString_thenCorrect() { - final Function fn = parameter -> parameter + "from lambda"; - final String result = useFoo.addWithStandardFI("Message ", fn); - - assertEquals("Message from lambda", result); - } - - @Test - public void defaultMethodFromExtendedInterface_whenReturnDefiniteString_thenCorrect() { - final FooExtended fooExtended = string -> string; - final String result = fooExtended.defaultMethod(); - - assertEquals("String from Bar", result); - } - - @Test - public void lambdaAndInnerClassInstantiation_whenReturnSameString_thenCorrect() { - final Foo foo = parameter -> parameter + "from Foo"; - - final Foo fooByIC = new Foo() { - @Override - public String method(final String string) { - return string + "from Foo"; - } - }; - - assertEquals(foo.method("Something "), fooByIC.method("Something ")); - } - - @Test - public void accessVariablesFromDifferentScopes_whenReturnPredefinedString_thenCorrect() { - assertEquals("Results: resultIC = Inner class value, resultLambda = Enclosing scope value", useFoo.scopeExperiment()); - } - - @Test - public void shorteningLambdas_whenReturnEqualsResults_thenCorrect() { - final Foo foo = parameter -> buildString(parameter); - - final Foo fooHuge = parameter -> { - final String result = "Something " + parameter; - // many lines of code - return result; - }; - - assertEquals(foo.method("Something"), fooHuge.method("Something")); - } - - private String buildString(final String parameter) { - final String result = "Something " + parameter; - // many lines of code - return result; - } - - @Test - public void mutatingOfEffectivelyFinalVariable_whenNotEquals_thenCorrect() { - final int[] total = new int[1]; - final Runnable r = () -> total[0]++; - r.run(); - - assertNotEquals(0, total[0]); - } - -} diff --git a/core-java-8/src/test/java/com/baeldung/java8/Java8MethodReferenceTest.java b/core-java-8/src/test/java/com/baeldung/java8/Java8MethodReferenceTest.java deleted file mode 100644 index d9d88c5052..0000000000 --- a/core-java-8/src/test/java/com/baeldung/java8/Java8MethodReferenceTest.java +++ /dev/null @@ -1,67 +0,0 @@ -package com.baeldung.java8; - -import com.baeldung.java_8_features.User; -import org.junit.Before; -import org.junit.Test; - -import java.util.ArrayList; -import java.util.List; -import java.util.stream.Collectors; -import java.util.stream.Stream; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; - -public class Java8MethodReferenceTest { - - private List list; - - @Before - public void init() { - list = new ArrayList<>(); - list.add("One"); - list.add("OneAndOnly"); - list.add("Derek"); - list.add("Change"); - list.add("factory"); - list.add("justBefore"); - list.add("Italy"); - list.add("Italy"); - list.add("Thursday"); - list.add(""); - list.add(""); - } - - @Test - public void checkStaticMethodReferences_whenWork_thenCorrect() { - - List users = new ArrayList<>(); - users.add(new User()); - users.add(new User()); - boolean isReal = users.stream().anyMatch(u -> User.isRealUser(u)); - boolean isRealRef = users.stream().anyMatch(User::isRealUser); - assertTrue(isReal); - assertTrue(isRealRef); - } - - @Test - public void checkInstanceMethodReferences_whenWork_thenCorrect() { - User user = new User(); - boolean isLegalName = list.stream().anyMatch(user::isLegalName); - assertTrue(isLegalName); - } - - @Test - public void checkParticularTypeReferences_whenWork_thenCorrect() { - long count = list.stream().filter(String::isEmpty).count(); - assertEquals(count, 2); - } - - @Test - public void checkConstructorReferences_whenWork_thenCorrect() { - Stream stream = list.stream().map(User::new); - List userList = stream.collect(Collectors.toList()); - assertEquals(userList.size(), list.size()); - assertTrue(userList.get(0) instanceof User); - } -} diff --git a/core-java-8/src/test/java/com/baeldung/java8/Java8OptionalTest.java b/core-java-8/src/test/java/com/baeldung/java8/Java8OptionalTest.java deleted file mode 100644 index 26de39bc0e..0000000000 --- a/core-java-8/src/test/java/com/baeldung/java8/Java8OptionalTest.java +++ /dev/null @@ -1,118 +0,0 @@ -package com.baeldung.java8; - -import com.baeldung.java_8_features.*; -import org.junit.Before; -import org.junit.Test; - -import java.util.ArrayList; -import java.util.List; -import java.util.Optional; - -import static org.junit.Assert.*; - -public class Java8OptionalTest { - - private List list; - - @Before - public void init() { - list = new ArrayList<>(); - list.add("One"); - list.add("OneAndOnly"); - list.add("Derek"); - list.add("Change"); - list.add("factory"); - list.add("justBefore"); - list.add("Italy"); - list.add("Italy"); - list.add("Thursday"); - list.add(""); - list.add(""); - } - - @Test - public void checkOptional_whenAsExpected_thenCorrect() { - - Optional optionalEmpty = Optional.empty(); - assertFalse(optionalEmpty.isPresent()); - - String str = "value"; - Optional optional = Optional.of(str); - assertEquals(optional.get(), "value"); - - Optional optionalNullable = Optional.ofNullable(str); - Optional optionalNull = Optional.ofNullable(null); - assertEquals(optionalNullable.get(), "value"); - assertFalse(optionalNull.isPresent()); - - List listOpt = Optional.of(list).orElse(new ArrayList<>()); - List listNull = null; - List listOptNull = Optional.ofNullable(listNull).orElse(new ArrayList<>()); - assertTrue(listOpt == list); - assertTrue(listOptNull.isEmpty()); - - Optional user = Optional.ofNullable(getUser()); - String result = user.map(User::getAddress) - .map(Address::getStreet) - .orElse("not specified"); - assertEquals(result, "1st Avenue"); - - Optional optionalUser = Optional.ofNullable(getOptionalUser()); - String resultOpt = optionalUser.flatMap(OptionalUser::getAddress) - .flatMap(OptionalAddress::getStreet) - .orElse("not specified"); - assertEquals(resultOpt, "1st Avenue"); - - Optional userNull = Optional.ofNullable(getUserNull()); - String resultNull = userNull.map(User::getAddress) - .map(Address::getStreet) - .orElse("not specified"); - assertEquals(resultNull, "not specified"); - - Optional optionalUserNull = Optional.ofNullable(getOptionalUserNull()); - String resultOptNull = optionalUserNull.flatMap(OptionalUser::getAddress) - .flatMap(OptionalAddress::getStreet) - .orElse("not specified"); - assertEquals(resultOptNull, "not specified"); - - } - - @Test(expected = CustomException.class) - public void callMethod_whenCustomException_thenCorrect() { - User user = new User(); - String result = user.getOrThrow(); - } - - private User getUser() { - User user = new User(); - Address address = new Address(); - address.setStreet("1st Avenue"); - user.setAddress(address); - return user; - } - - private OptionalUser getOptionalUser() { - OptionalUser user = new OptionalUser(); - OptionalAddress address = new OptionalAddress(); - address.setStreet("1st Avenue"); - user.setAddress(address); - return user; - } - - private OptionalUser getOptionalUserNull() { - OptionalUser user = new OptionalUser(); - OptionalAddress address = new OptionalAddress(); - address.setStreet(null); - user.setAddress(address); - return user; - } - - private User getUserNull() { - User user = new User(); - Address address = new Address(); - address.setStreet(null); - user.setAddress(address); - return user; - } - -} diff --git a/core-java-8/src/test/java/com/baeldung/java8/Java8SortUnitTest.java b/core-java-8/src/test/java/com/baeldung/java8/Java8SortUnitTest.java deleted file mode 100644 index f371c0d7da..0000000000 --- a/core-java-8/src/test/java/com/baeldung/java8/Java8SortUnitTest.java +++ /dev/null @@ -1,115 +0,0 @@ -package com.baeldung.java8; - -import com.baeldung.java8.entity.Human; -import com.google.common.collect.Lists; -import com.google.common.primitives.Ints; -import org.junit.Assert; -import org.junit.Test; - -import java.util.Collections; -import java.util.Comparator; -import java.util.List; - -import static org.hamcrest.Matchers.equalTo; - -public class Java8SortUnitTest { - - // tests - - - @Test - public final void givenPreLambda_whenSortingEntitiesByName_thenCorrectlySorted() { - final List humans = Lists.newArrayList(new Human("Sarah", 10), new Human("Jack", 12)); - - Collections.sort(humans, new Comparator() { - @Override - public final int compare(final Human h1, final Human h2) { - return h1.getName().compareTo(h2.getName()); - } - }); - - Assert.assertThat(humans.get(0), equalTo(new Human("Jack", 12))); - } - - @Test - public final void whenSortingEntitiesByName_thenCorrectlySorted() { - final List humans = Lists.newArrayList(new Human("Sarah", 10), new Human("Jack", 12)); - - humans.sort((final Human h1, final Human h2) -> h1.getName().compareTo(h2.getName())); - - Assert.assertThat(humans.get(0), equalTo(new Human("Jack", 12))); - } - - @Test - public final void givenLambdaShortForm_whenSortingEntitiesByName_thenCorrectlySorted() { - final List humans = Lists.newArrayList(new Human("Sarah", 10), new Human("Jack", 12)); - - humans.sort((h1, h2) -> h1.getName().compareTo(h2.getName())); - - Assert.assertThat(humans.get(0), equalTo(new Human("Jack", 12))); - } - - @Test - public final void whenSortingEntitiesByNameThenAge_thenCorrectlySorted() { - final List humans = Lists.newArrayList(new Human("Sarah", 12), new Human("Sarah", 10), new Human("Zack", 12)); - humans.sort((lhs, rhs) -> { - if (lhs.getName().equals(rhs.getName())) { - return lhs.getAge() - rhs.getAge(); - } else { - return lhs.getName().compareTo(rhs.getName()); - } - }); - Assert.assertThat(humans.get(0), equalTo(new Human("Sarah", 10))); - } - - @Test - public final void givenCompositionVerbose_whenSortingEntitiesByNameThenAge_thenCorrectlySorted() { - final List humans = Lists.newArrayList(new Human("Sarah", 12), new Human("Sarah", 10), new Human("Zack", 12)); - final Comparator byName = (h1, h2) -> h1.getName().compareTo(h2.getName()); - final Comparator byAge = (h1, h2) -> Ints.compare(h1.getAge(), h2.getAge()); - - humans.sort(byName.thenComparing(byAge)); - Assert.assertThat(humans.get(0), equalTo(new Human("Sarah", 10))); - } - - @Test - public final void givenComposition_whenSortingEntitiesByNameThenAge_thenCorrectlySorted() { - final List humans = Lists.newArrayList(new Human("Sarah", 12), new Human("Sarah", 10), new Human("Zack", 12)); - - humans.sort(Comparator.comparing(Human::getName).thenComparing(Human::getAge)); - Assert.assertThat(humans.get(0), equalTo(new Human("Sarah", 10))); - } - - @Test - public final void whenSortingEntitiesByAge_thenCorrectlySorted() { - final List humans = Lists.newArrayList(new Human("Sarah", 10), new Human("Jack", 12)); - - humans.sort((h1, h2) -> Ints.compare(h1.getAge(), h2.getAge())); - Assert.assertThat(humans.get(0), equalTo(new Human("Sarah", 10))); - } - - @Test - public final void whenSortingEntitiesByNameReversed_thenCorrectlySorted() { - final List humans = Lists.newArrayList(new Human("Sarah", 10), new Human("Jack", 12)); - final Comparator comparator = (h1, h2) -> h1.getName().compareTo(h2.getName()); - - humans.sort(comparator.reversed()); - Assert.assertThat(humans.get(0), equalTo(new Human("Sarah", 10))); - } - - @Test - public final void givenMethodDefinition_whenSortingEntitiesByNameThenAge_thenCorrectlySorted() { - final List humans = Lists.newArrayList(new Human("Sarah", 10), new Human("Jack", 12)); - - humans.sort(Human::compareByNameThenAge); - Assert.assertThat(humans.get(0), equalTo(new Human("Jack", 12))); - } - - @Test - public final void givenInstanceMethod_whenSortingEntitiesByName_thenCorrectlySorted() { - final List humans = Lists.newArrayList(new Human("Sarah", 10), new Human("Jack", 12)); - - humans.sort(Comparator.comparing(Human::getName)); - Assert.assertThat(humans.get(0), equalTo(new Human("Jack", 12))); - } - -} diff --git a/core-java-8/src/test/java/com/baeldung/java8/Java8StreamApiTest.java b/core-java-8/src/test/java/com/baeldung/java8/Java8StreamApiTest.java deleted file mode 100644 index 37326c6d26..0000000000 --- a/core-java-8/src/test/java/com/baeldung/java8/Java8StreamApiTest.java +++ /dev/null @@ -1,263 +0,0 @@ -package com.baeldung.java8; - -import com.baeldung.streamApi.Product; -import org.junit.Before; -import org.junit.Test; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.io.BufferedWriter; -import java.io.IOException; -import java.nio.charset.Charset; -import java.nio.file.Files; -import java.nio.file.Path; -import java.util.*; -import java.util.regex.Pattern; -import java.util.stream.*; - -import static org.junit.Assert.*; - -public class Java8StreamApiTest { - - private long counter; - - private static Logger log = LoggerFactory.getLogger(Java8StreamApiTest.class); - - private List productList; - - @Before - public void init() { - productList = Arrays.asList( - new Product(23, "potatoes"), new Product(14, "orange"), - new Product(13, "lemon"), new Product(23, "bread"), - new Product(13, "sugar")); - } - - @Test - public void checkPipeline_whenStreamOneElementShorter_thenCorrect() { - - List list = Arrays.asList("abc1", "abc2", "abc3"); - long size = list.stream().skip(1) - .map(element -> element.substring(0, 3)).count(); - assertEquals(list.size() - 1, size); - } - - @Test - public void checkOrder_whenChangeQuantityOfMethodCalls_thenCorrect() { - - List list = Arrays.asList("abc1", "abc2", "abc3"); - - counter = 0; - long sizeFirst = list.stream() - .skip(2).map(element -> { - wasCalled(); - return element.substring(0, 3); - }).count(); - assertEquals(1, counter); - - counter = 0; - long sizeSecond = list.stream().map(element -> { - wasCalled(); - return element.substring(0, 3); - }).skip(2).count(); - assertEquals(3, counter); - } - - @Test - public void createEmptyStream_whenEmpty_thenCorrect() { - - Stream streamEmpty = Stream.empty(); - assertEquals(0, streamEmpty.count()); - - List names = Collections.emptyList(); - Stream streamOf = Product.streamOf(names); - assertTrue(streamOf.count() == 0); - } - - @Test - public void createStream_whenCreated_thenCorrect() { - - Collection collection = Arrays.asList("a", "b", "c"); - Stream streamOfCollection = collection.stream(); - assertEquals(3, streamOfCollection.count()); - - Stream streamOfArray = Stream.of("a", "b", "c"); - assertEquals(3, streamOfArray.count()); - - String[] arr = new String[]{"a", "b", "c"}; - Stream streamOfArrayPart = Arrays.stream(arr, 1, 3); - assertEquals(2, streamOfArrayPart.count()); - - IntStream intStream = IntStream.range(1, 3); - LongStream longStream = LongStream.rangeClosed(1, 3); - Random random = new Random(); - DoubleStream doubleStream = random.doubles(3); - assertEquals(2, intStream.count()); - assertEquals(3, longStream.count()); - assertEquals(3, doubleStream.count()); - - IntStream streamOfChars = "abc".chars(); - IntStream str = "".chars(); - assertEquals(3, streamOfChars.count()); - - Stream streamOfString = Pattern.compile(", ").splitAsStream("a, b, c"); - assertEquals("a", streamOfString.findFirst().get()); - - Path path = getPath(); - Stream streamOfStrings = null; - try { - streamOfStrings = Files.lines(path, Charset.forName("UTF-8")); - } catch (IOException e) { - log.error("Error creating streams from paths {}", path, e.getMessage(), e); - } - assertEquals("a", streamOfStrings.findFirst().get()); - - Stream streamBuilder = Stream.builder().add("a").add("b").add("c").build(); - assertEquals(3, streamBuilder.count()); - - Stream streamGenerated = Stream.generate(() -> "element").limit(10); - assertEquals(10, streamGenerated.count()); - - Stream streamIterated = Stream.iterate(40, n -> n + 2).limit(20); - assertTrue(40 <= streamIterated.findAny().get()); - } - - @Test - public void runStreamPipeline_whenOrderIsRight_thenCorrect() { - - List list = Arrays.asList("abc1", "abc2", "abc3"); - Optional stream = list.stream() - .filter(element -> { - log.info("filter() was called"); - return element.contains("2"); - }).map(element -> { - log.info("map() was called"); - return element.toUpperCase(); - }).findFirst(); - } - - @Test - public void reduce_whenExpected_thenCorrect() { - - OptionalInt reduced = IntStream.range(1, 4).reduce((a, b) -> a + b); - assertEquals(6, reduced.getAsInt()); - - int reducedTwoParams = IntStream.range(1, 4).reduce(10, (a, b) -> a + b); - assertEquals(16, reducedTwoParams); - - int reducedThreeParams = Stream.of(1, 2, 3) - .reduce(10, (a, b) -> a + b, (a, b) -> { - log.info("combiner was called"); - return a + b; - }); - assertEquals(16, reducedThreeParams); - - int reducedThreeParamsParallel = Arrays.asList(1, 2, 3).parallelStream() - .reduce(10, (a, b) -> a + b, (a, b) -> { - log.info("combiner was called"); - return a + b; - }); - assertEquals(36, reducedThreeParamsParallel); - } - - @Test - public void collecting_whenAsExpected_thenCorrect() { - - List collectorCollection = productList.stream() - .map(Product::getName).collect(Collectors.toList()); - - assertTrue(collectorCollection instanceof List); - assertEquals(5, collectorCollection.size()); - - String listToString = productList.stream().map(Product::getName) - .collect(Collectors.joining(", ", "[", "]")); - - assertTrue(listToString.contains(",") && listToString.contains("[") && listToString.contains("]")); - - double averagePrice = productList.stream().collect(Collectors.averagingInt(Product::getPrice)); - assertTrue(17.2 == averagePrice); - - int summingPrice = productList.stream().collect(Collectors.summingInt(Product::getPrice)); - assertEquals(86, summingPrice); - - IntSummaryStatistics statistics = productList.stream() - .collect(Collectors.summarizingInt(Product::getPrice)); - assertEquals(23, statistics.getMax()); - - Map> collectorMapOfLists = productList.stream() - .collect(Collectors.groupingBy(Product::getPrice)); - assertEquals(3, collectorMapOfLists.keySet().size()); - - Map> mapPartioned = productList.stream() - .collect(Collectors.partitioningBy(element -> element.getPrice() > 15)); - assertEquals(2, mapPartioned.keySet().size()); - - } - - @Test(expected = UnsupportedOperationException.class) - public void collect_whenThrows_thenCorrect() { - Set unmodifiableSet = productList.stream() - .collect(Collectors.collectingAndThen(Collectors.toSet(), - Collections::unmodifiableSet)); - unmodifiableSet.add(new Product(4, "tea")); - } - - @Test - public void customCollector_whenResultContainsAllElementsFrSource_thenCorrect() { - Collector> toLinkedList = - Collector.of(LinkedList::new, LinkedList::add, - (first, second) -> { - first.addAll(second); - return first; - }); - - LinkedList linkedListOfPersons = productList.stream().collect(toLinkedList); - assertTrue(linkedListOfPersons.containsAll(productList)); - } - - @Test - public void parallelStream_whenWorks_thenCorrect() { - Stream streamOfCollection = productList.parallelStream(); - boolean isParallel = streamOfCollection.isParallel(); - boolean haveBigPrice = streamOfCollection.map(product -> product.getPrice() * 12) - .anyMatch(price -> price > 200); - assertTrue(isParallel && haveBigPrice); - } - - @Test - public void parallel_whenIsParallel_thenCorrect() { - IntStream intStreamParallel = - IntStream.range(1, 150).parallel().map(element -> element * 34); - boolean isParallel = intStreamParallel.isParallel(); - assertTrue(isParallel); - } - - @Test - public void parallel_whenIsSequential_thenCorrect() { - IntStream intStreamParallel = - IntStream.range(1, 150).parallel().map(element -> element * 34); - IntStream intStreamSequential = intStreamParallel.sequential(); - boolean isParallel = intStreamParallel.isParallel(); - assertFalse(isParallel); - } - - private Path getPath() { - Path path = null; - try { - path = Files.createTempFile(null, ".txt"); - } catch (IOException e) { - log.error(e.getMessage()); - } - - try (BufferedWriter writer = Files.newBufferedWriter(path)) { - writer.write("a\nb\nc"); - } catch (IOException e) { - log.error(e.getMessage()); - } - return path; - } - - private void wasCalled() { - counter++; - } -} diff --git a/core-java-8/src/test/java/com/baeldung/java8/Java8StreamsTest.java b/core-java-8/src/test/java/com/baeldung/java8/Java8StreamsTest.java deleted file mode 100644 index 1f1dda49ce..0000000000 --- a/core-java-8/src/test/java/com/baeldung/java8/Java8StreamsTest.java +++ /dev/null @@ -1,113 +0,0 @@ -package com.baeldung.java8; - -import com.baeldung.java_8_features.Detail; -import org.junit.Before; -import org.junit.Test; - -import java.nio.file.Path; -import java.nio.file.Paths; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.stream.Collectors; -import java.util.stream.Stream; - -import static org.junit.Assert.*; - -public class Java8StreamsTest { - - private List list; - - @Before - public void init() { - list = new ArrayList<>(); - list.add("One"); - list.add("OneAndOnly"); - list.add("Derek"); - list.add("Change"); - list.add("factory"); - list.add("justBefore"); - list.add("Italy"); - list.add("Italy"); - list.add("Thursday"); - list.add(""); - list.add(""); - } - - @Test - public void checkStreamCount_whenCreating_givenDifferentSources() { - String[] arr = new String[]{"a", "b", "c"}; - Stream streamArr = Arrays.stream(arr); - assertEquals(streamArr.count(), 3); - - Stream streamOf = Stream.of("a", "b", "c"); - assertEquals(streamOf.count(), 3); - - long count = list.stream().distinct().count(); - assertEquals(count, 9); - } - - - @Test - public void checkStreamCount_whenOperationFilter_thanCorrect() { - Stream streamFilter = list.stream().filter(element -> element.isEmpty()); - assertEquals(streamFilter.count(), 2); - } - - - @Test - public void checkStreamCount_whenOperationMap_thanCorrect() { - List uris = new ArrayList<>(); - uris.add("C:\\My.txt"); - Stream streamMap = uris.stream().map(uri -> Paths.get(uri)); - assertEquals(streamMap.count(), 1); - - List details = new ArrayList<>(); - details.add(new Detail()); - details.add(new Detail()); - Stream streamFlatMap = details.stream() - .flatMap(detail -> detail.getParts().stream()); - assertEquals(streamFlatMap.count(), 4); - } - - - @Test - public void checkStreamCount_whenOperationMatch_thenCorrect() { - boolean isValid = list.stream().anyMatch(element -> element.contains("h")); - boolean isValidOne = list.stream().allMatch(element -> element.contains("h")); - boolean isValidTwo = list.stream().noneMatch(element -> element.contains("h")); - assertTrue(isValid); - assertFalse(isValidOne); - assertFalse(isValidTwo); - } - - - @Test - public void checkStreamReducedValue_whenOperationReduce_thenCorrect() { - List integers = new ArrayList<>(); - integers.add(1); - integers.add(1); - integers.add(1); - Integer reduced = integers.stream().reduce(23, (a, b) -> a + b); - assertTrue(reduced == 26); - } - - @Test - public void checkStreamContains_whenOperationCollect_thenCorrect() { - List resultList = list.stream() - .map(element -> element.toUpperCase()) - .collect(Collectors.toList()); - assertEquals(resultList.size(), list.size()); - assertTrue(resultList.contains("")); - } - - - @Test - public void checkParallelStream_whenDoWork() { - list.parallelStream().forEach(element -> doWork(element)); - } - - private void doWork(String string) { - assertTrue(true); //just imitate an amount of work - } -} diff --git a/core-java-8/src/test/java/com/baeldung/java8/JavaFolderSizeTest.java b/core-java-8/src/test/java/com/baeldung/java8/JavaFolderSizeTest.java deleted file mode 100644 index f2e7452137..0000000000 --- a/core-java-8/src/test/java/com/baeldung/java8/JavaFolderSizeTest.java +++ /dev/null @@ -1,115 +0,0 @@ -package com.baeldung.java8; - -import org.apache.commons.io.FileUtils; -import org.junit.Before; -import org.junit.Test; - -import java.io.File; -import java.io.IOException; -import java.nio.file.*; -import java.nio.file.attribute.BasicFileAttributes; -import java.text.DecimalFormat; -import java.util.concurrent.atomic.AtomicLong; -import java.util.stream.StreamSupport; - -import static org.junit.Assert.assertEquals; - -public class JavaFolderSizeTest { - - private String path; - - @Before - public void init() { - final String separator = File.separator; - path = String.format("src%stest%sresources", separator, separator); - } - - @Test - public void whenGetFolderSizeRecursive_thenCorrect() { - final long expectedSize = 136; - - final File folder = new File(path); - final long size = getFolderSize(folder); - - assertEquals(expectedSize, size); - } - - @Test - public void whenGetFolderSizeUsingJava7_thenCorrect() throws IOException { - final long expectedSize = 136; - - final AtomicLong size = new AtomicLong(0); - final Path folder = Paths.get(path); - - Files.walkFileTree(folder, new SimpleFileVisitor() { - @Override - public FileVisitResult visitFile(final Path file, final BasicFileAttributes attrs) throws IOException { - size.addAndGet(attrs.size()); - return FileVisitResult.CONTINUE; - } - }); - - assertEquals(expectedSize, size.longValue()); - } - - @Test - public void whenGetFolderSizeUsingJava8_thenCorrect() throws IOException { - final long expectedSize = 136; - - final Path folder = Paths.get(path); - final long size = Files.walk(folder).filter(p -> p.toFile().isFile()).mapToLong(p -> p.toFile().length()).sum(); - - assertEquals(expectedSize, size); - } - - @Test - public void whenGetFolderSizeUsingApacheCommonsIO_thenCorrect() { - final long expectedSize = 136; - - final File folder = new File(path); - final long size = FileUtils.sizeOfDirectory(folder); - - assertEquals(expectedSize, size); - } - - @Test - public void whenGetFolderSizeUsingGuava_thenCorrect() { - final long expectedSize = 136; - - final File folder = new File(path); - - final Iterable files = com.google.common.io.Files.fileTreeTraverser().breadthFirstTraversal(folder); - final long size = StreamSupport.stream(files.spliterator(), false) - .filter(File::isFile) - .mapToLong(File::length).sum(); - - assertEquals(expectedSize, size); - } - - @Test - public void whenGetReadableSize_thenCorrect() { - final File folder = new File(path); - final long size = getFolderSize(folder); - - final String[] units = new String[]{"B", "KB", "MB", "GB", "TB"}; - final int unitIndex = (int) (Math.log10(size) / 3); - final double unitValue = 1 << (unitIndex * 10); - - final String readableSize = new DecimalFormat("#,##0.#").format(size / unitValue) + " " + units[unitIndex]; - assertEquals("136 B", readableSize); - } - - private long getFolderSize(final File folder) { - long length = 0; - final File[] files = folder.listFiles(); - - for (File file : files) { - if (file.isFile()) { - length += file.length(); - } else { - length += getFolderSize(file); - } - } - return length; - } -} \ No newline at end of file diff --git a/core-java-8/src/test/java/com/baeldung/java8/JavaTryWithResourcesTest.java b/core-java-8/src/test/java/com/baeldung/java8/JavaTryWithResourcesTest.java deleted file mode 100644 index 224c4e9d6a..0000000000 --- a/core-java-8/src/test/java/com/baeldung/java8/JavaTryWithResourcesTest.java +++ /dev/null @@ -1,86 +0,0 @@ -package com.baeldung.java8; - -import org.junit.Assert; -import org.junit.Test; - -import java.io.PrintWriter; -import java.io.StringWriter; -import java.util.Date; -import java.util.Scanner; - -public class JavaTryWithResourcesTest { - - private static final String TEST_STRING_HELLO_WORLD = "Hello World"; - private Date resource1Date, resource2Date; - - // tests - - /* Example for using Try_with_resources */ - @Test - public void whenWritingToStringWriter_thenCorrectlyWritten() { - final StringWriter sw = new StringWriter(); - try (PrintWriter pw = new PrintWriter(sw, true)) { - pw.print(TEST_STRING_HELLO_WORLD); - } - - Assert.assertEquals(sw.getBuffer().toString(), TEST_STRING_HELLO_WORLD); - } - - /* Example for using multiple resources */ - @Test - public void givenStringToScanner_whenWritingToStringWriter_thenCorrectlyWritten() { - - final StringWriter sw = new StringWriter(); - try (Scanner sc = new Scanner(TEST_STRING_HELLO_WORLD); PrintWriter pw = new PrintWriter(sw, true)) { - while (sc.hasNext()) { - pw.print(sc.nextLine()); - } - } - - Assert.assertEquals(sw.getBuffer().toString(), TEST_STRING_HELLO_WORLD); - } - - /* Example to show order in which the resources are closed */ - @Test - public void whenFirstAutoClosableResourceIsinitializedFirst_thenFirstAutoClosableResourceIsReleasedFirst() throws Exception { - try (AutoCloseableResourcesFirst af = new AutoCloseableResourcesFirst(); AutoCloseableResourcesSecond as = new AutoCloseableResourcesSecond()) { - af.doSomething(); - as.doSomething(); - } - Assert.assertTrue(resource1Date.after(resource2Date)); - } - - class AutoCloseableResourcesFirst implements AutoCloseable { - public AutoCloseableResourcesFirst() { - System.out.println("Constructor -> AutoCloseableResources_First"); - } - - public void doSomething() { - System.out.println("Something -> AutoCloseableResources_First"); - } - - @Override - public void close() throws Exception { - System.out.println("Closed AutoCloseableResources_First"); - resource1Date = new Date(); - } - } - - class AutoCloseableResourcesSecond implements AutoCloseable { - public AutoCloseableResourcesSecond() { - System.out.println("Constructor -> AutoCloseableResources_Second"); - } - - public void doSomething() { - System.out.println("Something -> AutoCloseableResources_Second"); - } - - @Override - public void close() throws Exception { - System.out.println("Closed AutoCloseableResources_Second"); - resource2Date = new Date(); - Thread.sleep(10000); - } - } - -} diff --git a/core-java-8/src/test/java/com/baeldung/java8/base64/ApacheCommonsEncodeDecodeTest.java b/core-java-8/src/test/java/com/baeldung/java8/base64/ApacheCommonsEncodeDecodeTest.java deleted file mode 100644 index 164a571817..0000000000 --- a/core-java-8/src/test/java/com/baeldung/java8/base64/ApacheCommonsEncodeDecodeTest.java +++ /dev/null @@ -1,56 +0,0 @@ -package com.baeldung.java8.base64; - -import org.apache.commons.codec.binary.Base64; -import org.junit.Test; - -import java.io.UnsupportedEncodingException; - -import static org.junit.Assert.*; - -public class ApacheCommonsEncodeDecodeTest { - - // tests - - @Test - public void whenStringIsEncoded() throws UnsupportedEncodingException { - final String originalInput = "test input"; - final Base64 base64 = new Base64(); - final String encodedString = new String(base64.encode(originalInput.getBytes())); - - assertNotNull(encodedString); - assertNotEquals(originalInput, encodedString); - } - - @Test - public void whenStringIsEncoded_thenStringCanBeDecoded() throws UnsupportedEncodingException { - final String originalInput = "test input"; - final Base64 base64 = new Base64(); - final String encodedString = new String(base64.encode(originalInput.getBytes())); - - final String decodedString = new String(base64.decode(encodedString.getBytes())); - - assertNotNull(decodedString); - assertEquals(originalInput, decodedString); - } - - @Test - public void whenStringIsEncodedUsingStaticMethod() throws UnsupportedEncodingException { - final String originalInput = "test input"; - final String encodedString = new String(Base64.encodeBase64(originalInput.getBytes())); - - assertNotNull(encodedString); - assertNotEquals(originalInput, encodedString); - } - - @Test - public void whenStringIsEncodedUsingStaticMethod_thenStringCanBeDecodedUsingStaticMethod() throws UnsupportedEncodingException { - final String originalInput = "test input"; - final String encodedString = new String(Base64.encodeBase64(originalInput.getBytes())); - - final String decodedString = new String(Base64.decodeBase64(encodedString.getBytes())); - - assertNotNull(decodedString); - assertEquals(originalInput, decodedString); - } - -} diff --git a/core-java-8/src/test/java/com/baeldung/java8/base64/Java8EncodeDecodeTest.java b/core-java-8/src/test/java/com/baeldung/java8/base64/Java8EncodeDecodeTest.java deleted file mode 100644 index 18dccf71ba..0000000000 --- a/core-java-8/src/test/java/com/baeldung/java8/base64/Java8EncodeDecodeTest.java +++ /dev/null @@ -1,109 +0,0 @@ -package com.baeldung.java8.base64; - -import org.junit.Test; - -import java.io.UnsupportedEncodingException; -import java.util.Base64; -import java.util.UUID; - -import static org.junit.Assert.*; - -public class Java8EncodeDecodeTest { - - // tests - - @Test - public void whenStringIsEncoded_thenOk() throws UnsupportedEncodingException { - final String originalInput = "test input"; - final String encodedString = Base64.getEncoder().encodeToString(originalInput.getBytes()); - - assertNotNull(encodedString); - assertNotEquals(originalInput, encodedString); - } - - @Test - public void whenStringIsEncoded_thenStringCanBeDecoded() throws UnsupportedEncodingException { - final String originalInput = "test input"; - final String encodedString = Base64.getEncoder().encodeToString(originalInput.getBytes()); - - final byte[] decodedBytes = Base64.getDecoder().decode(encodedString); - final String decodedString = new String(decodedBytes); - - assertNotNull(decodedString); - assertEquals(originalInput, decodedString); - } - - @Test - public void whenStringIsEncodedWithoutPadding_thenOk() throws UnsupportedEncodingException { - final String originalInput = "test input"; - final String encodedString = Base64.getEncoder().withoutPadding().encodeToString(originalInput.getBytes()); - - assertNotNull(encodedString); - assertNotEquals(originalInput, encodedString); - } - - @Test - public void whenStringIsEncodedWithoutPadding_thenStringCanBeDecoded() throws UnsupportedEncodingException { - final String originalInput = "test input"; - final String encodedString = Base64.getEncoder().withoutPadding().encodeToString(originalInput.getBytes()); - - final byte[] decodedBytes = Base64.getDecoder().decode(encodedString); - final String decodedString = new String(decodedBytes); - - assertNotNull(decodedString); - assertEquals(originalInput, decodedString); - } - - @Test - public void whenUrlIsEncoded_thenOk() throws UnsupportedEncodingException { - final String originalUrl = "https://www.google.co.nz/?gfe_rd=cr&ei=dzbFVf&gws_rd=ssl#q=java"; - final String encodedUrl = Base64.getUrlEncoder().encodeToString(originalUrl.getBytes()); - assertNotNull(encodedUrl); - assertNotEquals(originalUrl, encodedUrl); - } - - @Test - public void whenUrlIsEncoded_thenURLCanBeDecoded() throws UnsupportedEncodingException { - final String originalUrl = "https://www.google.co.nz/?gfe_rd=cr&ei=dzbFVf&gws_rd=ssl#q=java"; - final String encodedUrl = Base64.getUrlEncoder().encodeToString(originalUrl.getBytes()); - - final byte[] decodedBytes = Base64.getUrlDecoder().decode(encodedUrl.getBytes()); - final String decodedUrl = new String(decodedBytes); - - assertNotNull(decodedUrl); - assertEquals(originalUrl, decodedUrl); - } - - @Test - public void whenMimeIsEncoded_thenOk() throws UnsupportedEncodingException { - final StringBuilder buffer = getMimeBuffer(); - - final byte[] forEncode = buffer.toString().getBytes(); - final String encodedMime = Base64.getMimeEncoder().encodeToString(forEncode); - - assertNotNull(encodedMime); - } - - @Test - public void whenMimeIsEncoded_thenItCanBeDecoded() throws UnsupportedEncodingException { - final StringBuilder buffer = getMimeBuffer(); - - final byte[] forEncode = buffer.toString().getBytes(); - final String encodedMime = Base64.getMimeEncoder().encodeToString(forEncode); - - final byte[] decodedBytes = Base64.getMimeDecoder().decode(encodedMime); - final String decodedMime = new String(decodedBytes); - assertNotNull(decodedMime); - } - - // - - private static StringBuilder getMimeBuffer() { - final StringBuilder buffer = new StringBuilder(); - for (int count = 0; count < 10; ++count) { - buffer.append(UUID.randomUUID().toString()); - } - return buffer; - } - -} diff --git a/core-java-8/src/test/java/com/baeldung/java8/entity/Human.java b/core-java-8/src/test/java/com/baeldung/java8/entity/Human.java deleted file mode 100644 index cab8546129..0000000000 --- a/core-java-8/src/test/java/com/baeldung/java8/entity/Human.java +++ /dev/null @@ -1,89 +0,0 @@ -package com.baeldung.java8.entity; - -public class Human { - private String name; - private int age; - - public Human() { - super(); - } - - public Human(final String name, final int age) { - super(); - - this.name = name; - this.age = age; - } - - // API - - public String getName() { - return name; - } - - public void setName(final String name) { - this.name = name; - } - - public int getAge() { - return age; - } - - public void setAge(final int age) { - this.age = age; - } - - // compare - - public static int compareByNameThenAge(final Human lhs, final Human rhs) { - if (lhs.name.equals(rhs.name)) { - return lhs.age - rhs.age; - } else { - return lhs.name.compareTo(rhs.name); - } - } - - // - - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + age; - result = prime * result + ((name == null) ? 0 : name.hashCode()); - return result; - } - - @Override - public boolean equals(final Object obj) { - if (this == obj) { - return true; - } - if (obj == null) { - return false; - } - if (getClass() != obj.getClass()) { - return false; - } - final Human other = (Human) obj; - if (age != other.age) { - return false; - } - if (name == null) { - if (other.name != null) { - return false; - } - } else if (!name.equals(other.name)) { - return false; - } - return true; - } - - @Override - public String toString() { - final StringBuilder builder = new StringBuilder(); - builder.append("Human [name=").append(name).append(", age=").append(age).append("]"); - return builder.toString(); - } - -} diff --git a/core-java-8/src/test/java/com/baeldung/threadpool/CoreThreadPoolTest.java b/core-java-8/src/test/java/com/baeldung/threadpool/CoreThreadPoolTest.java deleted file mode 100644 index df336f4a93..0000000000 --- a/core-java-8/src/test/java/com/baeldung/threadpool/CoreThreadPoolTest.java +++ /dev/null @@ -1,146 +0,0 @@ -package com.baeldung.threadpool; - -import java.util.concurrent.*; -import java.util.concurrent.atomic.AtomicInteger; - -import org.junit.Test; - -import static org.junit.Assert.assertEquals; - -public class CoreThreadPoolTest { - - @Test(timeout = 1000) - public void whenCallingExecuteWithRunnable_thenRunnableIsExecuted() throws InterruptedException { - - CountDownLatch lock = new CountDownLatch(1); - - Executor executor = Executors.newSingleThreadExecutor(); - executor.execute(() -> { - System.out.println("Hello World"); - lock.countDown(); - }); - - lock.await(1000, TimeUnit.MILLISECONDS); - } - - @Test - public void whenUsingExecutorServiceAndFuture_thenCanWaitOnFutureResult() throws InterruptedException, ExecutionException { - - ExecutorService executorService = Executors.newFixedThreadPool(10); - Future future = executorService.submit(() -> "Hello World"); - String result = future.get(); - - assertEquals("Hello World", result); - - } - - @Test - public void whenUsingFixedThreadPool_thenCoreAndMaximumThreadSizeAreTheSame() { - - ThreadPoolExecutor executor = (ThreadPoolExecutor) Executors.newFixedThreadPool(2); - executor.submit(() -> { - Thread.sleep(1000); - return null; - }); - executor.submit(() -> { - Thread.sleep(1000); - return null; - }); - executor.submit(() -> { - Thread.sleep(1000); - return null; - }); - - assertEquals(2, executor.getPoolSize()); - assertEquals(1, executor.getQueue().size()); - - } - - @Test - public void whenUsingCachedThreadPool_thenPoolSizeGrowsUnbounded() { - ThreadPoolExecutor executor = (ThreadPoolExecutor) Executors.newCachedThreadPool(); - executor.submit(() -> { - Thread.sleep(1000); - return null; - }); - executor.submit(() -> { - Thread.sleep(1000); - return null; - }); - executor.submit(() -> { - Thread.sleep(1000); - return null; - }); - - assertEquals(3, executor.getPoolSize()); - assertEquals(0, executor.getQueue().size()); - - } - - @Test(timeout = 1000) - public void whenUsingSingleThreadPool_thenTasksExecuteSequentially() throws InterruptedException { - - CountDownLatch lock = new CountDownLatch(2); - AtomicInteger counter = new AtomicInteger(); - - ExecutorService executor = Executors.newSingleThreadExecutor(); - executor.submit(() -> { - counter.set(1); - lock.countDown(); - }); - executor.submit(() -> { - counter.compareAndSet(1, 2); - lock.countDown(); - }); - - lock.await(1000, TimeUnit.MILLISECONDS); - assertEquals(2, counter.get()); - - } - - @Test(timeout = 1000) - public void whenSchedulingTask_thenTaskExecutesWithinGivenPeriod() throws InterruptedException { - - CountDownLatch lock = new CountDownLatch(1); - - ScheduledExecutorService executor = Executors.newScheduledThreadPool(5); - executor.schedule(() -> { - System.out.println("Hello World"); - lock.countDown(); - }, 500, TimeUnit.MILLISECONDS); - - lock.await(1000, TimeUnit.MILLISECONDS); - - } - - @Test(timeout = 1000) - public void whenSchedulingTaskWithFixedPeriod_thenTaskExecutesMultipleTimes() throws InterruptedException { - - CountDownLatch lock = new CountDownLatch(3); - - ScheduledExecutorService executor = Executors.newScheduledThreadPool(5); - ScheduledFuture future = executor.scheduleAtFixedRate(() -> { - System.out.println("Hello World"); - lock.countDown(); - }, 500, 100, TimeUnit.MILLISECONDS); - - lock.await(); - future.cancel(true); - - } - - @Test - public void whenUsingForkJoinPool_thenSumOfTreeElementsIsCalculatedCorrectly() { - - TreeNode tree = new TreeNode(5, - new TreeNode(3), new TreeNode(2, - new TreeNode(2), new TreeNode(8))); - - ForkJoinPool forkJoinPool = ForkJoinPool.commonPool(); - int sum = forkJoinPool.invoke(new CountingTask(tree)); - - assertEquals(20, sum); - } - - -} diff --git a/core-java-8/src/test/java/com/baeldung/threadpool/GuavaThreadPoolTest.java b/core-java-8/src/test/java/com/baeldung/threadpool/GuavaThreadPoolTest.java deleted file mode 100644 index 92e0f9a8cb..0000000000 --- a/core-java-8/src/test/java/com/baeldung/threadpool/GuavaThreadPoolTest.java +++ /dev/null @@ -1,56 +0,0 @@ -package com.baeldung.threadpool; - -import java.util.concurrent.ExecutionException; -import java.util.concurrent.Executor; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; -import java.util.concurrent.atomic.AtomicBoolean; -import java.util.stream.Collectors; - -import com.google.common.util.concurrent.Futures; -import com.google.common.util.concurrent.ListenableFuture; -import com.google.common.util.concurrent.ListeningExecutorService; -import com.google.common.util.concurrent.MoreExecutors; -import org.junit.Test; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; - -public class GuavaThreadPoolTest { - - @Test - public void whenExecutingTaskWithDirectExecutor_thenTheTaskIsExecutedInTheCurrentThread() { - - Executor executor = MoreExecutors.directExecutor(); - - AtomicBoolean executed = new AtomicBoolean(); - - executor.execute(() -> { - try { - Thread.sleep(500); - } catch (InterruptedException e) { - e.printStackTrace(); - } - executed.set(true); - }); - - assertTrue(executed.get()); - } - - @Test - public void whenJoiningFuturesWithAllAsList_thenCombinedFutureCompletesAfterAllFuturesComplete() throws ExecutionException, InterruptedException { - - ExecutorService executorService = Executors.newCachedThreadPool(); - ListeningExecutorService listeningExecutorService = MoreExecutors.listeningDecorator(executorService); - - ListenableFuture future1 = listeningExecutorService.submit(() -> "Hello"); - ListenableFuture future2 = listeningExecutorService.submit(() -> "World"); - - String greeting = Futures.allAsList(future1, future2).get() - .stream() - .collect(Collectors.joining(" ")); - assertEquals("Hello World", greeting); - - } - -} diff --git a/core-java-8/src/test/java/com/baeldung/util/CurrentDateTimeTest.java b/core-java-8/src/test/java/com/baeldung/util/CurrentDateTimeTest.java deleted file mode 100644 index da9027060e..0000000000 --- a/core-java-8/src/test/java/com/baeldung/util/CurrentDateTimeTest.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.baeldung.util; - -import org.junit.Test; - -import java.time.*; -import java.time.temporal.ChronoField; - -import static org.junit.Assert.assertEquals; - -public class CurrentDateTimeTest { - - private static final Clock clock = Clock.fixed(Instant.parse("2016-10-09T15:10:30.00Z"), ZoneId.of("UTC")); - - @Test - public void shouldReturnCurrentDate() { - - final LocalDate now = LocalDate.now(clock); - - assertEquals(9, now.get(ChronoField.DAY_OF_MONTH)); - assertEquals(10, now.get(ChronoField.MONTH_OF_YEAR)); - assertEquals(2016, now.get(ChronoField.YEAR)); - } - - @Test - public void shouldReturnCurrentTime() { - - final LocalTime now = LocalTime.now(clock); - - assertEquals(15, now.get(ChronoField.HOUR_OF_DAY)); - assertEquals(10, now.get(ChronoField.MINUTE_OF_HOUR)); - assertEquals(30, now.get(ChronoField.SECOND_OF_MINUTE)); - } - - @Test - public void shouldReturnCurrentTimestamp() { - - final Instant now = Instant.now(clock); - - assertEquals(clock.instant().getEpochSecond(), now.getEpochSecond()); - } -} diff --git a/core-java-8/src/test/resources/test.txt b/core-java-8/src/test/resources/test.txt deleted file mode 100644 index 652d70630f..0000000000 --- a/core-java-8/src/test/resources/test.txt +++ /dev/null @@ -1 +0,0 @@ -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse facilisis neque sed turpis venenatis, non dignissim risus volutpat. \ No newline at end of file diff --git a/core-java/README.md b/core-java/README.md index 45071d54ea..628a48a06e 100644 --- a/core-java/README.md +++ b/core-java/README.md @@ -24,4 +24,19 @@ - [Guide to Java 8’s Functional Interfaces](http://www.baeldung.com/java-8-functional-interfaces) - [Convert char to String in Java](http://www.baeldung.com/java-convert-char-to-string) - [Random List Element](http://www.baeldung.com/java-random-list-element) -- [Convert String to int or Integer in Java](http://www.baeldung.com/java-convert-string-to-int-or-integer) \ No newline at end of file +- [Convert String to int or Integer in Java](http://www.baeldung.com/java-convert-string-to-int-or-integer) + +- [Java 8 – Powerful Comparison with Lambdas](http://www.baeldung.com/java-8-sort-lambda) +- [Java – Directory Size](http://www.baeldung.com/java-folder-size) +- [Java – Try with Resources](http://www.baeldung.com/java-try-with-resources) +- [A Guide to the Java ExecutorService](http://www.baeldung.com/java-executor-service-tutorial) +- [Java 8 New Features](http://www.baeldung.com/java-8-new-features) +- [Lambda Expressions and Functional Interfaces: Tips and Best Practices](http://www.baeldung.com/java-8-lambda-expressions-tips) +- [The Double Colon Operator in Java 8](http://www.baeldung.com/java-8-double-colon-operator) +- [Java 8 Streams Advanced](http://www.baeldung.com/java-8-streams) +- [Introduction to Thread Pools in Java](http://www.baeldung.com/thread-pool-java-and-guava) +- [Guide to Java 8 Collectors](http://www.baeldung.com/java-8-collectors) +- [The Java 8 Stream API Tutorial](http://www.baeldung.com/java-8-streams) +- [New Features in Java 8](http://www.baeldung.com/java-8-new-features) +- [Introduction to Java 8 Streams](http://www.baeldung.com/java-8-streams-introduction) +- [Guide to the Fork/Join Framework in Java](http://www.baeldung.com/java-fork-join) \ No newline at end of file diff --git a/core-java-8/src/main/java/.gitignore b/core-java/src/main/java/com/baeldung/.gitignore similarity index 100% rename from core-java-8/src/main/java/.gitignore rename to core-java/src/main/java/com/baeldung/.gitignore diff --git a/core-java-8/src/main/java/com/baeldung/Adder.java b/core-java/src/main/java/com/baeldung/Adder.java similarity index 100% rename from core-java-8/src/main/java/com/baeldung/Adder.java rename to core-java/src/main/java/com/baeldung/Adder.java diff --git a/core-java-8/src/main/java/com/baeldung/AdderImpl.java b/core-java/src/main/java/com/baeldung/AdderImpl.java similarity index 100% rename from core-java-8/src/main/java/com/baeldung/AdderImpl.java rename to core-java/src/main/java/com/baeldung/AdderImpl.java diff --git a/core-java-8/src/main/java/com/baeldung/Bar.java b/core-java/src/main/java/com/baeldung/Bar.java similarity index 100% rename from core-java-8/src/main/java/com/baeldung/Bar.java rename to core-java/src/main/java/com/baeldung/Bar.java diff --git a/core-java-8/src/main/java/com/baeldung/Baz.java b/core-java/src/main/java/com/baeldung/Baz.java similarity index 100% rename from core-java-8/src/main/java/com/baeldung/Baz.java rename to core-java/src/main/java/com/baeldung/Baz.java diff --git a/core-java-8/src/main/java/com/baeldung/Foo.java b/core-java/src/main/java/com/baeldung/Foo.java similarity index 100% rename from core-java-8/src/main/java/com/baeldung/Foo.java rename to core-java/src/main/java/com/baeldung/Foo.java diff --git a/core-java-8/src/main/java/com/baeldung/FooExtended.java b/core-java/src/main/java/com/baeldung/FooExtended.java similarity index 100% rename from core-java-8/src/main/java/com/baeldung/FooExtended.java rename to core-java/src/main/java/com/baeldung/FooExtended.java diff --git a/core-java-8/src/main/java/com/baeldung/UseFoo.java b/core-java/src/main/java/com/baeldung/UseFoo.java similarity index 100% rename from core-java-8/src/main/java/com/baeldung/UseFoo.java rename to core-java/src/main/java/com/baeldung/UseFoo.java diff --git a/core-java-8/src/main/java/com/baeldung/datetime/README.md b/core-java/src/main/java/com/baeldung/datetime/README.md similarity index 100% rename from core-java-8/src/main/java/com/baeldung/datetime/README.md rename to core-java/src/main/java/com/baeldung/datetime/README.md diff --git a/core-java-8/src/main/java/com/baeldung/datetime/UseDuration.java b/core-java/src/main/java/com/baeldung/datetime/UseDuration.java similarity index 100% rename from core-java-8/src/main/java/com/baeldung/datetime/UseDuration.java rename to core-java/src/main/java/com/baeldung/datetime/UseDuration.java diff --git a/core-java-8/src/main/java/com/baeldung/datetime/UseLocalDate.java b/core-java/src/main/java/com/baeldung/datetime/UseLocalDate.java similarity index 100% rename from core-java-8/src/main/java/com/baeldung/datetime/UseLocalDate.java rename to core-java/src/main/java/com/baeldung/datetime/UseLocalDate.java diff --git a/core-java-8/src/main/java/com/baeldung/datetime/UseLocalDateTime.java b/core-java/src/main/java/com/baeldung/datetime/UseLocalDateTime.java similarity index 100% rename from core-java-8/src/main/java/com/baeldung/datetime/UseLocalDateTime.java rename to core-java/src/main/java/com/baeldung/datetime/UseLocalDateTime.java diff --git a/core-java-8/src/main/java/com/baeldung/datetime/UseLocalTime.java b/core-java/src/main/java/com/baeldung/datetime/UseLocalTime.java similarity index 100% rename from core-java-8/src/main/java/com/baeldung/datetime/UseLocalTime.java rename to core-java/src/main/java/com/baeldung/datetime/UseLocalTime.java diff --git a/core-java-8/src/main/java/com/baeldung/datetime/UsePeriod.java b/core-java/src/main/java/com/baeldung/datetime/UsePeriod.java similarity index 100% rename from core-java-8/src/main/java/com/baeldung/datetime/UsePeriod.java rename to core-java/src/main/java/com/baeldung/datetime/UsePeriod.java diff --git a/core-java-8/src/main/java/com/baeldung/datetime/UseToInstant.java b/core-java/src/main/java/com/baeldung/datetime/UseToInstant.java similarity index 100% rename from core-java-8/src/main/java/com/baeldung/datetime/UseToInstant.java rename to core-java/src/main/java/com/baeldung/datetime/UseToInstant.java diff --git a/core-java-8/src/main/java/com/baeldung/datetime/UseZonedDateTime.java b/core-java/src/main/java/com/baeldung/datetime/UseZonedDateTime.java similarity index 100% rename from core-java-8/src/main/java/com/baeldung/datetime/UseZonedDateTime.java rename to core-java/src/main/java/com/baeldung/datetime/UseZonedDateTime.java diff --git a/core-java-8/src/main/java/com/baeldung/doublecolon/Computer.java b/core-java/src/main/java/com/baeldung/doublecolon/Computer.java similarity index 100% rename from core-java-8/src/main/java/com/baeldung/doublecolon/Computer.java rename to core-java/src/main/java/com/baeldung/doublecolon/Computer.java diff --git a/core-java-8/src/main/java/com/baeldung/doublecolon/ComputerUtils.java b/core-java/src/main/java/com/baeldung/doublecolon/ComputerUtils.java similarity index 100% rename from core-java-8/src/main/java/com/baeldung/doublecolon/ComputerUtils.java rename to core-java/src/main/java/com/baeldung/doublecolon/ComputerUtils.java diff --git a/core-java-8/src/main/java/com/baeldung/doublecolon/MacbookPro.java b/core-java/src/main/java/com/baeldung/doublecolon/MacbookPro.java similarity index 100% rename from core-java-8/src/main/java/com/baeldung/doublecolon/MacbookPro.java rename to core-java/src/main/java/com/baeldung/doublecolon/MacbookPro.java diff --git a/core-java-8/src/main/java/com/baeldung/doublecolon/function/ComputerPredicate.java b/core-java/src/main/java/com/baeldung/doublecolon/function/ComputerPredicate.java similarity index 100% rename from core-java-8/src/main/java/com/baeldung/doublecolon/function/ComputerPredicate.java rename to core-java/src/main/java/com/baeldung/doublecolon/function/ComputerPredicate.java diff --git a/core-java-8/src/main/java/com/baeldung/doublecolon/function/TriFunction.java b/core-java/src/main/java/com/baeldung/doublecolon/function/TriFunction.java similarity index 100% rename from core-java-8/src/main/java/com/baeldung/doublecolon/function/TriFunction.java rename to core-java/src/main/java/com/baeldung/doublecolon/function/TriFunction.java diff --git a/core-java/src/main/java/com/baeldung/enums/Pizza.java b/core-java/src/main/java/com/baeldung/enums/Pizza.java index 7742781081..5bc2d9a9eb 100644 --- a/core-java/src/main/java/com/baeldung/enums/Pizza.java +++ b/core-java/src/main/java/com/baeldung/enums/Pizza.java @@ -1,11 +1,5 @@ package com.baeldung.enums; -import com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.databind.ObjectMapper; -import org.apache.commons.collections15.Predicate; - -import java.io.IOException; import java.util.EnumMap; import java.util.EnumSet; import java.util.List; @@ -13,13 +7,12 @@ import java.util.stream.Collectors; public class Pizza { - private static EnumSet undeliveredPizzaStatuses = - EnumSet.of(PizzaStatus.ORDERED, PizzaStatus.READY); + private static EnumSet deliveredPizzaStatuses = + EnumSet.of(PizzaStatusEnum.DELIVERED); - private PizzaStatus status; + private PizzaStatusEnum status; - @JsonFormat(shape = JsonFormat.Shape.OBJECT) - public enum PizzaStatus { + public enum PizzaStatusEnum { ORDERED(5) { @Override public boolean isOrdered() { @@ -53,21 +46,20 @@ public class Pizza { return false; } - @JsonProperty("timeToDelivery") public int getTimeToDelivery() { return timeToDelivery; } - PizzaStatus(int timeToDelivery) { + PizzaStatusEnum(int timeToDelivery) { this.timeToDelivery = timeToDelivery; } } - public PizzaStatus getStatus() { + public PizzaStatusEnum getStatus() { return status; } - public void setStatus(PizzaStatus status) { + public void setStatus(PizzaStatusEnum status) { this.status = status; } @@ -80,31 +72,20 @@ public class Pizza { } public static List getAllUndeliveredPizzas(List input) { - return input.stream().filter( - (s) -> undeliveredPizzaStatuses.contains(s.getStatus())) - .collect(Collectors.toList()); + return input.stream().filter((s) -> !deliveredPizzaStatuses.contains(s.getStatus())).collect(Collectors.toList()); } - public static EnumMap> - groupPizzaByStatus(List pzList) { + public static EnumMap> groupPizzaByStatus(List pzList) { return pzList.stream().collect( Collectors.groupingBy(Pizza::getStatus, - () -> new EnumMap<>(PizzaStatus.class), Collectors.toList())); + () -> new EnumMap<>(PizzaStatusEnum.class), Collectors.toList())); } public void deliver() { if (isDeliverable()) { PizzaDeliverySystemConfiguration.getInstance().getDeliveryStrategy().deliver(this); - this.setStatus(PizzaStatus.DELIVERED); + this.setStatus(PizzaStatusEnum.DELIVERED); } } - public static String getJsonString(Pizza pz) throws IOException { - ObjectMapper mapper = new ObjectMapper(); - return mapper.writerWithDefaultPrettyPrinter().writeValueAsString(pz); - } - - private static Predicate thatAreNotDelivered() { - return entry -> undeliveredPizzaStatuses.contains(entry.getStatus()); - } } \ No newline at end of file diff --git a/core-java/src/main/java/com/baeldung/enums/PizzaDeliverySystemConfiguration.java b/core-java/src/main/java/com/baeldung/enums/PizzaDeliverySystemConfiguration.java index a276b3c000..5ccff5e959 100644 --- a/core-java/src/main/java/com/baeldung/enums/PizzaDeliverySystemConfiguration.java +++ b/core-java/src/main/java/com/baeldung/enums/PizzaDeliverySystemConfiguration.java @@ -1,5 +1,6 @@ package com.baeldung.enums; + public enum PizzaDeliverySystemConfiguration { INSTANCE; diff --git a/core-java-8/src/main/java/com/baeldung/enums/README.md b/core-java/src/main/java/com/baeldung/enums/README.md similarity index 100% rename from core-java-8/src/main/java/com/baeldung/enums/README.md rename to core-java/src/main/java/com/baeldung/enums/README.md diff --git a/core-java-8/src/main/java/com/baeldung/forkjoin/CustomRecursiveAction.java b/core-java/src/main/java/com/baeldung/forkjoin/CustomRecursiveAction.java similarity index 100% rename from core-java-8/src/main/java/com/baeldung/forkjoin/CustomRecursiveAction.java rename to core-java/src/main/java/com/baeldung/forkjoin/CustomRecursiveAction.java diff --git a/core-java-8/src/main/java/com/baeldung/forkjoin/CustomRecursiveTask.java b/core-java/src/main/java/com/baeldung/forkjoin/CustomRecursiveTask.java similarity index 100% rename from core-java-8/src/main/java/com/baeldung/forkjoin/CustomRecursiveTask.java rename to core-java/src/main/java/com/baeldung/forkjoin/CustomRecursiveTask.java diff --git a/core-java-8/src/main/java/com/baeldung/forkjoin/util/PoolUtil.java b/core-java/src/main/java/com/baeldung/forkjoin/util/PoolUtil.java similarity index 100% rename from core-java-8/src/main/java/com/baeldung/forkjoin/util/PoolUtil.java rename to core-java/src/main/java/com/baeldung/forkjoin/util/PoolUtil.java diff --git a/core-java-8/src/main/java/com/baeldung/java_8_features/Address.java b/core-java/src/main/java/com/baeldung/java_8_features/Address.java similarity index 100% rename from core-java-8/src/main/java/com/baeldung/java_8_features/Address.java rename to core-java/src/main/java/com/baeldung/java_8_features/Address.java diff --git a/core-java-8/src/main/java/com/baeldung/java_8_features/CustomException.java b/core-java/src/main/java/com/baeldung/java_8_features/CustomException.java similarity index 100% rename from core-java-8/src/main/java/com/baeldung/java_8_features/CustomException.java rename to core-java/src/main/java/com/baeldung/java_8_features/CustomException.java diff --git a/core-java-8/src/main/java/com/baeldung/java_8_features/Detail.java b/core-java/src/main/java/com/baeldung/java_8_features/Detail.java similarity index 100% rename from core-java-8/src/main/java/com/baeldung/java_8_features/Detail.java rename to core-java/src/main/java/com/baeldung/java_8_features/Detail.java diff --git a/core-java-8/src/main/java/com/baeldung/java_8_features/OptionalAddress.java b/core-java/src/main/java/com/baeldung/java_8_features/OptionalAddress.java similarity index 100% rename from core-java-8/src/main/java/com/baeldung/java_8_features/OptionalAddress.java rename to core-java/src/main/java/com/baeldung/java_8_features/OptionalAddress.java diff --git a/core-java-8/src/main/java/com/baeldung/java_8_features/OptionalUser.java b/core-java/src/main/java/com/baeldung/java_8_features/OptionalUser.java similarity index 100% rename from core-java-8/src/main/java/com/baeldung/java_8_features/OptionalUser.java rename to core-java/src/main/java/com/baeldung/java_8_features/OptionalUser.java diff --git a/core-java-8/src/main/java/com/baeldung/java_8_features/User.java b/core-java/src/main/java/com/baeldung/java_8_features/User.java similarity index 100% rename from core-java-8/src/main/java/com/baeldung/java_8_features/User.java rename to core-java/src/main/java/com/baeldung/java_8_features/User.java diff --git a/core-java-8/src/main/java/com/baeldung/java_8_features/Vehicle.java b/core-java/src/main/java/com/baeldung/java_8_features/Vehicle.java similarity index 100% rename from core-java-8/src/main/java/com/baeldung/java_8_features/Vehicle.java rename to core-java/src/main/java/com/baeldung/java_8_features/Vehicle.java diff --git a/core-java-8/src/main/java/com/baeldung/java_8_features/VehicleImpl.java b/core-java/src/main/java/com/baeldung/java_8_features/VehicleImpl.java similarity index 100% rename from core-java-8/src/main/java/com/baeldung/java_8_features/VehicleImpl.java rename to core-java/src/main/java/com/baeldung/java_8_features/VehicleImpl.java diff --git a/core-java-8/src/main/java/com/baeldung/streamApi/Product.java b/core-java/src/main/java/com/baeldung/streamApi/Product.java similarity index 100% rename from core-java-8/src/main/java/com/baeldung/streamApi/Product.java rename to core-java/src/main/java/com/baeldung/streamApi/Product.java diff --git a/core-java-8/src/main/java/com/baeldung/threadpool/CountingTask.java b/core-java/src/main/java/com/baeldung/threadpool/CountingTask.java similarity index 100% rename from core-java-8/src/main/java/com/baeldung/threadpool/CountingTask.java rename to core-java/src/main/java/com/baeldung/threadpool/CountingTask.java diff --git a/core-java-8/src/main/java/com/baeldung/threadpool/ExitingExecutorServiceExample.java b/core-java/src/main/java/com/baeldung/threadpool/ExitingExecutorServiceExample.java similarity index 100% rename from core-java-8/src/main/java/com/baeldung/threadpool/ExitingExecutorServiceExample.java rename to core-java/src/main/java/com/baeldung/threadpool/ExitingExecutorServiceExample.java diff --git a/core-java-8/src/main/java/com/baeldung/threadpool/TreeNode.java b/core-java/src/main/java/com/baeldung/threadpool/TreeNode.java similarity index 100% rename from core-java-8/src/main/java/com/baeldung/threadpool/TreeNode.java rename to core-java/src/main/java/com/baeldung/threadpool/TreeNode.java diff --git a/core-java-8/src/main/java/com/baeldung/unzip/UnzipFile.java b/core-java/src/main/java/com/baeldung/unzip/UnzipFile.java similarity index 100% rename from core-java-8/src/main/java/com/baeldung/unzip/UnzipFile.java rename to core-java/src/main/java/com/baeldung/unzip/UnzipFile.java diff --git a/core-java-8/src/main/java/com/baeldung/zip/ZipDirectory.java b/core-java/src/main/java/com/baeldung/zip/ZipDirectory.java similarity index 100% rename from core-java-8/src/main/java/com/baeldung/zip/ZipDirectory.java rename to core-java/src/main/java/com/baeldung/zip/ZipDirectory.java diff --git a/core-java-8/src/main/java/com/baeldung/zip/ZipFile.java b/core-java/src/main/java/com/baeldung/zip/ZipFile.java similarity index 100% rename from core-java-8/src/main/java/com/baeldung/zip/ZipFile.java rename to core-java/src/main/java/com/baeldung/zip/ZipFile.java diff --git a/core-java-8/src/main/java/com/baeldung/zip/ZipMultipleFiles.java b/core-java/src/main/java/com/baeldung/zip/ZipMultipleFiles.java similarity index 100% rename from core-java-8/src/main/java/com/baeldung/zip/ZipMultipleFiles.java rename to core-java/src/main/java/com/baeldung/zip/ZipMultipleFiles.java diff --git a/core-java-8/src/main/resources/dirCompressed.zip b/core-java/src/main/resources/dirCompressed.zip similarity index 100% rename from core-java-8/src/main/resources/dirCompressed.zip rename to core-java/src/main/resources/dirCompressed.zip diff --git a/core-java-8/src/main/resources/multiCompressed.zip b/core-java/src/main/resources/multiCompressed.zip similarity index 100% rename from core-java-8/src/main/resources/multiCompressed.zip rename to core-java/src/main/resources/multiCompressed.zip diff --git a/core-java-8/src/test/java/com/baeldung/dateapi/ConversionExample.java b/core-java/src/test/java/com/baeldung/dateapi/ConversionExample.java similarity index 100% rename from core-java-8/src/test/java/com/baeldung/dateapi/ConversionExample.java rename to core-java/src/test/java/com/baeldung/dateapi/ConversionExample.java diff --git a/core-java-8/src/test/java/com/baeldung/dateapi/JavaUtilTimeTest.java b/core-java/src/test/java/com/baeldung/dateapi/JavaUtilTimeTest.java similarity index 100% rename from core-java-8/src/test/java/com/baeldung/dateapi/JavaUtilTimeTest.java rename to core-java/src/test/java/com/baeldung/dateapi/JavaUtilTimeTest.java From 302c5291716554089ef6094f2058eec08750f745 Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Sun, 23 Oct 2016 22:37:46 +0200 Subject: [PATCH 088/215] Remove core-java-8 --- core-java-8/.gitignore | 13 -- core-java-8/README.md | 6 - core-java-8/pom.xml | 142 ------------------ core-java-8/src/main/resources/compressed.zip | Bin 146 -> 0 bytes core-java-8/src/main/resources/fileTest.txt | 1 - core-java-8/src/main/resources/logback.xml | 16 -- .../src/main/resources/unzipTest/test1.txt | 1 - .../src/main/resources/zipTest/test1.txt | 1 - .../src/main/resources/zipTest/test2.txt | 1 - .../resources/zipTest/testFolder/test3.txt | 1 - .../resources/zipTest/testFolder/test4.txt | 1 - pom.xml | 1 - 12 files changed, 184 deletions(-) delete mode 100644 core-java-8/.gitignore delete mode 100644 core-java-8/README.md delete mode 100644 core-java-8/pom.xml delete mode 100644 core-java-8/src/main/resources/compressed.zip delete mode 100644 core-java-8/src/main/resources/fileTest.txt delete mode 100644 core-java-8/src/main/resources/logback.xml delete mode 100644 core-java-8/src/main/resources/unzipTest/test1.txt delete mode 100644 core-java-8/src/main/resources/zipTest/test1.txt delete mode 100644 core-java-8/src/main/resources/zipTest/test2.txt delete mode 100644 core-java-8/src/main/resources/zipTest/testFolder/test3.txt delete mode 100644 core-java-8/src/main/resources/zipTest/testFolder/test4.txt diff --git a/core-java-8/.gitignore b/core-java-8/.gitignore deleted file mode 100644 index 83c05e60c8..0000000000 --- a/core-java-8/.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/core-java-8/README.md b/core-java-8/README.md deleted file mode 100644 index 86429222ea..0000000000 --- a/core-java-8/README.md +++ /dev/null @@ -1,6 +0,0 @@ -========= - -## Core Java 8 Cookbooks and Examples - -### Relevant Articles: - diff --git a/core-java-8/pom.xml b/core-java-8/pom.xml deleted file mode 100644 index 22e3bab595..0000000000 --- a/core-java-8/pom.xml +++ /dev/null @@ -1,142 +0,0 @@ - - 4.0.0 - - com.baeldung - 1.0.0-SNAPSHOT - core-java8 - - core-java8 - - - - - - - commons-io - commons-io - 2.5 - - - - com.google.guava - guava - ${guava.version} - - - - org.apache.commons - commons-collections4 - 4.0 - - - - commons-codec - commons-codec - 1.10 - - - - org.apache.commons - commons-lang3 - 3.3.2 - - - - org.slf4j - slf4j-api - ${org.slf4j.version} - - - - - - org.hamcrest - hamcrest-library - ${org.hamcrest.version} - test - - - - junit - junit - ${junit.version} - test - - - - org.assertj - assertj-core - 3.5.1 - test - - - - org.mockito - mockito-core - ${mockito.version} - test - - - - - - core-java-8 - - - src/main/resources - true - - - - - - - org.apache.maven.plugins - maven-compiler-plugin - ${maven-compiler-plugin.version} - - 1.8 - 1.8 - - - - - org.apache.maven.plugins - maven-surefire-plugin - ${maven-surefire-plugin.version} - - - - - - - - - UTF-8 - - - 1.7.13 - 1.0.13 - - - 5.1.3.Final - - - 19.0 - 3.4 - - - 1.3 - 4.12 - 1.10.19 - - - 3.5.1 - 2.6 - 2.19.1 - 2.7 - - - - \ No newline at end of file diff --git a/core-java-8/src/main/resources/compressed.zip b/core-java-8/src/main/resources/compressed.zip deleted file mode 100644 index 03f840ae2bf13bdf8e9509168e964dea40f782f7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 146 zcmWIWW@Zs#;Nak3Xvk^tU_b(#Kz2!LafzW`Nkz$LkFzIFhI5?PKjj(7!Vuui&aqfV pQ-%+yga?QNycwB97!bxF%YlqR1#m+Hyjj^mQj9=o4y0Yd>Hv0b7M1`2 diff --git a/core-java-8/src/main/resources/fileTest.txt b/core-java-8/src/main/resources/fileTest.txt deleted file mode 100644 index ce4bea208b..0000000000 --- a/core-java-8/src/main/resources/fileTest.txt +++ /dev/null @@ -1 +0,0 @@ -Hello World from fileTest.txt!!! \ No newline at end of file diff --git a/core-java-8/src/main/resources/logback.xml b/core-java-8/src/main/resources/logback.xml deleted file mode 100644 index eefdc7a337..0000000000 --- a/core-java-8/src/main/resources/logback.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - web - %date [%thread] %-5level %logger{36} - %message%n - - - - - - - - - - - \ No newline at end of file diff --git a/core-java-8/src/main/resources/unzipTest/test1.txt b/core-java-8/src/main/resources/unzipTest/test1.txt deleted file mode 100644 index c57eff55eb..0000000000 --- a/core-java-8/src/main/resources/unzipTest/test1.txt +++ /dev/null @@ -1 +0,0 @@ -Hello World! \ No newline at end of file diff --git a/core-java-8/src/main/resources/zipTest/test1.txt b/core-java-8/src/main/resources/zipTest/test1.txt deleted file mode 100644 index c57eff55eb..0000000000 --- a/core-java-8/src/main/resources/zipTest/test1.txt +++ /dev/null @@ -1 +0,0 @@ -Hello World! \ No newline at end of file diff --git a/core-java-8/src/main/resources/zipTest/test2.txt b/core-java-8/src/main/resources/zipTest/test2.txt deleted file mode 100644 index f0fb0f14d1..0000000000 --- a/core-java-8/src/main/resources/zipTest/test2.txt +++ /dev/null @@ -1 +0,0 @@ -My Name is John \ No newline at end of file diff --git a/core-java-8/src/main/resources/zipTest/testFolder/test3.txt b/core-java-8/src/main/resources/zipTest/testFolder/test3.txt deleted file mode 100644 index 882edb168e..0000000000 --- a/core-java-8/src/main/resources/zipTest/testFolder/test3.txt +++ /dev/null @@ -1 +0,0 @@ -My Name is Tom \ No newline at end of file diff --git a/core-java-8/src/main/resources/zipTest/testFolder/test4.txt b/core-java-8/src/main/resources/zipTest/testFolder/test4.txt deleted file mode 100644 index a78c3fadc8..0000000000 --- a/core-java-8/src/main/resources/zipTest/testFolder/test4.txt +++ /dev/null @@ -1 +0,0 @@ -My Name is Jane \ No newline at end of file diff --git a/pom.xml b/pom.xml index 0de16500d6..8523997701 100644 --- a/pom.xml +++ b/pom.xml @@ -21,7 +21,6 @@ cdi core-java - core-java-8 couchbase-sdk From 8190a9994b79403c2746a462b6e3c05ea0dd053d Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Sun, 23 Oct 2016 22:56:53 +0200 Subject: [PATCH 089/215] Reformat README.md --- core-java/README.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/core-java/README.md b/core-java/README.md index 628a48a06e..48f0677461 100644 --- a/core-java/README.md +++ b/core-java/README.md @@ -25,7 +25,6 @@ - [Convert char to String in Java](http://www.baeldung.com/java-convert-char-to-string) - [Random List Element](http://www.baeldung.com/java-random-list-element) - [Convert String to int or Integer in Java](http://www.baeldung.com/java-convert-string-to-int-or-integer) - - [Java 8 – Powerful Comparison with Lambdas](http://www.baeldung.com/java-8-sort-lambda) - [Java – Directory Size](http://www.baeldung.com/java-folder-size) - [Java – Try with Resources](http://www.baeldung.com/java-try-with-resources) @@ -35,8 +34,5 @@ - [The Double Colon Operator in Java 8](http://www.baeldung.com/java-8-double-colon-operator) - [Java 8 Streams Advanced](http://www.baeldung.com/java-8-streams) - [Introduction to Thread Pools in Java](http://www.baeldung.com/thread-pool-java-and-guava) -- [Guide to Java 8 Collectors](http://www.baeldung.com/java-8-collectors) -- [The Java 8 Stream API Tutorial](http://www.baeldung.com/java-8-streams) -- [New Features in Java 8](http://www.baeldung.com/java-8-new-features) - [Introduction to Java 8 Streams](http://www.baeldung.com/java-8-streams-introduction) - [Guide to the Fork/Join Framework in Java](http://www.baeldung.com/java-fork-join) \ No newline at end of file From 61d67b42656d758797de1bdbb8823fb89ed88f95 Mon Sep 17 00:00:00 2001 From: slavisa-baeldung Date: Mon, 24 Oct 2016 06:36:25 +0200 Subject: [PATCH 090/215] BAEL-86 - DispatcherServlet code --- pom.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/pom.xml b/pom.xml index b38fe174c9..d925cbe7fb 100644 --- a/pom.xml +++ b/pom.xml @@ -83,6 +83,7 @@ spring-data-mongodb spring-data-redis spring-data-rest + spring-dispatcher-servlet spring-exceptions spring-freemarker spring-hibernate3 From 45706278411fec43d438b1aa891bc0b534f8545f Mon Sep 17 00:00:00 2001 From: slavisa-baeldung Date: Mon, 24 Oct 2016 08:12:27 +0200 Subject: [PATCH 091/215] BAEL-86 - removed dispatcher source from main pom.xml --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index a882945436..e97093b7f7 100644 --- a/pom.xml +++ b/pom.xml @@ -84,7 +84,7 @@ spring-data-mongodb spring-data-redis spring-data-rest - spring-dispatcher-servlet + spring-exceptions spring-freemarker spring-hibernate3 From 75d86610ff4cf7c56a68966b4cbe2e3accfada96 Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Mon, 24 Oct 2016 09:44:21 +0200 Subject: [PATCH 092/215] Move routing-in-play -> play-framework --- .../{student-api => introduction}/.gitignore | 0 .../{student-api => introduction}/LICENSE | 0 play-framework/{student-api => introduction}/README | 0 .../{student-api => introduction}/app/Filters.java | 0 .../{student-api => introduction}/app/Module.java | 0 .../app/controllers/AsyncController.java | 0 .../app/controllers/CountController.java | 0 .../app/controllers/HomeController.java | 0 .../app/controllers/StudentController.java | 0 .../app/filters/ExampleFilter.java | 0 .../app/models/Student.java | 0 .../app/models/StudentStore.java | 0 .../app/services/ApplicationTimer.java | 0 .../app/services/AtomicCounter.java | 0 .../app/services/Counter.java | 0 .../app/util/Util.java | 0 .../app/views/index.scala.html | 0 .../app/views/main.scala.html | 0 .../{student-api => introduction}/bin/activator | 0 .../{student-api => introduction}/bin/activator.bat | 0 .../{student-api => introduction}/build.sbt | 0 .../conf/application.conf | 0 .../{student-api => introduction}/conf/logback.xml | 0 .../{student-api => introduction}/conf/routes | 0 .../libexec/activator-launch-1.3.10.jar | Bin .../project/build.properties | 0 .../project/plugins.sbt | 0 .../public/images/favicon.png | Bin .../public/javascripts/hello.js | 0 .../public/stylesheets/main.css | 0 .../test/ApplicationTest.java | 0 .../routing-in-play}/.gitignore | 0 .../routing-in-play}/LICENSE | 0 .../routing-in-play}/README | 0 .../routing-in-play}/app/Filters.java | 0 .../routing-in-play}/app/Module.java | 0 .../app/controllers/HomeController.java | 0 .../routing-in-play}/app/filters/ExampleFilter.java | 0 .../app/services/ApplicationTimer.java | 0 .../app/services/AtomicCounter.java | 0 .../routing-in-play}/app/services/Counter.java | 0 .../routing-in-play}/app/views/index.scala.html | 0 .../routing-in-play}/app/views/main.scala.html | 0 .../routing-in-play}/bin/activator | 0 .../routing-in-play}/bin/activator.bat | 0 .../routing-in-play}/build.sbt | 0 .../routing-in-play}/conf/application.conf | 0 .../routing-in-play}/conf/logback.xml | 0 .../routing-in-play}/conf/routes | 0 .../libexec/activator-launch-1.3.10.jar | Bin .../routing-in-play}/project/build.properties | 0 .../routing-in-play}/project/plugins.sbt | 0 .../routing-in-play}/public/images/favicon.png | Bin .../routing-in-play}/public/javascripts/hello.js | 0 .../routing-in-play}/public/stylesheets/main.css | 0 .../routing-in-play}/test/ApplicationTest.java | 0 .../routing-in-play}/test/IntegrationTest.java | 0 57 files changed, 0 insertions(+), 0 deletions(-) rename play-framework/{student-api => introduction}/.gitignore (100%) rename play-framework/{student-api => introduction}/LICENSE (100%) rename play-framework/{student-api => introduction}/README (100%) rename play-framework/{student-api => introduction}/app/Filters.java (100%) rename play-framework/{student-api => introduction}/app/Module.java (100%) rename play-framework/{student-api => introduction}/app/controllers/AsyncController.java (100%) rename play-framework/{student-api => introduction}/app/controllers/CountController.java (100%) rename play-framework/{student-api => introduction}/app/controllers/HomeController.java (100%) rename play-framework/{student-api => introduction}/app/controllers/StudentController.java (100%) rename play-framework/{student-api => introduction}/app/filters/ExampleFilter.java (100%) rename play-framework/{student-api => introduction}/app/models/Student.java (100%) rename play-framework/{student-api => introduction}/app/models/StudentStore.java (100%) rename play-framework/{student-api => introduction}/app/services/ApplicationTimer.java (100%) rename play-framework/{student-api => introduction}/app/services/AtomicCounter.java (100%) rename play-framework/{student-api => introduction}/app/services/Counter.java (100%) rename play-framework/{student-api => introduction}/app/util/Util.java (100%) rename play-framework/{student-api => introduction}/app/views/index.scala.html (100%) rename play-framework/{student-api => introduction}/app/views/main.scala.html (100%) rename play-framework/{student-api => introduction}/bin/activator (100%) rename play-framework/{student-api => introduction}/bin/activator.bat (100%) rename play-framework/{student-api => introduction}/build.sbt (100%) rename play-framework/{student-api => introduction}/conf/application.conf (100%) rename play-framework/{student-api => introduction}/conf/logback.xml (100%) rename play-framework/{student-api => introduction}/conf/routes (100%) rename play-framework/{student-api => introduction}/libexec/activator-launch-1.3.10.jar (100%) rename play-framework/{student-api => introduction}/project/build.properties (100%) rename play-framework/{student-api => introduction}/project/plugins.sbt (100%) rename play-framework/{student-api => introduction}/public/images/favicon.png (100%) rename play-framework/{student-api => introduction}/public/javascripts/hello.js (100%) rename play-framework/{student-api => introduction}/public/stylesheets/main.css (100%) rename play-framework/{student-api => introduction}/test/ApplicationTest.java (100%) rename {routing-in-play => play-framework/routing-in-play}/.gitignore (100%) rename {routing-in-play => play-framework/routing-in-play}/LICENSE (100%) rename {routing-in-play => play-framework/routing-in-play}/README (100%) rename {routing-in-play => play-framework/routing-in-play}/app/Filters.java (100%) rename {routing-in-play => play-framework/routing-in-play}/app/Module.java (100%) rename {routing-in-play => play-framework/routing-in-play}/app/controllers/HomeController.java (100%) rename {routing-in-play => play-framework/routing-in-play}/app/filters/ExampleFilter.java (100%) rename {routing-in-play => play-framework/routing-in-play}/app/services/ApplicationTimer.java (100%) rename {routing-in-play => play-framework/routing-in-play}/app/services/AtomicCounter.java (100%) rename {routing-in-play => play-framework/routing-in-play}/app/services/Counter.java (100%) rename {routing-in-play => play-framework/routing-in-play}/app/views/index.scala.html (100%) rename {routing-in-play => play-framework/routing-in-play}/app/views/main.scala.html (100%) rename {routing-in-play => play-framework/routing-in-play}/bin/activator (100%) rename {routing-in-play => play-framework/routing-in-play}/bin/activator.bat (100%) rename {routing-in-play => play-framework/routing-in-play}/build.sbt (100%) rename {routing-in-play => play-framework/routing-in-play}/conf/application.conf (100%) rename {routing-in-play => play-framework/routing-in-play}/conf/logback.xml (100%) rename {routing-in-play => play-framework/routing-in-play}/conf/routes (100%) rename {routing-in-play => play-framework/routing-in-play}/libexec/activator-launch-1.3.10.jar (100%) rename {routing-in-play => play-framework/routing-in-play}/project/build.properties (100%) rename {routing-in-play => play-framework/routing-in-play}/project/plugins.sbt (100%) rename {routing-in-play => play-framework/routing-in-play}/public/images/favicon.png (100%) rename {routing-in-play => play-framework/routing-in-play}/public/javascripts/hello.js (100%) rename {routing-in-play => play-framework/routing-in-play}/public/stylesheets/main.css (100%) rename {routing-in-play => play-framework/routing-in-play}/test/ApplicationTest.java (100%) rename {routing-in-play => play-framework/routing-in-play}/test/IntegrationTest.java (100%) diff --git a/play-framework/student-api/.gitignore b/play-framework/introduction/.gitignore similarity index 100% rename from play-framework/student-api/.gitignore rename to play-framework/introduction/.gitignore diff --git a/play-framework/student-api/LICENSE b/play-framework/introduction/LICENSE similarity index 100% rename from play-framework/student-api/LICENSE rename to play-framework/introduction/LICENSE diff --git a/play-framework/student-api/README b/play-framework/introduction/README similarity index 100% rename from play-framework/student-api/README rename to play-framework/introduction/README diff --git a/play-framework/student-api/app/Filters.java b/play-framework/introduction/app/Filters.java similarity index 100% rename from play-framework/student-api/app/Filters.java rename to play-framework/introduction/app/Filters.java diff --git a/play-framework/student-api/app/Module.java b/play-framework/introduction/app/Module.java similarity index 100% rename from play-framework/student-api/app/Module.java rename to play-framework/introduction/app/Module.java diff --git a/play-framework/student-api/app/controllers/AsyncController.java b/play-framework/introduction/app/controllers/AsyncController.java similarity index 100% rename from play-framework/student-api/app/controllers/AsyncController.java rename to play-framework/introduction/app/controllers/AsyncController.java diff --git a/play-framework/student-api/app/controllers/CountController.java b/play-framework/introduction/app/controllers/CountController.java similarity index 100% rename from play-framework/student-api/app/controllers/CountController.java rename to play-framework/introduction/app/controllers/CountController.java diff --git a/play-framework/student-api/app/controllers/HomeController.java b/play-framework/introduction/app/controllers/HomeController.java similarity index 100% rename from play-framework/student-api/app/controllers/HomeController.java rename to play-framework/introduction/app/controllers/HomeController.java diff --git a/play-framework/student-api/app/controllers/StudentController.java b/play-framework/introduction/app/controllers/StudentController.java similarity index 100% rename from play-framework/student-api/app/controllers/StudentController.java rename to play-framework/introduction/app/controllers/StudentController.java diff --git a/play-framework/student-api/app/filters/ExampleFilter.java b/play-framework/introduction/app/filters/ExampleFilter.java similarity index 100% rename from play-framework/student-api/app/filters/ExampleFilter.java rename to play-framework/introduction/app/filters/ExampleFilter.java diff --git a/play-framework/student-api/app/models/Student.java b/play-framework/introduction/app/models/Student.java similarity index 100% rename from play-framework/student-api/app/models/Student.java rename to play-framework/introduction/app/models/Student.java diff --git a/play-framework/student-api/app/models/StudentStore.java b/play-framework/introduction/app/models/StudentStore.java similarity index 100% rename from play-framework/student-api/app/models/StudentStore.java rename to play-framework/introduction/app/models/StudentStore.java diff --git a/play-framework/student-api/app/services/ApplicationTimer.java b/play-framework/introduction/app/services/ApplicationTimer.java similarity index 100% rename from play-framework/student-api/app/services/ApplicationTimer.java rename to play-framework/introduction/app/services/ApplicationTimer.java diff --git a/play-framework/student-api/app/services/AtomicCounter.java b/play-framework/introduction/app/services/AtomicCounter.java similarity index 100% rename from play-framework/student-api/app/services/AtomicCounter.java rename to play-framework/introduction/app/services/AtomicCounter.java diff --git a/play-framework/student-api/app/services/Counter.java b/play-framework/introduction/app/services/Counter.java similarity index 100% rename from play-framework/student-api/app/services/Counter.java rename to play-framework/introduction/app/services/Counter.java diff --git a/play-framework/student-api/app/util/Util.java b/play-framework/introduction/app/util/Util.java similarity index 100% rename from play-framework/student-api/app/util/Util.java rename to play-framework/introduction/app/util/Util.java diff --git a/play-framework/student-api/app/views/index.scala.html b/play-framework/introduction/app/views/index.scala.html similarity index 100% rename from play-framework/student-api/app/views/index.scala.html rename to play-framework/introduction/app/views/index.scala.html diff --git a/play-framework/student-api/app/views/main.scala.html b/play-framework/introduction/app/views/main.scala.html similarity index 100% rename from play-framework/student-api/app/views/main.scala.html rename to play-framework/introduction/app/views/main.scala.html diff --git a/play-framework/student-api/bin/activator b/play-framework/introduction/bin/activator similarity index 100% rename from play-framework/student-api/bin/activator rename to play-framework/introduction/bin/activator diff --git a/play-framework/student-api/bin/activator.bat b/play-framework/introduction/bin/activator.bat similarity index 100% rename from play-framework/student-api/bin/activator.bat rename to play-framework/introduction/bin/activator.bat diff --git a/play-framework/student-api/build.sbt b/play-framework/introduction/build.sbt similarity index 100% rename from play-framework/student-api/build.sbt rename to play-framework/introduction/build.sbt diff --git a/play-framework/student-api/conf/application.conf b/play-framework/introduction/conf/application.conf similarity index 100% rename from play-framework/student-api/conf/application.conf rename to play-framework/introduction/conf/application.conf diff --git a/play-framework/student-api/conf/logback.xml b/play-framework/introduction/conf/logback.xml similarity index 100% rename from play-framework/student-api/conf/logback.xml rename to play-framework/introduction/conf/logback.xml diff --git a/play-framework/student-api/conf/routes b/play-framework/introduction/conf/routes similarity index 100% rename from play-framework/student-api/conf/routes rename to play-framework/introduction/conf/routes diff --git a/play-framework/student-api/libexec/activator-launch-1.3.10.jar b/play-framework/introduction/libexec/activator-launch-1.3.10.jar similarity index 100% rename from play-framework/student-api/libexec/activator-launch-1.3.10.jar rename to play-framework/introduction/libexec/activator-launch-1.3.10.jar diff --git a/play-framework/student-api/project/build.properties b/play-framework/introduction/project/build.properties similarity index 100% rename from play-framework/student-api/project/build.properties rename to play-framework/introduction/project/build.properties diff --git a/play-framework/student-api/project/plugins.sbt b/play-framework/introduction/project/plugins.sbt similarity index 100% rename from play-framework/student-api/project/plugins.sbt rename to play-framework/introduction/project/plugins.sbt diff --git a/play-framework/student-api/public/images/favicon.png b/play-framework/introduction/public/images/favicon.png similarity index 100% rename from play-framework/student-api/public/images/favicon.png rename to play-framework/introduction/public/images/favicon.png diff --git a/play-framework/student-api/public/javascripts/hello.js b/play-framework/introduction/public/javascripts/hello.js similarity index 100% rename from play-framework/student-api/public/javascripts/hello.js rename to play-framework/introduction/public/javascripts/hello.js diff --git a/play-framework/student-api/public/stylesheets/main.css b/play-framework/introduction/public/stylesheets/main.css similarity index 100% rename from play-framework/student-api/public/stylesheets/main.css rename to play-framework/introduction/public/stylesheets/main.css diff --git a/play-framework/student-api/test/ApplicationTest.java b/play-framework/introduction/test/ApplicationTest.java similarity index 100% rename from play-framework/student-api/test/ApplicationTest.java rename to play-framework/introduction/test/ApplicationTest.java diff --git a/routing-in-play/.gitignore b/play-framework/routing-in-play/.gitignore similarity index 100% rename from routing-in-play/.gitignore rename to play-framework/routing-in-play/.gitignore diff --git a/routing-in-play/LICENSE b/play-framework/routing-in-play/LICENSE similarity index 100% rename from routing-in-play/LICENSE rename to play-framework/routing-in-play/LICENSE diff --git a/routing-in-play/README b/play-framework/routing-in-play/README similarity index 100% rename from routing-in-play/README rename to play-framework/routing-in-play/README diff --git a/routing-in-play/app/Filters.java b/play-framework/routing-in-play/app/Filters.java similarity index 100% rename from routing-in-play/app/Filters.java rename to play-framework/routing-in-play/app/Filters.java diff --git a/routing-in-play/app/Module.java b/play-framework/routing-in-play/app/Module.java similarity index 100% rename from routing-in-play/app/Module.java rename to play-framework/routing-in-play/app/Module.java diff --git a/routing-in-play/app/controllers/HomeController.java b/play-framework/routing-in-play/app/controllers/HomeController.java similarity index 100% rename from routing-in-play/app/controllers/HomeController.java rename to play-framework/routing-in-play/app/controllers/HomeController.java diff --git a/routing-in-play/app/filters/ExampleFilter.java b/play-framework/routing-in-play/app/filters/ExampleFilter.java similarity index 100% rename from routing-in-play/app/filters/ExampleFilter.java rename to play-framework/routing-in-play/app/filters/ExampleFilter.java diff --git a/routing-in-play/app/services/ApplicationTimer.java b/play-framework/routing-in-play/app/services/ApplicationTimer.java similarity index 100% rename from routing-in-play/app/services/ApplicationTimer.java rename to play-framework/routing-in-play/app/services/ApplicationTimer.java diff --git a/routing-in-play/app/services/AtomicCounter.java b/play-framework/routing-in-play/app/services/AtomicCounter.java similarity index 100% rename from routing-in-play/app/services/AtomicCounter.java rename to play-framework/routing-in-play/app/services/AtomicCounter.java diff --git a/routing-in-play/app/services/Counter.java b/play-framework/routing-in-play/app/services/Counter.java similarity index 100% rename from routing-in-play/app/services/Counter.java rename to play-framework/routing-in-play/app/services/Counter.java diff --git a/routing-in-play/app/views/index.scala.html b/play-framework/routing-in-play/app/views/index.scala.html similarity index 100% rename from routing-in-play/app/views/index.scala.html rename to play-framework/routing-in-play/app/views/index.scala.html diff --git a/routing-in-play/app/views/main.scala.html b/play-framework/routing-in-play/app/views/main.scala.html similarity index 100% rename from routing-in-play/app/views/main.scala.html rename to play-framework/routing-in-play/app/views/main.scala.html diff --git a/routing-in-play/bin/activator b/play-framework/routing-in-play/bin/activator similarity index 100% rename from routing-in-play/bin/activator rename to play-framework/routing-in-play/bin/activator diff --git a/routing-in-play/bin/activator.bat b/play-framework/routing-in-play/bin/activator.bat similarity index 100% rename from routing-in-play/bin/activator.bat rename to play-framework/routing-in-play/bin/activator.bat diff --git a/routing-in-play/build.sbt b/play-framework/routing-in-play/build.sbt similarity index 100% rename from routing-in-play/build.sbt rename to play-framework/routing-in-play/build.sbt diff --git a/routing-in-play/conf/application.conf b/play-framework/routing-in-play/conf/application.conf similarity index 100% rename from routing-in-play/conf/application.conf rename to play-framework/routing-in-play/conf/application.conf diff --git a/routing-in-play/conf/logback.xml b/play-framework/routing-in-play/conf/logback.xml similarity index 100% rename from routing-in-play/conf/logback.xml rename to play-framework/routing-in-play/conf/logback.xml diff --git a/routing-in-play/conf/routes b/play-framework/routing-in-play/conf/routes similarity index 100% rename from routing-in-play/conf/routes rename to play-framework/routing-in-play/conf/routes diff --git a/routing-in-play/libexec/activator-launch-1.3.10.jar b/play-framework/routing-in-play/libexec/activator-launch-1.3.10.jar similarity index 100% rename from routing-in-play/libexec/activator-launch-1.3.10.jar rename to play-framework/routing-in-play/libexec/activator-launch-1.3.10.jar diff --git a/routing-in-play/project/build.properties b/play-framework/routing-in-play/project/build.properties similarity index 100% rename from routing-in-play/project/build.properties rename to play-framework/routing-in-play/project/build.properties diff --git a/routing-in-play/project/plugins.sbt b/play-framework/routing-in-play/project/plugins.sbt similarity index 100% rename from routing-in-play/project/plugins.sbt rename to play-framework/routing-in-play/project/plugins.sbt diff --git a/routing-in-play/public/images/favicon.png b/play-framework/routing-in-play/public/images/favicon.png similarity index 100% rename from routing-in-play/public/images/favicon.png rename to play-framework/routing-in-play/public/images/favicon.png diff --git a/routing-in-play/public/javascripts/hello.js b/play-framework/routing-in-play/public/javascripts/hello.js similarity index 100% rename from routing-in-play/public/javascripts/hello.js rename to play-framework/routing-in-play/public/javascripts/hello.js diff --git a/routing-in-play/public/stylesheets/main.css b/play-framework/routing-in-play/public/stylesheets/main.css similarity index 100% rename from routing-in-play/public/stylesheets/main.css rename to play-framework/routing-in-play/public/stylesheets/main.css diff --git a/routing-in-play/test/ApplicationTest.java b/play-framework/routing-in-play/test/ApplicationTest.java similarity index 100% rename from routing-in-play/test/ApplicationTest.java rename to play-framework/routing-in-play/test/ApplicationTest.java diff --git a/routing-in-play/test/IntegrationTest.java b/play-framework/routing-in-play/test/IntegrationTest.java similarity index 100% rename from routing-in-play/test/IntegrationTest.java rename to play-framework/routing-in-play/test/IntegrationTest.java From 166ed96881365b7a36ab785628e91417e9b0e500 Mon Sep 17 00:00:00 2001 From: DOHA Date: Mon, 24 Oct 2016 13:48:20 +0200 Subject: [PATCH 093/215] configure integration test --- couchbase-sdk/pom.xml | 12 ++++++++++++ ...st.java => PersonCrudServiceIntegrationTest.java} | 2 +- ...eTest.java => ClusterServiceIntegrationTest.java} | 2 +- ...st.java => PersonCrudServiceIntegrationTest.java} | 2 +- ...eTest.java => ClusterServiceIntegrationTest.java} | 2 +- 5 files changed, 16 insertions(+), 4 deletions(-) rename couchbase-sdk/src/test/java/com/baeldung/couchbase/async/person/{PersonCrudServiceTest.java => PersonCrudServiceIntegrationTest.java} (98%) rename couchbase-sdk/src/test/java/com/baeldung/couchbase/async/service/{ClusterServiceTest.java => ClusterServiceIntegrationTest.java} (94%) rename couchbase-sdk/src/test/java/com/baeldung/couchbase/spring/person/{PersonCrudServiceTest.java => PersonCrudServiceIntegrationTest.java} (97%) rename couchbase-sdk/src/test/java/com/baeldung/couchbase/spring/service/{ClusterServiceTest.java => ClusterServiceIntegrationTest.java} (94%) diff --git a/couchbase-sdk/pom.xml b/couchbase-sdk/pom.xml index 4c277f4c85..b7b3d1788f 100644 --- a/couchbase-sdk/pom.xml +++ b/couchbase-sdk/pom.xml @@ -85,6 +85,17 @@ 1.7 + + org.apache.maven.plugins + maven-surefire-plugin + ${maven-surefire-plugin.version} + + + **/*IntegrationTest.java + **/*LiveTest.java + + + @@ -97,6 +108,7 @@ 1.7.12 4.11 3.4 + 2.19.1
diff --git a/couchbase-sdk/src/test/java/com/baeldung/couchbase/async/person/PersonCrudServiceTest.java b/couchbase-sdk/src/test/java/com/baeldung/couchbase/async/person/PersonCrudServiceIntegrationTest.java similarity index 98% rename from couchbase-sdk/src/test/java/com/baeldung/couchbase/async/person/PersonCrudServiceTest.java rename to couchbase-sdk/src/test/java/com/baeldung/couchbase/async/person/PersonCrudServiceIntegrationTest.java index afc5bbd53b..5907a4cc63 100644 --- a/couchbase-sdk/src/test/java/com/baeldung/couchbase/async/person/PersonCrudServiceTest.java +++ b/couchbase-sdk/src/test/java/com/baeldung/couchbase/async/person/PersonCrudServiceIntegrationTest.java @@ -21,7 +21,7 @@ import com.baeldung.couchbase.async.service.BucketService; import com.couchbase.client.java.Bucket; import com.couchbase.client.java.document.JsonDocument; -public class PersonCrudServiceTest extends AsyncIntegrationTest { +public class PersonCrudServiceIntegrationTest extends AsyncIntegrationTest { @Autowired private PersonCrudService personService; diff --git a/couchbase-sdk/src/test/java/com/baeldung/couchbase/async/service/ClusterServiceTest.java b/couchbase-sdk/src/test/java/com/baeldung/couchbase/async/service/ClusterServiceIntegrationTest.java similarity index 94% rename from couchbase-sdk/src/test/java/com/baeldung/couchbase/async/service/ClusterServiceTest.java rename to couchbase-sdk/src/test/java/com/baeldung/couchbase/async/service/ClusterServiceIntegrationTest.java index 8ecb51a4b9..08e3728c77 100644 --- a/couchbase-sdk/src/test/java/com/baeldung/couchbase/async/service/ClusterServiceTest.java +++ b/couchbase-sdk/src/test/java/com/baeldung/couchbase/async/service/ClusterServiceIntegrationTest.java @@ -18,7 +18,7 @@ import com.couchbase.client.java.Bucket; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = { AsyncIntegrationTestConfig.class }) @TestExecutionListeners(listeners = { DependencyInjectionTestExecutionListener.class }) -public class ClusterServiceTest extends AsyncIntegrationTest { +public class ClusterServiceIntegrationTest extends AsyncIntegrationTest { @Autowired private ClusterService couchbaseService; diff --git a/couchbase-sdk/src/test/java/com/baeldung/couchbase/spring/person/PersonCrudServiceTest.java b/couchbase-sdk/src/test/java/com/baeldung/couchbase/spring/person/PersonCrudServiceIntegrationTest.java similarity index 97% rename from couchbase-sdk/src/test/java/com/baeldung/couchbase/spring/person/PersonCrudServiceTest.java rename to couchbase-sdk/src/test/java/com/baeldung/couchbase/spring/person/PersonCrudServiceIntegrationTest.java index 601b261f6e..b3fadae6ca 100644 --- a/couchbase-sdk/src/test/java/com/baeldung/couchbase/spring/person/PersonCrudServiceTest.java +++ b/couchbase-sdk/src/test/java/com/baeldung/couchbase/spring/person/PersonCrudServiceIntegrationTest.java @@ -10,7 +10,7 @@ import org.springframework.beans.factory.annotation.Autowired; import com.baeldung.couchbase.spring.IntegrationTest; -public class PersonCrudServiceTest extends IntegrationTest { +public class PersonCrudServiceIntegrationTest extends IntegrationTest { private static final String CLARK_KENT = "Clark Kent"; private static final String SMALLVILLE = "Smallville"; diff --git a/couchbase-sdk/src/test/java/com/baeldung/couchbase/spring/service/ClusterServiceTest.java b/couchbase-sdk/src/test/java/com/baeldung/couchbase/spring/service/ClusterServiceIntegrationTest.java similarity index 94% rename from couchbase-sdk/src/test/java/com/baeldung/couchbase/spring/service/ClusterServiceTest.java rename to couchbase-sdk/src/test/java/com/baeldung/couchbase/spring/service/ClusterServiceIntegrationTest.java index d1968e1c04..f3ee4585a3 100644 --- a/couchbase-sdk/src/test/java/com/baeldung/couchbase/spring/service/ClusterServiceTest.java +++ b/couchbase-sdk/src/test/java/com/baeldung/couchbase/spring/service/ClusterServiceIntegrationTest.java @@ -17,7 +17,7 @@ import com.couchbase.client.java.Bucket; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = { IntegrationTestConfig.class }) @TestExecutionListeners(listeners = { DependencyInjectionTestExecutionListener.class }) -public class ClusterServiceTest extends IntegrationTest { +public class ClusterServiceIntegrationTest extends IntegrationTest { @Autowired private ClusterService couchbaseService; From 924b09cb104fb7ba9d7aac1c78a0a70c54b33790 Mon Sep 17 00:00:00 2001 From: DOHA Date: Mon, 24 Oct 2016 17:13:40 +0200 Subject: [PATCH 094/215] add integration test profiles --- spring-cloud-data-flow/batch-job/pom.xml | 15 +- .../BatchJobApplicationIntegrationTest.java} | 2 +- .../data-flow-server/pom.xml | 49 +++++- ...aFlowServerApplicationIntegrationTest.java | 16 ++ .../data-flow-shell/pom.xml | 14 +- .../data-flow-shell/spring-shell.log | 1 + ...aFlowShellApplicationIntegrationTest.java} | 2 +- spring-cloud-data-flow/log-sink/pom.xml | 143 ++++++++++++------ .../LogSinkApplicationIntegrationTest.java} | 2 +- spring-cloud-data-flow/time-processor/pom.xml | 61 ++++++-- ...meProcessorApplicationIntegrationTest.java | 16 ++ .../cloud/TimeProcessorApplicationTests.java | 16 -- spring-cloud-data-flow/time-source/pom.xml | 61 ++++++-- ...TimeSourceApplicationIntegrationTest.java} | 2 +- .../cloud/TimeSourceApplicationTests.java | 16 -- 15 files changed, 305 insertions(+), 111 deletions(-) rename spring-cloud-data-flow/{data-flow-server/src/test/java/org/baeldung/spring/cloud/DataFlowServerApplicationTests.java => batch-job/src/test/java/org/baeldung/spring/cloud/BatchJobApplicationIntegrationTest.java} (86%) create mode 100644 spring-cloud-data-flow/data-flow-server/src/test/java/org/baeldung/spring/cloud/DataFlowServerApplicationIntegrationTest.java rename spring-cloud-data-flow/{log-sink/src/test/java/org/baeldung/spring/cloud/LogSinkApplicationTests.java => data-flow-shell/src/test/java/org/baeldung/spring/cloud/DataFlowShellApplicationIntegrationTest.java} (85%) rename spring-cloud-data-flow/{batch-job/src/test/java/org/baeldung/spring/cloud/BatchJobApplicationTests.java => log-sink/src/test/java/org/baeldung/spring/cloud/LogSinkApplicationIntegrationTest.java} (86%) create mode 100644 spring-cloud-data-flow/time-processor/src/test/java/org/baeldung/spring/cloud/TimeProcessorApplicationIntegrationTest.java delete mode 100644 spring-cloud-data-flow/time-processor/src/test/java/org/baeldung/spring/cloud/TimeProcessorApplicationTests.java rename spring-cloud-data-flow/{data-flow-shell/src/test/java/org/baeldung/spring/cloud/DataFlowShellApplicationTests.java => time-source/src/test/java/org/baeldung/spring/cloud/TimeSourceApplicationIntegrationTest.java} (85%) delete mode 100644 spring-cloud-data-flow/time-source/src/test/java/org/baeldung/spring/cloud/TimeSourceApplicationTests.java diff --git a/spring-cloud-data-flow/batch-job/pom.xml b/spring-cloud-data-flow/batch-job/pom.xml index 2ddb9d85a3..99e57d4c20 100644 --- a/spring-cloud-data-flow/batch-job/pom.xml +++ b/spring-cloud-data-flow/batch-job/pom.xml @@ -67,8 +67,17 @@ org.springframework.boot spring-boot-maven-plugin - - - + + org.apache.maven.plugins + maven-surefire-plugin + + + **/*IntegrationTest.java + **/*LiveTest.java + + + + + diff --git a/spring-cloud-data-flow/data-flow-server/src/test/java/org/baeldung/spring/cloud/DataFlowServerApplicationTests.java b/spring-cloud-data-flow/batch-job/src/test/java/org/baeldung/spring/cloud/BatchJobApplicationIntegrationTest.java similarity index 86% rename from spring-cloud-data-flow/data-flow-server/src/test/java/org/baeldung/spring/cloud/DataFlowServerApplicationTests.java rename to spring-cloud-data-flow/batch-job/src/test/java/org/baeldung/spring/cloud/BatchJobApplicationIntegrationTest.java index f853e29244..f8dfdec197 100644 --- a/spring-cloud-data-flow/data-flow-server/src/test/java/org/baeldung/spring/cloud/DataFlowServerApplicationTests.java +++ b/spring-cloud-data-flow/batch-job/src/test/java/org/baeldung/spring/cloud/BatchJobApplicationIntegrationTest.java @@ -7,7 +7,7 @@ import org.springframework.test.context.junit4.SpringRunner; @RunWith(SpringRunner.class) @SpringBootTest -public class DataFlowServerApplicationTests { +public class BatchJobApplicationIntegrationTest { @Test public void contextLoads() { diff --git a/spring-cloud-data-flow/data-flow-server/pom.xml b/spring-cloud-data-flow/data-flow-server/pom.xml index 94c4106d6f..451a58e12a 100644 --- a/spring-cloud-data-flow/data-flow-server/pom.xml +++ b/spring-cloud-data-flow/data-flow-server/pom.xml @@ -62,8 +62,53 @@ org.springframework.boot spring-boot-maven-plugin - - + + org.apache.maven.plugins + maven-surefire-plugin + + + **/*IntegrationTest.java + **/*LiveTest.java + + + + + + + + + integration + + + + org.apache.maven.plugins + maven-surefire-plugin + + + integration-test + + test + + + + **/*LiveTest.java + + + **/*IntegrationTest.java + + + + + + + json + + + + + + + diff --git a/spring-cloud-data-flow/data-flow-server/src/test/java/org/baeldung/spring/cloud/DataFlowServerApplicationIntegrationTest.java b/spring-cloud-data-flow/data-flow-server/src/test/java/org/baeldung/spring/cloud/DataFlowServerApplicationIntegrationTest.java new file mode 100644 index 0000000000..bb8660b816 --- /dev/null +++ b/spring-cloud-data-flow/data-flow-server/src/test/java/org/baeldung/spring/cloud/DataFlowServerApplicationIntegrationTest.java @@ -0,0 +1,16 @@ +package org.baeldung.spring.cloud; + +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 DataFlowServerApplicationIntegrationTest { + + @Test + public void contextLoads() { + } + +} diff --git a/spring-cloud-data-flow/data-flow-shell/pom.xml b/spring-cloud-data-flow/data-flow-shell/pom.xml index a074fef88f..31d3dce507 100644 --- a/spring-cloud-data-flow/data-flow-shell/pom.xml +++ b/spring-cloud-data-flow/data-flow-shell/pom.xml @@ -62,8 +62,18 @@ org.springframework.boot spring-boot-maven-plugin - - + + org.apache.maven.plugins + maven-surefire-plugin + + + **/*IntegrationTest.java + **/*LiveTest.java + + + + + diff --git a/spring-cloud-data-flow/data-flow-shell/spring-shell.log b/spring-cloud-data-flow/data-flow-shell/spring-shell.log index d497215e2a..92a8488c7d 100644 --- a/spring-cloud-data-flow/data-flow-shell/spring-shell.log +++ b/spring-cloud-data-flow/data-flow-shell/spring-shell.log @@ -1 +1,2 @@ // dataflow 1.2.0.RELEASE log opened at 2016-10-20 13:13:20 +// dataflow 1.2.0.RELEASE log opened at 2016-10-24 16:51:17 diff --git a/spring-cloud-data-flow/log-sink/src/test/java/org/baeldung/spring/cloud/LogSinkApplicationTests.java b/spring-cloud-data-flow/data-flow-shell/src/test/java/org/baeldung/spring/cloud/DataFlowShellApplicationIntegrationTest.java similarity index 85% rename from spring-cloud-data-flow/log-sink/src/test/java/org/baeldung/spring/cloud/LogSinkApplicationTests.java rename to spring-cloud-data-flow/data-flow-shell/src/test/java/org/baeldung/spring/cloud/DataFlowShellApplicationIntegrationTest.java index 9f88c7f632..5ab3292388 100644 --- a/spring-cloud-data-flow/log-sink/src/test/java/org/baeldung/spring/cloud/LogSinkApplicationTests.java +++ b/spring-cloud-data-flow/data-flow-shell/src/test/java/org/baeldung/spring/cloud/DataFlowShellApplicationIntegrationTest.java @@ -7,7 +7,7 @@ import org.springframework.test.context.junit4.SpringRunner; @RunWith(SpringRunner.class) @SpringBootTest -public class LogSinkApplicationTests { +public class DataFlowShellApplicationIntegrationTest { @Test public void contextLoads() { diff --git a/spring-cloud-data-flow/log-sink/pom.xml b/spring-cloud-data-flow/log-sink/pom.xml index 8415d95373..db488c05ef 100644 --- a/spring-cloud-data-flow/log-sink/pom.xml +++ b/spring-cloud-data-flow/log-sink/pom.xml @@ -1,62 +1,105 @@ - 4.0.0 + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + 4.0.0 - org.baeldung.spring.cloud - log-sink - 0.0.1-SNAPSHOT - jar + org.baeldung.spring.cloud + log-sink + 0.0.1-SNAPSHOT + jar - log-sink - Demo project for Spring Boot + log-sink + Demo project for Spring Boot - - org.springframework.boot - spring-boot-starter-parent - 1.4.0.RELEASE - - + + org.springframework.boot + spring-boot-starter-parent + 1.4.0.RELEASE + + - - UTF-8 - UTF-8 - 1.8 - + + UTF-8 + UTF-8 + 1.8 + - - - org.springframework.cloud - spring-cloud-starter-stream-rabbit - + + + org.springframework.cloud + spring-cloud-starter-stream-rabbit + - - org.springframework.boot - spring-boot-starter-test - test - - + + org.springframework.boot + spring-boot-starter-test + test + + - - - - org.springframework.cloud - spring-cloud-dependencies - Brixton.SR5 - pom - import - - - - - - - - org.springframework.boot - spring-boot-maven-plugin - - - + + + + org.springframework.cloud + spring-cloud-dependencies + Brixton.SR5 + pom + import + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + org.apache.maven.plugins + maven-surefire-plugin + + + **/*IntegrationTest.java + **/*LiveTest.java + + + + + + + + integration + + + + org.apache.maven.plugins + maven-surefire-plugin + + + integration-test + + test + + + + **/*LiveTest.java + + + **/*IntegrationTest.java + + + + + + + json + + + + + + + diff --git a/spring-cloud-data-flow/batch-job/src/test/java/org/baeldung/spring/cloud/BatchJobApplicationTests.java b/spring-cloud-data-flow/log-sink/src/test/java/org/baeldung/spring/cloud/LogSinkApplicationIntegrationTest.java similarity index 86% rename from spring-cloud-data-flow/batch-job/src/test/java/org/baeldung/spring/cloud/BatchJobApplicationTests.java rename to spring-cloud-data-flow/log-sink/src/test/java/org/baeldung/spring/cloud/LogSinkApplicationIntegrationTest.java index 5f18ec75c4..b362d72705 100644 --- a/spring-cloud-data-flow/batch-job/src/test/java/org/baeldung/spring/cloud/BatchJobApplicationTests.java +++ b/spring-cloud-data-flow/log-sink/src/test/java/org/baeldung/spring/cloud/LogSinkApplicationIntegrationTest.java @@ -7,7 +7,7 @@ import org.springframework.test.context.junit4.SpringRunner; @RunWith(SpringRunner.class) @SpringBootTest -public class BatchJobApplicationTests { +public class LogSinkApplicationIntegrationTest { @Test public void contextLoads() { diff --git a/spring-cloud-data-flow/time-processor/pom.xml b/spring-cloud-data-flow/time-processor/pom.xml index bc2efe7754..8277c9c836 100644 --- a/spring-cloud-data-flow/time-processor/pom.xml +++ b/spring-cloud-data-flow/time-processor/pom.xml @@ -49,14 +49,57 @@ - - - - org.springframework.boot - spring-boot-maven-plugin - - - - + + + + org.springframework.boot + spring-boot-maven-plugin + + + org.apache.maven.plugins + maven-surefire-plugin + + + **/*IntegrationTest.java + **/*LiveTest.java + + + + + + + + integration + + + + org.apache.maven.plugins + maven-surefire-plugin + + + integration-test + + test + + + + **/*LiveTest.java + + + **/*IntegrationTest.java + + + + + + + json + + + + + + + diff --git a/spring-cloud-data-flow/time-processor/src/test/java/org/baeldung/spring/cloud/TimeProcessorApplicationIntegrationTest.java b/spring-cloud-data-flow/time-processor/src/test/java/org/baeldung/spring/cloud/TimeProcessorApplicationIntegrationTest.java new file mode 100644 index 0000000000..9bd0fd8c24 --- /dev/null +++ b/spring-cloud-data-flow/time-processor/src/test/java/org/baeldung/spring/cloud/TimeProcessorApplicationIntegrationTest.java @@ -0,0 +1,16 @@ +package org.baeldung.spring.cloud; + +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 TimeProcessorApplicationIntegrationTest { + + @Test + public void contextLoads() { + } + +} diff --git a/spring-cloud-data-flow/time-processor/src/test/java/org/baeldung/spring/cloud/TimeProcessorApplicationTests.java b/spring-cloud-data-flow/time-processor/src/test/java/org/baeldung/spring/cloud/TimeProcessorApplicationTests.java deleted file mode 100644 index 875346f9db..0000000000 --- a/spring-cloud-data-flow/time-processor/src/test/java/org/baeldung/spring/cloud/TimeProcessorApplicationTests.java +++ /dev/null @@ -1,16 +0,0 @@ -package org.baeldung.spring.cloud; - -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 TimeProcessorApplicationTests { - - @Test - public void contextLoads() { - } - -} diff --git a/spring-cloud-data-flow/time-source/pom.xml b/spring-cloud-data-flow/time-source/pom.xml index 587b782227..086d761f78 100644 --- a/spring-cloud-data-flow/time-source/pom.xml +++ b/spring-cloud-data-flow/time-source/pom.xml @@ -49,14 +49,57 @@ - - - - org.springframework.boot - spring-boot-maven-plugin - - - - + + + + org.springframework.boot + spring-boot-maven-plugin + + + org.apache.maven.plugins + maven-surefire-plugin + + + **/*IntegrationTest.java + **/*LiveTest.java + + + + + + + + integration + + + + org.apache.maven.plugins + maven-surefire-plugin + + + integration-test + + test + + + + **/*LiveTest.java + + + **/*IntegrationTest.java + + + + + + + json + + + + + + + diff --git a/spring-cloud-data-flow/data-flow-shell/src/test/java/org/baeldung/spring/cloud/DataFlowShellApplicationTests.java b/spring-cloud-data-flow/time-source/src/test/java/org/baeldung/spring/cloud/TimeSourceApplicationIntegrationTest.java similarity index 85% rename from spring-cloud-data-flow/data-flow-shell/src/test/java/org/baeldung/spring/cloud/DataFlowShellApplicationTests.java rename to spring-cloud-data-flow/time-source/src/test/java/org/baeldung/spring/cloud/TimeSourceApplicationIntegrationTest.java index 7e2bc1cb37..6d71a785a3 100644 --- a/spring-cloud-data-flow/data-flow-shell/src/test/java/org/baeldung/spring/cloud/DataFlowShellApplicationTests.java +++ b/spring-cloud-data-flow/time-source/src/test/java/org/baeldung/spring/cloud/TimeSourceApplicationIntegrationTest.java @@ -7,7 +7,7 @@ import org.springframework.test.context.junit4.SpringRunner; @RunWith(SpringRunner.class) @SpringBootTest -public class DataFlowShellApplicationTests { +public class TimeSourceApplicationIntegrationTest { @Test public void contextLoads() { diff --git a/spring-cloud-data-flow/time-source/src/test/java/org/baeldung/spring/cloud/TimeSourceApplicationTests.java b/spring-cloud-data-flow/time-source/src/test/java/org/baeldung/spring/cloud/TimeSourceApplicationTests.java deleted file mode 100644 index 61fd8323d2..0000000000 --- a/spring-cloud-data-flow/time-source/src/test/java/org/baeldung/spring/cloud/TimeSourceApplicationTests.java +++ /dev/null @@ -1,16 +0,0 @@ -package org.baeldung.spring.cloud; - -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 TimeSourceApplicationTests { - - @Test - public void contextLoads() { - } - -} From 92d320cd9a02af33413a1c229c3234587bae5db1 Mon Sep 17 00:00:00 2001 From: eugenp Date: Mon, 24 Oct 2016 20:41:43 +0300 Subject: [PATCH 095/215] minor boot upgrade --- spring-security-custom-permission/pom.xml | 2 +- spring-security-mvc-ldap/pom.xml | 2 +- spring-security-rest-custom/pom.xml | 2 +- spring-security-rest-full/pom.xml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/spring-security-custom-permission/pom.xml b/spring-security-custom-permission/pom.xml index 6098fe5b65..94f6006dc8 100644 --- a/spring-security-custom-permission/pom.xml +++ b/spring-security-custom-permission/pom.xml @@ -14,7 +14,7 @@ org.springframework.boot spring-boot-starter-parent - 1.3.3.RELEASE + 1.3.8.RELEASE diff --git a/spring-security-mvc-ldap/pom.xml b/spring-security-mvc-ldap/pom.xml index b001a86955..145321b2f4 100644 --- a/spring-security-mvc-ldap/pom.xml +++ b/spring-security-mvc-ldap/pom.xml @@ -10,7 +10,7 @@ org.springframework.boot spring-boot-starter-parent - 1.3.3.RELEASE + 1.3.8.RELEASE diff --git a/spring-security-rest-custom/pom.xml b/spring-security-rest-custom/pom.xml index 071fa14b71..296703c27e 100644 --- a/spring-security-rest-custom/pom.xml +++ b/spring-security-rest-custom/pom.xml @@ -10,7 +10,7 @@ org.springframework.boot spring-boot-starter-parent - 1.3.3.RELEASE + 1.3.8.RELEASE diff --git a/spring-security-rest-full/pom.xml b/spring-security-rest-full/pom.xml index 5cd0ed51f3..957a349d3c 100644 --- a/spring-security-rest-full/pom.xml +++ b/spring-security-rest-full/pom.xml @@ -10,7 +10,7 @@ org.springframework.boot spring-boot-starter-parent - 1.3.3.RELEASE + 1.3.8.RELEASE From 05ba4f173e364de476f6d3067586b31accee795b Mon Sep 17 00:00:00 2001 From: Andrew Tobilko Date: Tue, 25 Oct 2016 02:06:22 +0300 Subject: [PATCH 096/215] Spring Security filter --samples [xml and java configurations] --- .../baeldung/security/filter/CustomFilter.java | 18 ++++++++++++++++++ .../CustomWebSecurityConfigurerAdapter.java | 17 +++++++++++++++++ .../src/main/resources/webSecurityConfig.xml | 3 +++ 3 files changed, 38 insertions(+) create mode 100644 spring-security-basic-auth/src/main/java/org/baeldung/security/filter/CustomFilter.java create mode 100644 spring-security-basic-auth/src/main/java/org/baeldung/security/filter/configuration/CustomWebSecurityConfigurerAdapter.java diff --git a/spring-security-basic-auth/src/main/java/org/baeldung/security/filter/CustomFilter.java b/spring-security-basic-auth/src/main/java/org/baeldung/security/filter/CustomFilter.java new file mode 100644 index 0000000000..8d2b919cb0 --- /dev/null +++ b/spring-security-basic-auth/src/main/java/org/baeldung/security/filter/CustomFilter.java @@ -0,0 +1,18 @@ +package org.baeldung.security.filter; + +import org.springframework.web.filter.GenericFilterBean; + +import javax.servlet.FilterChain; +import javax.servlet.ServletException; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; +import java.io.IOException; + +public class CustomFilter extends GenericFilterBean { + + @Override + public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { + chain.doFilter(request, response); + } + +} diff --git a/spring-security-basic-auth/src/main/java/org/baeldung/security/filter/configuration/CustomWebSecurityConfigurerAdapter.java b/spring-security-basic-auth/src/main/java/org/baeldung/security/filter/configuration/CustomWebSecurityConfigurerAdapter.java new file mode 100644 index 0000000000..468c99cb2a --- /dev/null +++ b/spring-security-basic-auth/src/main/java/org/baeldung/security/filter/configuration/CustomWebSecurityConfigurerAdapter.java @@ -0,0 +1,17 @@ +package org.baeldung.security.filter.configuration; + +import org.baeldung.security.filter.CustomFilter; +import org.springframework.context.annotation.Configuration; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; +import org.springframework.security.web.authentication.www.BasicAuthenticationFilter; + +@Configuration +public class CustomWebSecurityConfigurerAdapter extends WebSecurityConfigurerAdapter { + + @Override + protected void configure(HttpSecurity http) throws Exception { + http.addFilterAfter(new CustomFilter(), BasicAuthenticationFilter.class); + } + +} diff --git a/spring-security-basic-auth/src/main/resources/webSecurityConfig.xml b/spring-security-basic-auth/src/main/resources/webSecurityConfig.xml index 48302e8e93..f840d3014e 100644 --- a/spring-security-basic-auth/src/main/resources/webSecurityConfig.xml +++ b/spring-security-basic-auth/src/main/resources/webSecurityConfig.xml @@ -12,6 +12,7 @@ + @@ -22,4 +23,6 @@ + + \ No newline at end of file From be290bf9b876e7512f3ca4cbd4bb8d6d8f78308a Mon Sep 17 00:00:00 2001 From: Andrew Tobilko Date: Tue, 25 Oct 2016 02:16:14 +0300 Subject: [PATCH 097/215] removed the previous version --- spring-security-rest-basic-auth/README.md | 1 - .../security/filter/CustomHttpFilter.java | 32 ------------------- .../security/filter/FilterConfiguration.java | 28 ---------------- .../security/filter/GenericCustomFilter.java | 16 ---------- .../filter/GenericCustomHttpFilter.java | 22 ------------- 5 files changed, 99 deletions(-) delete mode 100644 spring-security-rest-basic-auth/src/main/java/org/baeldung/security/filter/CustomHttpFilter.java delete mode 100644 spring-security-rest-basic-auth/src/main/java/org/baeldung/security/filter/FilterConfiguration.java delete mode 100644 spring-security-rest-basic-auth/src/main/java/org/baeldung/security/filter/GenericCustomFilter.java delete mode 100644 spring-security-rest-basic-auth/src/main/java/org/baeldung/security/filter/GenericCustomHttpFilter.java diff --git a/spring-security-rest-basic-auth/README.md b/spring-security-rest-basic-auth/README.md index f3afa116f0..3bd46bdd2a 100644 --- a/spring-security-rest-basic-auth/README.md +++ b/spring-security-rest-basic-auth/README.md @@ -8,5 +8,4 @@ The "Learn Spring Security" Classes: http://github.learnspringsecurity.com ### Relevant Articles: - [RestTemplate with Basic Authentication in Spring](http://www.baeldung.com/2012/04/16/how-to-use-resttemplate-with-basic-authentication-in-spring-3-1) - [HttpClient Timeout](http://www.baeldung.com/httpclient-timeout) -- [Writing a Custom Filter in Spring Security](http://www.baeldung.com/writing-custom-filter-spring-security) - [HttpClient with SSL](http://www.baeldung.com/httpclient-ssl) diff --git a/spring-security-rest-basic-auth/src/main/java/org/baeldung/security/filter/CustomHttpFilter.java b/spring-security-rest-basic-auth/src/main/java/org/baeldung/security/filter/CustomHttpFilter.java deleted file mode 100644 index 00a17fbb39..0000000000 --- a/spring-security-rest-basic-auth/src/main/java/org/baeldung/security/filter/CustomHttpFilter.java +++ /dev/null @@ -1,32 +0,0 @@ -package org.baeldung.security.filter; - -import org.springframework.core.Ordered; -import org.springframework.core.annotation.Order; -import org.springframework.stereotype.Component; - -import javax.servlet.FilterChain; -import javax.servlet.FilterConfig; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; - -@Component -@Order(Ordered.LOWEST_PRECEDENCE) -public class CustomHttpFilter extends GenericCustomHttpFilter { - - @Override - public void init(FilterConfig config) throws ServletException { - System.out.println(config.getInitParameter("first-init-param") + - config.getInitParameter("second-init-param")); - } - - @Override - public void doFilter(HttpServletRequest request, HttpServletResponse response, FilterChain - chain) throws IOException, ServletException { - System.out.println("CustomHttpFilter is in action [the request is going to the server]."); - chain.doFilter(request, response); - System.out.println("CustomHttpFilter is in action [the request has come from the server]."); - } - -} \ No newline at end of file diff --git a/spring-security-rest-basic-auth/src/main/java/org/baeldung/security/filter/FilterConfiguration.java b/spring-security-rest-basic-auth/src/main/java/org/baeldung/security/filter/FilterConfiguration.java deleted file mode 100644 index 12447a29af..0000000000 --- a/spring-security-rest-basic-auth/src/main/java/org/baeldung/security/filter/FilterConfiguration.java +++ /dev/null @@ -1,28 +0,0 @@ -package org.baeldung.security.filter; - -import org.springframework.boot.context.embedded.FilterRegistrationBean; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - -import java.util.HashMap; - -import static java.util.Collections.singletonList; - -@Configuration -public class FilterConfiguration { - - @Bean - public FilterRegistrationBean getCustomFilterRegistrationBean() { - FilterRegistrationBean registration = new FilterRegistrationBean(); - registration.setFilter(new CustomHttpFilter()); - - registration.setInitParameters(new HashMap() {{ - put("first-init-param", "Hello from "); - put("second-init-param", "Filter!"); - }}); - registration.setUrlPatterns(singletonList("/user/registration")); - - return registration; - } - -} \ No newline at end of file diff --git a/spring-security-rest-basic-auth/src/main/java/org/baeldung/security/filter/GenericCustomFilter.java b/spring-security-rest-basic-auth/src/main/java/org/baeldung/security/filter/GenericCustomFilter.java deleted file mode 100644 index e808b1aa0c..0000000000 --- a/spring-security-rest-basic-auth/src/main/java/org/baeldung/security/filter/GenericCustomFilter.java +++ /dev/null @@ -1,16 +0,0 @@ -package org.baeldung.security.filter; - - -import javax.servlet.Filter; -import javax.servlet.FilterConfig; -import javax.servlet.ServletException; - -public abstract class GenericCustomFilter implements Filter { - - @Override - public void init(FilterConfig filterConfig) throws ServletException {} - - @Override - public void destroy() {} - -} \ No newline at end of file diff --git a/spring-security-rest-basic-auth/src/main/java/org/baeldung/security/filter/GenericCustomHttpFilter.java b/spring-security-rest-basic-auth/src/main/java/org/baeldung/security/filter/GenericCustomHttpFilter.java deleted file mode 100644 index 6fb024c377..0000000000 --- a/spring-security-rest-basic-auth/src/main/java/org/baeldung/security/filter/GenericCustomHttpFilter.java +++ /dev/null @@ -1,22 +0,0 @@ -package org.baeldung.security.filter; - -import javax.servlet.FilterChain; -import javax.servlet.ServletException; -import javax.servlet.ServletRequest; -import javax.servlet.ServletResponse; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; - -public abstract class GenericCustomHttpFilter extends GenericCustomFilter { - - @Override - public void doFilter(ServletRequest request, ServletResponse response, - FilterChain chain) throws IOException, ServletException { - doFilter((HttpServletRequest) request, (HttpServletResponse) response, chain); - } - - public abstract void doFilter(HttpServletRequest request, HttpServletResponse response, - FilterChain chain) throws IOException, ServletException; - -} From 9b0cfbafbf5abafc8a0933203c15496b9c164941 Mon Sep 17 00:00:00 2001 From: k0l0ssus Date: Wed, 12 Oct 2016 05:43:04 +0200 Subject: [PATCH 098/215] Added Service Activator (cherry picked from commit 94c6cac) --- .../baeldung/samples/endpoints/Activator.java | 7 +++++++ .../samples/endpoints/ActivatorImpl.java | 20 +++++++++++++++++++ 2 files changed, 27 insertions(+) create mode 100644 Baeldung%20Spring%20Intro/src/main/java/com/baeldung/samples/endpoints/Activator.java create mode 100644 Baeldung%20Spring%20Intro/src/main/java/com/baeldung/samples/endpoints/ActivatorImpl.java diff --git a/Baeldung%20Spring%20Intro/src/main/java/com/baeldung/samples/endpoints/Activator.java b/Baeldung%20Spring%20Intro/src/main/java/com/baeldung/samples/endpoints/Activator.java new file mode 100644 index 0000000000..4b6ee5d03a --- /dev/null +++ b/Baeldung%20Spring%20Intro/src/main/java/com/baeldung/samples/endpoints/Activator.java @@ -0,0 +1,7 @@ +package com.baeldung.samples.endpoints; + +public interface Activator { + + public void handleMessage(T input); + +} diff --git a/Baeldung%20Spring%20Intro/src/main/java/com/baeldung/samples/endpoints/ActivatorImpl.java b/Baeldung%20Spring%20Intro/src/main/java/com/baeldung/samples/endpoints/ActivatorImpl.java new file mode 100644 index 0000000000..9b7c2763fc --- /dev/null +++ b/Baeldung%20Spring%20Intro/src/main/java/com/baeldung/samples/endpoints/ActivatorImpl.java @@ -0,0 +1,20 @@ +package com.baeldung.samples.endpoints; + +import java.io.File; +import java.util.logging.Logger; + +import org.springframework.integration.IntegrationMessageHeaderAccessor; +import org.springframework.messaging.Message; + +public class ActivatorImpl implements Activator> { + + @Override + public void handleMessage(Message input) { + File filePayload = input.getPayload(); + IntegrationMessageHeaderAccessor accessor = new IntegrationMessageHeaderAccessor(input); + Logger.getAnonymousLogger().info("The file size "+filePayload.length()); + Logger.getAnonymousLogger().info("The time of the message "+accessor.getTimestamp()); + + } + +} From 66b6ce3dbe5119f686e18399b6048aa3dae915f7 Mon Sep 17 00:00:00 2001 From: slavisa-baeldung Date: Tue, 18 Oct 2016 07:11:20 +0200 Subject: [PATCH 099/215] BAEL-80 - spring integration (cherry picked from commit ce66553) --- pom.xml | 23 ++++----- .../baeldung/samples/endpoints/Activator.java | 0 .../samples/endpoints/ActivatorImpl.java | 0 .../spring-integration-context.xml | 43 ++++++++++++++++ .../spring-integration-file-copy-context.xml | 43 ++++++++++++++++ .../src/main/resources/source/penguins.jpg | Bin 0 -> 777835 bytes .../com/baeldung/samples/FileCopyTest.java | 48 ++++++++++++++++++ 7 files changed, 144 insertions(+), 13 deletions(-) rename {Baeldung%20Spring%20Intro => spring-integration}/src/main/java/com/baeldung/samples/endpoints/Activator.java (100%) rename {Baeldung%20Spring%20Intro => spring-integration}/src/main/java/com/baeldung/samples/endpoints/ActivatorImpl.java (100%) create mode 100644 spring-integration/src/main/resources/META-INF/spring/integration/spring-integration-context.xml create mode 100644 spring-integration/src/main/resources/META-INF/spring/integration/spring-integration-file-copy-context.xml create mode 100644 spring-integration/src/main/resources/source/penguins.jpg create mode 100644 spring-integration/src/test/java/com/baeldung/samples/FileCopyTest.java diff --git a/pom.xml b/pom.xml index e97093b7f7..1b9aa81da1 100644 --- a/pom.xml +++ b/pom.xml @@ -17,22 +17,22 @@ assertj apache-cxf - autovalue - + autovalue-tutorial + cdi core-java + core-java-8 couchbase-sdk dozer + dependency-injection deltaspike patterns - feign + feign-client - flyway - gson guava guava18 @@ -46,12 +46,12 @@ jackson javaxval jjwt - + jooq-spring jpa-storedprocedure json json-path junit5 - jee7 + jee7schedule log4j @@ -68,6 +68,7 @@ rest-assured rest-testing resteasy + okhttp spring-all spring-akka @@ -75,7 +76,6 @@ spring-autowire spring-batch spring-boot - spring-core spring-cucumber spring-data-cassandra spring-data-couchbase-2 @@ -84,14 +84,13 @@ spring-data-mongodb spring-data-redis spring-data-rest - spring-exceptions spring-freemarker spring-hibernate3 spring-hibernate4 - spring-jms - spring-jooq + spring-integration spring-jpa + spring-jms spring-katharsis spring-mockito spring-mvc-java @@ -110,7 +109,6 @@ spring-security-basic-auth spring-security-custom-permission - spring-security-custom-voter spring-security-mvc-custom spring-security-mvc-digest-auth spring-security-mvc-ldap @@ -129,7 +127,6 @@ jsf xml - xmlunit2 lombok redis diff --git a/Baeldung%20Spring%20Intro/src/main/java/com/baeldung/samples/endpoints/Activator.java b/spring-integration/src/main/java/com/baeldung/samples/endpoints/Activator.java similarity index 100% rename from Baeldung%20Spring%20Intro/src/main/java/com/baeldung/samples/endpoints/Activator.java rename to spring-integration/src/main/java/com/baeldung/samples/endpoints/Activator.java diff --git a/Baeldung%20Spring%20Intro/src/main/java/com/baeldung/samples/endpoints/ActivatorImpl.java b/spring-integration/src/main/java/com/baeldung/samples/endpoints/ActivatorImpl.java similarity index 100% rename from Baeldung%20Spring%20Intro/src/main/java/com/baeldung/samples/endpoints/ActivatorImpl.java rename to spring-integration/src/main/java/com/baeldung/samples/endpoints/ActivatorImpl.java diff --git a/spring-integration/src/main/resources/META-INF/spring/integration/spring-integration-context.xml b/spring-integration/src/main/resources/META-INF/spring/integration/spring-integration-context.xml new file mode 100644 index 0000000000..567a3464e7 --- /dev/null +++ b/spring-integration/src/main/resources/META-INF/spring/integration/spring-integration-context.xml @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + diff --git a/spring-integration/src/main/resources/META-INF/spring/integration/spring-integration-file-copy-context.xml b/spring-integration/src/main/resources/META-INF/spring/integration/spring-integration-file-copy-context.xml new file mode 100644 index 0000000000..567a3464e7 --- /dev/null +++ b/spring-integration/src/main/resources/META-INF/spring/integration/spring-integration-file-copy-context.xml @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + diff --git a/spring-integration/src/main/resources/source/penguins.jpg b/spring-integration/src/main/resources/source/penguins.jpg new file mode 100644 index 0000000000000000000000000000000000000000..030ab8a685bebb796c24cc710edd9e69859164f6 GIT binary patch literal 777835 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

}92FCS<$zdctM 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

$iVaW_*XPbJP9N6HQf$YInsu68@T0 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

em#UX#? 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�||C(=}p^||_fJ+tG1>7SoQaz~~Wa0w;8c{{Ucr+kQQz4nUyk?I4<-vPTOD*XV35z~hhc9_ZO5jvY8S0n}%RolW#x zk@Wll{V(+6-Ih)m>1v3yjZQKLRZ0Bd_Yd&Tj93kuEe3NTN5A*zqRiv46jSCi^_YAf z)y(E)qr_pUe|IyGl6d2mH~|VFjpTB=O8Y+9f+3#dsgV{)l7o#Tl8r&c;dpQ)^ijEK z`grZ$x*Qfhv`|ey&U(?q#?ve*pVRd_`?{Ty2_pYB!BUHFeZGey^}QfA8~KLm!)y z9_jl~&|+YGZ7ri9z{w4x~pD|UFYDvD^ zbyv?;6_kW&B2%k_?OLh1ia5iDEK3kT?FvVoeE9GbpsyN&+X()eONnL@6;xP+gSSh{ zvQVsHNh&}hm9Az2>}B*p(TiAiOtkvy86FALmobN$(npF7O!*WaBr8}^=X=>%qC-MV5#Jj zDUZhE{0@ewoetFv3aKEUWUyV_HJ6VSQHz}{#BkL?juaKfNi-Ya04cU1N3MD`+3hWUlGfT3AG@JNn7N{XASBhXm(5t>q||}a9Tc^b$4r#;pjKB_ z%S81pIF_oTEga@Xt9@l;r-qu6upzK2#9W*G5$*RA%&P)KKX^+nlKQI6GBtIY{3{w3 zS_;;csOZk=EuwdMU;J7qgN4&YSc=dfrWmuPuOc`BPB|FVLr)*t#IKai?RfQA*UJ5-&+0r|i4$-qc@_1pFxjRVik+i58 zVp!Aye9sU(yP%zyY&=oY#L+`jBoo!h-c*fh(cmY;GK)xpMQuvLs&D^4H$Y5O%Ihk@vFF$?}A2=wX|V^0YXaAxQ{FmLOjVGGdtC^wX@Fk6|#mH zih9`X7+RSEQ$gZmc9Ic}jh9H%YxDjjtt`fQex$U{BrvOiN;`n6SC42;BiH6Z=*bq{ zV~Qw(MIAg=Lz<|oHGL0=L9Tzzf;xJos2Kc%!5uYLN}iH>sL>~$CB&AbLl7>Xv`oC* zjb(qs+cr>M37c-XG5sXh0ZY&`FM?>a&jM*$k>_5Wd7v?UU7&L`aI=LZs6H=wt`2dG z8dvAkSEZ?>TBv~rq6VvjArgMuBYB#eLP)N{V8jAQ;0`^sBc2Os$za!&kz@)ecY?-%Cr&+2`8pP{xQVJ_$NkLs z=E4l@5@x(lG*usQjN8y=>nWq1(6FhV2-+EJJrgMXSN9-W*cq1I+UUZTjdDf90(GlJ z5SLF1RpjjvRdwX4K<+kGXDWWOvrwha%3S>|K zJSsdfnrA#ZCEV8CFB$g+S!RW;3hQdc3T1%(3KZb2-&{BQdtP;tHbruBz`XV4dNH@ARP&JcamoDAEfG zg<|i+Clu(u#%=E1?p`pnyIjW>f^`70(nd&#TE?)zLbjno+KHtodie9OWZwS(C3X(c zq{l;*tvO|{mXxd3P{UhA8)TdA85dvKTI3@pS}pf&~% zpsgrt-CvhO-NNqaxmR7YnB<;CL?lqM16~;fx~XBO{S1s8jZ*L=f8xR8`5D>!|tT z&YqR6KHTK=Wd1d6+B~LupKNCE6uXZDxhc*gIe^MQD{&c0I{4axuOE@4d4Ae@dFbjK zS%RHM)Eoey4>^_>S?#1~uj9CnLl5*sW2DDQihmVqX~LaIT)SeEDS1M)ZB?PC9W_3G z%AHg%%TJAe0QXPI-s1T6fb3E5gR%BT;-bUsgV_f=yt*f{=FHO1ku)#5aTJqex=C>p zI#L;OKg4J%e5lJL0zVnZXS&&1_xDEU;z4+*pQ?mWiy$;B+5ycDL9Q}s&^K*e@(C|@ z8&3*NwJs)41&JkEHm0K{ok|$dwCR;math>hRk!~D^0E1|w6^_zdt&wd4}0}oH1rum z*?%8*X5Q{yjh>=0tJ2rfPqeG6GLX{J#GXtvo_<{}EPlPp1~A$Xn@1MHO!ntokjckF)KNjDL9J=$UOgbbj^}HE zA9V)fT9iwuz|@7vEX;GH000NbC4A@{XewjM(3)y!B95|mnxeB4EYZ=5>imvh8%~pA zC()#R<#mjRw+TZ_`BH4A+WH%q7!VTUSHJ}|vp5wE zHBgd(Sfp{r%w%R@(%_zWvQgI3)>FqG zin(%9!qu?PeKFIfI(eY<2)ggL;S%aR6o~7xgkYnJUS&K?io9*FQ=ldG0iVM9y zS1*o^NonbhsXR^@tO&blVt-OwR}mtTPND@AG15t{9h9>u%>fnDj+I;PaokH9&a3rq zfMTtv&}&%F0~AsfStP*J2o>^+DW&sLy(GojvRZKpdVr#!jvw-LnnsOHL(-!SR?-Wf zueB=-aFj5WX(guvm0Dn&S00$-PM(ZU;mEfN0F7Hw{y7QmAXl_8tvH$voau?9mF0{d z28LR9mYhcvo@dgE(lnCksGWq3sEjLhpw)ic9N)&Br*94_O<;F1F@tx+a`d~+4ks@z-K z_R<||YPB%xrjz6d)M|f~dPhB+VNBr_rx9u-4C)O)6jzAjPd=Qbfof^|ZvYfxE@|nC z5>traQ7Y-vERD%adQj@;>FmxXhf#%;cxp%^JO(Ha`GCjS(kSIH&8=AdPOpip$BSdk z0gBfxj)k9%{{SJkN5x*$$8TI6O!fOiFZLMj#@g@(5oR|0awMN{h{Ws6ZOYH`npwRp z9B4L)m=a?%Y_ffQzHM3m08w**YBhtB#eWtFDoCel(9+_{K4GyiNDAJ@Nr=>U8rMPc z0zd|z;b09-ST@age&E}iiywsDn9Q^pd=B(%W?K`R#wxrkMVO~i1ypg#IBj$izxhHH z4-BeQf_{QCd2MkbnER+j2a(}S`WkT+$3U3mD{`ch8?)1a1xPd?gF*;6D%7FD73*1_ zpBuJ);qynk@-RI`Q_=2-aJ2q!-15`yyj3PKm?Uags~TIXfOLcTx472o^}nq%m0#2< zlw8t*H5w2&(S|9F90d_3cN#cGYElb z0Thz})DJZ|ucZ!p6xvo8f*JxijFF#1ULR=d8HucZ)>cdDr;-U}Xn>AS^N|;xc$v|U zHUtZwY%QwE7l#2f*QDw+#ww#zDfx;wr&h;^hGarW9G|DK&fhG!6p3RX@FaMH8O9F<73pT^mV=$PvdZr;N!Ft(m5Yl| z<50jS{g9KANZyYd4NOppsVeK%+f$u$0{I>fKWD;9(W@Q#Ga)^MfWt75~W2#Lm{gb zVx*%8a};q@ zY6a$j-7KuJRL0`h1OxqV?JnpoB9rT2r_tPjBCT~4)JZ8^0yPGx^2eV_tj)uN9l`$q z7(!Ku6kgs80nJK~Yr`E#q6Lu^gmB(VyM+L zGAxP!RRnO=MidzVPr|~dWZ!LD=H)^(ICx1?&n zE&Zmwm|WbR0R#PqxY8CWABIgx{{T?_T?l;r2Uvtk7fHFb?fA9HJpTY+_m6gV)@nyg zv>KSTdc!1STEMY4zXsR;03WTde{GeneEP4`{{Tz*f3wsEgk0SSH^0*7pY|T_tc+Ck ztx63EH6K2k*)`mNK(W92-;sVjt@)0u!%~&?6zV&|EKTq9u(!}(pU?XrcM>o)H6x^d zNBuA5{?AR*Qj4$*z*rlBYu@1T{XMCUN{Z8_<%hvtRjz){nH*}B&mUjF`u;igWp4PZdGyg;287nVGETN|RF+*JUe@O1`!P}h z`Sij0bjMX2gwd#*62YzbJcas_ZT)?!2k`;YX)b&>&_#H8{{XSlZn6m(nYGw`06bs% z+~3;!c|ZVDBON7j9gF(($1NO}4*ZXxDm7o8FK^R->FmM_g%uR*K4&$cDF0)QHReK-L>0IyFp znEgJGgX^nPaehCj2l{(KB*?gC=}bNC{{UII`uj&D$}pd| z{f?EWVk$)s?do#VeLWvTelPg9=Z|U3gmG`@(}5ev9-LyQ0Y}u9H{+!+&bR!~M9ix3c-0 zT|wzc8Y-iQPZ35I+P;F;HW%aQM;s1+-hG$88iR*dM<{g)bt^!()Z6Rz{{VUZp6k`# zR&hcAA1<=S2h;Iy_uub+?v7K1Gt*S-D7QY5aDP`itzpIfpYI=^dS@s@9txg6+P@!5dvT;@T_&7*qX>`#B})Cj=jtQT z9tQv$l0g2SLG=FsA8$t~{70?4(YonTLFZa${2V%gEg)AbV#JO=7q|F-g}thdY*ZeT zk)FzaRO=C>vfYtalVSkX&A8;;{XeI-{-BYjxa)oNruNxvuSd;b7{`di+- zW*t8qL68$#p0)A+0EGy4kM|p-wuTA}g&ha?f3Lfjw`=9DiVCHKVz4W<@e@N&Q{;|% z^sLO0Orba<^Yr&A`*x}OvRP)JitBZ^h5rENj1kQ|qgeJ9(jiu$Gz zd6)rWN3ebGiMZaZkdjp!U0cl8P}RfC1LeopqK;xvw((fR0d%3J4isqz?d~GKBi75C zcc^z)$?udseeu6ywQW6K_uMm8?tJAMq?2uaw%fB%rt;jgxQ(NVIH>0|kcMAfO-z4P z1xj9X-cHfCG?pMW_3I=yq3YC>ioC1=Qc^ROr6@qDZU(mYi*#avbr_kzau0PeQ;|WC zb5Bk+>vpcc>+PA-+Ye~A%z1 zgOyTSer?(w-mRx`fr!U-CPD|0ryozZr<5s%L~4L&amN)td`GA}deEEU?{w{IKKY`g z$?aUWUm-_;qpy#2Q@?{5TeGpt4%t&vL5^BjAghycDpboW0eGeQetnhm81NvL+1=jb zRriNl9ZPFH;eB)ht>HBkigzgc2rFycZKB-%gF!C58k95y)Ev;7`T8F-QP$I+Ji7g8 z^ILy;!y6=7>^&)~c#$L`wW#0%Hj>t0S?t!}ur{#c*nec1Zh3ab?jlU42$$_q8qkV) z>7`A0*QqYx2Ob%zRg5)pTIc0TaPsP`GL(;wdT^m*Pb^W0^pN@^nz7y6Q9QiLZf(l@ z8`(}`jXW@{51Fla=Ybz*K#QndCo+nZt^wgnWQu=Fj()&6^y`YKFfA~WM?q1dpu);D z`OGSjuCf9}9f#0@LHzp|?eoTwNF%}2YeVzl=S=$aUoMEjm53mcNEoM`22cARv!w+M zVUjT-Xh&pN)6DIvDACDh0zk|O0P;T{Pix-wLJ^A4{{X9xNk!GJC>+=1f1hvo5Ax}C zj;bw9T+^}{X0IP@I;3&N)P5Bc4?t2_f%=E4{{WxrwoNMYAtX{bQAn@)Ed@z6$gU1P z!_$>eJGf9(@Xz|Z&r{;9Qv)mlXyI!5miwo>O;oTz)apEJt@hz{5(@$tiw|yGYY#Ha zO;+V29$hT6$&jPU#!QhNOm$ zCJ2Z|q(;5DxF1hu&@(*BvnuK?7*G&!2=hPE_2~-A-wkLPiJZv* zMTRt@iWn8GE4-~RTSZ`1We7i^9?MD+w}Fjd(JM55RwTx=T!tTz1=KSW zVgB{(7ql!^w3bnlJpTaI^ZmUI_g6C3H4Wj8H0oRV43gC9(3g|R9qi)wARqRh!Q-E6 zyh#KyuEr(x-={_t73=Crux^5%F|v?8x~*z1Y1pxmI?rH$B)1^zqD5_nU%Fr zXCLbQpE`81*J3bi0Y~>C*hHV?)Wj35AC;O*9(AAf zj~>cql&^*^H8Kk5N_CxJ?_?r%aohuQvKmz`bKosHjpnYDV$uXgo* z@84U`DMf(5V6pI*cBrb6DdTyhK*>QvNE=+!J)@2=OA+<jK8D?YU7C9$Zu4#Y(>FY}u zj#GCzt;3Imnyg^{6rcy~K4;}Y)x17a?c!Q$wuYXnvW7*3v{9JinJ8aE%K9y7H1TVH zxAr93=O$#<16%|-An>WBGBHYjpRG@9JQh}FI%?itdCokm{;oY(KEf3hyCZ5;)ggka zOeGUb8(Zp-#DSv#e{2$c`EFSv1kf4^(}4MOPi~GNT4d9S>133E6X_(}{cUfr_<#xb zqjqUt-}QcdH}o}P#2STpIdZn~pE~ zjfX!@O^D}@Y`o=^FQ*Qjq+=)szq6@P(<=Igll?3J1dqY`-2VWv_R)}@J!rFeihf;Z znlJ*8pxh6~)9c6r-22!hpUbBfLck*&4xoyAl5VNbHv^mh0Iosy@RFn>R+Q?pc~ArP z=d8;K3>+#RE$IL+`s7`Xu79u7+jU&6abGjjD;jZZH_IJOUr4#Oll`Ce{{TVs`um}v z;qdiRC}=w1Zl}_^ugFls;{O2ak#DcM(>-_^3UwM+{UDobBwGIfLN9Nn`PFWH_$lk! zzI|)Y{{RXK-TBOCTzr1pdtW5`cQH@9^LvUt%a6$Aahtmd3^*#9Dw@rgB|Nm$S$fKt zvT`K!uHH%GW{54C-o+aYrOdl?JPZ`gbZWqjOW^|QMQcU`4j_tC8R(yUxsni}0Kzix zsi6mkXDK%{z(8)eD zVkW4FB+&iFM_eUb`xpx;+(cw>^D}olaWu|!(0?zVQJu#B04v;>j7mfcRRFLoNFyg1 zABWU}Fh)t2Ze)MD8>_1^lVs^UTf=13?%E7)6>4%=I@H}X&y0_E%Y)40qsCWBTuoIc z*`#tM3{>*Ta!5YcAc|QFOvlDrr2(L)%ZaGL86LDFqG>EIWwCz;K(~1j$8A|(Gz62R zD;lc}HKr8QfGB+XCA2Hdxq}sEF)8i0a83bxKl@~JqE0b2m5BfY0yz`oZkLT@0;DZTz(gK?D~C? zTef1st#V}&YUsDM9aR+dRQP;;YKj3@4J34~LJ(fXSR|St)$txf9GYB^Myl!nk0C%s zUmP%N!=Y?YTGAVPQ5-g~q>v$CX|GEKCcHx8`h%ZV z2l#+I2MP)d7hBzZJeM1UicNwgx{mR!R4$N6ji?Xlm!g8%e2S7oWLTm55mqT*B$ zy^x`Kay2#d)l?MI2y3cp${GQQ^Hel%9CI1uSpNXlCAYW>JZDI06}&T2#~>3{HQ)~s zii5_z9LT0frIy{uwP-}?MO9LcP>`!i_=FDDY%5l(1uE4(qkSVQ=c>j|qmrDIJI zsTe?b3Yrn?T9_u)Jn_K=`w0?Ni(F=f5;)gZsR$$)D}uz)fgsdr(#qaUPC|~VzE+Dh z1tw04T2L0ETwFBR_4|63@w`Slvc-#D_XLro*!$Dc3+QgIiT&obvZ+u51q&Mx#EgdX zCcbzB$!O8IS;+;WhT9%U+&97{Ehln{gH@#|N>c#TSET%F7w~$CTuO3}Jry=6`D8OK zM3<<@R-G-Ntm&m}L2gGp5=u}Jw3~`D?mejsRO;4FsT#HXN>3c(o_!lTN&CeSbo~fN zX>c@^9kHf!+G=>yjx&hUlxL$#R*4{S_DtoNER!lMwY3weHqeqk4PXL*ZN>f8>g6Kv zewe9*gBuLdjVmLOQCb|H`k@o-GQObnJe10^CqB=PubF;mWE1NnCc*EYIZV4TIMxOmK4TPnq>q<;gu&b z0i-)g$!iOH5(T!BIYi}_%CzzWTqG4!noyEg0;K+35h=P!(cy6O3L0^&b5^W8^#Z!M z&@L&O^pwlZQi4_Sl$IQT$;jyUS{W-Mjp?b~V@SZLjtYApz$fSru!ieAJl)c$S7$fSmlzQwr2re zM2bNjNfK*T(=&-KZDFW=Js4k(A zM*v8w;+#f5XIu~@5ekD_D6csQmZp`XGMI71K|5BXSA~f$7`wMCW4}81S|Pz2|+1C1&h45bM zZf>cmrA{_=*8ykhGo>Uo{b6GVp6%pg{nA}}9FEC}tvP`WE zlgkXTvi(aJ0>|m>V{LRKu(F2bV@vr=*C4NKX$)bgnW@%66{)A41v&^_ZSD29FhalX zxx$91*Cdj(ky1cG1OP(ZEf^dHBvYgH{G$3-CA@o+d-nBRM6_5gv&Kn5J#?}?>vH>(?je^S9Lk|5 zscIM;$<4%aeJ;R=meST~9`5D?sh!ylteR@85=N1#p=feA{Q3}cRHAA2>j=ORMhxba z84KaYpm5SwNh&K*rGG1@-WbMundH(w;!4P3&{5+m7A9&-BIyqjMPLCpACq!@h4%;* zA#s{(8jqkpn86hDKkT8G#FtgVe`+a3{5d|Hf1N+dZhju^#IN7mZiu5a^&5&jZ6sAu zeZ18bGT9(t(4QR9eb@_f18Lw9_4Wyx4-pa{X^<|~m}e?LyOIsR}Mio6f=DfwT6$d)xYzQvZ7K*&@JVllHKAZ<5|7C;pL z073nE_aO5*R_1H64y4wYIsX7cj~^lF(N`u9_fa_{l6NcYlb`o0Vf=st?D=$CK09|8 za`aZ?lY4Y`Xm%e|ZpMMAB+Yg9=E?2an#^rU4O2sqN*aWMzKTYSYKl~JHspOhnQSrK z#HH-zk{4l9q>46iRbb1HT2yq;F-a20tt!O9LCX%|{@78de8DuR2Z-v`FrUn;W_E@? zEsOlh{xof0l3Q0G7titoVqx(;ee$Dkn370nbC74T{{X|bw)RR2sUq`I)j>?vMm z%v(^cx2uRdcPI_!-k2poGJ*{%105jO6;LQ>X+h9l+RDRlkjr2a8}=MyB^Z(kppv-_ zLPEIEco#iq>@VdgotxE}pOnALtF?b0#0?2^BQT|t2X>IkR_rC3w?OfgeJG1le2-F8Tl z%W^?Iumwxe$pW3F<6T6IP_$qS)D1Zl`P;d! zf}d41Qg~FNN*IQAVSC(P#jSp|3)@QllSXieFd2q)k_ppHgF;E62CEEzsQX7{^ffZu zy(sdy5;E%`Gj|o#L1m>?Ks2MwHPu+DKHj>LDy+RsEloo-1~~?Q2a&FK$x}}~rAe~Y zRP_;}&*=MDA<_XR{@>L0H%%SL4>W{`w3>&Bn3m%}WTgN&3bhpT=(Qu`jm|hEbmDr$Q55&dmQIZC_0!=~CgB0nwEqoV_d+9tg9HmPy zY-kZmsP*t_R|r6sc04$Ao2aKueN8nK<_PAUt12R|HBDNXBx#Emq+P+GL|sjuhh@~1}IUgv3RNn#q% ziXk=b`2bIssp#hX8ut2@<=GL`L=Mu zO8P1au_bkaQ)?`?S3kR_;MqnP(oRZoB!3ijtp!DCq;!j$w$-|~Ji%(rB}4{LqljOI zP-*4xNJcQNMFF)F{`$(tC&?b&t)59HKi}-(5>Ck@PO;UpM>DtrH!=lRxY7x=y@aB> zi8+p8DH?oL$>W6-q4}Cu9SV7F(Vvnn5)-LjH#&zCsz+jR=4xxliRqi~M3i+|6HaQR z9#(}xl)$8gTZpe_pG%OSTHNqJ_C1lEAo}G~B;k8N_;m2CE5u{=^jY-9E>h24gur8s zU$^*bGhdc^iuIZ)QnGVI5(r~TM1o-@T+JeBm+ldYK?JBQY*d?ze_w1|T_Z#FH?e4p zr4ojwzGE~MryowATWwRDXuM5K#JOQa032yKW(V!*4^ufMq75)IIF&@f4CUXD@vSqY zGKDw&LgN1bPhs1cM6mrlEXvxr8ftH|P8yWrK&5G(g%HI`NJ7vGV!CKNj-W`d%a5;6 z78u@T4>QElK8bXidR8g=nc8ZHSi|#eBwEAk?E#J>I<~VL&<3W2B#e_*sMVTMoCh5A zt)z8~=}^E5it23er4&}5I{sZh(yVcPzkwyF0OXiWP0XqwrS!C|ji{}qmfT+Sz!CbJ z>Oqt=?TRweLPMQE_X-a)8Du!X{Xf`vl+Moj{8FfYOlfWhQ+Wv$7<|7{wcxw~$4^mJ zQCozirb=qrKf4w2s?~}&){{Y5BgEz^xuaPixe@B{xHigE`t(EArABwH!~szH zuLhdpPudnPf>&S_wD|ob-u}^BLe0r@E}rL=M;|dLrks#7QHpiD!(MQ*B0>~JH)#A_ zpN^C?97T0x3R9+-=_uN(5l5DuGxybu*&4bw@>WF#T6n45XY-_L)p*&VcQ<_w7y)iu z-BWLcZ|&@N$6YrP>2n=54;_M%Nd#(*hE7EVDba(^aIjolZR&qYKhsCT7Kuv@G$*z| zK)|S>Il$@0Y7vi`hL*04>FOwdy|}!EZ9MX6ugKvAL5^9KtqaRR1j??Fy9p!G4YeDo zjs%JeGdyke!p{4|C~2;HV<1A+plvaV5(y-FWOR`(#pF^=Z6Ii+7LuYc9g)mMLen8+ zBL#(3wGeOsYKEC9DXFR^Rw76gz$S!&O^}AN2dk!dy#hT5z})asU#0$x#c2(^F#SS5 zh4it=3#g*X&)&2E04gzBcAh8Abh9t2x62@3ke}(R20xxQ7c|JsTjc(>q_q= zA}I+eGSD{$2SBK&k;5AL^da^B`rN%`zqTK3?Ruyp+`V$3qTN(e#X>^kAQC|T08N$8od>T>T1geX%EA?aRUk8G z&Vs*Y7}B1n<@WXXz2BQ#F%;GHSjk8&{!@ys zmRe~={W3(u>OIDH*1t!2CAl>U*!w65{i8h%Xb7p}q#SU_uS3>>{y*;@@lR$okvNqzGVfg<5SliuIm>iiMyTCln!}0UzQCwY{zq(EPe# zt;Cs=;`x8FI%%lKNhi@q^!goK56Sv{eZI0q#=RtE5wTUN9dM5j=H7-D0`>yex8RUZ z*WH%s5Y!R*p0*NZ;D((|OiC&B79@QK7P!9+b^gBD@yE-f0;9+Z{QA!xDB9p5zxz)= zUTt%3ee7I-)vkJF)^<#Ur^p)r0EemZVzk(h8pIn}bdovxs8-;Q>+L+ZhPkG$m=MWY zl_Yu}^;fBhjXpraHC{bmQZ4=*k`J~T?MS1L2TCA~yh2J)Q|JDErzHz0Bn7)3bb_P( zr|bDQAp&Z-&r|Li3`!AN~#WiYhr%oc{zLn|1 z8YW@%3O<&#t#76NhuU_TLF3iQW=@z>OJ=vj!UQ~M8D z;-|8;)P}j^`j711_aysjXHqhM&C^FwY92i%kp=Y;$KwA0*ZThek3ZMi%}vr^pc;-N zr&?xfh13ndN{c8z>_Gf~Pi;wB5;q&TaOhTVRi;>Q+_^rLA(Cl;4hA?TO z2G#Tb0E_iA20KC z%(0>^Km^y%KjG>emk0EV^L{V>x7PmDXQXlkdR0KDpr`mcj?v%yEBWJ)f3E;>Z*IiL zR*}Q1Xi>wcQVjrtN(-A36^TDyK~h4G$F(HWA1n8g;+g5_2XI#SLlA#w`TEie{uN2xnCdaw+f)>-t)$o;HPl!mOIYEsnT+Op zBiK8xTFPD!C0+(7Vq!HNOs9`?4$2>Hj>iP}J>xDm3=4dT#*pZqlK=?R0G{ERT zyLeM?cGl12YsB$NwJGye`zzHa{{Sk^y25QPqNLvS5mml_us7x~L|P3r@Z#|BoNXC1 zTzMcBa8ycl0=JM8`bV&wPLW&Q-bkdFX`lm4l^6hVu0KA4liWP}ocA5N;{_0&0Bbx! zG_Iy2%gfWP)PIt<$BKLo-0q*2x!PKZw-0e{dfkDrA0mlr9_$#=EGN1G~2u zo@t67@`$OSy}%y8yS2#P`Qm5P8q;I9j?N}gM3PArCYDtL1nOZGNUD@-ap-ShWfi4@ z+$cX#;09yoUqO(he7@eU;fXHH_qqBL&4;A%d+ENB>_7m}&E`n{T{vS7+R3B({{Y3~ ztR$25JXrBz{vYvAdyC@yy1JoLQq}(eSJ}{i+N}!pFKe2uG1EuZyXB>M187)|*~z1p zU`2)8dl2%-bIp5GEq~;p1!?~PHBkQmldl0(d|)FV%nW}%zHI#y*jWvov%4cKlvOqR zpCcCdqNkz9(n&#={_j!aGZYb;I=2f&1_~Ol1mpp)%NC*iecf&RPGbSrTpv{{C&{Ij zVKDU}%%il_40;ZuE?V4L)-=19Nt$b?sUoKiLiu1)gUY6-j(XqMdEw&jpN5?wy?kP} zyDQV3W4hN&t5Y+*Zr8+5Uk}_w+GLPaJ2MgWApZbgaIds(_gs;;THLiRmdz9A;-M<% zKhgwK%c-7SegKiM?*iBJ$;apAzRYa}|e1ntXazTSP2ZHhK?~kLL~CY1IY|< zDr?XHc1o5vAD#!XMYPHR4ttuFrYd~?%Ad>f=sx!49hwqR*@-2)!6v)|U}wmEol3?` z;-XJ9vQ-HYykM~ku0a8mC{PqPaK52I6=SeRYRR0Hj0lQT-5*Mipg&MQ+j~B>L2((1Q<-j~3+v$_?eiG|gHg%# z=)FbUgTj=4lMz~J_(=JGlQ`;3RlZlnh-DxlYMQoHQuDc}T{QCDY~Y(%9tY#viKUKc zv^Q~SixZ!SDFFPw!H?V1l0zJ{X9lZUWREIm*XQ#U=}{9aOI-JyMJ{P+osohGQV6cb zJtNSB$N|+E^2!AG39_& zOp87L0C?+YJv?37G#4iP-u~A+7~>fli&W5jhwS@0VrwYm(iXK1TGZnla&z`(yL@ znp20%AK>W|UeQ(wWRd5mo)oA)ZAFZO$soCA7ml3xWESom_>y;9js~>NK1RNM z3mQ1eG((Bw)3tR<$sBT+#C~J|+GUZfqfN*pl6e;=>u+WfNX;E&6sY-m*P{Da3OS4# z={|&X%Oj}_ujC4`p8_ek2Ks?-%K}H{{>x+mDqCFw_KrFK0E^*Y@bqMgz=FDJPjTxC znBEs?)c~gm&LnfLSqairSNnG+_WA%lqKasi29XA!q*M}3N%-MSac|wV*FAfJuH75oc4aBB_zX1+Z6x#6RJcV_p>)Mh3f-NJmNW#O zJ(1n+3kYkei83x%*%HYp#K1rr(Az8jgFi9 zd*hRJ{F~kzeh=>^;;DuysP?TTY6^+AzSt5LG|7*e-*Yfkns*CxV4xP-+O_dZtCRXN zRI2(@*VL2iQR&l`mU2fj-dSFRA)IT#y3K2oTepKl{p2^V1jH@+m zd(tx_UNTW!Or^s~{%o|epw+=2kFT>EX>~Yht)0f5rZE z`E_cWCK(fD?KG&5#X4>5Qao%yF*DLa&V+$$gU!eF_Ee4}jadmOMnBc-)gn-lDsUiE z{YRywPz_cl{{YwhxA<~B(^FQ1s%t-&QdS)-)&oz~K>q++kIl&^-3zy!DbnYHFoc1S z51(AtH8EQ3pM>n??E zFMsw2>G}6?>^OAa(?jX}&s+>Bzl-1ffB32QqQsqEW37EOUSOZh{{WM$cGIflX}9zP z>;AXr-q+5&I!AFD#~@YVPx79lAmZ=!JafnR52c0u+_Nd5;nNO?TD0qt9A3-m9M}MU zyqk_sy#uMcx~WitxIZuQ9+{+<_W-rkSdpateOF=#=InpldwoSd-jlNe)f_9&& zZ9e7gj=J3$MaZ40)Lm;1N~be{-I8HqPD1^ zQdHlOM$(P@z6iDH6rOUl0I>{_kzOXNs1GWimq|AmQRP{s{=_CTfZRbmF~XqYpFXuz zkFYlOH?wIs9QeFW_^Qut&9hZk1RHyB<#z^8an|H&8v}$&DpR*2$YB;p+BQopv~pzS znp@ZpXCWq<$jH@Dt5vVs2lx-4&(o;QcN-gh?AuDBK=>zsr*ZhOwIomqljLYmM8~r- zdw#PyQJ?ek7WOImekEU-5kqX}!ENLWSdU`c(F)E8;5v3lJy{nzeWXUx?5h z&uo6b+PS=y1RJ+$VW4WPwo`d$B&yC*R!B|`g07mjnufm-Qfs4J#^B4WP)F#H z4Qd)d7_N+Ms7UJCgCf-b00;$5DVmH_@#9?MrLdWsZH{QIH8|IzY&L#MYh&ZArp?q%6!iGq21^Z)jMELjKH-L%oVWl@ z;*nexzqKr}{X~&rty6_CNoopLjSWB<86H*5riM+%MYNG_V~{%6xPqluP?K6P*3<=^ zNMNCX0FVHLGSyk^w$hI>T0OHxwlSN3E027?@c5&j0g&<5?VL?DHAIy-<;(6WxaDsX zB7WmA04;)6mE6M`u87%mvs3}8NL?U(wBUFOA1;+TEsd1(D|pwba`Hkb&U_gMh_53s z$PovnRDkSGNNOQ7_}c9D^vlwPqLU$#&9xOKBX3f+TNLw9SEUT}6jOrnB%j$S1Mq;g7~xu$G|hPQ^j14~`db^tmNN>5nbnSh z^7k}sL*&(ljv++?&~OU#6%8&*nlz8@@^6cV9K7?AC8^2esTfqWqfkI;1i%IWdXnd# zVO#r)gSa(`Rg-d9bV(?n)vY_h1GLd=M&dlYx)^QHs#!a+@a%-;p;h3qM*X09_tLb^ z4l&j|gw&z&m6(vw{jDV=MmW{2S5rX&ha;0<+Pq>{U^v`X$5Z)w?YJUQ|RyeW7g9O)(Dtdrsjn*Si8!WL3<>cR4=M%)j!$ZkHE^yo(g|(ebTD9Pn_RCz0~K9Bf#p&~Nc1`Nc*xOINsX-i zm6|H7?QLu_HDxH7W~QNvS#KCR-DP$J|y(?NJB_+H|v!Gr$l474iq?(t01Wh8lXBw`z*N;?c)dNM&G^ z6fa7%MJ$XxMTD12`y;p05fj~JXSxxx>ca+2O3j?m&{rG}oq9Nv>SdMSw*esfa#iV- zaK%U;DrTKWl33=)u&7feM<)X9B$ zJ8J+@g2X6_1wI_{#xeFfi1FSJ1c7G+DinEYVoQ>I%>vW&_3BCcZ{iIi#TwCNg>+HV zIy{XEJTa{}G9OX#OBgz@aisfKCxvafN(X(Vp;1WN#qjhtlk7u@BB_iU2FI-7|jjvok-Uh`dKw-O?(pDKREbtMf>V;@aHQ$^vy z?V74uT+L+DmZ_g1k))lgrjj#x%En~T6lg+)Kt7|{-My;ZTEn$mM&G;br6t(0)LK*~ zN*{AzC?W>EL=iM3PF(UJ49#JWj-$yo^D)7xt5!X$_#Ww>7nOEC!?TP!v*Y z!9WbvJ&o^JHH6XKm$?sNNhiM?eN+fYBB0LCaw65c+#wT zYHij%*6i*l;VwdAl#lS#1Cmq&Q^VvMoe$fS9J17rZA~diwdq!EQlX7(JzAMncmwEv z*Y*M3?PQiY74aJoPXI|AGmeBdA~hma0D(&SWYip27_B~7r$_VocWlMU{Fv#yOmUe_ zR{O+N*FiK=q;Cd1$zNGA!bz2hj-UMEkgN3i`;JygKYPZ-a;_P^#K_0VhacO}>uP6X z;uHEM@xz9Z>663r>sMd+Q%6!y)t}Adzvh|;6g`DOwD;uIafck;nPLJe0eev83kP*X~Z?4dn$(m`%V)T>O~{w{r;ZeeF+l08VI3Dg`Qi zNvW=D&~KH)THOLk@q-XE@dHorR-fSN+CSks``ahC{(t5+3|Xq2eGhE(Pi10T9~F90 zMPImfv{ZYyY%@VKELAyLLyD@3oPcITo<%|xm>Bxz_VaJJJC@xeM|n*^f zlNHwey;)5};~BU26iKE^OvPP1hG}bjdfC@WXSKb^`v*E$a}C5>Uhxt^y_FPFJ03zX zDe&k%fDWUr=a=vH$(nt+im6lEQ`~Ss4VpGE`2cx!sRzivk3FIBH?ud#QufZ@IDN%{ zni?AVB$&^O$z$?bDkI8m`nbT3u7;&!vNAQ{Qqf2QGcUFGmeOpkac_ATRx#C-F=UY> z!72@CSI7!b3RaC?mTlMZ?=nRZtatFaIiY1_6kTV5RtHct?>PZk2muBfjdS@*eVra! ziiQ5|&I52(R2V5~qcoLrOGj5UO4TT8gmKfu5}gR_MY+GS+co;MJ94m5ZZ*RpVtkEb zCZU09(SAVu`g3%;J5`jN$nZ%jl>K-S0cJYX2SqemEm}ruRH*q=rzxtWrm4u+&rTr9 z)8$S-abcDGm6-XUdPu4=v{J?5rIKv)jU_80D-@+!LG-o#uUoRG>LEe(MnU4na?#TP zffcEj;m$;0@Zr)lwpn6^&NtU!_To!P#bR)3z(4}Z2_mwT;L1l?*(&ls#_~BT zTqOyutgNUhOi^IWHYMe%^U}{P;h@^Mv*SS;g<6dwIKh9?{hYJUB=TR!5(1@NO&S z`V0UwPLtb7Jon}UI*6JXOQxpr5aK-vq;QUhQxjK}j)P93P*f}w@i>ts$hh!S)i#d} zR8q$+ByiBPv)-PDY9pnWi5AD`eeTBV!B3|FTJZdD!CJM#0%=8{0Qu8b1Jn0VnPz3u zR?K%Qiq%LV$$A0Y;qnet)N$!YNtJ|DO9d>_<&2ed^G6rj1<5PHEHze*)j*DrNYV{g zyQu*10QR%Sg;=W-B~59-)MtqD`T6usabY2eWtmpo2-p*^^!tHaisk926reRDB=st~ zYIjKvI7=_v$5A$AP){Qz-6lu}p5mfN%$h%~?f$>D^UkmW(Sj(3pmE{n^YR|OF>4&E zz+P!xY@!l$ir|9XzX&wd_H>7#GI1erz3N7xZCP-wX*lEy4H05%NJjbni4Jzxa>hqP= z`C6B)tjW~PR`s(+q|{9EnHr#ifLOBrkO2Hz-r}iaxVGKp`nt*DvobIg1lJ9ZEK;A# zp}aQs(Cv}iStyPeR4$NC1u06_wa*f3=UVh7V(Qu~VVB2Jfn6OX4Hw(_?P(kB(M!a^ z2?K%v=lXk*3a(_O_BhwxF8#6&z}7$K}^_(W*K# zI;5=9L<|zZ5^+5kSJO>W*s6wERF7It=H~iu$Gxt&>aJ3w13>^brOBc2*!`j3)DI!) z+_I3MlmH&!)m<-+8ERr=hPGvlJJm$XdRiKKg33OY zmSCryAYSFRZ!B}|v84+%I(RvtH3R|>5Ps4?@&sq3+q)sL-8BXQ9wrnhq~Q&FotHH8 zRr8@IB1YEA)YI(!;kVQE3tOZ^**k7{+{w3Ytt_$4X$+DmUob!p2py~nk_~H4 zBczO!L1}S9uC6+&3VLcvi7H`;M>tHx?2|!GB{9j7n-NtTi>W9ixI7y)Q5tm zp0*q`d94*;yh05B_#H0jsDjB{C41!|byjmyzX3&SJM@8h*Ggm{)U zk~AQ{`)_6?Y}#ojwU8TWBJPca4Nqy)PgYSvap-b-L*rj6$8Ri0SeFh6U>23`)tZn< zH0j44X~&Kssw#0nkyMD(OCg%;D#%@UCOPB`E%Y2--pp;|Ll}Zn{wt(ld_jQoW%C8A zPn|Q;8?iTYnl!#CD_jb2r9NsXetms3{{Z13KP{`fuladz4~`q3Fe|rD#J~5Q?a`1OOww{@J3LWc4};r;_Q@$In3(KDG4d zXSYZtw$@MMVel6uAd+?*4WB*C?MPsaBN2hk#K&7-(O+=mNJz(PZ8G=NMJt( z-|v3?*1E*%7?4H9&->r_d-uz#vMc;Uhf(E2eL!#rKjF{(Z{C! z7?okhfPW*KkLk|`-7B>U(f8Gi9rY6+XlB9KK0nUcX z*QVK{C!2q-{>S=X=y~>}l|K!7M{yEH0Z~exn&*I?2j=$|;GgPLn|^urtyn1)=^YgO zTsmu(lyX|*lgIk^{-cZk0Jiq2WTEZ!>rAY;j8uQC*QkPwxwrt2sJI{R1o7=~xK&*b zllJvr4o1lz;Om#zU;88eO1Jyh9@#fJ?H#=`);f-&GJa>SLWGZ}AML;1{nN+!bm+Hr z018li{{YzQC)f^d0W37~EJ#0#{{T;J8^i+--PZ)p%jx_6-p=1Wp@&3L40ONkz z6Y0n%qvz8N;*pR)ms#VZVnx&eYyJhe{{Rc0_m6DJFr{mrsESK>4&J4uA_M9czZ_ru z57hI?9@sMKz&$7dQz$5ZKBO9Dzo9S1jjzSNpF#)F``uWMt*nurrbSM+2E^LHn~}#H zTkGu`4M4H2YtpNDQbjEJHU9uNQ$!&`=w2;LcpkV^6NwfG{|{+`=uSn=tGM6RMTetiZ)q!k~~ z4hI*%`+xBED0m8jagK>?$z-c%x31!<0q=X*pUL2l#|Gg0OhF=@JggOgUO3Aw-ZxAi}P?bVEwFT@V100ujeau#+!4eMDc7euw>jKOXFE zS%#57eqALpR8R_a$f_-@x4o}n$S3j5_`lcuJfbqahy39n7FAq1X&oc?(JpPoIx8#5l`Ty&mt zVtp~ySI~6U7gWJbz*$w6$LYJEhdwVr%;cUo^k?REF`Yula+x zHf=PNvW)j>Wb%&47w=iNuF=}NYLb?rVRBvpS1YP&TY{G7pL0&^%V)}VOH4JU+YkFq z7Z;K**x`nu=U=m+)bAPIXPQ+7ZQ^YCikcstbe75T80q8VM%aCY)f;yPl~TmpQ>!SY z7=z?Wn0Fp>k;{jWrxg)bR%wi%%%9`z6>o61_OZ!0q-w1+o{k}1V^^*h{QUxUX7Q=G zPC<@B312NtYIu5+QR*qcb@WQDsnoHhNe!C%j-}~PVgZHlYfmcqAIsOJ z{FKbb$Dj5V{{U@kgU7L)cL7&CIz!-sDA``HeXgE=Hva%&Za)_z-GuF{P_CYH9{bM88Q2*IfDoOj)Z z)Y!ZgI^$@Jq10I(1yY0Qrq({-j!Z~4`>E_Lso-1gEU_^2M}19CwV8n)wd!StcAsUn zxMn5V1j#k>;a@SHK7Ci;cx*S@TZ*opk}2d`%DEyZN9~xVH8alO5oTTmzb8oN+?f(b z1>BAR3erEX4M+Yf_Viag4J3GK)Ps}fT2S%EEBiVs)jCa7^v0M;9TBUL$tnYXB<&!S zF$7pT0yra&XBM-^9LirXx0Yx}r8+FRNiG7wpoc&g*CQ0i%M|q-M@$mSEMOQXSfz?Y zSBOSj6m|kj0m!;F{hr6#m7lz*I&0;O5Aqs%`gDY-Bf6Cprr@~6|IsX7}?Od`yhO@#A z8x;FL%4^rONU+>Xs;Qt6@;TsXP86rDIC1NpO07vPQmqk2jaF)B@tq43Ja9^XF_*I+ zq4u4on2z9akZF*8dS=)G2w_^DKW#`K%ciW9DN!9H5XvEl($r5byR%6u%z+RU(i$mw z7UZ6Nrj3zHI}pyzQb`rz(x44-TAn{Y_^&R5&GOYW*geW)MR@-JfaK*Dlf+S|=w=bZ z2L)0|29Kr4QSInrD|rlv#)myVJUt1XnB6bPu;FBG=KjH2z=5k+|??ZRjx7M^#L-}+g`sr1TQNY?5k-GXSJqpY}KB=zl)TAYBj@F@aAnFE9AMgtCs|rKmdRHBwZd z)eLZix{(kgQxRceNwSZAlI?CI&_N5s9=|V_RgT@Ee%35cuTB0!=)oD%L&H7nf;*3= z=I81Dx3bo`l6curu#rU=*BWc*^RG(^Dv($LzMnp&P*F)=Q56j;$yrl8vD4C0)1$n# z6%$C2#*s%DFD#7BU;rfhNfX217k2$P&2)@Z{{X9xRhr|$LoA8_rb+Sx{Z#z=-(&d> ze=BS+#;&tZlD)Tp$K-pnedCiMwB?-^SJ}IAWLdtzLs1cyhQ6gpX_+j|z`cdNhnC!K zyNH~h_ga-S;H3J~Cj*5}1$_G6*&E!l?(+f_lnB)EN@S2n;%~+I4tD0En}PC^X+44U3ShYjTHDks|v9E!8IQ~i_5cGs2>Ta z^7;P&FZFr#aQkIiJ-4=_p5A1@VUm3!!_1iY71>mt0VCNpqBM38$6oOoivC0S*1a@^ zj6#Pr=}`$*xdV~;xAgx2ZS~;$q@<1)m3uw$pX6{-g8F`Tqc7J=sX$dPQ>-l1Lc^MLkEU>M7O@iVi-4;MPxge{EFeEJJ+R}UQbvB}+U z00bxDz^MZmuMd_#Ephucnu~B_EAtz3XJ+Z+#L;ca+@AB!S8lw$CNBtSA*92=nGB>9 zpL13x%IKt65LQ&kQQiG0eVxMM=lEtx#dU6E9lIqhEh|RU5Vb(4 zaL+EHWh61lRz?i#6AIVMPHTaWu=E4fI6!c7iYlqlE4xY5-w{E9z@dzj*E1 z{n?z^{{Y4}9vX_XW_1@=;^^^}n7zJ|WH)70)qC#^vhX-KvNTnDiz5l$k)}$bXO>Bt zIaw#q38N6T z71T*!K?9=8zw)_SJ;_s?gyOc=cQuOJxhg2qj=qkk6<)ba&O;|#_PII{iJE-nT|AYd zFD%gnoD{I&HE|rMTf~=2x~WbAgcc-Inx=EU>z|fxG#BeG3R=MkFsc5gbrl+`Q$cY||6FS=sTirXCq7v$+9TiC32)1!Zk5T^2A;Nm5`A z3p}h?>GYjM@R=;uNoHC=WHEpf4Fn~st5ZNSTGqX!7fT7a=08e_J zIqdJ@w~lvPg;iD{aMFQD`Q(z#z!8zrwY%9a)g|oct7vsORx|{&RE zUBQo=6furz>FJ;T0YwxNdFt}*M=YZwUshF%M+D|oi2=5y`h5?u?&$=U4-`Q_lTxS) zmyj)dLdVdGC>8V1r$&2CD!n|YzO7A74KECSq@U~0w5pG(Kf`0MdDd}l`ur0tA(d(cw~P(bHYhuBTWKHYx3Vg^!AD~AxO+> zd`Cq9){CV{3<~k$15=9=kD8XDmApc_5zi6bsDY%Z;Yu-H7#@6jcE_v`We8XkDfaTl zq6&!S(^4cxk)|sPD?=1B!=#_+{?6>+(Yt*fj~#&-Ae~hjfycrX*Nrh#$D;eTmRlN^ zFl$rXq;}BKnc_;C{iCOb`wGegt8YaNHQ9MS$TVT8G8NRs91RYWr12V0jXH}TGT&tNVa=2_+>WMzgGNP*xU zVWf#vk)`Hf6mm%nN#y&zno8{Zo!q*vrhtMtltKVd0nJ$AyiRy=>deU%Ev>;=gv8hQ z+N8Pr2NUIra2-r)TB%b5BG(A#OlCprM=4Q=qQ}oYG=fCXsFO81lAPS!T!MY>OB>U+ zS)>vbzDsMVBqY(Hh9*!Jo?jD@{+o!;N!H>B+U*Qgh|d^LHJRj9VM9_%hU4TjiVmTq zRYIRO$R3_f<7y%TbP(H5DMPik?TNStqQf z$!Mrbf*NZ4g%pfZQb&ywjt3GOLh#GDhayXF8UU?ALI(kx?JZtB2l6qj)!b6X;@Jw^ zrMY6HfN+l(DpXNX9devlpI(#uXJqF4Z?gLLtM;W6WOKPp<}(tI(W1(<^h;Q>RaKIK zp){1#QZ-DnlWj4P!1e~+6z)5OJAJ#CWpGHZ1YY6>4k$sd2A~!68QIDEvunHD<|S5j zAu0(iBaJEu_^KFEfOd+pI47;s@w+1(*Ij9|I{yF>Ue(mwD{JF$ao0-F8S4!yX{)PY z5|2#tfa1U}uaB>@t}%%jP;8Lh>XhK_OTHO7Xy_ z_i}PXa`CG>Nd3B9Wz8D`ht7GzE`F?!|tw+#v z-P8u5cN-YwQ{}4JnP26oiPy@cAtd9iGIqXL(vP%I!ed|$^#p?&pGwoqrQLqxi|y7T1e47ItgyYj0K&Rsk?wdXFVC?H z-p0xUtz@U2KR+&l@NH5_F_3n|uTVv5N#jBDKjG<9@l(6<9~?eabT@p^$4M;RZQ6TR zbJj(XX;zA}4EY!-v-I^wCRt;Ovk_TUsN8|%Cd6<+o1M3d0>esoWbooeKb=qQ>O-`4 zOLL<5 zQi8(9VCC**USfdl`?z7dQB_@PK~y1$2h&QC!};|e-dNo<$8y^v{{R|*9YIJ@C^b?T z(9nwNQ;HGkP;~I$n*(%pmiW$fcJ0GdZGGFd^A84Imo-k*b+j1@35iO2i3tAyC83u7 zXrvm9>d1bCdurx668=rL0IJc>9b9AKsRFzLlS5k7h|WbiI<>qPc7MI34p6C##yE*!*RhKoM?>tmU>c@K#BpS zMO3u)5w<8&(_^XV{_iU-L*yi>ds52`G;`v1wniy@(Nt~x91wlkZ5ODhkOm~Ev77~D zw`pOFBD;Z;LBgvU0A@4*G0t1&Pel@`Tcws)@g#;SX$nh7tV+pnlprk9HDXWzD21w7 zND9qQG*xXDB4wweuB)Dt%O!I?Wf6FxqNjpiEUaUL?_`mts|V_;k$?@yx}=Fbf4Z(5 z2`j3NRzXSt2MSk<3}d%A>1@$Gx}Cxz@>?Q30#O_S&dew>+5ig|p)BN{B1K!p4P*G{ znU@-Yni|++j%rHknQCN}TAnqvbQJ0qCo$W`8(NE!J+3l%mmVFojL8TUBxg~n@*VW3 zLrwyOR=qK9vPo_=qJuHwgq3tqpdCc^GiBFT#734h73t?4lBdMWRRoI|h_*p4K!`m- zgvSV{s3bH|B(BAVp{GyydsE{@X{m~UPO6_@u<##emqpi>Q*IH*Dih*TGwVgIPNnlC z00E|J)7?T;WN9JDV?5C_OtHv;qcn9o$d%@a!2&n(qW-c&89&C}%pNO?&(w~&85kgn zYOk&-kGJ#avL=eo;jHhpvW2KQ*0jI`d5ROmhMuEj5u|4pg>+Ov)5A{!%+)4=rxHQlxZgR=h$zWEh3)VRB1wl1R|?LP)k$H zkO=!T^XO-=Pa-ynA5mdeuXTKY2NWKBI(EQKC-9|;l20o-x7|PjqpMunMPdnO900Zh zlm5kS(<6e{vTUtOLHVg1*=m{ zBA$6QAmh`hiBkkgQ6v|M>tk^gGKnN=c*y|D(EYTLR4Ul08kB->W9^5zi4moVf;8$) z4;*khXhF}}gXz+ShF4@sdzLm8B7;%%2T&?}_!^8?zTRXY!vHg zplKu#G+>X@r8H1bd@SixfMDo|xsAEpbgh?wa#SzKWE+Sc3O}}hL*CPDe**&W&Tv-$vSTV+$e-lt^J{>{y zp(BL_dQ*DA;oKvhjH?nFY92!b_-o>TKcrZ3rYqE~wLFx2V}4b|LbWwm>Z}E96H7xR z?M+bzdNx@qlr)e*7KmL~N(!-Jx96JechXwy+m7IoB)72MM>s6CA=X;efH)Xz6G{{I z^q+c-ZgW)wHPh=n(T;{L8bgPFN)o9 zJmghN6I9Xw13~=0tudI@%&R=9B$5Rw`fdmG_F1|8Y*z-(F<6o~ZizHB@f8N5*k%V% zz@W{1x>dH?S(t-Vc#(;12wu>1v1(`)P(TEO$3H%s7J6Udiyw)gof?tScw~1HN@SW{ z6%m#ZMx-gw)-DhA2ipd9dl->)qN$ICNGwY?caW_O3C#{G($$R2-5e^EF1qA@A zo+pk)KtFF-s>M4;=f}%XW14BDXc_}}HBEJebK(AmzM>vLvEOBdp<8xu_K^2(Ju$y?WW_ z{t|ccieHca0L?oO)cINDU8(ZVt#?OLO%3lAKJwdMUc%XRWm(cTb1vSkq6BJX75@Ox z*q3uXwyS+=DWm7+38@*$Am{8I7;N*a%41$MKi~$xEDC3d>*{Dg1lU^Sl0U?ooBsfb zC)|1|<_h^ZyK&5N`PN7WzZ%JkgV0}KGZhyf3 zJ-S>*X^Q=wB?OKgVGxUYV?WSbeg^}K+un@8o?j)2q#g~$hrDko-94o$_T|l z>vBUFMj!xmp1By5iwoTU09)Jr$ixBQ5AnF?pReQI<9!CSt~zq&DAF)cP}ls2t}MQxan1PtqTko)^!E3U^8S4x zr&Hofs3Z%11&7n>J)*df>Z0Hg{$7{cR43>DLDbYl(mf;d`2PSC?IDrD!96%iav{eA3r3bsk=j7c@?BtdM$h5^U~fJp+@Jde-4P;{|ljHo0E)6<|C z+C>`D$hP_$Hx@tF^X@~^r-&8kGgbo_Ub<4|#>KzjqfNNr@GMBby0mD(iVXa^)=yI7 z;M}*9gJLW+{{V*{Qhk?C7l%_?4^JcM*NWHBpI)V_kUu}+&Aq1w%ymOmH1q4fF$8+F z@P4NM084T>{CjaDFJ6<+!=a%dUT+H$Uq6=#Bu(){+`PwT{02qdO3$NDLqa` z`W;}4eFzr+0B(M^_QClMw!`JtQh=E)#*$AQeox>J=snU#qXFg7g(^D90luq?{XW0! zefT)k1qOPqg!CV?tl$CoAMJ;_TaruH_`2~#^dGaX$Xj#39Pmp20K9@Y_NT7}P-+0L zSjb5fg|Q$WSQGX7a@_EJ`>IJEx@MH>4AJOd4Y?QNk@Y{<--Sn?O)``et!vX=Qu>Dj zNn3qC*Y>I+bk{t3&_p93AIqlbDV3_?axEG^l(CJNGQ^;e-$35pX{!wn#7~Ak(#Sy{ zww)ztzz;AqDsfNC{GEK2f12L>tN981)bms{l+Rrn_Kkdw+NEp0d$21iC6uhC&x(^7 z4Kk7R^q=*;&VJ+8%H_6tf4COHG4{ryAbxBD6|ayq;naU~EvT};x-uG1F^#yK)YK1^ z9OPgD`!4I_rp5mNNFBx3y={%PT~A^6e_L&7nxq4KB_?u;yD&->B1Mje0V`?x5_$Uj zi8<2`TT zRZkz@JW+*M=@BW_R0{-w973u98dSzdA4?Bp_Ay6qV;zveiYS1l1_2bH^2ZK`(~;vi z6~g1}r&xRf#>xri!r$>c+uFcLJt72yUZbrkxn{8k=l~ZN=aNUe7c`*i%)p9Jbltch zRNDKg%d|-z+1wH{gC3O;;j7%Uh8%@ZNdAYPYqo}Cyx6G8H;{^Y)y6u!aS0MepsKBU z`GY@eZHjD;M`rF?waC!1CZNM&Cf_@TcA=Qlsz~jSdYD^pcYY)K>IGP53P=?=Qb5O0m9_o5M$pMqt|_WW2DFxgj~Z|ubg1*E zTep8E4cCj_pAENdCMzc$cH7&XySON}{9kml#ZQ1tRyvA~dU|EE(9u>@(akh;=a|EP zkGLwy;e(#HYfE|vfZLrw!l`&rlBzJZAd*EY)h9LTX0UN5EnBz%Ed>sEdVf9#<%2xLsqsa`hlUDP9~u z!_h>nY@!Yb)I~|Boj=3=Q(ls@G$}SxlkM4Nr;1E!okKF))(zLF_X-}`=FVd?V?QtmPpmGUHo>ptEEOU7d>Pj9z6Y^1T` z{{Yk3zQrKCxbTo^b@Tf^e0^|wV(rmMGtfu{RB@@VpUS7x<>%HKn%N+9iJBi5nGH=i zav$yFk#11>iul#bemy_Xb=2XMl6aeKo8~r z02kAgbrsa}(uZUfLXW{DKo`)`u?R-1`27QdEN}e}wo+iRD+X>S6*L??xDTIH6D(jM zICD>xN0A&Tb5Ggn)4a00Q9V4aUSSkEjDDa=(lxnj9Yi1T;QM}C$tWR70!G!XXMKp-1?Wv`HOTc>d7HD5b)_cU>U_r4|K!-pA3|%szSW%bT#?)X_xE4 zQO=T1C{NGx$4M@9T0u2((k_w59klyEs5l?Y@%h|$v~NM({hvtT z8ROm=q;DsrU+yIb>1!T-gY)hy-leB7T*Q>`mrx}6Qv$x3`#KZyoL}-4w5c^kE00xn zAG05`pth${{`&?{+!pkB*qe?N3w}7_{?lHDh=wJWzcEkqbbAdO^o0o@ZF+8LBV(#X zVRiI)&6oXi{cY@}r;W{J1wj-VZ~*n`Vx)`k5y#K05>ypa3Rp(`A4=-rh6hm^xFCPN zKG8{XRaywmA#OOyp{`FJBd1azTf}dSe$Uy%t%Sdl-}2_J?aldw`5W5UnCN=rXys|A z+jM!_arT>sBs^_LRpW4PO48gT5JlGi0MPpn?pIGE3kwSUK_QzwA|DYn^T_`I2Sn_W zZx=xnkKJ&$anE#$K@0Oy^TQG7E7tj&Vk(LXC|;f@=yAVmO$IuW7gHL=O9-c_5ki(l zrql+OAYAe6>u-TzRS;&>{{Y9SkxqmY8A%nQ+kgUrQJ+2-{{Sya_~#|5+(?qaQ3S9$ zNad^xpx_-#b#JAfo?cI zU#I8VW{)}b>r`$bk4{n41Q%ka!;(iP-(EeX`h8fb&rXZiCX^JfS$yc)SRb!EkL&*N z?*0&rQ>T*WTZAH?pInQQzy$}3k^Me`{{Z9fUVSOAU6Q|xUfiv|pYLB!d+XhMNdoud zkACajM_|lOkZcJATmV}9n_u3(&Z=|6tYuscA#{Pw{-gSy1;@LJ)1upt?T_XD4!9Vc zkPBUfw2^Qd{CKeZe~-P>H0hqWMug1>Ce5sZLDO=qZb=*q{{Uadw~iLSE}v2kJh9f0 zU(GuqQMo^vFUfp87vAP5a~S=XfZShghREdUF#CFg5sswFQ9d%7s}{BJR7o-k>Smp3 z%({n~$_wCJt!Rv;5!^sU3! zhaRX)y7zA3!{9d!7TTX?)7N4)y?#!j9mj#AtlV@oc`O!RZEeaLIOKY`>LQ|+hLQ?( zk6bX!gHzws58gQZ7~0)MDcp4D?ft(#fcLi-kX=bB)PBbTg zBs&*7COdNNE%mw}sjI8m5pA8}lR%f+nhn@nYdg)qRzL_@gpnjmJB!i4{CpODX?`_Sd1Rn&Ev6qwwKP;dv61jTrSs}5gTG9tBzg6mdRDkk_$97 zH7v29v}gynq_&KhXFS>J7tn){gf*eFUlN(Wuz~d<}6-iRqs3D+& zqwV~Wi6~L^Cpt)ELn=}`q8XitOz^0tkTZ%>v>*x}UX10s+uWO=9xcA!6?p=vAefvx zJDRU}XC$o|-%zeqdVz_-QQ)(?Qf<4R+tXD`n1-Kl?rg0!CRz+*Z5;LyV=_5pzsJnhFA{1F}X!=>eIPEUjKF2DciCEg1-&Z@a)@tLk%D$Ty19(4{OcDs#0| zaTqD<(rFYLdMM#i!%~}G_8(ti#%7+}+eGg*w0G(h3XNniG{feUn}6hJDHr zFqQR)^GXE*6(G||Wzup#Ot2Z#UXpn#s!8((d|9ZE9aBveB?Q??RjOi+Squ`^)_Aq5 zxtci`D*Xrq18-sLtC%LgTZEzJh_>$v`$JwMmykp| zNdr(sttvE?6+bcO)*5)}X=jSOXseEpYL1p<)RRjsV~RRDyDg?71T#JE8GR?)v0B?% z%$IVVZmWc@9J5k1el?8K=| zr{0Ev(FcsP%&Rn@fEc0}y({z|i+)+O43{QQHHNrT9svZiQQPcYCWD7c%2d-h`-rNftBOd_!&JeXJGI5M(?<$BSRNRG`SxIKro1Fck+JJ3y)Xe7Z03BDL@!n0|{!5Q1vB6d&!0AXm(Nojqc{&Umu^b*QeTmV+*F z^su<&DMOA}pvzT>7fR66Eb=+Ew6(45&e2lxInjIKk~v*Pa9#uhStR@*vHZC zh@RiV(G=?}J|hwSgz{CQT5)#Lqvk7LPNA)RK%vL@nwqYw92)bydPA^NGchmO`L zG_tR1N#ZeJ2be2f;I!yjXfDkm#VL(%NZwt3aY7SM8U+>49t*G(>P|( zZmxMhL2p=HtX7^Ks;sg;R7-gubYWkX)lTR>2-6jG(E+Fc1&Ot|_JL=ML^bEe#Qgm=WTpg_Or(ZA7=!-`S?yx!gq+w$iXdC%9=PG(`oT zdRoQ-Ak|YOXH9#lT=ata#@xpxbbH_C&`od`HBy!DZdrBhQ) zM~wCuI{$){a}S2OUX3bLm8kX%(2Q9LE~J!gyd)lG18}SW9uXSDSWm& zDrL({kgK6bW{xVVjB3)+<6@~o6=q6G85LXc;%gsQCwscw8&{q>5hHl>rDzn&f(t|d z8q-W{$L2|(t$HHbF74bvMZC}jw-Kw50V=W04UE{5_p+5{Heof>m=vpD*@v(Q?A5i}07H9Gq8$NU0y}W26aHoXGJ& z3{tz%#w%5#D)LI`jKU%`YlA^i^mBXriuYL-W-=fFYH2}FFPH4c?dU_dOjU@fBV8zJ ze6z>)ihq`!Y*qZ7b{zBx+PlhdBPod5yHGq3h!2`cYBLo}G$;T{j|q&c3wm1r0AF#| z=0ivr<;WtxDx7{;`+Ac$n7j*Sqcs?V#}%OR;r^=igZ>mD@D8*2fd2q5F2>qhKN}5y zYxR@G+8t`FFHtUQZqv(GQ-_K|$`SLJSC*7q=np6-f$bDTHNS@Do*6SK^w6zQz~FV)KHSOA$92|uaK)ySK%`Cxa^%hMmH;o zuc@HOW9p(Y)KOPa&hS;yO&bfOw9}&@2ardzTNG(z@l=%6-AsYq-AZ`@U+`n2$tSkI zvrCI&B(<6_>cfL83Woa#&rdZq)bm3T(8911#m(6o_Vkstih@rTw?EiAM1He=d+IspF^p0m|{Eq%yzYKeeZ_{OJ<~=uq+WV?Z&O%x0V&0v2(`+r> zdh~0yKC3N;l!GAiG7x^J*<6r`RyyP}Ep=y)P2bzXS~8BsqkxK3(x6g@j!6g3xUD(@ zw-q&h7PcI&KDlr&fUl>|WAb!$GEuc9Owh?RRTO?Ej7vT?yeUA})CphhA7>WxJYY|5 z3dsq^lcXs))M-kp*HbT;1RNfMvq<}Uv;?&#$;rh#v7Q*eR4%1`*a3V6eW37TMn$JeqgXZ zAz1fSq1FW!;a7}+0fhvC!;5rRZ1UM%o8?xL9SyAk!5FKmoCdB4?bN5vgRM}iC~~-L zrA0PQ8L-*xHC0?S6xC2o4OE#lt9WW5si&L@xhjK1R3TMRLBG`dFSefHt^%BfeO1q1zKi0|SHCEyg4u@b~S6>-2Q9ip@)r~n5ZT^C(i zQK8$}nO$S-m{OsC6-OEYMHS;y)(F+!8a#d(rQCG2(aBL;OZLpwsaG_!5lc+PWRaej zta1x+B*a`E2eR23fZeIO%CgZiq(8q`xXEL2vYEm)I-(M<3dH`t@n5;t@ zx`rxgQOx-Yc-{((ZEHnGPb-KEnc_$)A$pM_MM+Z7l3(@C0}y>@+gk0X{YlMH(TA+p9&ha8!QLEQlCTi8p`bsP8c?nGoO*8KsXSLtFN=)iHS*DL`p_nr@;LUJRB13)|^$W(F%E z+^$s*9zV{%>Knw6yA%+kdCZNqKKW%jX0E3T5kV@8(tlxn^?iD$%LGv{GdPd zgG0$B;z!oj)f(I}Dy%=l*#)(&-peaRdZ)o+rn-Rwwez7 zQ`h!%@@wg;>P>{AmQwYmI#61vWsGSr2has?ptt)UYo2K4ywbJ$XGUr-5_I_te}Hsb z^pjh`ojy9zD&GwclYGa|q~1bAo(PNm#1chN%StO%VQ;IBb8D(Hn0^&DgvGv^Xa(^ zQO(%eOR%c=%@`~{grF|x$m$+c^6NBE*W)Lqu6D>`#Fdl@44=ZJ!O>3#jb)AItfF~n z(3t&8=#UU~8=YSFp{-_yX*EKu>L{_86oKm^lNtQi91d&MB$CehH?&a{NxdBeWCCX*wif4}-RUGGsReJcSnkv8~zxm2!9G-rp8blGd zTPv6oRBmrdvGC;8+SIG6>3Vq*qco?@f`&UQt1{zK+r$V4L@VWlE(%mr;gFsf>BFty zsjbED$Z7HwR5MRQAp2Sf)WuT}rOHcEl@TN+Ke2#-*A^(&(_`$XlWk_W+b<#xR7k~W zDaT7xWPBj7Bhc2A=@&Xn4Yl^uB+$n!Nht1+Wxt|z;bb8U`Wws{lbt#1r{F5t*)UK&%a*9;%%2UV$GJAGQk{R9yPD& ztA^q$#=Qz%86-`rITUUSJI=WpyfY~z)6$ROpCewB`4aTfr3ONlsw|E_9JnTez7>RI zHpM|)mIAf`GLr)Up>;1MT`YMvHYLsJ+ixI}JI}7%5@ac0mmL71Y6?jjj+n_!6?HT* z)CyrPlCn!(9aP{60shU89@&;{uIBbzB#lHtV>D6P$hv?O{xHq}K7PGF9lhFGNi1_Q zx)V4K)MAWE>Zg!Gt6ennsLx62*;(q6m`PUOYYI~9tw9w{IE8e|lOhsPVx68b$s#2m z&<|v<`j=u0ZD&e=S%3vqa7$Bw3`&we4GnrYwu~eOVj~*ZwGh=>ya*?aR*n9cpIY@V z?dbHeSsYHLm&vB)ID+|U>dZw>m!@|Su#@Y_{=BX+*`$s`(qL2?8Ysb5(Na5b4MuZZ z9+UXjI)y;+j;dFQ;K^F>U^N1~ICM00XK(K>kG;LtJ?+-nIdOaMq<8k!?Jc!c1l0^x^>coQRoJocO6v+A8-zu?A!-+^#1@?_YT&og12t=hhOat{f4Th z5-byAw`K~5H%wz$zj+m7tqW)MEv$JS<2mB+W@x{J{{Sy9<pf zBTtu1Tzns&P18mJBEyRxpg-61{!^e2({Y;T&!{92Y(FO8{{XFiFaF2cf^>Iu z;Q;aLgQbR__BKCD{Xg4V-n?HMyUb&%1dNY_Q|#-2Ko9tS1;4`F`}bA|fYd0j+16ng zU=JVdz1Rx%;)qR175h5QRX|<`=>zCL0DEpeEDx_R#hu$cAf z)5ES|Ik`H&*B|mfX=-|G=Z{=u1A}3Hd9eQg4|=a!(me-RexFZ%>(r+XqyxbJ09b#$ zdtsW5PMSP=ke{dg4Y>aRkVm)ED_ma-1dEUd z_E(S%{{X}20rzHrFLKhqW_s0Wl5y5iP{7|&vEV5-=lzK1k981uy{;%eeP}o*1a-zq zS*^#={{XHz{{R37Cf?qTJvEH{E5oL46umHUU-EU5BG$PUvADhLNBCdy?{WaBMRU`Z z;H+gxrhm=T^&FaX{Rjv8{{T_X``@x#kydY*>FOOM(Ek9abf~AO)CeU|4g(GgUz_r5 zPyAEaN$oT|dO5XpTXj|-8hxH;r&Mc@La7Wi-r#9f;1m8Q+9$yz`t<4b96EB1oL=M` z1O9UB>bC$BYaj6c01s)}C8bXR(%RFk#fy}%O(2q3NKJshC+WcUothA*LY;nC>blp| zb>honK@3OXNF?)a1^w+-si>MCPPeTIpdQN$00h+UO~p8&awd z1RRtvBK}C{+>6b3X?x5DR5fX0Ry6Vw0Q`MBzRsbW*rpacY$%L1UP&yJsrYpuEIfrN zo&eLWy8i%@uT@iaN6h+t)s&}#Y95Q&*`C3p@i=vlb#7lK(5BQ^P+6j*o<`Dn3O=6U z?tZ$0p)u9x7q2w>*?RN!qp4lgCL@N!OdYsyXKb!3n3q*30Fn3PYGyf((>FC1?@DUWf5F4Ao99(zb|+fHu=?+{@!NX4 zyE_59YO8nRDzPx<=&^J=^DjkTv@{(xI+hALOt46^n=^4$(?bI=tCjM&4RXl3iPXBi z#T>y5J3l||QVbi-q0!!>OG|5f@&FrwEgiy;0jUa4mpNGI9lu(hK`7N&-zyL?~Z z96f(&>F5pg_E4H06e68^ zG8~3HK>K(KeZExcr+Xu4zAryl3R4*M>X~JylUUPIDdfG=R*(nR`VVU+R4j~7Wd?Y8 zbeHKN@fh}HiR1ns^8WxXfjpd$QdUZ06$OS)2B@rG10yrj$wGj*HVfiV-&^VD>FmNN(R;OZPN3}i1VQRVg=bvjIhQ_x0QG%Xsz9BHKx z(ZFbB`ARFPWL@D=^PpZdOiE2-=M z0CuLT>bhz1ktukiS81%RsDOPac+yV?pXu%4GEo?#84(3=Pv!Rd^x-w`AnNqZKh^%l zI+a&nPb}F8C6)ZuwGK>TP?8N1>mCNw28{#g3B9=X(U(-p(E=(BaCrRw-=9uJ3|BEU zPIRF;HK6t4e$SRT`Sp(#T9q^rc^*OGXI3&pCz3Q4R7WIS+fN4k-;a7pO<33Qd4v0S zb!%l*jK;qTH3!a=>92NpYxefz#>IAzA%v`k0_-4Voz-FFJ&vo3{w@#G+TFV73*}h| z13}|}bLC&RrmtXGtt3O2D~e~zoIL)0eDuCu?AqOd@>909)@mtf>ZvzoMbVAVlAfYN zEE6sMsWfaDTY?WB<4$q6NI99Mz185$3O+c1QknUJD17=mqnP8S!nMkDy zNW+JfR*Wm;bJ28~ct|R1Dk^;|r8JaLrA>#aoAlqxm3+Q`B06xPcA|V8TL<#9{$3e> zn4PUdmELr6(RE$|SgW#A)G4R_JusA*=pcDQERjgb>#-%25I?W7d&`p$Rs&qJk^vc^ z^DRsR=nhH#WS7(3ZkIp0c83Uve_j6oq5(b{9vY21h{}u(<5k_~ulA-Rue$qe?LD)L z$5PX5`g%My2HVHb{k;WE7?iB8|GuES=m!z40!|I^shkzbf^F1YZ&Rt}JINE7q z`)bsi8ze-vHDr*KVGU!irC-&+C-OM<=<5QWeY6$)@_ec()AyP${1*fyTdtmf>^-8f|+Y z)9k@v3^i1W^o*%fL&xmvEK}Ots4;-R6Z(k+@$|SJ>TQS1_H|u8c;nQht077BkU!oC z{=A=Q4Y(qJn)I{82L_!=imbJd0RI3_rT9Njue9=8vI>#bzfFY~;_7@g7e7Ea{NBX> z0Iz?oy`~_6(~x${Q|Z*TlH`W47QOzKu>^B}>OIn+VD!988T?E8ddcKx2F$1%hPmU9 zr`Ff^WFYXRdPj8OwCNy>@au@NI={zAC;lV+P5te-^zEniXZ<(%2VBTvY#l%!*YR=q z^?zUR_o^P07eHuO1NQaP9~c7Q-r9(@xi=)9K;--N525Q`EPuqmv~}oonWGn9)}!>3 z`Tn5$+tWcGE{chx*XP!RKg|bv<0?OxKgyhT^xN_FF3qRja^Z3ta!ON4xb~ez9^A!A zQ$@9NloBi{i_2s3(O0z9s8TxBP|ANvkuBkthFfV+Ml9{Co+WKyW)!c*P9Ri{fjgz& ziMh*b8LKksrE8J^0~PKyz|DO+rTpCj?uuzP&J*u4kzx|FYHe+qho+~h-Cx}2!DFy_ z7Nf1iVr8PMt&a?PBi%;0MGK7X!q8>$>VOw^ELup1hx zmOQRIXyhxuj8bQFcnnP=y?2gN0)tl@D!LM?dE>dYS6uD^)pUcB7@B|q3lbqm$6pKT3Rtk+J?H@!*^n=cokm5fQ(BT>8WqsS%$6Jdm96e#8<_N!))En zymL(sPO6TQyCIgEtv3{vbh#*+f}HrFrlp1`500lxIlH@i-m80Pyi1f};sWFh4iwUB zPU`Tf^Ek&!Y%K(ray%0xmn$MfE8gixs<0udp;Q9&TIp2IrW9b_lhV}f3?|yg%N-5} zZ0$Nt+gFS=wOOy?o2PeI{k~HvlQ{TW7mvzPVPmDHiWRcc!55DDq_NbH*~zH*b);(A zNF?`H2ak}b`)R_5rCU|)*|`PK`0sZlT7e1*!~sHqsMK;mZCrE$&Ef_GA>DO3O|_Md zsEAf-I9F@bO+!r=*kT||O+7fLXklGneOE;@iDZy@i=z?9_ECR(akpG+dabIzhNVGe zg=i1LDtn1JK9u=%CD_v2ceH2@p{}!qbEZj7wglABX;x7{J9~j_l6pbc(NRYSnwKL> zAg8a((NWS!87s{JWuG5CQ1Lw^Mrh}AAWDNQY`RzjYm++1rBrC5nL?UZi6ud5V;#nf z7-G4o0-JfKX*5e4_s1JM3h4|5A5K9cpatz9ijmtwTIHnhK}|~>;U70pwRIFC5b;q{ zQ*)20GKP89Nfv3C0tfBcxd#5wm}Iw!Z6Y)`j2+M|LJ0DQ9l?pzMR@vCB~n~?vb^rK zTU5}mS{G*i(P@RCq6&)lV+3^!%_U@U7%5dDj-sJjshBBesgTJO6*Xr}erKkDguRV{ zu=dkUE#x8LN=EMMt&Ikv)dghcn7htcwalJGuxp+VKGeZ1a_!}2j78#49BR}fNkU1@2OmIq zbw^nvxj`I^;Ujltpgtz51*fGC4_+NQMzPF(>Hx|2@A{Lbmk8Ij((_Cst34Yu0zkjRs)Oc8uSM=&A>d1&2pM~08b}3+j;95HJVt$Z z=3Kh`LMmlStVRl?M6L&hEQ*)4bF_rodRDBBJp$#ms2uxRYceW816bOy7@+ZTL*V>C zGJrt%js|Pec=YS>Cni0@=_^hqGfuz<;cW!>a1j&sPqO_UBV{m~rUEKJV<4K`iRVG5G0b?4poM7q4N^Tw& zk*wyGW4D0D@@oJoQINWc9~sfB%LH*fNXyMf6VOmmOB~qRJSLoDMJZ@vsmVI7LZ>3c zGc=INE9!`S4Xwq&-RzM;eQ#l5EPuN#;9(im40@zGWM?=HLe(RW9+}(YxRGVMxl*^X zT~!M7J`b7cJYW9fEp;^T~fEv6?w3~v%RT&E6Z6BGyS0SD{yH%{2xNfMh(-W3u%% zMJj1m#Qy-maaC`Vt$C^2nPQTw#Nb-b1R(tgKF0e9G1#iyYK8L0(B<*I=6F`pGuf&h3C$_U_sO7FJ~uW9A!Z{?@g%I)EU@fwPT{LtdRE|l8C zy6&9NmLRKJ!wQ+5PhybTL`&v0%A~pTWj#y`X@N;Np@-Rb+++C}d&hKZ2 z8bpezu$i$1J{~NDk`?n)wGAT43FgIs9>tugX0USAy$6Q!E~8ukSe7F+^`>~!9Tabu z5nS$*GLq7X3aeJN2%#(K+!VDxrQ~`$8FVgWl}K8t5{@JiNh(BERCzqgtEM}Uhy8{B z0H?OEVj?z4oN056{lDzzhehxUh)TV%(Y%1a2Qt=^lDFPN>0E%zXbjdx2>XB6h_o17#}0hD|Bg{ zk85ehaz#I7K3}&z1{fim*||Jca|e-JUf{u3MO%Ze#>X^O^l}-b`!T4;d@yy7s zn$)msD(Wf$y|2_mD4ISA-KWffgF(m7qHrkavm-O}vJE^ui`C8*kZ2>`>wxvk~t0-O|=UR|S!5k=cX?ZIs zYCh6v8yA(r$t4YHNgs*js+9e^!z5B2F|r~M#DHIxJo_bv`go>DO=7!%=`{cX?Sc(> zaIdQzo*f7kEv}*Zh@4Mhas#0TpeXJH5t0cw@)!fBDqNJ2HQ=JBN}3flQroxJZ%@Fg&$tXYMgxGxm_HsNMWA(QVp_I~? zp)1{0t}Be52~R2>sIJqu(^@HUpfFa$ zA-a+YSTKdl_+v;Qrle5bY8*XUGBpYUMLK1oqR(ckGFYre3}q$4Ve7NCwRF*={iXvN zlhxN`1dJJwQ$*=^7O?<*O}(cV1+HX;7Otz7`DcgORrz`Jb`s7Qlt=4gqj^KdO2h9(#0qPOpOtKezqiE+m_B25hcJ3JqPfU z+CL%b{!W)%ct-EQh@BuURQ~`NHDWyhr}D>1EbGfsiA>+Q1aMqQ<5ZLzucpMFlq0@h@c->rbWd%|`=@U|0E$HR%5UYFOc8GU8T#6(o7|$4@Mfc>}YciZ$^#QqGaz zQw7lLW_3T4Z)C{rXj@jLWEA0E(e@GfAKB5Q(X6y80W5MniQqVoBk9x3mDCamA(3Uu z$n;>3EJl{1C3Gzs!BHHQ0wV)iomp=xf`gOo>y5$*SVqC_B?=8RkU%-X1d&c89wM~p zxh-yxi4d#^B=S0x(9o7r7P`0s4G__e2T-Y+ndO0|6t5%{trOB#OBATp2qf_&(^UPE z2+$A^1|d)?f=DCVLG6L@w8k6)tsCdNh^cV66{7rr9!I5936U5_tRu(>WCV7aRDin8 zPvSHLu_S;GTb{9OgLj^VXObFg@$=!W2)83w)^AMB+y z?NwmPbsQff<_sS48?UF`S#;j5mZt|Ak*H)$RjQ>87uO!N=G9ZAwen8X)iu~$79A;L zk~)g%;*x_kLriF7H8Gn{Pvj~Hv|=HpNj4teGn;cf(`lPrO(+GoHcK0`P79gx(hlWP+29v?45Ahbs9D2s|xR=XNeTzbrSuB3I>9Tb% z6*K_QiOR=Vt|ZkSVJ0CzNgydVC)-J7wvF1<+ep7jG;~yU{2D~Sp&6%*twnWXXp|Oi^0`Bd#8W(JQaBE}Gc2^U%U4Y*S7fr#ym=OY%LQII(oIj0 zYsfs4$sGDEr-9GV+uCC}7OEU~++C6!f>uNbLzN_VQL&B&m8Vu%l_Zg%kQiZrj|>nB zKA_239@>vyBc{52Qux#ewbDW+N#`M&P@o5i$_CY;RYIxdM<1VQtRnGCG13fhk{!)8 zA53vH0)vie(#dqkQgvyOw3S=|=tX!`)~C$$_>#d_PZ~x%O;!6QCDk%aSr{1(MpZN{L{{Y>mM@yHYvAkjvoOd0He=KrE4u$0j!3AXqLD zl++dO{{T#+smGT9Y3M=VdKua=dqtIq?$!AXM6G|?mFr+xEy4N&&(lxV$LM~S_Ekz? zbm(OYD?oo|Tv&n>0tvU!8=s)}y)Ec^wxv7>>k(wL0zu&2K^Nc~i(dD)ziD79L8o4* z>xpm$(Ubri)AT2UUkdI@YxHAGfIb_*J*lRsR5?1cUzH-ihg{nM`y9aq9$t zTTuF3aDKPvo^4`%xe|DUk1^9JlSAp&8!xN${ywBz^Ys4!THfr&MxY?ne2-TopDwUC zEOl{kK7*UvpX=@DRE5qBdb05ADmSEF!1Kq`@_(n9SJVrS$K-ol9RL+0hp$d40YE1->zG*!0(J0iZiE|L5>LH5 zp+*3T(E0V^%cOuu4!Ov@GjdP#AML%Og@AAm4w^=x1Iwu78xn5TA5qPZ^grT#m0y|AJI=boRB;p;S#5J6UB$I*EMpYXl^0NDFt3ZB=%{heKzSBV{Y z(bRqnv9OK zX+P^+U)o9CwF4Nar(R+;X*_Av+H%6c59$8K0?ztyfk-aVCEp{b`1jZ_~APxMDqOPvk_ z-sFE_4dGxnY4kQ^;fSa#wqL6wUJqGdw+-ffA;?XPi>TKRP*U^mM|$%Ua=Nu zR=5Jpwjbf@`jh^{+L)I}JvZY&53{6Gi&Z*PTW6$7eBbr46V`oF`}DG1Ve z{{Ves?f9aSx~YnFPzX8bg?}@C$^QUE{{RAhM{eO6dWp7q+jQyxI+t+Q!;h+4J4UBX z3&`i57XJY2dy&1bwkMsf?_6qII3~CQ`fS|uH4(FvU??hK2vyZtkpbIO#V39o~`O?YZ&>ify~taCnrU@BkS#E z>g;ds?qXilmPC)tl~yW%dErM7OlPRR=4sCP6@WDmS;Qr$1uQi&G&Sxee_{0ab#|||k zhG=O@aN*X(-Y@X~0B(Qde(ofYoN?&rF*qG$`*EVe#FNd5ALIER_OlS$UjwfcG7T=h zzv}t*!|j{;ANJ$hzARq7XhR%FPyikrf6ve*@@FX)-1ytyS=y7Pml@SN)~a$!S>uZb zT4acm_>wI^`w;Sj7Us>oLNzkn1_Sy?H7_5qpG;?@_wFOGmQZ_@4L;f)zI*=w5PDA+ zyS`FT_n!L28Tm0u1Ka0a4A8W z+b{B8tlD%RE;_cdO7F1j?d!CDN+$K&ILd0gB`kPa4b6?)+f{Nj4(}6WAfwtwWnpD% zim4<3U5NmDt!(k`cDEC{7}uO0D|u7lTWBq2aUZYv$BJ6C)BY|&q0$V8$}-yMxVMFY zlt{#i5I{7gYB9k1=9%;BV_x#aq=}c8%Hj!eb#geCL3wH^O3MYvO8^~MC)3it#P%|& z@LPtM$UkjJuMfrXSLf1*S5&Qx5=Z6_`o7Mp-+55OQ=iH;rJd<(Dr=eLkTpFxDIARO zAJ)zlkD!YI?7}$Jo;X{EfLr7U^ZPn(NTl%?5J4mujbVqoO&q^AZDl_Hl>GID>M=~LHG{z~bWoQ5r zv{5D2?1;)gZ$d5Zc=lxvjIuG+Q{}*u(or0s8j23Osb!;5k%(&2hdASp^Zx*!rDY89&5Em= zL~(u0`28gVE6O5f24+UPiG4q&)*p{+S@a>3ggGpI2l#)NUSTq>hxiAd`oGmqr`6IT zRZUXYk-?)>(tT0H%nXdi;Q1yVk^MdG8!FLdT}c@9$DjFsF1C@m9x65f_;^;nf0tRQ zKw4-isSC{&H=0_NoY|%Q=^i-IhpJf;;eR93e`%HGNjx?HJ29a7e}mVhQLv>nl*z}a z6wh73S4&ipeagujNi4GX9zXJf88E})Z6TpLf)`$XpIaYnnG0O3q>Vt)erJKF*hMq; z^|s(Z_^E;Zuk~^3S}*3y{It7MdiDixdvu=Es@^S^pY68>6COO-Dw7luEH!XbT?;bl zD#{J-$o{^_Il&F$rNs10q!a*y+_m9R`$c|ZtL#m6vu<)nqDgFTAH`y&NQubJK_KZM zP|~Kfpu--hw;%BP#qW0i`eWukEb9ib**8tI!RB6shtqB9rdHVEC__4Wp{9fjE#y4-Kx(bD**uFGO) zo#LLhs7D%9ElL7_m$<+6_F43aGet=lIF_t5kwAWQ^E3mFNb1(B2G4D#x`V0I{$P-O zeOQ1gT%6*kqph+r@aFI-Eqx_cCMx-Vh-9e&*HDvGS4ASxq|uplXlO$)Q)@Q{{?B5A zT+?gqlf+OP85F?$`d8xI3s?vYrBSL*X;Z+D=h2MYl@df~ps120ik_7wmYjJCfh5k6 zG-N4lPYR2J{=cyuv|2`mUhp&X9$(L`>ykmLr^HN*aVLn!pWBaKmYKZeEevwzDkY3# z=;)%EnPDta0u9urk0ZR2FQi+Gd)%5CjBaV9=lx&m`+9l_0!gkzS8wpwhx}KSI%J`j z?(p(tYYE64l}hBXan&eT@$fu;HHKvXt;dgD&p%Igw=ywniGh;dnsj;*omu|?O;5|J zct$u|#;1v{syxV`1BN(*^ZcpPuSjDnq3lki#H~~nv$o=oE0StymZ56t=qYOCr~o&n zB&11J;GI_bU)o8nRyzaWxGwTmpY6D3(u1O@ zs^jrv^*noAw5B+8rb1cEXFYHV#jXgr{?7pM$J6{h@1{Ix{u+w)-m6>*6}>>4U;ZdP z&_sfS4jpY-A1G=%&a)p#xZ{iREn&wzem$p^L6V1sI=Y=LQ^Tpz)jp61HY5B$2b-VI zv`q*tjuh!nh@O0UaEhprW*m$0^uP2Mx6|4=Ar;S6s*Qrrao}`Hxtza2ePpIGlVfnYvd#hHt>3ygoGhgEW05?)TypN~#{Cm3a=`F}2 zQpbV+05I!}sc<-Jk^M*beL44WO;tTGI_{PN(?qg0^~w}!9P&kh{Cy9$q#;zX>v4k3 zLB_p&`#+fo0))a0lu z#Zq`4q0K=eBcf0}o5ka6@ncfS684M@Tt}Wx51{kvI7r&#Y@XiOpWc$(YAc;eFvW># zDIs%$aw$PxlaXUO?hM}BrQREVD@RG0e#_5ot;4pdvD4M>EC*8Uik#kRn{s5RYw1@9 zLx?q|k0yl8Ekty&C`Qt^vds(ML!=mvuxbaw)%c0>r_0x+a9i9(w#(xcFzNxAkST}K zxT_L;=~4>jgMmYR<+~uJ$m4f@S9ZfgU(z^%v-X4(X+cX-o7~&QHwMew@>ZlKOr9dK za|b0^rt{WJJYmU8dtC{-j_N50>>=tKfG+1oMrv@RXY$}$wc2)cwM%K7ERkGGS6(d| zC^9ip2ntPQSM3TY4Gu&~d~0B~I4=Q7f5-MfN^1BAs2Eun&zn`+k8 z;I`a!^3zK|GBpgFp0-+gc+8>MD(j~*ke6Vt+Q^`^vP!rCNC4@;z%~3p5Cs~C6yZ*v zy`0ABZ)0!%?HWdZ)O|9dmI|^d(0@sSypmJ`qO~WoV9)yioLXpDW z5_O;#X}C866K_kg@ykBS2hCv%l6co;?UcreuCapG>&*{3Pfv8 zCZy8<_& z(amrO{=h41duCn2S5lV=SesoJg>o3TrB$m!JcT-T8#F?KCSa&kiW-UqC>Q1k$*-Pz zRAZJ3i3F}8pD5YQuSHK84ff5BXl4_IjdY_vsA3L5xEihb_95Hi@oo}qHS1l$9+ENP z>Q=|$I0UsbO7ur~W`PWAsVqgU)3L^{604^?Y24*}xOxt_O(dUi^i9Fn+(eI_>I0<@Z&S`Ra)fd+=7JbEyC+$$Ksc(n!t1h$HHF(U$_?FO~< z>nw%}h!DXLq{72eDbk{GqM~Lg4AO}-G@wmV^z2j)7W~+I(39${hlDNQ+7@Dp&L~)o zEZi%WE64WJrqD|aq)Of<=E(8QuHvt(F@{@| z6IcKN_9aj*?jUwi3`@682|1)}SfBuBT*TJCK+upyItty%9h@aQr0O;1f0I~4>ttSm7Z>}R5Tg}hY z)$UMNj@B6LpWq9DL*<@421f#Xzb>Pa1irea((miR73ulJVW55L2E^iz3D~ySke#+UxEt-Vzwmok-RQBxi+q`gI{}VkzBJ z8u0bc9yJ_1zdy^Z#(E=d4U^J+W45G^!95Ps#!FEdj6}w!vLC#iom5ymNjbmz{^EVj zjn(|JN0ilr)Q}@98lbNX^d(CmEy))H>HhP_w&Dd6hPAI&){*wH0QB3FpvC7gb=WNB z1vXC)l!j_dl?`kV)=}0`Rj-1klA@Yqc-|I-lk_I!`+WrJ%QPmG^7a1!SDkQuIzu_P zn_M#}dw0PcK@_K2GJiR5_)6@%*EhNTM*jdVx_n+MGnk&QHM;r-AvGQ^2VYS$y+uw# zW93`N9wM@)c^Jz_J*nNA>hS?$X&8q0Rm^l--}lu!T=64_0N3Zk_VgMSo4+jP$~V8* zNhM-JqDU0eN=L2H3Mz^OYH9o|plLdbRDUSn=37I%r`Yu$3p>Ug#Y$0UQMKfg8ys&S ziDnyuIc37MM78cGHeOEy+bLsyXjTRUkOB0s4E()#4wU}@TQ*jk>4V%EkKy`zjy0t# z;e_MouAX(KdfU7C6o0~f{z?2-sNbJ0K0xL%`wO%(onxKayCZ$V3t_N@>EoN|T z+NyFX;>k?7xKad-q>d>rNp1*IwozK^itdeg{h)(Tr1|1IDJNf`dP9?Yin0s;x>2k1ZW!xU7uwH9S->F%s0&Q!Idp>MBxL z_4;*cLBS{5Q!jxyiNVwSUzexPheKk4S&EZ3JcdZx^R)g0{t?iAb^5rEfNQ0OM+)a3>J-P> z);b->F5St~{JdFiJB|h4@7Pk{pj3V;V zYf%+sd^$TRv2F=JTU*&OT-;gINr;wA$HZV71H^(yo(2G*=vJ`XZU9Lc1hi*FfaZ-% zsr0Xxm*>;uwe+--HC8f~O8j}Jh*m>UMt>P^Hpm7uhi)SswOAX|n73QO)hRo3+2T>z{HBv|VZ(8)} zi+7=m9W`WhIdy^wYGJ07`RS{1GR$M0>*HrhYb2wrcl&y95$2IhhTw8%WDTTot?Mkv zQmO_+#(d5y#8l~1LgZ>bbS}O{xsqtD%(ms6D=@<(pjAX<0uVX@;z&y>DF`xf;Z;#v z4NTPYWNPZ*js$}rAgLM>m?O#LhG>YTiW+5KQjjfuH~ODuXtF|Cq?L>d37HjkeOFqElpHEa}8Yz!12bVQ7M4Y^t(9&pK49q z0y8XasfQ8)0=S?!p!EA`>(Y2FZW?A+popH;#;j`8z>|{PeFB5iK1HkMrhwK&VoHb5 ziAwr2F(T$k2j&>I9sgP8bY=-op z#WT|j(91nT0~l5ctrSmmd7+Gu-~vF`q<@FDWVD*<;Fe#)G=s%}<4{i;W9Q}3vfW1% zK!&I$gp7q_!}9AerbMF1)xgOdOX5?l<%XpUnvaQEJH;Y`IYuCn^!guc2q6~JUBD@A zPl(hqoc7dKqxvV0P58{$Fx$!rb5npBO+3gsA0`z8&!{w6DWE8?Jvod#r68I|k~d|E zbqb0@PhU*Y6<`oc9-Tz<^|Dy^8A^ze;nGP8t*F##q1LpKK+kTmKx%7Fl-$`zElQ*6 zpsOeVjQ$tZ8&}s$R+PsMoFj^wB&eA{X(_P_9^!|^HL4&W(Ir(h#d}?e z_^Xl!DuGfea`Fl}tEQyekVjD?Bz4kKw7wBE^%GJ@M9@58&CNt^;Qp(gMy?uRHPzyy zyQP|=lSX87#5n>p_LfZl03%pT1`BjDEKx~%#YIX60<=|EE*KhcjetLg9ZuTV>YR=? zf{u!zDDt&ZWTe8iLQ&JwR@PC{JJe(9DqP9;OH~S$Rgq&&M%O=2YWaEzuJ%>8h5Rf2 z_Oux4yUHAWEf5n5d8B2co>%}O$07Z?O|67? zOzgK?yf)DxVBQQ~9E$|)AOMn(k*qZ}0=>BSnZIq!$t|_GLutur?kfZ+qfO$uyuhAV=y+OyBfCK<_UgTc>(cT4v zaGL7r*l$)6XqnMKg~}4q7RWu!f{FpDp~X5fv}1d<#L9%(Ud9?Y-{Xihbt_6!0=cd@ z40YVtp)~0&O=K)8r;btfiBPdprsANJA&sY2su3(IwJ6bjG~C}+x%XkRnJ11ZF5!|n zSRzQFfQc>>#)mGdP&A$-V*;&S0O!%)n4vMl8x0Cad0MfzkVhjBwI-@Vdeh3d>KUFI zV%YkncA=%NqL2h3r>3Y_NUeq`NwjgZ1Fb>jfcA#w?ii$NM~scOInbyC9|A>EvPW9* zb63VI(t#9{(((cY)5POH3oUyI9%N#MoGa89TrjvTL{P3$CCq$I|}YvXUD@Gp5;wNdEwSd4M>82Aa@QIO>|vH1mBxo?_37IGOkIO(Z2KYQ(rT&6OxWPG(78+cUH z30z7fsYtPI=!#GU40-k#=4%kKG=v`;#0UMWD53n=SLKghjJA18BS2URDAGL5E2xk3 zp`#h&pH8>cmQSH`Ym2Dokzw@I6|R4w-ug!m*U^=KK$aUK;lPMVn`$9)@@37zx%=e0E&Ar zF-W4MW2F8Y@TXoaZ=ksXqgY>uh{_BC$ zW`i6LS?)D4zXff3ALu>$qfzvyP4&d8kVe1xH2(m;=iaEJHS1u|*Q^egR#2o1kD<9d z{{UNy0qw|HRl_mz>C|rQo}(msUi|$Dxg-1m{{SDU_WZ1b4JXg17>a&7gK`il?8u{tuU(46!Zf;K=^sZw#)5fB%;jz6OF{W$zs z`=h$+RvZT&lrrcvZaSEIc=ll)+pVI#TkFU0jmFYxkW3SJyJ{asT`iCF!JR5tu z$m53&lq$mNS^hq|L<)bv{{XxXdUDT`$Ewnzolk|)Nan!ZN7sY(=l!>|@7gofNb(&# zQ?O82umB5M{;$E{e@|%Th2#}lWc0OeBUr+cY5?kFa)If-o1f1kk#E5^_MSv%B7+@j z+Eh`Yt6Kj6gj1~kKml9a5pU1a{eS2^)nj1bnqc&(_IEb{)_qFAX&l?@bNKj-VcWe?*`zNY^GTk*%^k9!gLgC8GW(i`pTvoN;VgSF>@&*3@C)$XWkw|WxQ9+(PMQ%mE$J&&23q#XyENIkY zp0&#V0EIz!d-XT+-K^U5)xI2`WbRyrBoQS3IsVHZfUSZ_kpTtL3aqSe&(XmD01tA% zwXigBZ(HFyd>eRSQ%*iCqDK9R0VmOFdI@u6!K@;%QK_!3<62~P7Es2c&{y&Y^3z-S zUeMBE`W~xrSLV$uP`2#KNU;Q`INEA>NqV=asZx^D%p+!L2c-x+aqOPZ$t1!CQq0#1 zxX*OVSxNaC_Z|b!psM{md;R_7%tA7Rr7PU30KoG3itwgLJ$(v4lV43YN&f&Y&Wfe0 zk?OOZr%j&j{QX3>Q!L$^lanihLl^+FQf(#1!T!kXkcb)!5B``TqcT=jq3@Dv`sF zOOypQBv5sjGL8rQkMaKB-o~9ZKNn6JRCV9#xCKG_9Y){Rfq%~){Hk2gapTn_WnciQ zHLq3G{Monp>tE&F@>6lG6-9sCZ3wpe(^HmKk{tG19gUqC)PjidR1jO}0q5A$kWYiZ zz3Dl&vbmH~i7N{zr_Qg?bD7!W*lt+?CWFqNU}XMv>rJ1GVmdq?ZohJGAK`nu`{T1Z zo+rnoRhTW9)n==H?wVS>le0mRrlQ*vk{QEevw+j!Cbihe#6BvN01nv?W zI82|wVoi4$_zZdD&@#?Yf>x20of$NZsdZW!)lM>CMHlszB!>)fsMtS-7HPLh!MnB9wQo|j4cLDM;w2HrX-dz zGmkLFxcTOvm+k&t6^+XQd1TQKrdX;>4(};w!CTnbfkEj$^=&*(N;a(?Sj~Sw^$v;d zRf`4`DZ}%x^80vwodwm=)l$_D90^ehfmTMTODs}AsP{u$^=KjxMV&hD| z8T|hM)xy0XxJdkC8dq8Uhy7l@zEwRYpsMjbB@Gm79aTC6k_ymEJc|sK0;V}wmGQcl zAMjuYwpK{mF>4q5kYopi1vBTv1df;x8d0#oSIhleK72Y*;;O3+*`!fARK{eemDj?A zuan0NcOi-+3;sVI)gw}04ou4ssZsEnXr!uiTH2NlDkYVq z0d&VQQ^w4Xs9#H}e`em)#^DRh8A3M@Ps2fg2dAw%v}Q^Z5dlg609Th?Qq5N_HXeE7 zijkwE$jL_Ck zq>8V+X6v4-?I37RX{{Rn3YLig~d8DSLS+Y4NtK88`G%B>ROqI(F)OBqO zpp^t#h(Fis>^FP1#2f1$`w@ZWYk)EG{{UC7N}#!rF;|UIbLc)*^!&f#haJ7Qpr**l zlv;}9Na-`Q(NWX`3=yogw6zqqW61i5M0QnWL_x;l=Y!C>r%Lon|Vn!An@V_enZRroeaA(CyT{AWoiU;ambMU#brc- z8D)ruI*^+vR6a0y>|$dB)BGRjsOV?-or#XWwRYU_Qhl0Wq1<^zjwuweiddtg ziRX3%vQ)X&zl$I6_L}C_+BlWazPg%%xZ-+BTuE}UC45F&k4g+@_J5m?R;Mz4mh{~7 z`*vF%ZZ0kjiTrzZGf|PAn486P0xYQ>wEVbr1>2qulVCr@{{XH)`jhSDARP3Cs7_TJ#d z<**R!e%<*W+u6!V^Hn(Qvo;qqwKtsGLJFL&N|7q}1w<2KUE-sWj4`XPkZRL!a)rE6 zt;O8Xc#n0if-)$h%N4;m`Fc~<8{H?GO};Cs=&`hlMx&5P0APC8?E5LvF3;t%`99ap zSj8q$*qb-E5t=yTq%C&oyM}ihl8C^ci z?w%#Kg$os$oxw&uaz!cremw@PURyoI?t+3`ie!<63MxGTW9L&r>CiLUc*~Hts zek_Jx9f{d_p1aw39Hmu4c`{v`(94|Mvc$FV$41%Fkg7odcAB=9mS8$qFUKmi1v>`-)H^SSBkDyQ36 zt?5#jT=wSM7~i#|j;?$x6@6_%B_7(%M-6<5lEhLjR;r*<(o@YR@VJrLkf;v3Vi-1P22rOWNM&H;YBV$?3e!rk!IT&sySpmI zbuP!;bL2L`+cdcPe3-4vZi+0V^i$_1%TvghbCt(!jHHFqX&+qGI-Wgj2=bs?hVa6z z!?NcFl_sRu1e_Wg@Xrc$OHePPje|)&gi){~xqDGmfV3KsRO?nNqN;myL(osPrp{&Q z>amb!F`vRP+j!w=&TM3!MuP#Kealsj#Vb=k+gE3Ebytm)fLu#*6xiwqk*84+J`yNH zP)RJTOEKZbqKD;N;BQCaSIi@&q6)LvDYxR-D=_I!{(Y%v0pct7$#;P@H3D_u=Af7nKL55N)RjbNm zar$Ay!CjF1N(_tt01>OKrlEDFqnfrz^!>^6X;t7MDoOm@o=Bz^?|UAfr--(-ZsR73 zDzyzx2*A$@^e(fKR)!lpkjDMvO-`MPg~4W2z^83X9ytJ007S~Qg1P)QK5+ZlR1(u)(;J!+;7nd6WE5?2w2Cqv*VOc4jm9(n>8}21rlXL#_ z?Yrosb3NYQPXw$Db{l&IQlw=iO-ZwiHDvRaWhX0 z?rNq1PZkpuQhBwl^!Dq|4%cHd#CyS|xgE?~QPxM6DpVgZano8PytqYi`g%#3T9gV@ zX4sG+b88@!jXHz7*@0I%&H;W8Pmr=AfcS29M(Yo87^13(@` zwMZw(kDp3yATY&oZEYx7VMo+y{)-_j9QuGMT40*>$~uTnOD9zw4KmWw43<(nbkd~M zbaB)#*;A{l0<|?UO)`)NB#Zq$x*px{XOWO1Lb6GFgP(!&>t*Czrl~Yscj=KAIT1uLliQb}0YDx-N;ntcdCahT+86^NR%LNWTnb-v$ zi6sE@d)aLdgk>_5B1VHw07Byg(+nd(Tn{3|R=sb7IHZV7uX8j?Kll2xjvzO?uqf4Yr;K{9881zU&mA(G}9>tdzQrs5~)kSJ#Qom>XU!O$~MXn_(MzXay zr=R;j$>NQl8fdFRg;Ek-#5ZdQyU)pRW$K%ATenD@7R#97o3zf@4&P z4~{s|57ALl!~8wRsctlDVcdBAzI_O$l49hobo`A!)lRUP)bd$>*DZhdoBP;`GHL!( z(;A)5YEM}H=?@F_{{UEzuloN0@xN{a(kP=Hc%u$Ib6J=bAhm|CB9)A&zQ61}*w1pR z5Xm;0@YE^$I=Q)&OidR_9)tYfmqN2%D zi0P`L^2;nsEiF8+6oG}5Tq=pQlWfD>}mEscDN;&r%coq1rmfrb%h(rb?AUX=&WHohxFXT>VG0 zHVdIr8Z&9sOJfIxJxMjMpGfXrBB;dR6Hh<1{J)p&={BjA#?ix9Afl#Mo_eX{GQ9r) zbRlRUSe~dN&Q^+2&WhjXkEiL!w?amglf-Wm) zRv$S(m$usPoL24Z?wP|3|Y+ntYzFi0~Rpiq%hZ}qKKpIVfqnwdOW zOw1Tv(Qe}Ipqi$iKa+ZoDw@-Pr%vtnx4Tmx5NffmMREZk>RvQzmO4QJt6ntgTZ1K5 z->U6vEC>!?xTKtSeej z@IPiklTsSFq3BxCN4Z;|sB%$VABL*b)qKT!O94Ps)2G@g5}sHRCXYoCY`)uScq9#5 zK7_q753Wa8-UA#Zi1Eqfay?$pZHbMwz!jm7x(w;nf+?I*oulVd!=j6nX`^ZF{=ER-!Aipz7SQxEa> zr*57hZf+)U049;w3oQ>}{)w$~f^sXvt6xVUpXsAgBms3ua#|nbT5)he2Nj?{E~CXX zl_DB?N>{0ni6n-pRb%Cpw5t?tVnj(BG1aN0MI}NHeuDCAhFGoAvbGC$j1xi^K0`Re z07w8+r(}&GEj7e}69BDiz~GbfBn(g~AQIguaTF6Zszp3c1F{IK72Y(CM_OG~5>r2> zQ3&K4e!pgWbPhy}R1u0EK9xF88d9U8jl$|N`X$&(0jdxQAQtTmI9L1~PmwZpaIGA5 zgi=b?F~?Hv8#^wME4l&%ldQdYa-RxQ-(w%BPr%=^WVq08V|<+Gydp zQF645gHj1+;Xo_seL6S#fi*szotPR^NL0@gPda*^PhOLhl(V#zboBKS!YY?^;NYqRD_Wg z=<<-fG^mB$>ai0obiOqp0%I3Z!8Z2P{{U9gN2p6IjN|wujg?26!KPAIg-G(@POA*D z!wZkoiUmv_=$JDc0FsRYzv;N~8R|Us!c1mPd0pnIuE|9Qo$8>eb)|(`MTn(kJLc3V zPy>k;G6k3t2eQd7WE*VqF&ZVCNFlWlc+!r(Fccg~rF{*0b}L;M&_sYNF+f{LR#B+X z6I5Xd^Q!4A4ne0&e?C1nWgR-x)3!qg_S=ISSYwPD$xc!j>S*=HBFN=w;^vxSr29haZLBxtfWi~GIqFRdS;L1o0FOb9JB$6kMJ#kD|o)57D z?y0cF4&>LiPWoB6a?|;mgi=EV4CZ1QKgy)WHJe8(cf9g zr4^zEqB)}q%Ez_P9AqAuj?btqTR|pQACjlcX61@(h9Y??s;boDXU$>eaX5+(w5q6w zOE|rXKi5dQOP*btZ>rnwFBVgGxS4fF->xqK>s@ zwFE~pg;o7khGi71Yeh8x@v88zQ7WmoR&JV-wwi`Ko~@gXuacgHp{Zky+BK6>wPAvs zmeY%;fIUXB=u5MDdG?0ow~N5LyFnDD{>}-!HDN*Yav16WpisVIlsc#@T6C(>wp$yC zEg9Z68-%J01{8ak#D!{npE^i1#~OpveO)CMOZb7Mk}*|TO^?b}iuOn=qpz-4smL}m zFv|?EOA`lFxord=X{EBUy-T&R(6Y)FSJcB$XQ^u)tHON2f&Hs zjWkt|#)K?lL-7U&1n{UnT`;6kG;&7-%M=y0kt|P87(%k+sS3)nNh7l@%~1aU4tVxV zkwy`Xw1dF7m@1d86vC8X)z9JvwWcw{qgIkY;pI}&#Tg_mH4!7=fCuys&#aNs&Z1PF zJ!YNiX=IisSBeUV9bKhTq=t>-BFE_8k7^;dnpD#;s>aN$M*zU_9-xA>Kg+5-@iA73 zs2nQ*MGGqm0BgX5T8}S2wif>YgvNHxU#UNwFUPoG&q;&Zy}5+nJx#gXQaw#Bat+J2 zYV#Xs2~{J0-6Ylfr)^Pqq!%dZZ|xK9t=`&8*lu2hl`XY>x@o8L05@;jT6Ff$b#9ky z1OEVS!PQq4z^hPt1`0_&bjC+tSctxbmP~6uUrd@dQU%#@&5P6y@ft}If=L|l z!MVM`{C}zJ9Ue8E*IVygffNf*{01z$g%mg{lLDeKU1o`#HKnLhPpHKEb>mGgV z9HU59^q30u&16tT*f1Q}5J%Vjdtcp6TLY&Mgf%9;W%6n* zWA*y|KAhNb{vPO1k4~RP@heWa76X&V`t~31X8!D|Y3tU~M5av-&#odxH?bD}xBmcd z!L_aK`dXY1Uh&gjk3PAqt8wZCUgF=If3Nu-^vFoyYt{9JIz2jaN`zx^s^EPtE%pAF z{Ci=eEB18QZA@3pbulLY01!|5_x}K6^}n_ZY5~S+(~8AdG4ef1S-}KfpT++G-hRJd zY4o0zz0%1US`f$V>P%9A2`1JY*#7{J$YGD-2S8Z{{Vac0B`Q%1Lj9aXP8Lg zlp0cTHfzK4h9w;Q0!Dj^0(%Yjb~dA1X$+ zKHN!lBWY{h&gLdR(Mv^zKP5LZHazLk9`?HTy|&R;QzFYFdMbs|3Hg>`PtP^SRNwI5 zt2Y*B<9AwhrY9F#ySult`#Y#M?lI(wk5)&wx1}cElCEi(gb_i9&Pi6`zL1YdBoXWj zbGpyV{IR-oG+)|U?DAYHx5p&f%u#rMgcCNH*HIafJgPt|WrpK&+^!-lpvv;Hxdf;M z*r)twPDtW$p1z{ua4pa0*~3LuG+h0iB93Vp!jpo12U3=yNV>Z5Z|yJFjxT@5wmcU908l^X>2X>L znp3W%s!*(0-o=~+DobfbZ8it$NBhsWVu{tOL&N9(UYMGA?c!;Va8bZy^--VB{{VJS z<9-L`wiRU6sV{Q&PQvR-X2wJ+YWz7|y4K{XzS`F`loS~GC!O1biY7nP*q@fq?(1FS zc6BV!ZH%$g&PnBpB~e^dg4px@y%2L$lAXD1;bmE_XaO}KekxD`YeB|@b*4_k>k8ho z>EDw*X}W8FycF9faMN~IU+#QmT~!P@Dx8i}Y;E#9D4OJxH&jI|21fP3WKekIUM(X{ z>h9I6`?~LLnVpXXHny|tVf-qFX36|?r^pj$WZQJNuud7?X+!EKv=oRT$u$|sugf?m zqZjgHv@pLL_SVvB3`I1UNih2=oBPIag)_Cglcw?*44jxOsEj35Gvy-4*ToBfW-avt zNwFU7Yc1y_PqoOQ9`9(qwwqmQlV8F0G0s2)_-k`4L96vWo}<%R7ogX_M`+ZU+Y-G#BXrt!eD0%V&LxiA!&YDpL{AG-_{ zfjKw2{e6NxvfU@%d1}{kxI-P(meC1OxTL`X%(x_W%p7{-ARKfm++i`?Cmsv(^gn0v zsQsN)cKfAz3d*WT%gbr_n?DKsG8hJ8 zPuWi|^?!q;^BBGruOB*B{DOqkj92;e6vs7083xr&DW|BXo+xK9=}LvA7L_8pht;cr zdjNjE)wI#2t4ONEnZOjLKHTHi<wK3~DU37~5zvSsAh9|}NmY)#epDg~)nWUyif}&VwSSlov zI$dmnaMbVvA*ez?kUo;@U@SEcYGa5OED!3HKVUTZXQVeF+F^s$;2)MsuWw7f)}XM5Oq+%77>$cd)zEw2UKdyCVRiZ)0Wi$ zgIZL6%2TJ@ToXqvYRUqo1|mFeHkE1=%T%=j{)Jt~J>d~bGXMv@0>tE%=r4>e5MLr$o0s~J|0!YXZ#_-d##-c)t z9pvB+6brBP19tN&ju=@ zr4kPmxi}ETGHaFxfAT``vEoUW=m)x9OeA3(ozZxjg*<@=jcK3q{JK#P2z5=^nz-hi zYxea6L^5IV%a(=eS)s{6qLj2Qr7PBW;D&HKq1`^Wx98ePpdm^c82&1MtIwyyi`FJl zLJ6fYz|<4zjyyBhsj<;e!BtO7JySb8*&=dI^+3Z{JVhuXk%H)g4;cehh~oa!Gb*T& zS5Q8b{lD>5>h{g52S9YU9Pt?c0As9p)S<}3B{Nh}OC~n5d8uZpv{dv)R#@X#Rk}QZ z9LLD8E(qt^Yo#&8C98jERa^4ZKR%X5>mgKTR+J1-eW&~t;m4s502M*%z8$vHCjw+C zmYCGRK_f>;DNnPRgt0ub%vDMoh;Ftehx>nJOKlvt6cyGZJa`@-KlNv&DFqm{K>=(3 z02TAk`8rs=d(R~$EerV_s%fbwnilg~CV}RbR)tF&K(Q4EpQ!hyf2V-js3uk;IG~~Z zzssj&(>-p6G_?RcerE)XW6$<<^s{6pY9I2`1{z7>ny#W)q^GQgC{&tCcu=5Cc*!J+=ZD$+x^0w{BZve1-5Z~Qv&p!( zZtlz^e{EH^F{f?TQ7RKk+UmUYtpv=ZNK2`|H$RK}rS;4vF>Lsp8k6Oo6!YQ7=hGJG zP3l}!Q6nOrW~BcBgXh(kO@GKd7QY%z$+`58r#{o9>IN!$@ES&w#B|=nn-R$W0Ey?? zv5{Y1i|!>3zz!-;T!++q_eLX*cy;6IKR^fj&--t6W2I_((bcGFJ)VBOcmSs2-_zB5 zf4pDa7C^>;b-LH7vFN?c{-5D*$J6WWIfSQk5!Z$ddUcJp*+=R8k!#xj0OG>p{{Yk3 zdm}F%9VzkG$RFkYex@twWlI5Za0$60#N3gvcy!%VzA0TPc*kO&M1%*%Af63NCDlpZ1mA$Qhr_$Vk&4;@V?4CU+m6F;pPY)nE zibV<7#ShfTHI zamMm6Y9dtp@#WXeJAL*fvUXnlq}+LoR^Gz5V`gI9djmO(prfeWyI#77aPHU_I(G#H z7T*5z%Uv!uqLvn|o}oO>%=Z8pCQ0sPo$hSu9=SseRlx?Lx^;fuq50*GRyO;fW$=ce zppNpQxhXK8^xJ|1= z1hteI%J(xG;U!9fhARljZ)TBrcT)i=Wss@V2jXh}6X-nf52v3&S<)@NTK?XIOOmff zG30&~2B$TsEllJ9Is`Dygv!fLPq`^G_>H5RqRZ~6>+;fKYVg?lowZ3^n<}RRTw<#G zD(P|%)MA>zc#Py-3`|tgH;2cpi{e2F5WrHkBOZRFG2_6~qWImd;VTS+JGtgkTBd?N z?%IXoLWIa3LbVj=E26>TDmQl8uiLZDgEckv`Tg5XpRQRbXmGg4nCJ2BorzIQo0^K9 zwo1G_~5seCa107^;79T|&Qc0<$8Ab&-kTqn~0!vgH0y;L??IVue;kQJZQV>*X zP_AmvkxH^g+En>y0Dw-Q4oQ)wro`a!>m*EZm~XX&tdcCB#A@<2IU2a8FHNCduBu3s z%Nvmr(}NxEPrAkgVmRCyg{DqRAFyB(OpX-5=;ffA?($oLg>}qzU=Y!$(u_O50+s<7 zcWdvZDbq&aj*fy#96cN_B~%pfoUh$fJ5o^8S5_;$Q&ObwERW`Ui7vMQdVZu*?pUql zTL{Lf0)oJrg)C|+E09m0%k84ArS5K$UB=~tz|MRvDg(NrP!PpH0)ye9p{{sUmmv(e z`KyFVKZ#OP$wf3iAk9x!Yf)oaAyV;27*17#FuM+Ke`u#I31_r%G7BC416=UR-MVhQn7*_wJvX(am?2k;Uk4X9iSQ#LG|gFC+|jv2JupMg`I%bNAZFQC0J0N2A){ysv}a#BubAO zRitsw5ET2#XiQU24?dOC6pByuBm8}&f$k)Yk};)bjy*$xkgW+%kkWle?CErZ0Kv%x zqa>|!pgmPj&me)+M5X(s*Bp?>pjFIi7Dm?ubTJy48SX56_R|?8-G#rWv~gN3>W4>2 z)GUqR1~o;97h-Wku9Q<+1L@M1pXtt*RxMN->4q+Jihrfz*x{a~;_Fh6D@R*JNhN&L zcC3z?XjPVJqoR@IsCdzes#3k=1Dk}ox4KzfTg87B#4)^*NBWvb9n28-A0^XT&~c}& zI!}LW*ETX*+{hx1PQuDape_JVPHMxq?KB-bJoR&9Ybq<1tEb3rOl@9YBPOPu+Gkx6aTH)r9G-on zym%$If&?ujwznoWV@~ZxlwABY6a-M?K3y$=W`=2JV5pM97yTX-JaM^dYGc3G*!T0>oBj%Wi9 zm^A4t%PU{TmB zQC0UN>_j; zsU)pI#2^3)d6GI?ONLx-KOY@!aOq9qqWAVw4YRq*q$xd%IUP37vYJlFL;^*jWi+YYo zQfq9X@DhLnRZyjr3TIOalTs=6b*+VMq+xm+SX-Nt#kff(u#zzZP%LBwLO6na%}(B5 z47Mi5*xwWSyE%f|l-RuH;@f!2yo436TJ-rk`JM@9sIL;tsMU>3@*V+<7h4-}CJne+ zF4b#gv^2zIWo3Qd5^_UtBrML3P ztpR3;k7}bV2e}knzsP!PwSJd?? z<<%7GKikxQH{^efhvV8q4w76Ip!Dh3<0=NMo~J`j&Vi3M7a(u|1dpk)Yme#elHfL) z8ua_CDr*#{QxZ0}=^zvUf3^UBy?bo1sr2hY)<*%sS{(WR0Gq6D12+SXf1$m-+SQE`x)^rRxlVfixn&KB=Ginf3NIi*#*W z%?cO}@xj;PtGpDh!lN-pfKqu)j5A9dWU`iJBG(-7UWuLLG69mH56IX29$gj7NFAbo ziNL4i!H@C=pFXIYKH;;}_=u}9^m!Uwb3;~! z(#gcK(w{nm{!WR&N4bzY1??v$l;J{nljeFzNlr}B&r?-ZBvQmA5L2jy!J@{i`R2ZV>htJ=c!`+lU`HGbXYCw1WRo9B1vO16si~GGX)0Qp zS)C(VmP&+AT`bo^|!~ zr{`a@&tH$`v++L%v@3C+B09Sb9WEm~l6nr(bTmdfec@FP_>ex=drI5hecH( zb)v1QKs=Q3{^4f>^oAh)2ep13w54=w@Yt%zgaCB_G`kFy2h3#9=i%vtQQs$qhA>PL z16r$7S}EYi6jFH55ybT6T@;iaDma-Y%fuxQQieTOuSK4orYVeyk*mT0o?8#Lg%%gK zqwMBN+v$!Pw&W|^e9Q1)X^$;U_*7{;dP8jKb*kn-S8i%iO@9H>%0&qzAAxFoM#WWUvoP(9?}8RjA^6<562&Xp(qC6uVQ^RY@Ut*Boma zmy*dGKr#|UWt4^&B#(BQ?{RoU*2+8;?PA<(P9%%~4;l>Dt3z#T^+qWvtKwAxf`r!t zB=H$)8iS1W5+PkA?Hx^YDD0x4V{g+Sh9BB<#mp`^Q~iDJ(XN{0eO$4ZUf`e#`cwn> zf7OnZNNrLe@WjPI(_b-Dk@k;1nCezjCx_0+Q(b!%V;_yt3u=qhy5u8(Ki++o?jfYq zNo{FaJ8(hu85R3DQ|#!@7K|r}pb%*osI5Uf4h;vd_&UW;Qj$8e#V6b_J}HuFT39Ej zlS^u=sIBtCk*GYafWP#=vctHxg&|LhR}8ulSdooP)u-7?*N09`10s;DJR!so%*vz5 z6(~vh*ZdtzSc1tzC|a2+R-Y!*{h7t&)+yrh6_O{#)X~ojLNXY%80tvX``!w89s!`Dj&s&BiTje4$)+$K+5tlYPLbuPVU`6QoIWf zmkOBMsT-Za(ngd(y`&0IoE=3N*T^c7=UjBSdZ;L9_BDMA13d;#Nh)b;(kW5mizOD7 zj&c+3;BTWQo9Q>V*VyywW3^qT=FCt>I9XAMC6`!Jq?{2>6`|lr9R=12ZmxG*OQHHx zKmxR6f(eZAAAyIFuOB`g3D|wyw3Rh==9d?_F`I9DW-|M41oUEg=y2I-XPFTsgBK{4_ZMOJ!yT7NbjP?>F(E>#$v5|v>iK|H@ zjIm;3_OyLKjF@?(R8Yxf~h`lvazxE5yYsDx$Uyrcx>nB}tT`r`ymj z69kW2g~dv^z1Fo!Lr`L*n>`;5wa96aoi`uF zl1zLP(n&NmbnL4Q4P;uuTBv20%^cY1kdr+~r-n7L`Tzjn8~X}NVF|KhYQyQgG@U9x zQCN~5JW!o0N)NDb=yI2G#c;978-iKT)8Qaci3#{uQ70U7PnTF37P46ADCU9bsw$wC znzFVLN&aA=mH{!$}}kpy%=(IMYV}s+tUgm}RRA0vIfmvDDMQhCx#!GO|Y` zQKJV6LDkQ*J5%A@IlV_u7*MFjnHLmqO-L1o$-PZFM?1=G)@wnkIO@k%SgQ(+Bg}$G zrAH2q=knp~X*!enfczxvHLv>`UAOX+sAkDjJe3ktQ&2AX#NysbL~N1C64B(OW&E3y z^!Aqa2`$wmjzwq+$c&(ziZB5A9JV~`pDOgPXL#b=7Fiaop-7-m-SpN)Xh#Y*e7$=6 zSx*A1$tt#`lI{rga{j&=_R`n-{yoL9$`tr?Acm*-KhMyzQmO?(2Z8%~g4Xq zvG%W~y5^$n2lXI-w?6bu0XN7z{;$id zULH-)AB!LO(f3e*oSb#<0sdWg;ug2~-v0of_pf^@pi{4XJNk~f+#pf?NKtR``g`|E zV^W9|@#}#$a>X5pK9B{|=s(_X@7-UnE;X*he=(;~kJr(8=07W!ZEcpul_fFnI@DF(e`VWbmvKjC}+eZ37D zKnTZ9DXHo+IUJv*{{RG^_k;BIvWmF?4xFc0U9W3j^Zx)5@5I-nmrTp2Nh6OB%d8>( zzu;}|>k)BLPLhj>R{@Xsf5X=nlHb|`i~j(Pz5BvCwBo&Q>Sp!+L;T%&Wb_6@ z=zZKlL!6GR0Q-8z)d6gMU|euO0{;N(-;O=lMik(2>vX4)>xoju)vxX&G@oRoa{-k^Nf(p>!{hck1OCJ?aV|jn5 z^*SlPuhae`@$DS3l60C@y*{o~nu`AbtL*AxOQeDr+;gYvz~udXrtrzdI(*3;4LJ2F zDq7&*kI&QoDSveEhfIl4jR>Iit$)eXxau#!Am57<&(i0EVn@1^3M-zR)|zOoQ`c`$ z(WpFrukrqe`g^LVCYkF&lpga%>lfXzQ_Au51z6ty0P7XCz1zdc8SBNPKMP~e2mOw? ztzlDgh~trEVw{V8N38yR+`=$Lcy(5NJUhRaSib4rM*53HZOxYK>tLtoSyU2u_gNz= z4Mk~2&!q)_pZcrSW0XrMh>8J{e&5;Y*UiWN6@A)&=|B0L?LMQSs!IAzfwi_i2-3wU z)dohknhMIgb`A=O8~B@ltWUXO_6D-{-(cJ2?2>41CnLKGp^hPPXi z`<~@`gp+A&;VAVoB1u|-jL=gwrF`ftv>k4pQ(9!5pIyr_V#E7J{8%5yvj}a( ziNJsd+x||4a?9eKM4Hz>KbKgAds~pi-ruN?ul4+UX|1%Hbl;0Z@c#fm_BzTdj*#5n z`fAnw@O|s)zGJU=pyHJL>-?xX$dyJzrsC~jyoBVDs^?2_pr7gQ-UgOd@&uo^wEqB> zoo}_(q9h$+oDMP#c%M$S>;82)s5=91+$Ja-h zr4mMliflZyrJe5DxVJvU_7=>%p=oJdH@lYS8|bGLgc=(8h@Hz)lw(SjrFtp6L3e)$ zkP?>bTGsg~S^rkeN9ZVYr8I>tvU6*WL6IT?qwR}n$D?iZU(a=UFa?LHLFtC+3hn46ge2>n~h zV|b&EqM$g}MHMZzNeq`lQ>`U+Ds<4IfB_s$YTAuzE9hy{zj|OPcO^2@WhqYWiZ0%L z%bCnn(2AYCMZ0jBJar8$k5Z7$B4F~likyNu@uDsf%6ZFB7uznpIK@el0YG8UIPNPIjunJXwQW+(Qa>m ze;V9ZQe+n&)i`WWsK?U%wH$xKs&aV$0Jfy36%&Pmnmm7nMzRP?@$?Y4C5N$w`q9d> z4c_~Q!ZmI)Y18TekZC`N0fAf&?*hDHL-=^pHP4^=xb#sw%8o2{YQHN5B$LPY4_gI0 zSm|n+)*y>uguj4kxA^@}xiaqFceFEGjSdIfQ|tb!^jy*jNO?dpaRRjbtLMZD{#fX; zgqPp1!;AN5n$&!8`L$0aQf?a@?8Ha=Mlal~3~YvS`LSYwbGe1w6fGY6KFnxmTEH6N+J`+sYopTLt`pm=&|#Bs0t9T!bSZA=La3jV?~pY{!U&lI1(B&BHN zj*$#hl519(Vs#AOAfnteeJ}0Ud4Jwp%X>Q9KypAlV>Oa=@#J3ME&wuu9!}>ojpWBX~PtmTU z+H?M{KDj^Pr%Ku>qMf2&B}F|&OpK_(5<>76B0_|}4**?8{{W~r@X$d%GwoKkc&jC^M%7UYD@hlOD!PYh4amO+_xD+& zX0~O|gsznzXdm%^?D2TW;R>cH@*H^M_Vp&6p{+C(l9xF{EQ}E~B{VXjJ|K~jQa~7e z314j87?tEgG^t}l#DF+s9$hMrRJQFU!K`D;g#}3C<-mCZ)8;z9NwPAxo+AV`6w)j$ z66l6_g9+v?ScLnBYg*ou`EPm@nZ#!arj_||;q&U2?jndd6>U|eaZVg^YeAfK!zT>& zR5=J~@(PNxMzs-0k{xJf^0Y#DgBW8!rsMI=y`sAKq!50ZkZGFIwfj0+V1`5EDF};_ z0H~ny1QEy9mHB#ig2LeFtER?9M*)_;nmU*oxH41KJWjJck)&kx4h_SI~Pc@eEfos1@+X?WhOx>0EQdV`gGPxnsnC(ECPWn&fLnD9lflcz1lb^{Cn%AtG|h z9I+Jj#STxHt$G+H$i80=jSWpQO7+Mg5oxH8zyU<0k?b@&7)!CzP5A!+A7^L;_Wmo8 z;xMP#Pdfbky*jjPW^-DsXFj@r!Tirz_Vsk$399RBW0cDsM}fllq?hf>#AA&tR7WGn zrLIlD{CoD?q9@YFP-Z7MrU&}C{#|Ib5Rx!hkIVUS^#1?{NAvk><7KPr4cWfyar0wp zH(v42JP_0>lNBB&Mx>=kG!mi|sEM@lNgVNedm_D<&2rA8NYzSzrN^M-O8)?trfitb zk09-!JbeMBKWOyo!DT^ZU`ICnO>=TCbsKYYe|lMHx=5)VUPU29r}2N6rpXe`dtTp< z>;AX3>v4fm{cbzryq^)OZD#f^o)zt{Y2?u>kV3{&&}05@CX)WmBG-=Coh+;D!U)5vda zPK7`Vf#;4rXo`-e!z&IrnVvgs5a1Iwo&Qo_DnN=amMq*&ka!2bYmaCr90 z!=Zb=A6|@7WsW^Gs}4O*iJ3>J1pxYhQbM1|9E<&Z?}x*Y(l%{!7CZ^)Ciw%qqS(J5 zyTf_ND!hAZt9Oo6wKdYA+LH@gBP>iy1{RP2O@g0lcBR+8TWX<2aDV6T`S+&pCNXXI zR|*LU7Y-H2k^cZ!?Ca)t+`WmlcY5cy{R(2X_Ux8O_g(`dl!lu%kIt?ll1vU?3!Z6} znhNZor7*Td;))a#M=^0CiA0NK0l2h^)rb-@S6wmf!;pxR@1<0 zBO!s|#{gFzy%9<4Drxbx@=X<09Ld&HyDN1602s?u$(zVy=FJwXrrINLLzAp!6>(G1 zf06)UrFkR)P-^yXXKtZ1D{8%0!2{*SpPBQ|9yI6!CB)4!+})`Lk^(u-tz0T~V2Ta| zElC*EdWRi+SziX;tifYHhD<528%rZZGPC4l$WL2Ywkx*=8yP>B6BZ)6s}j*wE=3AQ zRanx+9IWEb_zeuQ_&?~ZDwLrHnL4sa9C!~-ttH$p0$ixns#>dEI!D9i04!*tl`HWQ zP5=$PbCSOHscLwpZK;h+-U6PUPr9U}sKnOM)YnajqK7E-$gs&>9HcNhrI4#AL=ncX zHMe5NB8ekImN+DjAS!(+=6tcy^|ivZ4lU*jaV#px2l^O18Gt&CJV4YsMMYJ09)e7^ zH#I!)Qf3h#+|Xh$f5IsK-l|hcjIPB^Us&%{!o0~)De`c$quo@328PnE&}n64)N67; z34$~z9rZb_Y7Tf)9=#ab&t+tV?P_**mPVDeCwps83W^E-MOzQl)e&Jd5F9D;+j6I}kM3)kECK3;-A-9n3tO8W06@ zKo+FaiS)_5x0ZG)v)oGlG_~-fkP%dF?6E_n8l3|*(x4MshM(^InQF;%RPj|+(NC4c z(Z`atB}^4{l`=sNdbP^1X&|Pkmqjc=OUTk(TS>W5f=i3nzk)q>rIABaQHdZq#%KW{ zMozCGO7vy>+B*wDw@%9)+QTcD=*m?TGeVU-7^ntD_&^4yBc%T8`)Da6nw-?6xjI^k z*=A|lDJtfs%gY3ERM412)b*v<&oXuz1qkv~uV%!6Kj zX7c0emMn&?uI9={`LYMx-#QsJ>MEEQC6 zEb(ZJRpcrgOP?C(3P05wF)xEHgzWL^y^w;ylExTTgaSn}N#Fn&so*-iX6jACIShnZ z!`h%xMADMV?WEM{jYUUstxu+4$zHXwM-Yu+bgIhE(8P`AT6&r)NZE_rDxpe3FU_t^ zzXgZ7j_Q`+cy6VJIE2!@+(jxEO>@W3r737_oXAOKF~p#gjY{r7r>$T44D|}5!%z3h zjjB47r>3R|5p_caMKtdmsz$F`5A%S6NFvreHMlG`vdX{$k_gf;G1{eBmA!Q-%UAND z!kD~Cye45sjI%Xs#g&v1_8-IZ8OB`k#+M~7Ld9vS=c}HoiYi5TnA5a1GUVx!z=08^ zhsPS-5X zQ5zqgqp6Re`3{~Yti{p_T#Y3yMKu)rm2=e86Uwu@;PIw9Y;wwV0%tX5b+-Yu8{Am? zTGz3qx?X@*-LF#MCk;@-1aXt-S<6v)4JVJ0dRyMy87${?dxf$vGpN!8^3|lL^g{S& zUawS8NUUnBW(gvrIHsB2vRNcyr5b4B94G(}>+HTu##^9biG+qpTT31a z=fz@J4~Q=S2WUKex;aQ0E%eCZo*D{@fv5n04kt-GNhj>-OG8NUjGR&mT56200y>vy zV-+&e&}3_(F=J_I)QvT{C3wi>GNYai&$DX~U2fx=HHPAQQI#6BLn~$=G2bs5;)gUn z65U)Ym?TdT;kUagDs+aDG&PZ%_#>lyi!U5>>42rtPmQjwStg{xW|?xBsFu@38U~7y z>t!tqMu{X#8iJ&$)JG=X&9->0zM9rcinH0>zljjerJ-1ro5&`WrU)ju9C|^!PpWCH zZAe>-t8dbjoDyhUAfr@}OA}m*SA}|a$5F=13{{lmBN?%^4N{FHZIrI9maS!mpI4eH zXfcsUpW6g-f2XqxOLA?}Ex>CiliTERXghYrE zjNA(}g-@1o)2v4!xcAoAn=d47QI*^@IVy@;d7zG!XeLT{>A+I)#?#GB5nCH9Xl!l| zwEKy@z1^*@uJn^6p^RaH8Z=Wp2_-=krU5jsNJ`pmJh6KY-Ux~dM~Pj5E#d;js!s(B zL9KE{YAM$4SPIR(2GHAh3QRLcLmuA3EiNHj9TXVq!4(hjIL@(8Q5d^QZiMhvsxh-Z!C*l+^lSzdt^NHf|7ttEta#8gZ!e z9#!dagQ1qbzJ(xLh@?*(a4Lu*(o&vCl)E7C#3n3IT#}%IE$jhvb!iX<`efR7#`>5JEvWPP{{Um`u2-Vy9(_Lm!8P;g+6ZszuoeRM{Gatg_T&0{M(n{z z^5fOrh{sNmMxZHRN#?*Ca(L&1d;4HErLPW@+rxn&H5te9>n|!#HXxDz01$n$Kqk7n zUDrWL{{UP1{{X)F`)n3IXRlCo+e8RF^Yt8D+;TrW^X|*q!H#LwWL;=dw5X>vU-&x@M<^QNp#R-Bw!#$!y44o9C`&5=@pS}z|@+kKZnFpsU#BA z(|MqlHmnX=uOKE#Y3_slNdCUmTe~ai9|xyQqCLcBR;p?8^{#8ge;{$vb9HVi{2gv7 zsc5L?$5qc+OTM-K;e2;Va}!NwpYF^WJYGheSRN#wiG?$q zj-Q^&SkKblIeR@-ji>=ia8@8tX*BT26%-ZJMsh%2L=e-z-o+|QPK~Z;3u&GG{rkIS2A=j=matHPHZDBN#lO3#xS=)gJ%DgITk2;T^MSG6i zjH>Qr5g--Pzz`ahF2LrL#Tyy)>oe_q#b=&uVp2$wYL(2hc-kh8LHANa9EgEPj9)-t z2>K6opKH4kGui1fkTn*?1#(B_z*e4Emk9kVzfK;WXp>PCb5IHy<4|k{VQjSkyU$O9T(C7^S0;DQJ zc)V3aWA305#1<+Vi0U1$A+^}5e_-*a-mVO=v}o$!M((G2*J^aL5fE6nP_IIr;%Q&ViiQGByvYi(5$qj zb&x=J1dG@oWb-^tVP;q{k_lND7h%AH4w5w|r2!yQ9-SG(6UTXQ%2z~+tO!w)LI^Ed zHwucXpSPv#R7WjAhN@bK5ot43INeo=JaqN&{oOrhnriuwA*y$%(RN5lP(HrL`)1tN zky~7((5z5gnu!TeUld!31&W1`XVAn_sS_0Xx z0n)PzLX}y}PIyyPV{wq?aF6p}<}F}0A$Vvb2d6j=z;bo&tP z@JBxF2JtF1J6W3RwrGrrCCdWeMKXquOb-hdjzdu;N(5d#2lp$MhikanOo=t?TSQ|K z$f8dQhPQDm1FltI8I@`nsO}Z%(wYdV@S7VIGNwwG57t* zr8JUHz!+%+8d9|+n$-UQ>IK%}CDr6m$zv6)9t89OgUC*__`gzxLoEhL(m2tkd z7BLkRnE3M4RkgLX6*Q#ET9nk$MHMu4>R3%2S{SP()s@fWdXV4TLu0o^WpfH9=DOsN z0#1|?1yt2c)o687HQ_;%8v@&n_wNX#l@Ft)Tate=JH^}tsOJ6|H zBgF+pKaxOWYKW<+G7`!o1wkmpR(`Nfr3ZoRvTxn~9G2ljL}o(tG;akMxrpMUQ7FOc zPjADVD@B;k71&}VWNHkBEb)O{@%T7UQ2F)Es^!R4 zddkZp#N$=L99;Xn_jfym-OcR!ULy4kO(k@yD5t3i5ED--`JSq_>1S^Ry2$a!O-lS> ziK!}0Fe(iwM@sFjxoP&!V`=URYFQ(!+S`w7?jJo3UxKXUFx!fYBIML~=SXT;Q=c5g z0;1{kHLg=#yi!>-kuH%N#ZV1u+LW4_dHlx?nTc*=+&q0%PWmYvS3xUE)|4~_Ksm|H zM_+T@k)4ZmYz>RK=|;M3&9nB_asp>bkAp9TqOXYg<6j)-MM(9i0luJnji!%H?5cdE zZ{&a2=y`fijz{##{%5CxEJ(fVNWHD}Hu_xqd!~j*SynJeI=H_E-(RQr{{WA)hT~8x zN>?2+WvC*ZO8S`85vXdp`rLu}7vtLph!yKl)5INT_r8~P$xf4hufKKfxF4t=*8b|j zkHTsBbyCz|wBujp*O=)xzOV8B0Afe@{{T;RRUmg7o~bOp69uJeE7u0~Y5Zwm-|O4) z?{w*}ss4}i{{UmGOzc>$ts{@=#~1qWe!lBo>UF=U{*Uwj0As8~omaicBFFu2q5lAQ z_oCf<>ONo3{f@9m!HFPn2Lt{0_4l#UYA8N^a5f8j^Zh^Le(a-DY3jnH)61+9I4h>y zn}56?YD8KMYt_J~QN7=*b-=#>+v|VN^#1^1@7;T>e_coYh#%JH>3{I{t`C6yy%t^o zBozK1@}96rMca?1#qae4`u_m0?!5@+kiQ^#ZW+U(zfB`>S0jKNkz8iWE=huiv zHL0)V)TpL?5!tu^>ErQp`1aEZF|SJ_xO7E9O(1nWC13%+)PG)o$NGD&k=KpXfYOWm zKiTS1NLj3=~)r>9y;q-LdYUZt!4f7=3Vf5(%@9?=wUPL=6z zDvq-Gg4kSh{YIno{;Of`r3oAjI;yKHYO531et-Bc`(ytA6YoMYJdaj=PAQT0b;Qkc zYlY*Ba1Fk<`rh8$Sc_!W9aUpt!I*UtN{axXkWbhBPuAb>AbVX5HD2Oz({jqt(MC-? z`jd@uHFY#@Z)p_Y$)QMXQ4K|ei)Al!$K%@9~s|$&Olcn^M zX~!4?KX3aze58Mxru!cvKb=Q!WO3CCR~%i#E*BXp1f3=R2byXa3dn3;onfK?{RmND ze?H|eaROOMW3^5~$6>eI!UBxy5Jn!Rq*ugO82MM`48M8j+jlvw7gfd0_=_hRQBf;O zjua&4BzkqZ{{ZqU>-4AHpCx-mvC~AGTWNK_O5rO?w~6ZVCcAjFqtxWw&OCDU=KY!l$%WnWlWYS#F`GRc36O3X%5u4^Fi9`H{Ua z{ptM3y8@dtxNs9~%xqb_CJo)>F=)hMsqoO!vM)B<_UnmSjTLBBgj%1DoOCxB}%@sbucs`dqeU=4dWznYwP6?JAWVSG&K-Hnb`7>Ks^Gb4qfFuYGihTL)2?iv~pU)1eIO_^AW zH!jJj{Ydu&?AMk@#oczm2Gen>c$9()t51dFngki*#F8*aLK&@^I6MWZp!M=O6eG%* z{{U4wDxW1beMB^$cKGU=dMuMIEhG3H^j2dgmFna}6o_t7RfYbf-}CNku@POs@W#jD zuMt`wv~(Alg|iWGKgGRQ;uQNy82bbu|)OG_m*l2o(g8bk~Wn4&XONl#T0s-0mY ziB$kMAaF_g`yzXLi);0W#+ncs6I|ESfe{OhZ*ZKbdl?|B+B0)$? zRZ`c%1faVol2l&|WZ#ld3#hl$`+gq{C3J8yG5*GX&(d3{%qmBSSn30q%$n88vo9y}a6PV(JQUQ-47CD>fcfM6{TDn&N*Oqc z@Zq1&J#wT)N>HyFAGQQZTL=YMN-h<+7ICEM;@{!<_VRd;6=@YjZchyGr}_HuK?;)? zCC`!c{#|0m)WMae$VXW2Y3SJyE68=lJ5&uV#Bu3k5|S-@f$c0zvopfri1i8)gGzqR zJu@RCGMPN82&nbP`#;M)D5>ia^6(mHiKxd%O*J00lt$51%Jj}xLn;|%NR943y#D}) zwR76W`cjg#O10FqsW~(_`#MsNC0dTs4KeHa^tSuhW!vd02abBIln}>9QtFi}J!M?6 zdP#_ci^&@`#fXfKZ^>z;r->ZO%4920c&?BDrYVpCJaSLj)2vrTN5}pj&*%C6T|2;& z#w#clB7&ZvxSBQBE5TiJ`;k;?KdMrB`X9x;v8p{jB&r#|4SdJUVB~$BDu+;mLjhL; zw5|{G{$uj%E;^l}qh7;ichB6n2-VH-r2d8m%|7FO80TEtww!u!~7jImln`4bLKn!R-kbF z@M~Yok4ZcfI825IIa##wH8u4y)l`}5a_~(Y6?sz<)iH^@u(d%}O)3R}QTh7&L2!_~ zvP^{PkY~^zP8@$f+0vV64G4gP6K0K^`ckX=c=7vsRc*b`nTCpRz(^28nGq*V>W4Jb+f0B(JtidMHE06aiR0Px7Cs6RfQj$$QPU;|ZqvA|R813zy< zT^#j0YXdygbySqXT0E4JOoY{VD;A{B6C&PyVqaR+@%ui{x2SS%crp7{qbCMY9U`TItN4RcG!!#SSuTkw(mDLTC0dC=YjbDz z<-C#G25En>jB6zE;X(cmy{XwkX{cX6pZbsT1Fe9*ENsf{h4KFYuD1SS41G3MOe{G} zlsJ;ch*sw2e60TfZeLrKEmSySNcs|eg;B|?<1WN;$Sg=X`4QFaP}@Xf6{`bU@yV}4 zqy1Q1g)DziR{Y!ox_!J2Ks_k%!$uLS({$-#Nctbo(0{fAk80v#{Cug?Z3?fgI&P9S z2KMxmWBqJ?zu*tGf_6Sbq|M?~6acMr*9{B~k;xvb{xqNXo1b<`S(pq{t5&D1g8W@U zw-!Is@_0X9J-q51X*@d7>%L1B8dXo^i+wq;KTd7#ix@*uQ`Y*Drr@&^egOJfz@B&? zaD76 z(D=Q{{1<3vskU=t;@s8ydvIhR$K`RjIkGWVQBzjd)5>Fr%L}P%>QWE0ZIuVt%PAE$ z@H4O5+x|j$Q1H*HO~C&Ex`Lzq9ke&dROEc|=U+T^^V;qmt%=x$qCfOylWhnSkm`tdFymf{JV;2<6uE#%cw)cJ!-1CfdqjqSDbHCRoTQHsgatrdPQ zJU;5jRaQ{e=W*NnZc$*(H9lW1gA$Z=_1Sv*lSE#srCk_))|Oi+hTiCSmpBD7Dd=!~ z^FhXgqGKJcq<>E)#>J%qX^79$5!%tC; zs|;3ZN=)KKl&X+MRa*g+D9ET4kojrjMW744_P*Scvv)NfKXFxKy4hilU8hhYk8#Uc zl!t9nIFhhvC~UrF}nIIC9+!+Bs$H}Oey%a0tP5R0fA6!kxn2~ zm+d9Fy|#+oWPxBa5RN_p8>lJ>aaUwMCY=>h$A=0hhCgp)D|eghxN>)kZqb}w4P_lZ zItVirRP@s3v2Z0eTP;zM1>=%9B{MU$Y92xfKGIu>X11Lz)UEtc6w)ynn&`{pr)p(R*4o#zsclls>p6hbsAWn>{X$NDny97m>QLtRBAxArw@Sn z5mF91Ik$k`gt@s@lJWIXMx_sLE9q8tD_YWp=}L?)D^%7}sO7TN;z^~7IdKMgs%s%( zQ#M|Ln0T3=$uaY>m@UEe-sa@r+6nFr*5@o5ogn%mbujMnlu>wN8ign_1x9)`v4Cy+ zd_@&m*5gQ2J*yM8Xehm+gy)Bsr%AXa^8KYWu&mLD1eB;lv>6P&RG}Jbi3>zop;pjH zx~YrET>~z?$@REMh+rc-X6!qnv7vB^3ch4jYXQ zPNGFH2MFqzR98zR5LG5xd7~K`ibrz-#UW|srA26wsw0iHT!I$Ef$oq`D&91-Mp?;H zdP*aMqt5N(zV8&SfTmXi23y46g2cQ;;GVN z^^>(WMy6_gQcH}bXr4&ulpPWIW{O>N5>2cCw>MF2E%wQ+ErDj-bu6+GkrZWX;eq5_ zH+@N<;l{lsl1VO-;!?D>O;Mm~0V7t0&l5mJ5|r~MxTZ{WR26AcJ!@8^Q)RJ{P|{OI zN=rlLs+%Mtd3E@bju#9qa2dt#&$`-uHOQXoK_bTYaERjo>F{+(Tq!l8pwAitbLrJD zB)Yd`ir7SCTX_q+9EYNa>IEuXig{Eirh4vE7P>==QR1qn&dc_!-dSj3mPz0(EZ&WB ze-4aTo3HqOJ*qLPi%+JZY0}}Dc$m<(koBoGC_L&14z!`l$@R4kj{w!cIRRRLc@Geu zpHlJDRl!FcNOMg*HEmXs4NW}rQc^59iI}zYQ_#rjvHby&{{SEW7VYs|i&k@3?gXWQ zJX{3=D*pgPRY3lc2Awf@ut_^x(_9XLNcG%@n&)uqa2Y#kgG0|iEAb#u6j5h%X6vr_iOyJ+R^V;HTy$iVDo#@t_gKb z9$-@+;g~2Ug<_Dep1QICu`yjt0KJX9)0M3ob>H>NBe&DUO4Ng0M1W~eBnF>pKD|?$ zF9oi`A&xZHJged%4S^UA%B4uD@e0)B5l}{Y+M^@4B&WiE5unP{(N6_c6?Ax-dU{z5 zQAIfhETt1c_VhIp)5fvt14u#0C!cbL2N?>ylVxhxBwK86P_T`9$@d^vEbpZ*^ktp$MpXI zTj)Kdl7#6#pW*9eUCyNhkF%-q-ZBWa$K&chKhXaGL;ZcRSd?ib{{XA<=}doAs1;OG z=l=i~)@@FC(!BHe{Qm&RUehpQ#)Q(pFY|P@Youz!Q$1x{X(#+`{=@Tc@#o#T-(7k? zAfNC&1O5iYAAalICHKD9rr!HAbnOa~Qa!vnEjkH)}WiqXJj_W-MAW>3XnGbcDol{ zS0FO4@rr7?ids2J%H~)p+7s$nl~9)YeJp9VyX%@Xp^aXZJZMEtJrAcr##&g%GyH77 zmKb1po)!JQ6~kO+iz`i66puYUVWrd}ooQNVZTEgQVj189z>5Mc_4aQQ2-Ra!PH1cM z{{V~VKPg3KGS`kN{$4-Ge$Oa0^T$c{)Nte}=ke61+<5hs@l=q=ViGK%_yw(SdH%l4 zp$XeG%{4>WSXivKL)elmUe=!prxuIm?aF# zA*U@90wMvzif6gdYzf8_rFReEu0-NR8e#%g^&Tn9m|b~i>QDlDC4T(p&W zDw@h;XsnULSt|XEvW4QFcp+7g02mGf3kxTVh8`U>$}5i{oN@bodQ9>#ET4q={i8oG z@bpQ(N_=73-TwgBaO|;DL9}vPZ!+0^i@BW1UE`B2Og{S`IF0`0C~`B?m;y5x)=&r+ z9^RCA(0DSB%y9?QXVB7z$kMdvo(7*~xHon&CQDYM4jP1mP6Ut*b4CE#5I4yW}JeUVJ^*^tVrmrBHk z;$)_DfIO&2m3)si2DMBe5QKYcFiT1Jw zSDl0fm16{lKB9!=)R1Zc;Z7b$q_+lG?bUAzyGf)N&=H5IQBNS0W9mZG`gI+5EXk32 zO7m0p(zId)6KF( z)?(tCcg;kfjbyeE9L`=WGtP!Y2Z?VgWtbW5?{p51-4gXj;^YNp*ga91^Us z!xTjou9XWVB&FYP3EXWWxRyYzUeF4PapDRw$E`p(^y}J`4Cl@3 zM`>?jbv>_Uq|-|V&mCt>tOb7*U>eq-)O4?we2rG!$;ptV$yH$RzPQ_u3UWYfgve=xYSm@gj`Mt@4 zbj)ES&OJbq3aZKoV$fuOr1Ho0W@E_vY2G&*iwiqTh5Cr*u(^tE-5xE)n={(8@b8KR z3aqqZqKsRhUiGrsjlxUM5pC|RuHu#>BMC$n^Zty&5TjC~lU*-VR^dey>y=5R!(g#l zd{kNLU5nWh(B-ieHSHACv>V50g(gtl zy2%wQMo>cv0&*Yu@+pd~t)8sUn4-<@j9z)?X=lm9Pq;CwYKG-}^mPjat9c87AU3tf zu(VRlEp8e%cDj!C;wy$ZWJ{j-o-FWT8P~5+$e^!6_O`M&P{#_Y?Xz3k$pWnc7PgQY z5l+?x*G`%e0jS4Z9vW&)g=}dRWDJE0mgeU6 z_etlrYuVOBGG9EPnl3(>qf}CW{2^QdNd$4I>q1FxEn{-g!U^(V)VhV)$aY;NyhKw~ z8S?Y#BL+r?7d2cp6eeISucMAwWzuL!AY&z1R1;MoR1c9g%{swBhvQluc7{VmWh`}QP*sg^q!HDEvMm-ul)Qn7yl0Y1d4oShpXWbEJQbufgZp zaj5$bN$cb~<}}~yZ%990Zf*3pzY16K>sjj}o<^1@`rh`p`^V?qg$cnYt)rAWhgpFn z{w;6!pZ5OjMLy1zMJqWV(}!K#ka^<&0PAz_T{=`24dy!N`bEd&u{Zw!VgCRX_r5(+ zdEH0?oI1o?(#`n>!}<^i7x(JprU!>7bcBaKpYcbo4nqs61TP2tNw*{G!S`0kucu8g z0jR$ZP4YI9NdA}S@o*0|_ViJQQcZEw$N?GS))tiN;YX*DbHP7ec=~&}w?3wyXI9hm z>lu{&cm(j@TYo`rf8PD3l-!P!2Pe{_?*&T=#QIF^I>j#v5Zl=WA-2FfwPwEf5s)Q6BB9c~>wKXa_ zj?$`vFMsvVJpTZP*WFvhuV}|q1E_{$&Z`7GaeY=l>`1@205s1Yw@P&xLzn}TKsRFg?YGg>_N7bwlwmc87Hu@8B?L3z68fri4{#`v3 zX(Q=1B8RSV)M{M-wXdsIqHp-nZh0L0OlmS|(vxi$r%nh16y>dM0b)L*^KY-c)Sjtz z;Y6sqOAOOLXHpgb?2K*tZ^1v+x%&I?Bx9t2t7TV8`W*ErQpaFT{{X_q-|hal_S4GX z&{Otw;6gwke=ek==;Q13xA>o_xIBG5vPmYVk6R#&9zADAg!_>?F0AKLr{{V;6lkFEq-E>)p zAn-o|!|VPd->5qGSejP!+x=HO--{pkpKe5o%|q$a6T3#5myLSH^J+XWAJhGB?S4|KiApcKi-|!n`O{fRMRxT(+H3HgpueA8Uw%(K79kOjoNG$%Mk);u9{Xf84V+{ z(;kI#C`cZsucasQgxE7|e}kKIb7W}bqRaPhU~fLut)rb7OCCO=NdG&71L<$AfaCpcJ&k%V>!N*E*4!RGyj%Ua_o6B&diPw_p20(%KkA7e(EWa# zpLOupt1B{^jy)nfXL`rh{XN?qjUy~)WA)ze+_1?b=|!l;VQQ*iB(o?VysAIP>G}3+ z%lm9Qr!npOY`~j&uVD^6^al+80P&SQ7{JHDYm@OrrH7XfUzHD9IDByItV&Op`6t*L zS-0lznhH&;wIOOLWl!(#Wj;@Ez+#S6`&zuQ{x=fS>IA6$KcssI?-%X3Tt4vb6)nnK*K3(f6(2dnQGkAQDpBaPPQ0)!JU4`CzgCBtY7gP5Xdz*jbJedyL+%@#FAP<7ub;}MK zgtD?dJt0xUa#_Fc7k2x;@wQ*6`Zv%eQ$;e*e1qvBZ8%eBWJix0k{aQpm8j#Rn=4^8 zpt}pEKg7HbiA<1q@W3ArTPy9%Bp6%<)x<#*bkN~&*q9m^lq68cj>bVp8b*OY3Or~0 zeZ`h>JQnd<8UV1W5WE7eKp!gPe5gFSR!Xokn%C|B099$_(N6E(yEbQPXCNpBU+1cxp1lOGUtf-_gs7Fh zeSXig?62q5J8oT-Sw#&sbtIG1)YMIz4H~p?(Z@KiEVT>d^?1t*Y5d>Zo4ajkD$jLp zx}{J8k-!2l2;gz&(Ji!y344VkR}{rF!|kO%)OrG|#1O?SbqdD1@m0vGu`z;7JV z%)~Wv)zz$37izB>q@Foh*hcaYA6=km(Gc_X`hSnMZdF8p9a#dDJP)b)57}Ok-Rfik z4Kg_XV!dN(gN%*ZX_BG_fK=TOdOSnZbXzF}hxp&wlycn0v04g9$5CdWrvapJpdzP- zOx1NFtqZPC=Zuf_aqGihiW$XA6JHWkkt)XDZu<2l;cru`gT=37?!f~N(F+hG@H!8%MRcoitx$~(%4u(ymVEKA)Qd9wC&!c_#9`JEtuAP*~gQJ)^ksZX{heRmToA$NIBgmH3)eR=T*Hf3yCs zJt->klH_p`(@{+6UsFdbW0p%8q^+lw2o75I4xjHP_V(eL7osX32=K|SuUh(6pO;jb zuA}ZvBz>HHGf&(6tH-Cv_kytQ9(MjSM-NVO$( zL_s7Jd2MgN{{Ug_2_6%b%WAC;koErnFP#N?YTgz%U#q2&s!z`Z@Taf&`a)1dQZr>FC>EK-J1Wp_a62?So=+P#BZ zk;iXMCNNvf`VaMR`Sh+E^Amoc1d)mi*X{E2{Q4E5#$)TUICMi(6VFjIyc(l|@~tea zw6h^#MLfZojlCw;KHpU_qOMAZ1COs7et(}1m4Qz12rPWhpZEva`*YHx1BQon*HY}t z2-_fYTe}~&so*d}A_uIjp^5xas460&hg09{=_H?NuhJ7|c@@Qc22hj+hMaiu;(WSw zn@kGgp^Gp-@tRZf>t!5WAjIP_xTLv{89_xxg~v9grj8NxH}tB3{yxdVE|m-L1psHr z3UsufIrRhl1E~vQPOIMhoBD{qJpNC;jAP5IQi6l7GR6zoog?rqdyXxuP(JRi$z45a znudD7=&f=<;2-tBC+K(s-PT9c0XQeE8Z2Z0J`>b73w|s>H|L+n)1GZ}^!BJWlU3;l zSecbcw*>G<;@^>PulsLr$0IvYxOKes(lW6nP!K<_Hva%0SJ#97x3?uMk<=XZqG`jf zM^2MsZT&g0C;lt{01@pN1(Y}Xyt=7%PzxSCa$E3EC;D5D_TNu;V1#g>r%by$wwO=y z>oQ1GSf9uA{M?iN@_nUv*x`O2mqjLkLk`+w?eqSAy=7S%6idFi7N zu~qcSvfDxWdl2&E0#B>e7-^=AMx?bf#E)9ig!vkdlJ4?IZIUtj!4R=(zov)nSlVzr+k{Iy#>dG9Xi9tbEv#9E;saqRdu`%3PeDx&I(0NQXsY&H8 zE7=dRTyio&8bLT7DnXk%7q3nW_sCJYhxdc$;VAtWMqDPoV zzA3Ua)p*UrJUK+I-Fu2H(U02nv=mg8HJeKlva%UGE_*#oQp}iayqOGa5J_0697#z8 zk`)S<_G|!9%9YQ>T#Vq4^Lg}2kSt8iDb%t65NgS#SQ^rzqlpw02R@~%v8a0oW^8=7 zTW&46U5?LVH+3H6%;O%H53ZXZx%TchlNp)D=3tUpGF5cAxg>aHiCT`LJdARZBm><` zTr6yDH0y3AfRHn;m90n>BhM7+RfV0LGZQs@W#u|hWjKC`>EGSR(Xb~=Q zn!9%I98M~qKV6W*WoDt;&`DcOhp5_nA8BIdj;4y1x+YlLE0L^vRd~c~lK7hUE`6qm zc=wY+XwC;{paDwhuAiA>UO68j(Y@qy9j?=KcUZ0Egco+J8Cq6t0oI@ZkcY^~W;E2# z(jrWiRR^0Nm#4*wmanby)kR-hK}A;pj*6Qlh|Xnc9-XU_t`uqJrjDd6k1dsMZSCpb z!nHP+rA&qEsc=EyH82&eD%9XjMKP5&@S~)6+i95D=uXobyHsi_(IKlKT|onBs;wBX z!3Y}cy;eL{)zS=o4GbHLBV9{rCxOzMqBf+Yl`)Mpj|D167MMXSY^`C<{imAdSS)_3 zStCFuXRia?inS|1JAk0_G$e7SLP#tv@1%|?#E)?$q9XtUC}7&zd`~v1?kCl1anl#@ zS}2w(Je@?C>dc-Bt1$J|DdV7)at(C^R7@`HD=DoTvFA~@v>!ogfnvNQT+a(Ja7xBV z%G1o(gK;LA$>_{(S2C8kvQ?Ja3#Ei2<-(4~FXdHgl^iLYbey0DroRc4b#+R-*ovY$ zc)X~Q^{-c|$jl8vq6W0K?fmgimobmFu%CR~M`#Dg`MR1ZNn>bpS@{}Nv4jaUY-d+ zkt&^5^Uo!Xqok!}axMC}`~zk7k!iY$H~@F?i3(_SojuNYl|;#>na`(9+&Oq$NJ_-X zMqz@Z@Tm1?$JzGNu9#A<+Ez_e)u4=xJc@{7mN@9qR~$n!*rbxU1%DtB?X7UZG#i6B zpA!ba6bb#8rF*#l02d7PuxCCcym5$+>98c!66f_lFaghz&rVL*r+Ch4TF9iX zXqImseI-iGqME45rQn|rGI5{?DtKHV+2CHy5ChyI6HR_vaRaA=vQs8_sE}-BH1!+4#JbQTOt$idG;7dC+jQ5P; zcveDnElA?AfOzBAfa@tCFp}2C;hQOwqn4HmNE8>v;xXDFmRVy|RgBf3B(db1u{S5( zo^JzW{pb~2a=n6Ec;ma^9lt+Q%d7$gkN#}dsYSO8BDxBz)! zX+S!2nvp6csfLzV6i-=%EVTBNB_$;+GO<~u<~Wg2-cUFuE_n8Hd1i(?t4l{3qn6zZ z41y66iv##jkj+48ih1;fCukKOWn-c_=vx(Las~$yY86kTW2HV92BM;>LoF3U?W%bz za!e}`BbOnXoa5*vrjj-vaP&q*nU6o4@I9Pu7L(iGtXh^}XH7H3y!doS^kH`UOM8ZD%__8jw;vfv z4F0rrr4J50TZi&npq`t&`&&8u7*9ow+LdD?1a#>IERjc&#H|$zkz^_IJsa#kYI;iiKpD0YE^Y7#JDhpDgqq=R3K4YZ#-Dzxb&=#ZScR;xQalxcGf( zifJ8Q9`S;cEe;z$xAIvSvX%McNl}Q3yu(3|plXVQT5%R?EHt$lN*NMOB@(7L@&1wz zu{P>fN>?wJ!B13sB#iZrH^BJ8?!sL~Me>?OD`((y^~nqwdFeGP1qI@`j+y8bMXP6;&o zNEjYpA=SM904)Bwr`>(MO}Xo+r2j}NrI2Gzg*`bMK0Yv~q=jcU0)sH{Q{?EuHo5Ej%O@BV5m0SLi^attvKtJ(5*k#mp5^K`B)2yHi4hPVF zKf~RI1v>Xx#ApSr`M=cv0L6d9+5vGV%cd4aE(eu*&kfZ(Foij>UB=fY8hvwyPZ=v>ex4eQf(U1#@wLmo^AD5p&xmQC= zWheG=xX=d>rlgATIrGn_RS#OxWNUJHRj87+*=s5=ie-&jS!>yiWi~=DN-&5hR4gtn z$Fn$AgzIX#15c$#*<5hwfr>H8@sPeC6l256gNdNve?R!7 ztX0+dj8yd5s6|tNGBZQ4^my?ltqPm!i^ zkM(D&>tq@i%meG1XZ%0Q*CaTt{wo?#)78sKkcq0~tXeoBU?A3pK|w1y1z0SXc>%LE z?ZF=RF(N3{MI~Zun)#Z4Du1hs8m3qAA1HVMk1sRFq|J3LE=rp%PmHG&buEjfq@J>+ zVK}N;o}OxoSSj7EUU=$i8T@}ldmrqNe(@uS4RtL~o_$Z*(|744*4iyd)XF%}`taf~ zY3O}AuFsx-9CrtM?8;uvq5GQd!s{)w{5rmTgwfN{=C@usRhgc6}O%0E5t}MP)EXt zIO9$OsS4oHKBFw~DLu6+(Xil07hnZNF{*~WI#jCFz<$`BHIuA!By&9I**J=apQH;#!vNR62BYx^^0f@r{t0gV{ez15*V?XV-^+DWDdNFXf)->vaRwNg|m@XrOQ zInX<%Jaqs%=^iR-(2(hPWTujh1w>U6C){Xl6pa!Fd13ptcwn&sr(YwTEA3y4ZEteF zPf-z%Mrzrq!3LPERWb2o;B~T(aco*sra;=w2nSE`1LVbYv*QSKEeltybhM36Sxu0% zCJ7zTv~j&##UPE=r75h;^#%|c)dSL47E|f=)s%8ac(-~GBOWv^Mkv5>CZEUWlf$jg zaI;%Ir+10~IUzw68cSk}Tvk3HP#!%)&(A{}eY6H+Q!M^z+s?B>>gpwqLg{pA*iGvC z75W~1q~GqXR#5~(k~7t*!_;T&Bj-*%DcWMXapOy;!BnD+I!LAnp~z88dhr;p$s$dz_5Wo338m<5q`tk0oG)OOB)ssW5XVOmhVPpYnY`88A-!aLq$@<2ST&PD?y6X zQ$1g7F)+58Epi5guB}TZni`tO;btbd;iu#}I3E}~_FmPCy>`4=5lNGet8x3%on)ag zNmQ6xiY3WJDzbAuO(bzrRW_NITt$E?6cx0y?d_D?$lfd6qyiAQi%~JqC8mi=D>Q+3$B!!_GGM zCM$cHq7it~Le5Y!tu@Bcv5b}_NGFLo2t!afz zjPge)j5Cy2%GlrX4w76YsVM5U?GjF_MciRgRV<_6ngyck%O5)9sR}101;I%Jc(Im@ z(zdc{D$csJj{uQcC^~_zGt*kvtW>p!3l2g`>P%{5>E!#ks!c`*DKZm`$-sz`)znc> zAwbZ86aWYsN3u4(g4QV{+aZy!V}K%-I*EzcQ5n;uNeHf^Q4dmcLTY+p$y7U4)ufdF0BuiJ)IwPeF-Y;{o;f9gGOA>a5~W-O z9NUBR_E))FPA+DMs1ZscB@=?z8YK>Nu&Vtj^ zM9jZ)E5w0ZH|kMy$@X&b!+YYpF=)zY)F?5h@cNzuJaT^0jdEI`h6P2PR5;b}>IWge zgaS!g5krAMI{N1S0K#&6K2F#EOur1Wbv02|O|$lv`GAuF#Ym zDJ}g7BmzGKbHF3nSBz9pb>i#|G1GI*$Lic%06*C9KdJVkz>lrTNZms4El#{;amcYh zPoN(C;6>^D&sSwdTDQVF$diyxtNjnqf35x==eE%5Ebs@ z)JI}05&ySi}F9M{kjoWp?GwR&nl9j;-{=-xflALKRn!ye!kZg6sJ{7nOVRz zp(D$zE&wggk@-A-f&B6H_Rof$7}u`?KqA*(Z^`2S08hvD_wNZh-A`O>K;&5e0Iq(Y z?T5QYiVsQdBzVvj!LRxHgzR}+gJZ!w{dp()5r22+xH~8ya6Ec%cVKzo3;919kI;Pw z{Eyp;ppLAn4o^^|f1$Ys)^D%Y_P4iHM@eTil7rB7z`eBp0KENASjaX!l$C&7&rPJEp9*Ge@}9R?81O>Bcgc8Vcqlp z00&Z#IX~2&$MpPvjrsPJk`$5EdYKAJSZVZ>3>f`In~p)_pYZmULR@KVuS@L}G#96J zY5a#zbdXA2SIDRGZnpZ6FK_BE?7ip-^sh=tuS$3+*59Px`jSu9!pr>tx3s2A;B}%; z4=$#PNj|*Ta1YYon+w?Se{HnkO%6I~?aYR~-AIm<^LM`=P6@x~{kOUq(B~EW`m)=y ziUw+ZpX_zt+qHov)(llo=H}l0PP%XwBi;g zi0bkY8kRm?M0v;zSAa;;57&czKh)~>q9|8abqJ?OU8N($QbN@A5vtf5GXky4TGv8; zfd2qMN3{kO89)K)lOr54Bz1?+s^x8T95Zpla)0Pwdhp$SI&w0uj(ot!^Xrh5=^yKU z47w7VA>jj5a`jf}I=Q~75? z7-%t)-k)F&ZruL>b4|Q%u*3{@)>l#ik~BdehB&;)S$sggphh!V)S}|rR=%{_g9o>c z2*WR_003$ER|Fm$YuDC~YV536Tx|`Z*E@PW7(Iiwu)8}Hvgt0g8+#uHE*FuM0Q1ZC z`s8n`IVaj4S=wXTHcNXYW33@ktIU!Cc0V_2u|B8EheH{nDgG_R5b39o0~qP$DU@A` z*bqg(AfKhLz;9>XBYO0l!5XP*4}|sRr2r{g18zh5nDO)nfDgNwsr!1|a759AN}VJ2 z_2WhubNyH7NVvb#@$cR@?CH5JS5Iv<{{X7J5%1<{xni49s}?9!~?;pQ(b@PtYzr(&GMRsq%#b zp4ED;wu|?DycQPqiYTC7(ZK7)bL46J2S-DDzDsj%z2T79^VQJd@tG`-RrT#H6?mI9 z=U6`Xu{(aY7a%nj)~%}k8%7@bauqX5E?59O-EM9zE*=;b2fMZJA%#-sbG>9yRImGw zWT)!xqYI(XA`luis_Q7)IaOj%&ntLLz@O1aHEBR5fU9vd^c`6@z+Z-#&aQe+=-d>w zlpBIfResypco^!nV{tnswd0vHHIR!XR&Q~zYMJI?teH*k!S@L75?XH?l7!Z_J8i>| z#fkCmKxLNXxg^LP%b3X~h{14F^nPJmAZ#LWED=#v>;0e^@iBtWUOs?zXwxbf+&4P( zLCwX->K{vfTiRf{6jJ~I2grGUldT}s+yydv3pd6r=P})Zfucm4C0~W0bdAXaBuYQxGRCr`b@a^Y| zM0!d*RgoL>^}pBHOPeet+oorY28UDK>5uY%o3Cw`D#lxTk@~2F6yaR(Jb2Xbr>9W2 z7EXY}Qk43%(^J;fQcG=LzT`lq0^aPtTYpbs_%#(&Y{uM2k;O;z>2pk`BO0cZBxBN_ z@m{?b?Zf1zk;_!F2gEHmhA}6RDr*OzMh(?ucjP(xTicT|#9CLUgoC&rH9epo_Qgo^ zsLx0ycGO1@4+?o7x9$FYdnC*DwAASYbgr~C80aa;GYQrt2CT@!=g9J1$S0EC-nMxx z_R$e?vcN(&3YiJ1C+DPqen3;C<3cGQQ2F}*0F(V$>LopV^&+aLBP0=1sHeqaq%p_k z8gJw-08l&(gGm-P_vDfko#c`+;K!zeG{~twzdp3IM=}FO;0KxW$^QT+6VnuR8O-!@ zOEj=WRT@s~A1fJxo>?M|Wz}{9XrorJwe@>#=bHL$DBq^J6yP}j0IQEp>1&M20DnyI z{QZ4@Ds%5V;;H7&H|WuL1cV^NMu?Z)G9LVyO3y*`ukbsm*6+&Bu+-31aZl zy?LjUM@=a&8B>yD=c*>B1EhClCS z-u>39dgevJAJh^4+k*E=h~QDB@23Vz~R>gLM$&}O}P4fKg1L5*(Fz63i0dNF20>fR189c zarydtWXYil@Xu6{1G!Jx_L`6Lbs=LRfFOqY3lU>}IlmXbw1JHdO**Vm$!g#5!fReU zaZgHhFj4;5Cd~I1wyObupyv1I-PU@kUobjUsjUEWk;CQw59id#sad4tSa2=C!+GJ4l{`PzJj?yaTRI}4_|cRPuu#btUcd~a^d*!!PpP}MH{ z**j-*Vd`@=`x|go&`+7g=C;0ws%jd53FV_%BTKPX0xh3uj!Rox<1iNucW?w?)Ua4k ztw)gzYANfSW1`K*Yn7fjtlLX?W}<^M6$c=n+4gm&KVxpZY*h090CRgl&9$7*xH0&u z+!l77G5PF5(m@{Pj*^C+Y}Q7fbMBn1t&D02sf2>wW(i`VseCykj^5nM;Rh5n6jNLu zv3St>brG%DTW4!oS&WE4QcW7GN_-~_O#uR*ksSf~Y>jr|%xx@=QxmzjJ63M29VY3U z4K!GcTze*$V&)~z?Hr34XDydpHa<$K$l6zuo|v^Xuc`Sn@nm?UiV|8x1Qz38_@jZ0 z{{SwEtrBD*cNPXl04f}5TnYhN14@!JrD_Q^=nd^|#LaI`!iOD<>+P+#w+8v$H9My% zi%J~UCbwuoim0iQi*8V6w;gnqsZE&J^z`%9W0Kglia0*pM#0c~>s|?Bjtc82L2BcQ z6jaTO!WN%as(L5z%4#%=JGnR2?I5r>=?G}m{-Wqi7a@EK7}07@7OKp^ z1Ke7e=<)9D>{8)im`4;g@IUeYrrVznwpCuWT~i9%+)i}J#6(; zx-G-JU`H6SG25S~u;j}X#P+jgENMloHyh-pNko!I zMPDUX2&$m@1Kh^6Z!VeUtge!lnHhfD6<2Swpp2igTB=%9$In~gW_wo7AX6-hV(9i+O2i!&441dXpqJT&kCc?AQA zuU=X;bB#=YlD49g?INm1j^a#}eD0Cs;T9<(h5$1Y`<#GnZ+?#1V_S8$@4B=qvVw5Z zNZLeVriVCU4n=e4(`MzAPHyzY44R6X-s{Pg# z6RguEER;~HxwvWN{38|fraHkj1x+JVEb++^qR2r_I=p3cnwK(#D#S1=<$Mm+s`d6t&Cnx7|2O$>7ttEa}zBq&W} zk;OCCEXoe2j8r*AxV7vDv(s(3!wt+9YDw`DCM$<34!WO{5~8{C^60iX?Prz==VGA7 z(g06jBm^VS=^Bkb-m%CQIb{(dPg69s)e0&qR-x&}J_V|%im7zQlj@C`cpx(^t#R!% zgu@ijuWi(_!gAFrAq>Pgp{@^+3s64Mbky;wa#96WUe(eY#BC~9B&`SsJOQm~)4fGX zRjqY(Bt%b{HB?m8^zGv`I9zo+FIJ`k&SR3Kf*o&SFK@52Tbs4Jn&RRxUGCANT2N`X zMFK^k6;jPzUUi`aW~K1L*2XJKgZg&bU7544X&8mhDi_Gp)6=Zfb&EkV*t0Aw~%9&2y`dr?nQ>p<2fBH1J||XuLWGEF)3_X*lhm1e08v z{Mxy?A(vuHJXNxJ8N{H!kbhMJxg|r3g<{3AiaQP7C)b2D`{R?X1|DqvQSB-D&81XTGV7vXrk*7xKezj;Nc{Fu zXoCye*_3M)*4}PlWlOiI!Teg@jjlO;AblWlgTZDwYAdhG5(K&Qn~k;X?$1v_ia*HXgKRw_wdAX;f@n&4_? zQEU4@7Zi}mBOhnP9F7S64>4daC#-=boNOre#=S{wb5Cu7-vgsj0~INTgi;P5p{DH&%p3 zFbSw4l?T?Iy(EGltfo4sul97Pe^o!s6HtDBT`9KB9EPJ6QY+&yW@rswCYCrJc%h_k zysQf}Pxay4hd( zYIShheIHf6Yw4OQ{=~?%^oC7Z#s-ckBcv)z7V*@|ra*qY568GOnD+&raww#PL&N8h z{(hxRz66fb$51sKRDRt2$5tRIlUb6$pQ9U|L1NsFKCSGJ$6q7-x>Hs?NmLpQzesPV z^u52Y;F0cy)xI8=T6`q@`pk+Omat!^1nPFUHnq*bAJd<7U=K>PuB}w=r&$ZfepP|v z>Mi)=`(M-EwEdl1u7sER9tYr$$K%^)i5+{XDK+$J%rkUoIBZ=b?N)ln}2Th0d_9TV`A#ONV1Jb^Hf637m)wE`2a-$?tzE#y)epIb~ z+;m+sRaJE`HDgOfE7KX)u6jp=NY!+%KG~^OiFC(kt{4JIJfCKE-W0l?2FN)gpU?cA z2ku$R=p@ioQy9smI!{zhLp?S=qKd9sR;PLDa!@)ZkxeaU*~qe)k;@58w&h9x03T}< z6kQ~eHCH~Trb#B6jc7lY?CAgtLG->kn5Czn+qsCbhAC_Ei#~>trFwWFrzmn2GSpe6 zEW&qniEPSZ7W9jIe4&sl%kekD#Ag`$G5(>`QpqlnAA%k*c#;6m=URM*c=XA&A%+S% ztN^XZ*UyHdmbMytiKwd{qB6b#Q2Jt0vDd&%&>04z545b1J9rY&8=3DGOKA($iLBYB9gU3^`VJkc!3d(?c{;*gR+yh9BDo z#{TyMGx$1=7&fn%9a`$z86i|<2BeJn{{Vy2{wu9*{(t;*ujxM2$mg*%ut&0c2C{6% z9z1j|X|WY*u}e{pk~rg7G2i8eK}i;(=9Nk2#QP-OBXk9#s79eQ6{9HaBj!jM^sYKQ zPI5g6HtH~;>T1k9T`2^H*Bgq77G_vAhT`y4@Cop}qRD>Q?#CooMWcx7j%g9J7 zYNn(blNCN8P8w-Saiw!tuT(bBXi)1yvH}4l0V&RtUyD&{`K@V=&^mdo5@Xax)W(*j zDdA}3dXrCAA(}c#Ddu5uPfV4#nvN-BxQSfq=h>Ug*3hA0`kWM&p(SVspc<1J6n5v& zqS#biHA`!Vwnm*w2X#RFO{PI#6}}<`G15AV=~GQvB#<-)tr;4Y zrZGqT9Mw53H3VhJO1&c(C_^|2%o>{A8IUreyO!Xzlbp}mlt`FIk>$O~~D)F6^b zuS9a%s?FjE$Z+a){XR`9KeUN~7!<8ACoL>wAWC=skrHkMWzHHY9VUmYFLw0Qm-1YWv+2kUYoKFKhVy_ zBy^ThtXAL*kXOci62{n}1zLn?JOSv~d?C#4Dn7*AiMR3Zo2kh3{^G=CC{`1cmTWyt zu~XGkEVC%7#K+;WwLYQ1EP9knCYe)LMzIx;wCfyj5x|)JN~@$pbR-X?{>XC zJyzDup9ltdnJEI5kOp~f2_=uabC%$DE9={d719ZzYk6bUhn^)Z1hn&IBjr;-K^W;j zAlgM?uvlAIG*UI2#dj0Ng!WvqOPF)ORf($LEePS#TDLVx1VeS=8k&=H;3nGC8Ty!F zIOua5dpER_iAmek(S5W=4-ra=mD8?S6}TqloyPlZg6ivX+Gmh%R+s4vu60u8-b;2K zEQ#DZPw9dH0=fAK1)SHCe&gI#pJ}@nPXO#9DWJIwphy5UIb~8Jips&-&`O#kag-9Z z2_rPC6$-$Cs-RP$6c;;*wVva0G2SdPyoMm5TtPwvWExjUYKA_ZeJApZJkx&?dRg)L zdVyC~#1s3WQXNo5QBfY?}aPkOhv596#a9_b<&?h$AiB#Ffi zlkkZtuN0{~2;y&KVTwPYNfK?j3baopSy~xXiU-cJxm=UmN}BY`6p+*wV^t&~dbk9_ zszD>iB+F4E%mjx?iE3jZ*}j^`vfE~eu$3oh=6M%hqf#qUDjO6Gxjw8oRCHw`Neuvu zF-Y2)MF9gyraa1#KtF`_o@zO(DkN%@ijF6&meay@Mdh9dW>5{v7)fNXCcv@wrR`q& zNh6$yU|EirUp8e^`HmcYa5K|U+{JGStOcZyMk=R`6^Q$5#=mD%vECYbKeK8|sB)f3 zYNe@>w5$melnWeo)gJ(J^}qWMZ(0`*cE=Nxs){)9wBJO)XM_09oYR zGopS7jQ;>nU_ID7O&f3&bpUxPy8s9JvtETTN*c%($Vyl3Az1yt7w5yRr5)rK1 zAbvRH56|b>UxOcz73n|76aO8<3*;C>(gwCICYVw3;m+@{MyZL^&nk``^URO8Zy;}YuA+l869A0i3Ebd zewI2*amO}M^*-J3qNl<-xJ4dW>j#j3wIA^|{{V{nuqp)y4y{UcjgF#i#rWfk{{XLV zsrRBu>V_!IYNDsCOi34O>b>s2)Y$(3kF}8!%4_SZo}>Dgmc5VD{0HJ4;{h#XN{;XsX-p$4B!MVMU ztqJ@ z{An8|$B%aUk~mlP_3ZMD-kba`2>#G4HQVWH z6LWv5eO!xJ@;<-Rd-sf=FWJ>WkP0mTJZb0l`t>3> zWEThhS0C#i=soLNwntA#3pghOJ!_l)01Bb(#p}=Ik%rqsv8n5O7r3Zkjs&=Bx-1Ub z%gZn59uYV1M}{-p z?w08RrvfzwHT3~O!N>CJTi^Ihr&_-L`JM5@6Fn6+OB0LSeU;x^gi8?v9^FH>TN}3| z`-b%ihUeW-vY_;Wy1u;ofO+CqYYS^9c?<4aoumYYJ;D(8@+pr$Fc%0|wp1Vk{hW0#uZT`O=+cGtHnh&2EyHpEaI<9ci-_q+FYe|AvR)ZzvsA(ArEtF{h@W>@E9 zn`!K_0TDj!&*oC5zciLQ+s0o}0D>-W-RC^UgIY(qJ>AnlqXrvdG*5Qqd|y>4q-5j( zX~UyiIOBwwAV1oJt3QUBQauUIo)zn1+E`(vrl+QY80q1LDB*&VKl60(!5YI9F^dmO zamE1Si+_i(6|y9Dk;595w+lr>Q$+-T4N0l8`<{GCqZdp5U4xHeX#_cVll(m% zUSFS0nL4Wy+qJZ@MHGinSxS&{ ze8n^6T6*>AuD1ChD+`l3;a{|Wll@$J&9OH$*t|UQ=A*1!b}~~#6jh4Q)Kkudw97{6 zd28q^2Bxt$xb}_>cDGj&p*|37AD5ud59QOg^NUEDNsUvqQ2Lsl9$&MM^Ho!BS@Sh3 zF4d~1po*?4tWxDFCz>XUAo1&t1;y1lXA%WqTHj7bwSFm__{&kO5D38^?DbWVWdYQD zRi-IIeqLYZ=s>{cX^kwH%yWIb)Km`;si&insNtHb8C*=W5#n{0z7`~X6p{zj-qDz2 z?U<10FgRAeWOZ0RI4q_q{~*O-<|8Cyz)M@q)tKGh7mEEzj4H?!n5PS;l(U zW9oXtDqB*0ZUxB~x6uAi*N<)o@jJZwa}q5NQCc7e1bu&}_#4D|b-Ryk?Y#X>T_VurH-%kO%T_0fN_zTeJS(Uvkp>nlEXAV00hH~l zC#@N-U09DsDgvDItOnTk;`>?Wgae46)Q|S=ZGSNR)>KcDV{xR8Jg3ya^1Oy z+c+#n)5~lw&cd$8$VC=6;I*ZvJI}9MYn)L+f zRNLM%9IgmLr&9naMp05c_#Qn(PhlOpUEDyZ9y{pD_NwWmi`uM30<{Mm0!Z>!Aunxi zJ=LGyFk>+TG1wbpF|=?pJsYq^sO~H-DQ*W%TTW70r`>tK(fZFvqe#NS!ua2J`oWo>b-Srs?g=ejLy}6yI z`#7X?=tl8Bt&g?IBul$N`mmLHfHZ+pM{Yp#t}1iFnXgWrcbjWLdXM2FEQO-f8(eHk z>oo&K05T{Q3UyTJ9RUu|(c*V5))L7b9(Na0O$AEB_7YY_wRdc$gDX8OBD^8UHCt0G zBBB_JHkOyrY=$+7ETXr&EW3oZ^2X#;R4m}BH2jBg6;r3o&_}LGZtb@<3{u{7kOPsb zdv*m$KNp6f%|K$Ni~$3=$8uFxPc}OnT`ZX##8KokIXo?8Vo#B-riN;om@pODLt9xb zT47FcPmF)%IU{ufnJ ztsvEHS6}LVka(BYUGAk_0nkHsqOA(Vrv`}4T7jCA(A<3{;TZvfz|TenDDK9n@{vJ9 zBB=xAP891FS26chlhR{p-n?Y;c$}6VI&Vx+f3|c zN@XMX$@61cQ_7x{r7_a$Yk_?n@yQ#m-jl?!0x;32Q&2db>eLZ{0r~XJ9CKvSu9_H~ zMkgCiDd8^iu$0u(L0Ir4U|z1Orl7sYr4*2Ufcrxoyq98oP#iU-vgj4Am#X-MLYz5b zO+^Bqi_fDccC|)Hz>0(9Y5Cb;vr`l@GfO0% zC{o0eMqNw+r)tv_#wa??Ej>0PDO8H#>fo=V7{z^M9ErtCRLsPvNf(9FZVU1Bzqek} z9lLXpB@6XUEMhQn3Dg|B6H%+n^T4M~#c^?eV-w|IF*%TqBN{@jJh+(ksbbm--GS@nGBbv^5#L}Uu$MkaDp*aH8mQB zp3~*Sty&~@HcMk~5fEA=XrvE_ngS>@OoHCI>TJ_wBLW(FS?J`d!{Xj*uxmItERm$vkp`4EaWw?Vukjr;1dQ+;I!zRIZ~C)3NU_|= z6$lzv1Q_&;V2aU!HLtH(W}{c}Wie1v)6q*b_zYrX73yZMmMVC~W>!=xV~mI@V{mO? z?Z6}x?V0T!SC00;!yTg&1YRoZGBVISnFMek)cWU-O~-K2>ao9R9_dkTBq>D^t1;0K zJWf@I8jvz_I%t)rrmd%0VX7vQmPLhNQwvn1DPv{|3&mF}q?StX0@aq?y7r^wAr7G-%Ms;I_U0UWC}!QhJT$E26Xa)asP;0mwu5t;X5n zBz_)(x3gSrR`5k?i*dO<%zBy4SiI66^X95hJb+f3LXHQoWTwX8adpW|kC0PdO zG}O5aMFk}b%)U&UQLJufc3L41lSEiKf&L-9sOszq(8zLHa%HMl}l4&lRsm3L3D2O+gv0N$oy-Ys1g{-3~o1 z)oW9c+goP{xu<;oay(WgGVGPL(#@1=Wu+0((K5k}#6+@@6joG>TEKgZcgvNqu{UEY72b6_SL&-A9f9uD*d3k=KSDlF@vGw!+0Ain?QksaBL<$!`94ImV zs`T}!9s#)0w;zwE^!Iq^YhJcvkA{&?uyx2AeLj~2kHNP*kI%QL2M)FsSK$D4#id*R z6p!^FjzRkW0I%-KwH+mz`6QBT2leOPj6PtHI&5B_H6ORGN^EWo z{{RR6C)+*|2aijYwJ2{y2fz|ruu0hEP03Xl`5Agn;{ZrSv z#Vx1BdPZ09ATTbqdV^MgWdHEBW=PS8nY*{{UQX{n^)bP)}V^fvL)E>iT06!5vbP zW{$F*-ui_-Jc>BBpU2kz#0gmtTd^yrBRq8ugAz?F(2*F(EE=MudQ!hHKQ4)-eK^F^ z=t_9u6t7Z#(vm2niDZp5k1D_s1H5cYadu&I?8d~4T}U&i)Z&%L%ly3%O9XBh!fL?L zyvRI%)&Bq&(0#hAg+yfG6C7%5lAfA5qoQi5(vhT!T93O5x>_h?C6phdl76Szk(yC0 z5CXbK`G3j(02R}4T5FAsII-e?!SeqAE`2&iWp@Mub;Q#>O-%H;#fno5l2JoW&qW$Z zBw=7OO4GvLpjm+jN%Zg*J2bF_B9!#S4Sc;mc=_~><6L(u7^oqzDruFk_0Qv! z#0m$gt|`W+%AR~{{$8@rjFO`zM-oQ#)R>AY$mgfiHF0xrVU7fhgs-cH`h&_C#x4gJ z9`7tfPyhh(raxz=%nvS@`e)bmjLqSJT{Svu{{R)`>TA#e@)x4;Um!Y*Kh~Mqsp;!- z*p#1aW|lOPOlJ4TWEm)oZtj%Q%~?ZG(KATEQ^g~ql~PBxrnQRZCs{wSAcIdKP9V_a zapC3FW`b0?UCzWPyNHG!TJ+boh^0dVLsP){5D!|MZ_THc>kaj|wtjAwY7Fkt%H?*> z;DiFCig_f)R1oO0#r{=HTFj=$P$T+~jlf%3zM|B2L@49}0Y>doaimtiF7Ka1>nUa2 z>_MLl;4*`qF1^}(i3;Nwp&oQSMyfH>$rPB1YPoS#%5peX$kQZ$b4?t+JnlY4qVmUE z6T8{umH37&1X+OgWMX3D=u)63h`Gj*{i0)tHOXp<3TMd_Xke7 z>R8oC1GFlNyOtSRo<>0Q%JMZUQi@3iIhrMUlR)xF^;FW!5`CmO3Kx(~DL0vQq-a9f zeVN0q_6C|=0vO}$;ixYM2AEeA%v<}O5#%}kyb#_N~*e*!3+VrDBzNPhcDTdSAO9FfTvXrYr{{LXN~eGa(&zF$r?Zad>+RYw zOFLtReqbB{Pcw>we2+^cX#5AQ033P{vGrM2FwwM`ii(?qd?w#f=I zwR~yqyMYI|j?X%ZgQ}vqJz%Y}AfJy%yJfakvcab0c_-O+^S9nRw}8P{FW47(GRtfz0wr zBs(nZi@8B6_+8-?tJn03{xuYJr{N7Boex!=iLT4jMMskR+8mN(w%u(ULI|SQnx>2S$XnG)mW%dI9zO$k+5w*24JS#a9ZCDjis&P+PsMhn5I%xgB{sw%>tTs2+o=y zKQY#}roOl~F6#}#Ie27ra6`heoidY3$Q+7L)C!8{q1GJphGH>S?(3SCdee{G%VHO$J9m= z3oBN(wnP^2cX&hvRfMS;Mkt^#Bme*uraEU!M+4MN8coeaD+NfAF9d`t)l-#pXUDMQOtO}T*4^viIbLna-n9dW{L$7Rl1V8QB^=Afx-L_W>%NdX}8*@?X>aB0&-re zpavrt;t$AlU3X%-=f00ozAy!#G|(!>s69?=UOYVd$wgRXndP%JLro}-p=FXu)-vUu z69kOka}W5n&(qq=X%=Z&$<%7V5=k@-!iKd2g?&11=HEnOJP3k{tpHln2T&cS?5A7* z0RI5ODf<)wftK*h^+`w_G3^7^8kL%w|*y8w6>xLEpyNK+}NA@ z54KH5uSzW(uppY?b;sJ%!=y2PXus))_n5%Rt_VMX1;_jta(VXLf`c7wb=t`5^kdKXpZKq~2nXT-{k?dA zc=gP;_OEgDwf_Lv-`%jk4-UQ7GQ^!+-~E61pL!=X>wR_aU3;z!PLpCm7U%tswF(4^ z0^x^6GRYv3hNDeK%=-0=zc%OSO@|zRPxa5WI2<}-sP5+W9?xgkZ zu$J`z+%f$ia1Zq)4hT{H!``~zT{OUR!M_@Z1O5wZ{{UZm0GxUCu%(R$SXy-^}N}{e9@IIQ8PR|MKHN?n zSa9nNwUZgO_-;qzgJb>xem&gz9{{WA#zZ0IR8vdI7 zgZv!?P|-TFvWYlgZ*gD;^*>7sdlv~53Lj32F0J^LA&otM)%!lqpQ+*TsJ|@y4L2kG zkMzIwKGDgSC(ERekjkFU1s2OgHx5l}@s$o~LDACNg8k-+-5@7CdWwxDExwNr2haN0JF~I!bn(o~B#)ZR(_yI0@&17brpC+^ zo^DV35uKAAx7s_s#ynhZo9T>tk!Nfh1J5@U$DIW;(tGF<=X0{Nl}V1*T<6a$3av$J zT9QUQjW}V${t_S6lymlXbasO?&Hc*w-H+RJv8U}v1pSBD6;;(m<0I7Khi8Vr?#M{F-|0RtMR`bY}YVydp%yvA!zlJblyXWXwy($ieIZX}YbBOZf< zVw`Y)F1L_qiy0Z17S_dxAKKJ!VZgP|v4EfWM{h^!r%rhFlzMe=NYtj|pP?VqkEgWt z9as_80^}92Kdpb*5Klkrds83wP5Je&KC+i$Eqjx~kEPr2I0TYU;CoL&L#qo+pF#8M z#F9FoFXwyOrlO0l`hK0G7@RB8Z=KTr0CvHt>oT?JkHdLm1cLOmf@Wos!Znc`*=&8E z#}Y%zvrjr!3-%8n1HZ$EOlTBSRa#~YfDZEm&>am%F7Axi9v2NM;(de~0qar;AaV1h zE74=w5aaRNKX&%)+mmtRu=Mb4OxD=M&mzOPa{F3?6Gr(}%F@bH_+>8X%}Wtb!A+0@ z_#W5U!5-@+#jFYte(ebAf6*mvMrVwEH4ra{RTLFo8iDHZJe4;zDrHa!I5b+5@n?a@ z&(Ev*{$3a?Smk_I-{M;gG|8E&nr;^W*y zeY`I)Zxe3_Dm2FlVZn?E;R2*!_JtJ$YkLTpA9}eEvOLD z)fh=5{ie)$`f>gq&i4JhO?7W<;ExvFmlXUOyz z?(V?;AKP132v^IDmu2O@h@r9n04S)1+5*-MrAnXA*YWICv+UDda+$wQ*$w{6fV;ni{WB7b-L1@n)r`eBR%cBsexdo0q&(GI| z2hXk<%GRB0nuVmT6-g~5k--|tB|SYPa71RXzwMM9pXe|2_NwXbW<>DWbO_YaqvzMB z1@toHYN4imJwL(z&rxbB>1M}HVq{q8<64Bgkr?DyBMT!mh|H)}uWS2Yq55rHWgcFC zZ8+1{tDPY##~_w1Y|hgo6E(s_B2?63QDUvepnd5c9dSqz zn&6TN0<>CUwBhH+9dA*=Bf7so^?u(!T6LD1lA{}6iw$`3KW|wy^%V11B(uP>Q!B*! zWOQVZ1N7v3qd=*qLTYsr{{R{%uOrT%rDniN_&hPh3X0c&AM75U#!m}PL}jlcj#*ZB zdir$`dE|r}qqFG?5o;Th!2J7H9D+!lW+9?l;=BjX)9oO1Xj>gmF=;(ymNnnReF-+1K=kv^KtLddy094XK zZUG*a{{Ug{*Cs5a#5}a%zsngl&-$y@qts*?a-f4=K6&|5pu>FCM@2_VD8-stWT~vj z;;JK9pZH!rw;5EizI5E8Q!PV=i(Zf%D}4vFa~N7wlS3IHQ&FVU0t)aVy)1E6B`74~ zE9vv}=~uCH84a;XwXi#avn#l%>nbT=rpV-IO-(e?G|@=XYmFK>(t))2n2-uFAfIXN zt{&6}Ae&uzrf73QX~2EGGaE`9RII)i% z#UQFFk(Qo90kg2UV_-+q-FFFOlK4nZYbY!B{#<%eOUl9^J6zD8@E?%rXErY@mYMdZ z)u^q=WH%hNyLSnVr7}m8tI5^ZM6{I?IbBHw9opPj-~DfF+}%lU6J1~xjINW!vv2?$ zl4x#Te?mlcPF@^uq2`}JwaFsEM?C#Lp6DEmb+F`hkz$NGF>-#qThcy* z>-6US{8$l^IQ8PihI*MAs$J9%t*pG0YjS_v`(Zc}^XYZ3_GJA30L|2qz#NZl$fs36 z=~(L`4_XhWseZrWN4CnEa5U?Da5~T*`SEVNrtA65-yL^TM~cSO%S*R&`Ax|s98_{a zu(n>=m1*%4WH0x1XFT$FU1J2Vr}9U+17=|b#k5Ob55QI})|3XkI*Ym5 z=0>o;h%H&r1sU(BlG80t1PbKmsvYk!+PmW~RT$m)yx(AUUfZJGS!vp@a^~|3wrXfx zR$}w5SC33I_`E(B2TJ;yD5Yc|sr3WwO>1l-u}`NX^$h{4(D2C4c+>3Y2|e+<-dfvp zLhS9iOf*b(rtV?Cga4`ZNs*le0*SzlD`qR934}bEx?o z4_!TI?hj`g*xN-bERe{+78=%9G>kFOfCC(0sGtO#kR-22-QR`BWAh(nE9NpdS{X4O zT&!zH4oQtgELpwTfTYJx(ak#I+NKJ6i5MF^7i~I%`*LNul|xE&kZ3AbQ3kBQ1ClTU zP#Srfj-J{s99XQXv8C+Q!C4g*lnBw8vZ3`e6dJM!U?}woYWzfPw<68qYwK~f^_3?C z)p6t<+8V=8LtRlr1yrBE9UWFDCel}=f48PR2KZx9pa-YRcmfh9pYL>glK&Hj$VqT4Sk*&=vNHE=-n$qe*olM2#I8f>aVK!0Kh8 z90AGn>1n-fw{!8A#PFgJ$oP8%pugy?qY4xofCs;>V;= z5j3@R!!skjw)pcXvZ|K$T#N_N;>+?9Vu#jUe=?jsH8a*kt(Sl zB=ql5H-e!ecdvGsBw#JYwE!)sF?k4r?tPjDNUSVv+GS^{A)1X*T56LeP;sdvJUUml zN%b~SZWkT*ce1Eq83h|aAPT76$}OZPb_M5dC8p=6OIjn~JbYJ)IRt}ZO30B^$=H#0!j z7g6_K5~4{JPKer|XVrsn^c58H>DyIVRw#h*?20y++M3-+1QD8rrD{0Tk4~H^X|c&g z=c{m(!YORD)|RqrT6rC3O7j|*q^!$UqAVrtJ>s@$O!n5ibZq!y_G??mW$r2J@O?5tTntBRpqNbvrXUNkJw1zD8 zT||+`1XNQ`AKBB;!!C&*#YmvCf=;2pu=eGxwD$IKT#~{g6(=T&5eteS2jM&`>S#r4 z*QK60W|A0$QXOR5qJl|vQ{pp`P%7lm;8L~8>Ee3WYu=9`6)dq(Q`XM3luc8rc&J(! z(;tqer!VA=ns{Lbq18?NoDMyjM=I`7MJ1dlY$B10g1|BW07Q%&_kawP709hA(QH=I z+ANlGI?d_?&sGEeLgjxYuXt>7=K| zRJc~HrJ|BVP}grBnp5OlT%OzYCxw-A@C!aEiWT7Mt@Yf z?K)H>YQ&l|89xu10MmzDcN2dMHFOv%n4*}?CPJ^xPp+iJM+Sl`6~jmS^)ow&)Djoz za6OmrHfGOVjkBW6wJc~`;S{ZW!D33&%ZE;FA#YhO_XK8u4-P)y2YXa$q2du$NhX!+ zaF2)>obJ=<4~@7iljErN_G_*%85uH}jBO@Ls$IdBr+kG@IR5|)tENgdT6%(h;-E^h zAmN86+`-GxNnx~Y^RXp@GPuYgX+u$(R9C2d)hD>QwU1AMBde<|3LfgwNb(*>%jZMU znmActpKjIch^k$4+q)-`&c&HEs&e^RA(CiPmZ_RrjC~zBrWQjPh(>Sp=h_Y6Lu@0O z*nXjyc8s+%zzqJu(f;28Txqq)0gWms7=y%DBp=!Q`ndl9<(t*DdEVNh+&i9@I)Sq` zyj!0tw6!f=Lyg^asIWnbq^kRLNnwFOb+dBHc;nn9&y#%(oR;z7u2>QI8spZVR{Lo=wq!!T`E`d^7q)@Uru?w}mbdix>eS<;gRVkr+esvS2MSO4eLp_^ zUcJ_3l!iZ1VfD8hj()%E`)ubO9RrTI`7Yy6tJC=8eLjZY>w9cQ0R$elSPnco&X4_| zKqCJDk;nUfIUe1i>Yglr#J{w4&N)hu%513G?QKo16uN0pH8tG_1M%*Tfrdv_GN>S_ z1Xnyg4^%V!*E*H(U6Hfaey3lS6WNNh4H41KyWu%y@uh)Wpp4M4h zcrJ|irl3!tpruci4Kv1_2d^z-g6>(t081DjDvI#?YhPd6njGE<44EkDY2%;8S3xR8 zUkuSItvuSiQN)q4JV*#XOE(_GP@_v}9Bc_z)JdVGYs8)dqA4Ws={nH5_L1f*#-oq> zJbgL^-yJ=5WoqIVMqddMQzk;aoXss1O0&xpVHV38RVrD()e=9$+KXkDa?z^=i3j*P zO)N{{_{wrcPXkUqnKUQm#FI{#=x0sAM~SGcqGVA`G1?P z)`GffxGIp(LFLHTSIt`zM;vQWK@z0}PGX(^0D1ADUC~y+i4W)7cK}wff}@@xdVo`1xL`o%k8H$Dawr)? zPxXJR%daa(8`4kgy!ddgPyATwr~d$&7sR@r*xD0(f$QzDjiTOLCm$_mXwu`Rg{R!O z2qK0WT-+uJ(;pmI8hFA-PKs)#X_<80ZS1FV+n)7gXzSyHP&ihVs`~koK7Vgp+OHwl zZ(3(%U8+{@&J~%JRrt^h1#^s0)P)1Bb|?)}Q&!U}%N11&zkFhq;er7Qqf*wzR3v4d zS*P+x62dtkup-y?9I$C3f>d7HxL8T0sGzF$vXDq-X4C*c38ha8(0gtq0&L=+aEnFVw!eoCdRI*VrSEQE@`1;U++&1VTVygw=wnq3H$8b2GXS7VzNH9xOHZRFhL6 zUfpC-OArXHLv~I?5!1;WEU?OqCY5IrQb|?A8DWOsvnxc(@-6PAz_7QpJC)U6RvIS< zA-hTbAeF)3TjpqTGOETmEaA;vNT4f53*-xVih>mRfm)jM+mCqu@*?WeX(!X;@~nWV z7HIfmb|dNd_M2rfKIDRGmCuoCiXSYK`#ic?cCYlz6oFql(x0F0>E#h6sMRuKDcD(L z6F;veTiN;ey~Eq)gC%j$!{X1Y7Ip2gD(t{LWRf}73jFL zBvg;bb>cKh8#O3=q%`A!#<=NG961{3%@#1pSy53%n53GY7nMxts-?%Uk~A2+pZP^3 z5X3b^>#9aUsYSu|e2sUwG_hKJOoic*X>WKYMgq7H-O@!*;a`rQGto22VQk{+@Cc$= zqF~a;;At`dKeUKZn3G4X7N&=x_u*{SG~X${D%IjDsj0Gy*_e763uUH~Xs?#iQm&d< zfX8csb_p6?BploleXjQUbc>t$dg?M2;xk6z$jsFU{j9A`1e(zlQ-wUbBj?Cvx#gYi z*oP6342XO%i-wGnt`F)C-sWl%!h}<;jebP+c&FIEDRRA&i?7P;-PN4i`^Ty!EYoE$ z8UFwiVfQ5sBTF=okHn>Haed5n3ZiOym$y9o$*tDGAhEki&xyAgzM()h8s-4$s615U ziuTm%?ZCyWrnt1R6Wgg-qnJ7omJH4{76ct21^|(rBT~`mde&2PV7Asjalw_S!bg+C zR&FJqC6A!angtS7*DW1ZE>}%Q6(tQ*I-}SIK&1Lj{o|(Tv~4k6i;IX^tS&B4Nk(7* zl0}KeI1m|t_2Je=Y#Xlgb+j7P#6zMsip{Sj! z;oKRVjdYnTmP#s(VI_u-F^i|Gqo6etc^EXJ6plBMw6j8W3$2g3?lw15+fQw~N^Vy2 zY%6atP@! zRZSHRGOHn!e3ThEjt-}8RMRLFH6s~Fw6&7QQZ+l&M`O1(>A6WE zyLkg!NR%ljhou>jg>`6b9MY5=Yths*z1{L!*a#ZMe08{1J?r8=v;}wtkW|$1G#SrH z%CEiqDtbw3>MChzAMWu|BxUG=WG9vCEYD*D%`_)i{JL2FpJdk-_X6D_l2@4!i6L+* zl$D8Ke}$Qca6V(Bh(4FCy;2A6GyCS0^oc>LC49eIQ7DeRLF`cSp>03Q!uA* z9BmRru}JS6@)g#{lCg`DL9itI+z)pr_9a6hZqMNW=8a!dP(FQH;KGbd;P`A5YRRc2 zfC`Gxda=i;$5W_L9z#<;s)?tPu1g1z9IuU-%(DS>I=Ns)$p_l|Dm2C98suWk2(JUc zgT!Ov`Pb8=mrTmO3{*(eAm9kCcvH{iPPV)M0EC10jNNto&^Iqu)Z~O1ACNr(ymt7A z5@|A9w_w%b_r3`=J(x=d9+M`Ku@`nM1^)mA+{BFb(iKuuwSx+k#t8@PYF4?YN_Li1 zm%@4}D#J;ptdK{`@Ub9p)HrqY&5$1U)M-$@f}gXj zX3U`R!6%=`)9d~o)}aTaS3$$8s5lkt42$Xow2`H6X1V8(02ln9d#D{S5v~}qBUk#k zeVu!dZEim|6 zzMXU!U!G6n>2dzT{{YwBPEI<01L4Iar@eqbKA4i~K;>4NYw6T? zeg&<~kJk43@&35>>Q=cPT_)md*8?rb)C+TOrT+k@)Sqoso~zagBqS2V5%~d!{6Q!4 z?`jUJp01#SoOKPH{Y8iR=w>k~*xxd-}O z{{X%|_ELt6kGmk@j`r!>)@RHdzTDk@aK# zzxDTTx2^OaL8{6HnMnZt(|rm0+@3BEv%;W)IxmiS-GBqM9Mh*Hkd6po0kF5!o7;i@ z9@#N~F;aS54G&I`859$6Q&JnZHUQuH`%5}&T^w7c;%N%Dut3$+(K_?V{=d)wKgQo* zXxiK;$RnpH4*|e+nJR(5KTCc{`rqquZ*?%Z9e|K{^x1S%rnx;y6$x)sF#ei;pYMNP zZ5V2CPL@IdU(c+|Qh-|5{{Vv?f7scqJ+{y_f6dpO^tCkC^Xn?rLt)DU`2es0{{XRX zZTKx(4n0{~G6hW!r(6uNxjIV@PbB{UiTeKlf%fNy;Be~xB6{`6$r}Pnn-O5YkVyQ0 zkH2Vf#C4{0Wgu}N^%0bt+w_tCu@*dVc_ZDF(Z@)Fm1;H*P~?yL1;6xfrzYHgukC8k z5vu_8fAIBMUDww0f>@Eul}>pG>m{-0C+zqGRqgZBRbldmzwI+;#A zY5}t`dmqk+jiV%ee=Tc$dG^DXSe&T%g+D(b{Krnh2>=cy#Xfy};=kcyyMk=T^D5}Q zl(Qp6xBfEhRalivG!y4HhVPnBFaX_}IO8C5=_A~Wc_eWAUCS1TX*B!32~_D>HV?%A0FnKLktros@9a&J*R=I1 z5rLz}b@s}OCtXbeeI=Faw_^tbjYInTf_2G1KFhQJgI#0`J z<7S#br&N+^9z^g2pU52X$6G=)p+kVD>&@+OFZs2_{fp5{P!2sA8IaVHDtg9h0@#Zl zdFKBB>?}F<@PfX7%dH1W&{Dl&697qj{;!}0{{UP5Kc~ACbp=x@da>;^Y#P(7khpmf zNd-)bG?B@{mR43BrA>ay9=%bD{52K(E1tB-{%9GU$=rX;hkEV& zHFZeYdm9T^h3u-dNz51s=r-0xG0;%O9;l|Po}PGQZy@w52jh=pP3qXM?#-^))hjVRtH;j1Sm@vF-KCiC4xH;fkF#i5 zbKR*n&cNiP!&jv=J8uC+UyYS&>K%vqK%>ABFpmEKxiMkQt?WFU#x~APxZSPe2LAxV z5W?7~Sx_N$`4LJSaOnEhCuq_)V<7W2_sH1hud4tm;~XYG7e#n{_hWZ_gpi`tkB zHrvK0p;%I3XsPLAX+nUaqIlrfC*YR;xAzroJ9=%laP8v)H9C*Yj;f!TB$G}R$4A7` zMx3x5e9i~?zi&wm!?{{9T!F&hD;iuk`IzjcIGd6BtVsU=U)b+&+SR5Q?qmdgo}=aa zIwPL+$PFn`kDuB8uiMdo-kZ`Dpxu;k%FiZNg{O?HmJd~kjYokb1cr8Xzt@ZV9ql_} z3F5e6-xO^fK2FTv^Y=wkyo!=k3UK>zN_qMG#(cUf-G$rIjp<9c={!C`v#PL*41w9$ zO-ixPJY<`BqL2`z+xq_itToy8Efx`NsDDZepA-GHcz>UwY3{rke0hxuK&l3ELW++( z{(hOKMLwr+q?jeWY5pTomUNz!vX3ZRunY~8n{)oh`gT(=BVd76q-hJMUfp!Xw`K?H3qo+;{LmI$dEQ%N{knWT-_t6Rez^l|_m_auTF zlcaxUYR}~P$nxXUlFJmRVMYWpk>{G@$Z-DvReB`fBIs!9W5Q&sAxUZI>owI1ch?G_ zKXVWHw$!GbBhuIUdku3Kg70T&!va*)rR-B2nd#09AZ)I|VwqBie}-7fzG@ zh5_Tp{f@2|!*YxLm>52%%;f(7sDC8J6|2oILWSNRy4PC`M0x}fyhMZckSv4uWoVkp zZ*520CDEiF5!Ed)2NUbYoh7=JmM;z(vp4%3e%jKXpAM$s=Zg)EqubC_OIc4!vQx_0 z8i>wDpVVeRi|X>qhHV;2;3%>B`@Ehdv+1D|Hc0s&_^z)V!78fX9WoCQkMPv-^FCc+ zeC+U`mZpY5EM?+}A%8fPbuflPKDzu?)Tfm^TGsa5#R~}6ET0hc&2#x@{YR_GrF75* zkkr@L=fjA`e$JCyg1-fk$K>dejY$=BOtR>LtiO&VjgYIu69w62${7ZsFR3pUR&qet$lwu}c*eNrc4b{U|4g`9Cj1)AkQ?P|&i} zWMveRQdd?}P4|HoqGXAzCXYye*l-Q6YySXGbe>R`1;P+`1M~g7E7E|b2f#iEImQ6v zQ}%qk_;lB~=Yqd=?i?rCQ$|p$BSidbH2getQ zmN3Iazh@Lhxcw&A=h{1$7jmBzRTho@+Oz}YXi29WbY-=8lidkQ(j@b)K3-Y=eQbR# zjIKbklc`03U>F9{;1U5s+HLp%dvC;MP|b&?N1@@+mT3W$m7yQ(b&o(ioj>eHKkr`l z8yV_>ho2s%Mx#RV0Q!Hi`q&OXueMx(Nj+4@BO0hQJxf@~Z9rW}9C3f3=EIMB#~&`W z;LH3ctW26*f%KE;ex9$O{+42Y+xyWp;m5CdQjC>2>O8vt06<};+}xk2=kxxz`+sgI z)O8*`c?C|cqlfXIr$0;Bk@(>8anH9jm%!uGj4CPAn5Vtfhzi2rU(N6CjT0!X4LWI( zpACA=nu!L54N3VNk;$+3k!lR{<$CHZ+a`I3&W+B@}eOOM<4Tb zB^ho_!(Z{m$J6kA?uVrxQ4jHdhph3;f=KlX>3Bu?8i0Oz{{URu{fD-lfKn@-uCk*r zRXxYApTF~g&1W)SF+2K$CAKlS+@)^m&tY+|L7Jk%ONz(faJ_% zr;mj&cqj0~9`t23QOAg<4j`DvEzMijf1mM(_phg5Zs~!wnO9~P-X#j)L zc73gs**LxFRf+!URb&4E(bjH)qQ0v;x3bkcqi=3}wi3FEp(xkxXODAjla!`44MaS& z@&c`GE$taGB&JyiDI79X8t@qfvG{*F*8t*&Fy0-_qG5^a8k$&hIk|TBdV}qVXupZcil+OXJz|zk zWNP3!Z3Emw*K<0x$%x4gs;_G@f>a8O1LiAQk}1*N;knvc-9rq&qqd~06so!ylNzy$ zSs)z9NFt;Wr0UH&Rc0~R%;iE>VI|x640d-tkJ@uoQ_YmB#nIF@GEDw@yB#E`(?}m3 z;)uCZFYjouumNcT<^^??JD4kcs->ILEEIr81N_LWP5qQ(_lnIk#FEV#kQJCDk--wU zC73EZi8PXGJAfoNNhq=Sx-F_}=x|vIT1~;7tCtOu6-32K)N=m-52?pc%_7XoA{EZ^ zxmUU)s@Rg=*ii+ox(&8HG@MGVID%NArE7`_(p?s#QJi3R8V1ru6q*l89+W=dmwRntibEUTh;5ZBov}Wh zXF;!nsSC4@^gm9RpB8cd0NxKhL)KDasj1_qWk5vjm8WR&jZ(pZfuf3H#xPq;0>6)C zPiod8@ELq)Vu3V{H4>ok%U}^e{09n(bZ##i>**CE@UCW&wS$7b6IM_$nw6j?l^N>= z9Xi2PB!ap+SZOhnEK(O?D7Os$!XLgA`-^t0MlPR;dg%ElE5N4^E!( zSl!5?g?tQ1xu9d%3h~vafE<2U9ZX6}sM>hZG|=R;bkNCN33;iios4w{8AmaXM6%N~ zpvk88;{00bBel4Vrc@zqr@W6-iV)?yyfmdrApAfI06twNY2bBNV_T?gn1nP|QI+u> zYfu;t+Wh?Zaz?A3EXuff(<4)lr=AC}o}(Zoyb!>}TF}5fPQH`Ek9v+W;_)su$S0a4 zC^(q|15Y3jElK(5@~>N^tTNj-!eNe9RtE}&NG#tnX-+j7snVjhEY($1J91ijd{2*b z9UgvnbtWdsnVSUO026Nll)2ce{!3g^8V_&@a>>Wx%>|WKzSNP zU1hwA0IQ>hl1?$v6|3#AK-npgWI@W%oP9V_UkprWgz#MkAE z(rv8~)G8sUO04cqrM}{(TE>q4IjY)5Alxd(1@G)hZE+LZ%(uAeZ7_6`_~J%DIsd(o!mIgeHtuA zN34pXl~cg(gH`4GPtr-TmdEOS?JZ^AH;>(N$Ppeu6r9yG)SoI>O;7r69$jB?y@z4h zB)g0ebsf7=L8T-zQFMdnsz3ptuAa8t=>5yQHaAst?^a~?oV%ud#f`_{bGbY&dmoUG zVePr7CCp)}_afKIYH@V`0K=pd(b30g(S^RY23oq3ZNAnEJ9RR;8aNc~UJThI1CA@@ zLC2_rWm|}?qKZIF+76>yk*L*jxX3&(G4=v$y2mYBzp{8O<3g0pg~#M_n4AFeNs7tN z_)LvPCaBlqrLbZtMd6V_5~E)K0MP`IEYf(1nIoxB=^A-(@~@7^ZS+3vTjM^U*bK5n8;<;RRH*~)YAR7E|Hr;-A1+}{6Y7PT=jZx z_v2=!uv_r-)Oh~S^?c{On%+B2onu@x(9_S#yg$|RJsn>!7Ut!6{{UQ(^#1@4VFOSq zdQ(oZOH_%cQ`p+pQLB-`2kUDeb_z)9uG%SIKBF~Ylb(3u{0sj8kI?@B#C!2W>($~O zASZ@;#?=7&Y)L;)RlnEz0q?;Fok{7@7_LuP8l^zc!NvaoDnTD#s3pDKVLIv45vi;2*f|<;5>JZKgs}g-bl0BK) z%XGH});29{ryMwchy7eS4sLFSSlq6bD0O2b*NuGoE%U=ox8|cA z_f10-QNdc076FPGlUs9dPqUFDHQtDq^gJi6KsR9E@CUU~cuxQYhiNqb0D3(o9y~Lc zU0GN^;>|0NK_9Z8Z&;C;anj`ICmJDEqo;O_D`uXanxKiX^@R=NdURVyBO8&;{ksh9 z9ST$fmiZqs`+wN!iCbH|jf#{09;~?8Z2%fGm5LEqEw^t)YQ*3 zYO=mQSsGSa8mVQK-JAiW`cKf_HSUcVfLXvCKF=?=r=<%Mh+c}$Kni&0%k!cAo?Qt2 ze@8SMjz7MlO1ymxP+~H4HL=k}Lz#wZiR(nhhD4R8C<=n4SnXiURf91Qtq z2Zm|Zn%*?8ix_l1RR=y;so-dTF14!uXCDf3zZg4RyBlYal#0$nsR-m0>bM@YG@*jO=4&ijauf zPgPv?TI7+mDwtGU5ygvEO>EO`Oad}iNGft`q^^E4MOvfb2AJqapsZ^K;!7}aR!}sG z<%MbRg`%jbqZ$KT^xIKUNiUN{1eEhL#o~=7W`Y=%bh3!#QzN^O4x-=Jk7e@DZspH{ zQOO!baG-I=nK=Id4@)A3c<35X@qlVb8kp9g)L;SWPO{KN8&!Q{V8Y7N6A)InKcwE{ z@%??7Y-tPMfZ9krH4*?P?CO_}%LXfsG|hTbP{#2%2~e>GYOsB1-}&OQdBhojp@MFpjXz1qC2S;M5`fULey!Av8arP0Mj17 zXRlAu)l<(=K^0QPRTU0qf_E7iMpBldpDO~#HWLi?4lhmA1iE7XiK&UKurHbBGfV6VSZy+8Th@3QLqvA4Kf&jx17d03s zr;e-3VYXLq?0mN8qJgj*TePrM*~%K&>*1t>8B3Lj&f=0O>Gv8Mc%v+~lHjU_x%#8! zo0xW9XtbX2=&-Zi14wDv8WI#ZQVh5!(S-owM@@4)6YqSRc@2{NMa|yNBA^VU%Ec;B zx{(ikX@a~-QU?v=H@+tW+FfnEA)2PU7qs*Es$7LeVwW4`o*aF3B|SlC7O5nSYX04# zsbDQ|!q+z*^EY#X8=bhLH-!XrnE6&L_lkZJ0i|>5I>nhHj{4r}RqnHOE2&2vKv6|S zNn!H*`qNwFZVwAV*m;~j$IMmdcAa%bQYH5tl-4g*C(MOrE6tijjJf?4xe+)Kc70;WKWiB^&` zAl5vD5zU9Pn0o5lB?eBdtCncw(yvg-QBncFsw>*VpJiSZ{F`Kvi@05E z;|$R)a~riw0zlQ0yem)7Dq}VaxOl=DR%@vnxvPhXG!R8-wN=NHan3qtQi&9BOrjc^ zYNvN*y|m0J^cNt8)1?ms{wLZHvB4W!-6w^66AIMv)j|oUky0`8@;w-k%_B=0Eepl~ zA2F)5{k=HSnCNPe?C1qFyt$#3jwm;;X+f+RZ{L?-Kb{<$hI}m&0Z*1(fbz93vMNy3Gn5w$? z)Ga^_42Fhn$Q{)1eIx06Ik|~0Hq^9KWq%BS#85cm2s{b(9)4XWvyo)oj;R%bxH>@u zp`ipYs30&szEv6P>|b7jI*D$1*6mJ z2bQt=@P41raqV0x!zb6KC7LY-YnmRgAHhFC&--qD*_4+D@bp@&Q0iZct}QqPzJ~U& zH|PChZ^yfU383TChULfhlx6fFf19ss`l~I89+Q8e{=9MrzZE`wI&m)5Y62)?F;DXK zh%pRCut~T0{V)A_zr70ZUXz8IMl4BTkISyhHU9un{{UDUf4mQMVAan`;dO;{$Y^WV zMolcF@<8PO08U9C?ZNlqP;1twmN^gvH8uYLKT)Nd>IV#dr~WDJ_|-|&eEMQEz$dIi zdjKu;7W#ir`3v32p~nudpd9tlnMgLjAlrfU{{V08p&RSdPT|vG2t7x62vTo>nv>_&FD;mHar8VN^}oaEZ+j>Y$JHXZjcY-x{a!1{Zl z#~@HBde~MNr(RaSBH;f3kJsMF@;z&$T1pUGQd|($1YeFv*N#EkK^4WLVGeR<~q^2g?!KKJxof31BX-1xIf@O1B;JzD!^%{Pa~|0 zt$q+`*A=P(+te+j+UM)^{-fJ+Mrbt*SN&W%+%rcZAr5KRVy-p}LyLj<=KlceSbjbE z6UjzD)$7)TWVv&m6#oD(`j6$-5tCKp$bYZr{5T&=pKdj}jufv<8Kj8maZ-H<>Rffq z+=u#$e_x>g0D1a*Y}Q|XQC4G zhvVH@3W}b!LOAg2J^2Ihe!rVr{bSG9+Ibb4lu7}SNUVFmyi4^BY8IQ{&*doiD@2qHV(__9itj7 zjyzGO%ExX=qDv3jZ!UF>!1|l}9CHgKTURD+(dw%0FCz~jCC24_rk^6K6-fIJ4w&4f zU)}qh(i#O~l@zD~B&Ym%ntb?mynpf&+jyO|{HyvOaAAJwq3u1<*xi#eWEp0fMy=fy zcuGPgDy-;eHvB;~3yYQfdxSYgBXzuP_p*}Cn}>s6L1}Frxm7-DvZK(0pNL@ew#`kh z!)X@-;fntNGsn}1`MS41Ie&) z!=*QTeV>oZ@2GHi#M>KhADG1LO}$us}plmgO7)rtd-)J+Vd%}LZMJk<0ww}Ik?R!t&T6*(My$^EqQ>tIaHL(x#nE4z~# z(?Y5j)F!G5S-3Ykobpc~eSNcM40FtAx>TpAHKql9F^;J`fgpBD>QhhU<>k>v>4Rqp=)OXZ(GJajFucei1!20>z(Tg5}WDm?0pR2mGdCQ__|L#S}0aC(7 z0T-Vbu)LD~N7vqk-_!@x2Y4WTzduj)9+^^-r3ot?IQfiLx#N$sC)c8}@(U{s2G-Y2 z1Q9H44N-szOcfrrhEF+5vqST&AY1Pz+Z(*1yZ8NnlmHSlyTb zQ(rt&{aBOmsm^!%T3>~Acp zBV`KZu*37g^8@_7D-2cxv9{`l`HB!eEkpkI)PV` z`>d5cL==q_4ANwtXQqTlQ&3f7h?z8rA@Mr%8RU+A?bV(#gsFP*CnNn{NA`L2#BE7w zL&NMD;h$gi9+K#5rT!yS5~3Wubu-9TNu(65R*bdKS^HYfyaU^pI6>SkK z{%AFsg{|!s-5^gMg_W~HDgZw(mru?MQlsJ=ag2En^?rRA%0`Bv zqR{^Ut3NOB^!vK^1p-YF$5T^N=OtSDDmwB$;+iOsfhL&^-V_ONE`EpIW|fSQwDhP1 zk3TGZpXBPXHMkl^B;o}QPnjp|;45B(?1gj!P-LcxY>i!QJS`2H^>q=oJ+f)2Fcd?Z zzaag89?(eU<5W^t#C#~@TJYh4=hHJzBmyE%wrUJ9!{ zYB51Wf@mxA=~U1#DGZr#FaaPV}BaqygMo?zT zXDcLE$v&ZW@OhQ=0&ExPIUd}Bt?l9(7fEc9TIcQPPi11zMcO_tCcJ+yl_~yyj58*a zr9#+V&3kIQ7SwO~=HKi+?^-u;$H)$!U}M9I9=cG(UrT;}2k=P#p4)0_!N*M!39nhz zJtLESc03>UJpB*)-r0WY)1x?#>95(;(9L1$Z=m{lj}~ftixUSx%%JpdvVA5-rQ7Ef=M4`I&93L^q-5Y z?NUPU#C|#d0C=(b{{Y2(x8P@oO-jM3;q}QYEWDfl0F8mS;>YRFy%-7d>v6h;{Yuuo zWJ9PM{4 zoD$qH*BZ&eO>0)5T_ZI({JjTM0or*iyp-`nkFCVVwy3i^b9angK0g^-PgS|F-{n;^ zO-WU_lNvKv3{Em?TF0lP^HiA@MhuhQGhL_Zm$LUt!}izDh5_P#)#O4~?+R*`$U3Tn zO+!JcMy?owN{p2s7sJ7c0B@UVQtpk*k*37%I{mnt5*mG`*#S)3hOc+j?L^9DausbM z`$`%Jq!rHtaDoB(vG#J;GerI}nAt&~3c#~ekTJ*1aiAHg6zGsc1h5NxeMO$WDI$u4 zv}DxkC4np#TWO(C)#=A(V{to2chOR1HtPyX{oU7bV=>#uYSCtE-yKu6n|9XGQW5sa z7|Z4IP@#2W=77dn=ukb{8>wJso%Ra*RRMe#YRN=$qkX|XCN zjw#?YPcw^^kIF-EP2H9mBA3R7hsBr1kwBuRtwX|7_=j*f8fv4XJ-cvsam$98l7MRt$@i``FgxuSp1UGP|@V}{ugW2Q{W|nO4!o386I+cbhBZSt*Pp< zk=MLaRmmjL3YOPn`iHdBNFiA#jv#Dev@}&T)S8GoPmwevn%AZ+ZEu$LDCf9k-0m;b z%4i5z@b!Tu1sau9M53qw8V>G*TG%M5q07}rQ%zrp#pN+`V~WIyPm#;zaH6ckRZTmY zB%`5l9RY#af}6w%ex z1u@Lupa5-QVwQBbo--EU(rCDiFDGhMv)Y#6VSHgX21 zRy>}4mt9IOuPyH#CGc+LVo(b9LqLjDRgEwYtvGaLXrdc=tP$e+%UHs*rfPvJgl85+v3i?E9spuoiQ_o7s%Zs9-maxW^NJ*%kzOl*{41Y_4eW-w=*toon zb*gxpg)17RN`en@kk+Tyq|R=Q-EAZy1eC7^|7l0^)Dwr7%0N#K+0qStb@j(c%>B$IDNUl5h9lr`2s15qW2qj0G6 zr$=+z&EZKT3I)!hKn9xFP#`4YfDHN$rQ@Zjf++-bu9Cv;_~>StrASt>3e;3m)5Ogk zHb=s#b{yWo*n#av-l+kSOIK*_Sd$53uS&IQbS-qrpnz+@nqZ!py-1~H4;^A}?FbYk zsT2%OS~}MrgVU!u7N>56FHurs$Fx-{(3*LYEY?M$Z?~RsStkDgaj}-VgQ2+KgY9IG zKEf78nWwUhYbO|q%*G|`k@C3P^Ev1Y-dpzf(O zARkVe++~gL1kgE>%`N6G;Of&F#uG$zH1Q;A{PFW0Dk0&*mx%z>&T)fA{ytMI)q-&@;xcT7q zt9wW;Hw$8(8m8W?6-`~^l4Yi;82n5S&;_r^jPzhW7i?_S{rMx;_{=RW4o;&VyRccA zadowolxrm(CbpOO#1YL$q{SqWO2kM#41Z0>9^K`5B){L5SX?aXg9j8e0jLfuQ(Evp z&!pVbA^q1CylJjka4StM-K{kfno(&^BhRg?=ysP_uh{! z4Q69EMzr%)P-RY7XIAQ5gQC6ir zM+4MnZ7sUFqUmBq6mYIt@yC(^EX1>uA1!#;nXpId=+ z-ruO&T}RiOa(EgVjBeD%!BC}`g_=}asZOKANvdVP`u_mo?-O@f1;+JpI<}?OX^L0N zsqIl?vWNgYT{Pj3D*ph**F6XgCX@cKBL4v6aBaZ++uA3o0Ci9#{6J8inq;WCF8u~wOWB*AL<=pYMYHgt~vU1&Hn(P`j7Vh-!|)7uO78= zAQ5UOG$XFoq>CS|!y60S0rmce-Mj>*Mtx|E@Su`S6Qn{o8x>wk55qHtACNT;9qx_yy?l14g^x7MT^ zTK@o_uLs&DjDc3+)nHO32krj=2U8eLokl#`kk9)D>A$Yk_gcosPRpvD;n z2|1;HUZ3i(TG(curd-Yjlv9M7rwLz4QfTH!G=ZZ>mZU~a>b-6bmAL?4*_={nw~eid zVIU2fgF}znDZ~676G-hj6I+E^;(~*Pe=7NKsp%<;&SWUoT57z66*1COQ=C%GMWqs= zh1#BKffL!=$r9a{o9e&k*@RMsG?Km_{8y(%!Q9EBZ|#K(QlDV*`#N&3&rs6R)6-K` z&y8%{v-u#Pk3y)OO-4!zx>g#+M5x!MBlHJb{YSG#xL6|*ved~!v=zlMT5vz$;f|6? z{h=d)C!~a#h%0L`*eb~Lc>3Ci^7J@Q^2D9;509dbrWCKJK3G4A&Z=&jwJ99?+jx>c zg>S2e~y-^!giE5kDY z#j9F_<_V|Dl>0pRbhp}2X4<|?4SgGABJgRh-BDCE6;)PF;-A3rRFLqrbgXRg4Ik?d zYNYRY!B7;}QO2NXNT->ppvT&Hbm~Nw@&{Jd)HtUceZHUS^5|cw*d2e_8&7d`Z)RYs zH@45Lj*W6K<)oN>+E)2ZBrw-TJjj%iT%9Z|;aL4WnA#|~1_^?aRPmt%3{r>ApSP`C zTgP?>iXJ%?!z&>*)TX1kasWB4c+;&!znL$@U8C^}J$z&_e0=m%A0v%IFqgStOnbZS_AqV*A!7!r(+5dvfIvJ~2EJeqOmr#P zcOAlLWVX5qG?3}77;DhMsLZs@N)QGK^T;IE?Nl?hL!(whQYnR=rCn6KP!y+(ERUqj zLMrLC$-f_;Wzt&DB%m{^MuMfP0iYm#r0}PyJsm?VLJ-0>Li`kig4JVCD^EK5e$KPd zQ;2GsD#$7Wt%|}IOUhg;A~0@L6*vB*9zC9I7LRQ|gEFvSbpfWOt4w3|@$>1Mxr~qp zwsg{Xn&48Po}Wb$y*Hg>qw$km<$Ux=M3B=f6%o{=HCkg;x29Lrwo9%oqc4b-j`9VIs4bfFC4MTm3XQwojj34Qxd$5Lr+&C zzwud(d~+*?1QJR5k4?Rz<_kz;-0pPnn%!hdEi#}nuCiD)MnLk(>fF6`B)dF1)T>83 z#K4s_8rcCJ5YR;^MkqKOgVyOk9=lGDe|%-?oSDeB+)T$%;3#q#Iw>nEDe-l%U?HWa z%RvQdv{j}fL)J0a z_QD8DN!16QQG(=DkHbPMTKS%ekMj)p=r`ZS?xWvSdtVv9x8~W46+ybUZq3Ex_T-iF zX4+hSLvh1~rGge(e1f7G#7bg{RxaG%*ms?F0lQkk5DPWLEUab3PSQ{zlqtvoSf__t z_iFqjrEzZ8`#tP8R`U2ZuC3#C60b!pnvitpYr>tD>PUy3`7S zNT5H9Jb3jsY#aPndsFT<@WymW;ygjS8(M{b56OvEuZD0O5OO+3@N6sa`NP^#e31qlj%~p_v%`PNkdz^)&`I3=MpMJSa=n^6HjV%IKhBq+PI%C8x#8kDRQ>1Xx$kb(KMq()?0ITrS8Bx~K6mczq9m0_sRf=ORR96-+P#EO19t8IF_Qv?X-dG=!{{R|#AHTNN<=eZmi?w>MWp5h1?%R2n zZ_k{`ZQ5zG)O12yS5QeonrWeuDMHB!h^v5C+-oc*8>WaW2!k3_eiOj`hPXfF=vj94 z@Fh?~NTUQ0Yf7I=XV=p`4lODvKC9eX{{U0|Jbi9Gz0xewzFlH6D;^IPHXrMQ??$!x zbzMV;QDk7;s}2SJwzvn9Kd2Y?wZYFl###Qj=r(JbeYemimwNz1hy8PPE1$ z@MH4pgpz;;gLBCQanBaHHn;eD^ka>Bv~vZmDnFO_Y5c3!MW{dlEoZffV)8R zV=QQNdG(La^!+^B`u=~|+ui&(^y^+S_2V*-R1td-Yk!CO_r3kP6yfvYS3hU?I-!zE zejoLIePH(CY-fi|mtrVRI_mc4{eSn7Z}^{eGL1A|JtohHSa9ow)DP-Oy}qNL_m6s4 zB+&Ho9Y%)(tVQm5JP-CC@;m#v2B3g?*`;uLhbbiRZF`%NKiFFS%p+jy_H>fsSB=0! zigk!cL1jOSeJpq*^KZ|))6=U(bh;}s@2{s_hf*(b{=|TN>YXcBRvL#6xhsFEApZbc zbMA&UCZuPr(N9PTD5XtIbzG?gt<8nGBaf&bpJrjeH5IQ+II5Kt$m=aF8ZiZ(kJJ!N zfv~?m=<++7;+-X1cc?8wgXVg4SQT6lJtOFC&-(-Y2m2p&XQK7!;CSWK2+^Ep&#a=H zT#}`=3l1;!{M^`E-5Oeo4z+HEIanSv{{Syoq@&`&2nX=IUe@~a`1e(m14r}W*RJ&) zC3xrjokbYpezylvJc3QQu;3AIZ%Havxyb2&vbod+M^oaXw;(o>cn457AD%znJ-6d6 zDd*Ge6H6wx!c<`3T1zF)q?^4s4;8*0D$@*X&z+{j+Lr~T_cB51w4!TSA)qn z9G~m;_Q|}68W7*Jrc83`Brv6YdgddPTGjxLbr!vk*YI!c^)a3RW2fS*f}l`*`pN^1 zKd00FC!Q=nv&DzKu>cZ!cenxa>zQ4CpXxyW0C^tU@swvhc#uUpkrWrYfxx&wQ~CUT zeX}&{q;ai!+Kqjy)WxRy3tx^uuQvMe?Hf#g4m#O}L%@&qeqBtVqyn;+@K$vU)(1c& zS%=e-q>uJK($6_4$koa){i?_Qed+sX-6xM#K0dxmzt7WgRb>AFo=45RonE(mFK6xi zT{`N}$p#0l_MSeFh9r$C9XM`J(Ek9i_aSq0#G8h|t)wNdF72oDWP74bMt(L2`b2%b z7H=?k+ZF614>ay8{@GXj01ua6O&{g?*AsO2z%PY8XIlhxmHTt!XI9Ucq(D_+&t|sm z9_7lfDH|C-h-M|$N`hP5CGC%kbIQ?fWNCZri>s{sT5hJ6WDQJeRdo$QMMVP_y{&@UPl`Z}RBX9Xb>X+$iIYNFUkfk^b}UPQ`Js0AO$a_wQu-b#RJB9Ce<8B{h`Vw3GJ{c~o42 zn!sfj3ONUx@I9xykVR`Gq!JZL#~gZB&(o@;PG%V%81nxBRzJBZW3#vRJLiTb^@`yce6Cu(Fns zW3ahJ2AY7hwe8i01w1xpprN2rXiXcA9~XRkSe;%`Fbo0m!LCLqab7jR;(FO%`DSdW zDtf;m+Zik|#lGRp)yqdf>?W?s8hGKx9F1LBsF+m4SzSvhrcGXmO7JgX5+r3d_U1N{F0K8lf*)}w(v7k$x_CVZVmwNGD=Lh-W% z4Nnm9K_{r9g5#DW@O_#?a6eU1SYw-sr&J{63fVxkROzHTe_A2kfUGmqp`M!}y6+jQ|F`O)_bU z9AiGdokFhPG8j66b1nOSUf+W!FU zz$bdSkXWLh#O?N0zi-c_ig2;yk_Yk?HU9ty40?I>hirKh#T>Fk1aiko5vXK;3~w4p z%OtWgy0lGB0n!iZ9Q!HSOQ}(K$je&QYwPDwKf%_V(J0=d`E{2qRidu4wWJ;v^2X}& zEQ(rSu*V>iQ!*zG9~{2)cA^RsgNtE{J2vdbv600LneQW5tw$xlHVLZTwc_XZt>A10{e5%H+sk@OzY!Elo^EgQG&{k5-JXc7aVvk>wIylGxPGoFyytlHFN zV1}xms%kQR{&$ubLN&75M5(lQUIEt0$2^VWOZJo9xi|1!Tw>$Q*|9g&)wLue!_O z%P?>Vr9YP*9$(<;a`rC7*&Q)QCt&V<$DDX}`XEVu-im4Dn3<$aP*c!j zgi?uRm6a7p7r6u4JDag=5@^^Pm6=Tk*wsH^{OQN1VMn}~WP+nio_tU2tv

`8wR+ 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�=gMMjBC4ELc+j-^!)pFj$;}?V^PP`IUi?BGBCIw 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�$2XGf^`@ zs!3}3fstO5!^=kIZEQ>uaX{EpA)x$VsQwnNJ4rRI3fp*fM|$A*Chyr(^%ncaR_s`! ztKHOlYKQytjH0JB@K)DuYMs%6pEC6K^j7b1QpObTBkW9$x4BRjd#ay zlG{5SHa|P@+q5znO{JQoug@lXZsxKWaCb%@7d8q6!efO!eojiKb*fs5f88_@#~a&7 z9?V;Q*`&L5hW5%ho;B8DVWz4N#8~lNUn&oo9WyT{ZVF^WYLN(Cei?MJQ(BEBf{j51 zKqPA;P^C#sRQz1;>`pp7{a41#^|#X_ntW>RdYGv8)*17alvH_!r;>d3NM@-r6xh79 zISCAtAg53ZdIf?gx6O?Vki&CoW-=Plpn<3(x@#60Wj2z6HHQ--~e{+ zTVrl5tl_wQ*gYJ?j#L0@rHpC->}EA20?kl3k{MRYGT*@HG8l{kQSE3dm-tO4E}s`R zMjGQKbFEccNl#d{GeWmDOB&P0k%rPPNnV!3T?k!4XvwIis#R(Qe7M%U4;~#+ZzPS{ zW$}DTN``Px7|j@vs=(9X@X6FGK|@-*(c}7Ojv}0(gag>$WWT35%wyJy_wN&*G z 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 RG&~l$;pa{i2RwN7|Jg9(1ls@r literal 0 HcmV?d00001 diff --git a/spring-integration/src/test/java/com/baeldung/samples/FileCopyTest.java b/spring-integration/src/test/java/com/baeldung/samples/FileCopyTest.java new file mode 100644 index 0000000000..76ed804a9f --- /dev/null +++ b/spring-integration/src/test/java/com/baeldung/samples/FileCopyTest.java @@ -0,0 +1,48 @@ +/* + * Copyright 2002-2013 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.baeldung.samples; + +import org.apache.log4j.Logger; +import org.junit.Test; +import org.springframework.context.support.AbstractApplicationContext; +import org.springframework.context.support.ClassPathXmlApplicationContext; + +import java.util.Scanner; + + +/** + * Starts the Spring Context and will initialize the Spring Integration routes. + * + * @author Baeldung + * @since 1.0 + * + */ +public final class FileCopyTest { + + private static final Logger LOGGER = Logger.getLogger(FileCopyTest.class); + + @Test + public void test() throws InterruptedException { + + + final AbstractApplicationContext context = + new ClassPathXmlApplicationContext("classpath:META-INF/spring/integration/spring-integration-file-copy-context.xml"); + + Thread.sleep(5000); + + + } +} From 5fa83c03d58f229a71b519f3b9424b5061ecfca4 Mon Sep 17 00:00:00 2001 From: slavisa-baeldung Date: Fri, 21 Oct 2016 06:45:07 +0200 Subject: [PATCH 100/215] BAEL-80 - spring integration (cherry picked from commit b5c7147) --- .../spring-integration-context.xml | 69 ++++++++++++++---- ...pring-integration-file-publish-context.xml | 62 ++++++++++++++++ .../main/resources/destination/penguins.jpg | Bin 0 -> 777835 bytes .../com/baeldung/samples/FileCopyTest.java | 12 +++ 4 files changed, 127 insertions(+), 16 deletions(-) create mode 100644 spring-integration/src/main/resources/META-INF/spring/integration/spring-integration-file-publish-context.xml create mode 100644 spring-integration/src/main/resources/destination/penguins.jpg diff --git a/spring-integration/src/main/resources/META-INF/spring/integration/spring-integration-context.xml b/spring-integration/src/main/resources/META-INF/spring/integration/spring-integration-context.xml index 567a3464e7..b814e1a6a8 100644 --- a/spring-integration/src/main/resources/META-INF/spring/integration/spring-integration-context.xml +++ b/spring-integration/src/main/resources/META-INF/spring/integration/spring-integration-context.xml @@ -1,7 +1,6 @@ + + + + + + + + + + + + + + + + + + + + + - + - - + - + + + + + + - + + + + + + + + + + + + + + diff --git a/spring-integration/src/main/resources/META-INF/spring/integration/spring-integration-file-publish-context.xml b/spring-integration/src/main/resources/META-INF/spring/integration/spring-integration-file-publish-context.xml new file mode 100644 index 0000000000..3bbd59093a --- /dev/null +++ b/spring-integration/src/main/resources/META-INF/spring/integration/spring-integration-file-publish-context.xml @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/spring-integration/src/main/resources/destination/penguins.jpg b/spring-integration/src/main/resources/destination/penguins.jpg new file mode 100644 index 0000000000000000000000000000000000000000..030ab8a685bebb796c24cc710edd9e69859164f6 GIT binary patch literal 777835 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

}92FCS<$zdctM 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

em#UX#? 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�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

`8wR+ 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�=gMMjBC4ELc+j-^!)pFj$;}?V^PP`IUi?BGBCIw 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�$2XGf^`@ zs!3}3fstO5!^=kIZEQ>uaX{EpA)x$VsQwnNJ4rRI3fp*fM|$A*Chyr(^%ncaR_s`! ztKHOlYKQytjH0JB@K)DuYMs%6pEC6K^j7b1QpObTBkW9$x4BRjd#ay zlG{5SHa|P@+q5znO{JQoug@lXZsxKWaCb%@7d8q6!efO!eojiKb*fs5f88_@#~a&7 z9?V;Q*`&L5hW5%ho;B8DVWz4N#8~lNUn&oo9WyT{ZVF^WYLN(Cei?MJQ(BEBf{j51 zKqPA;P^C#sRQz1;>`pp7{a41#^|#X_ntW>RdYGv8)*17alvH_!r;>d3NM@-r6xh79 zISCAtAg53ZdIf?gx6O?Vki&CoW-=Plpn<3(x@#60Wj2z6HHQ--~e{+ zTVrl5tl_wQ*gYJ?j#L0@rHpC->}EA20?kl3k{MRYGT*@HG8l{kQSE3dm-tO4E}s`R zMjGQKbFEccNl#d{GeWmDOB&P0k%rPPNnV!3T?k!4XvwIis#R(Qe7M%U4;~#+ZzPS{ zW$}DTN``Px7|j@vs=(9X@X6FGK|@-*(c}7Ojv}0(gag>$WWT35%wyJy_wN&*G z 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 RG&~l$;pa{i2RwN7|Jg9(1ls@r literal 0 HcmV?d00001 diff --git a/spring-integration/src/test/java/com/baeldung/samples/FileCopyTest.java b/spring-integration/src/test/java/com/baeldung/samples/FileCopyTest.java index 76ed804a9f..96e5a98f41 100644 --- a/spring-integration/src/test/java/com/baeldung/samples/FileCopyTest.java +++ b/spring-integration/src/test/java/com/baeldung/samples/FileCopyTest.java @@ -44,5 +44,17 @@ public final class FileCopyTest { Thread.sleep(5000); + } + + @Test + public void publish() throws InterruptedException { + + + final AbstractApplicationContext context = + new ClassPathXmlApplicationContext("classpath:META-INF/spring/integration/spring-integration-file-publish-context.xml"); + + Thread.sleep(15000); + + } } From dd146fc62e933c76552d57bcd99b2acfff15d8cb Mon Sep 17 00:00:00 2001 From: slavisa-baeldung Date: Tue, 25 Oct 2016 08:17:43 +0200 Subject: [PATCH 101/215] BAEL-80 - removing an obsolete file (cherry picked from commit 5f6912f) --- .../main/resources/destination/penguins.jpg | Bin 777835 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 spring-integration/src/main/resources/destination/penguins.jpg diff --git a/spring-integration/src/main/resources/destination/penguins.jpg b/spring-integration/src/main/resources/destination/penguins.jpg deleted file mode 100644 index 030ab8a685bebb796c24cc710edd9e69859164f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 777835 zcmeFZbyOTp*Du<*YjD@#4gn^(4+M9DOK^t-*ANIUAq0ZEyC(z;Cao*3i}6)!V9S*Y5qR&fWaoDnP8R0#*S~P*DJD;Ys!xmzQ}Rt|7}0sxwt05|dqHh_g944@)wWXPW_%ELc(EM)zustSOH zJfZ;T0H6x~yDkd=xp~NI06>WR0sC|SvMrX!?|Q8B@0Ne=g(8nT!h(X5AVCq3kT8>w z2uM@{Bq9bVdivNp`vL$)D%w9xdsET>sYBA!{?ySVgaIHu{lDseGiv?K=yyR9mjDS0 zgM=iQ1jRst;vf;B|MnVyfr9q8=$J^^XaEf4!$|Q_xKL>SsS6>^^|$CKlBlTvsuPd= zVFdtce?9Zp@$TQu{F~5kYIlo(B0!9XPl%68Oh`aTN>tJc zORoh09}NZBd1xenEHFj3?}V98Hs{=Lqe|9Q$j6T%G%x3?q50H6;Zwh%3YY`HjTCTy zvSiyGbCKBo9i{JAA+PBd&d&y*q)PM=rnmGV#n@IgjxIaxYLhN4=r5GfhbD4QeL!@C z*jN%f<wZ=SQHr`{F9Y-|9nNzZU9q`fhS>k?me&KF9!+mV8jA*`vq4!1dg=(&@Uz zMacZ&aN2=qrlS4E4|uqGkEax+cQ)Uasg97I!4A5?Kr06ac8{)J8E4u3R%_?Z&)V%d z%5ILfnCdpkwIty7h%GYx7-?&lG@I@6?c7ocQFM+(M={5-_1B^#olkcwq^3OOPjjCo zejIAo$_PniF4y8Hl1H1=%I64GHx8> z{nEmcAMF;L*H=zW1@S;J9D4;PVq4r*1_mwZOThU=E zoA@xsm5seiV{K1fW1~Ik_X%uz_%#9wJfHlf9~=!|xCSSEPf7g@cb!l1kS%i$VAM&+ z``I+Qb8vP$BVEu0_fEM33>|1vaz1uD^W=3Y8v4^y{LqOOCx*k_Q;{BF2iT~v`qEYs z9THzr9#}I;lQv34{#w{yl27w{@+NOiV{`@Pi zaz#N{cO<7%3ZKpoCdrs-mbS0rZ3ZgE z9+2#{2vWNNB{MInZoRdZT!}vBWPSG=#BCz|{L3qtFswC){&SsB+&A~l<*YpPPu|Io zQ)K};I0j4N183gR6!o?^@`pC^nO`JyA);J6UybRwxPm`@8#^#lRi!o}7^BAOgz9mc zZTa^o`~uIc1)IQk>vbp+H;)`vH|PnMh_vmD>fVFhj+&NB+l5mJIV`HRBnN|tLW~U| zBI1iq>Wl zgZ6RHxQzGth=^xc$)PFc#_T0s3Hp&EwC0Rus+AU^84@crf&sVzKOu`b4w0VX^~2Qp?chhV$SY3!kWO=>!g^8?aPHGUG0vY;1-t;>KmqNJ}l z&d7I-cMd=yzj(z1)ztL7J1?kzNsvcVWNhtuO-kA^XIuFAzQbM0J!fm7JIm)%w}=|9 z#oIC)A$F@~GQY(D-*ae!>Zsng17NkcRt7W<8J_@W9NdVV^ic21f`J56{I&)cql+jq zXOy=bLJcd!pbcnpPs<$n7nyhdq6uV=SS0acR(HB4bxpi!m-TgTSFVoAWMAF^DA&fG z#R1%SUhLD^+i!0ww+zEcqO`9*szg0=WcK&<=lc|AxcMqwuAifU1AbALWC@$1a(^D7 zit4t!O{^u9k$(rM@A@ZUX+T;h65grNQ1_vOx0^W9M%cFBBThFyUp1DnV(kj0RA|rU zJiBM~wNCWi3!lZe)acjGs`!4`!Bc-pc<2^N8o?WHk zESsH}7}b~P*l?M1R4agV9i}#J(bEjop#*{NFHRRD*b?jIBoDuMPp*b@=L{fRX(QQ$ z$(hcU7;PWUaCn=IXm3!hJ|OwDdR4t<$NHmEW}bZL#jxC@bWQmjOajKovJAmpv0lpF zq@%k7WM{k5A|%O$ms*3uU+^@PONLE`h_eLaE&99>QfGV` zbVM~Q-5%C9N2`pLz28UM^g%KY0c8T}qqdUWD^!B49VqOKH(6~pcV4|q#rVPb9?7zQW$?Y_X7km8# z>t@iU>KZ=$HZ18`joA=cH1>~otaJrhn{J;4h2Ol%ErNaYMR0d?b_dIQlBN6f9im5Q z2^FaC`J03!yw)F)WLU3J+34N)XmQR_`GIoEW~wNuxxt^6Na$AbreyJI&K$dzfcg2H z3qWf?!3w`w?`VqF(T(1)rBqSqj}L^ta~`1*+oq&OOM5MK>pCUn`>^~ix_qWmy8Vvi zMl#k0yyo+fc}sx@X0V~Eo%jhcA^7KF{JYY}cyD*Vy)YpDggx2^EvN_JF3IwfRP_l1 zjnwt#oD+G~y~*KyhDud#F3=qE-L|F~(MwBHa$F74`i-ce=#Eb2I9AA_SZu>yfqiEn zOI%#bnYA^KBcu^wxnx|YOcgJd=%+*G_|;foUBjDxgN~rN-aA>E=;~K3WZIphUcl46G0}S95(pVKxLtBd-s!6Phj{6PXd?a5lG4FtbFxKSzUQJ6?FFPJ! z1~qJ?0@riZsRRM_iF<_atdIJ2`R#Z|B9jISTrO&7eU?hatkPeVs7A|C^s=`V z`3Sbnx9>w4s}9OuI%wq)Xg0$sv$lVOmU5Il2zPzd2u(Ae&yg!qY}DcC+saP|ea<#xED1NuWQabA)D?^C}$;%oRHq*(%uR({N(H z*@)B(;Y)(6K?iq=$W=|65no%FW#>4!zKHDeaGI;3psMVwys~&yg2#$tnq~L)eTT-I zmDvr>?|l+mRKdoQBFJjAEFN=41YJN!)Y67T16 zChG;|cBE!heb|eIJPRp)HQ-p^5Q_VaHaI{UvUDJaM_q?;x^i;y z)6WYXQ8=absX%|L#k7jS(7uf7~R2$ZPTwonys@pwnj z8r?KDI$7cIraGZ9r<-?Vr!8f%Oov6Fqh4DYk@umkt*mnX37d5y?&S1N2MwCCE6aFX zb;b5odol|AMD>M$?F~tkss1P9hX$)5om4x$k|l5DeM*n~P?b5*6Csg1U<~@>zKbMwuAeA z7EE>cPuv0Ar+!Iu2op!*dPnWtyXPitOoa(f*M~n|A>0#`lY>G7sxR zS6`L|MzJ&>lxJv9iGt3lFh>oWN#|hQ%9@c(z>mv(_(x^dA?q5)5 ztD0Xn@uv^Gb;0cld*CM#h$%nH8f|_D#7T7?=^05zJ!LwSz@A7vKOdD%vI?%D`YJJY zWc&#w3q3Knz-4@v|L`Z1fwJ1LJpL39`A$9xM~54t71Ef~mCZ&f_C1;XYLty%)n@Wk ztZvO1#Y2%Kw_FnXt2#gXK6D}>`>8r*48KU!V@b4Q**tSf9Z%sa?-HT@`8RBiCp!&N zH04LygI(`G5mA%VrI*_At~y3$%(fUgbh@8tcv7rV5?KD-0+r*-v1`Smc)WNgPr z%fM7pY4dkL8bSD?W z{j~+IB({O0)7(+k+eB~3mc+i~uM1IK!(hU}!*hue>%Quc#b>--eXNoM)3+UQOT2knQ*6?~eTY16r*oag!;bD;F3-2Z zc4*PR0>(D(fVuwSc>afeTw`mWHv;myq>ijMgYw(h!st(z4!XR`f*M(wj)R^Khi8)M zKBZ7#v!Y!yFrqm!BtF&RJX_Ldi|;_f~g6?c*0BD!TLYi_g-2okMSQnd#t(OGICv7RO7z zsZF{2es=(nDEZsD1|stpzjGh<$SlSho`;j4pBG3#z{8i{=6BkN-_FxrAi%~;K!{&Z z0FaUm@UpRUb?{@db#Qd{kY@S$u9t<$*L194$NUM5XX4<;1{TP7h%CS)2&oJm+1Bq|6JlwkV1upoKj zNcq@50qH5J{LK=1Ce8AY{BOn=;3D*z~|x1 z`iI6}M3fwS?R=cQ{G5?&e-pK__4N0XW%L;L(`^ZTiPwFhb1__#VC4Q=4#@9^)}jU8H`l-x~fU{=Z4{m!bac!r$U)I@|ep`g%U`({b|j^Za*7-T!sx&q(t6 zefy6uK+5~SKJ+iqABac^{P%bM8)^QS5IISarb7zS``1+d|MK`hO#UP5{*Sr- z$6WuB1^%PP|1-M&$6WuB1^%PP|34UA{}nqsc-TvGJmZj+`GXq%17H2WS5W_}p#4++ zpoV`vi;9ARY=Qj!bMybS@&`3U;(bUo4GEb28)^t(q9UQFe+m{hCI&hV8ZHtq{V&uI z{Woxk^5zwyJr(Zj#7!@q&U{{=M!Fn{BQ|LBF(3JnVt8wCgW3l05^ z8Y00^BpQm2j*f|m;r<6SWG2NB!US0EA#p=t8!~Tfg-F&ka=jv33K5(pw*GI5KF5@6 zQKIbW`c!sGC&kV8#i$J)DBE-3`bKA{`2AMO(81qG{CUhDtdrOmbHDH z*@AJZ8b6VE`r>tY`|#}ch2yi>tcs42xt(8XCQboyZz?-S=XWn9!KTiEFSDz<#=h@e zaf8&&T!P|rs=LP*_OI{$7u2vR4VY~*335!T7udIu3kvAz+1?`HQB)7|pZty{V4sN| zuQTmEVnT9H-j2B|^F_=pFTe`l;pYAE({kV0%r5r2Y04o*G1if-0dCx&N9>gB>s=dB z<%)xwF6J!GG#{!evoFVwLselctYlWd+zLBGggQD8F-HguFA#%yRBi?-DFOHjMt-;C11l zfwNw~6otBOxlCfNzJ-N5z7Cqikg_Qy4eGZk>?nJ4;`0)gYJTE+)A2&*B~TeMo5}F% z%G$r!$axlrCV^^-Cq6M}XS{TW>1#@}pDr10A;tYwR9-}eD_Prc#t3A25XTCPrmdo` z#EJHR2vwW0Wv&X7CCOc!%_`YF{A0vL?Eta$(?A-#1~7WeXE4Futg?kLE8p{KQPdAL zyu}A@{E7lQ*TKKyG2U@8gcac`y;QN~t zcMOtm2KXD}*|1Zz>J}kAjX;JbGF*X8-O5yqkMnpY!lwp|BbPUUb$OWO5bcQy7TYFz zO|3~Qp-2Ax_VzL_rl^EpH}Tl=4)oEUAQl%5^tb_OQ8tdqs+*t#XFY#%uW>&r?HVf# z4_Q3dJD};;DpuiMc0#kRs~P-ytuHaEnr7E@{)M$9nr4@d<{09Axb`#LA~UzA@SdQM z2S9z;O8F2f@uz0)#gnpxbbdApH1(y(Th(?=eE#8_?EX8z7;bD_MFqq0t}5V!Qtj|KIikv9&MC`>sG~j;4p;s?qAvM%-Y;*exs6sp5L6dn^91y=jm_<(B4$xP?JKs-d7cT zpUMF%urSGHjlw6h7N;xMNh`4xM`$uCYmI4?Uqn4`vAozw3Bseh{|e}UTZYeAzQ;I4 zCb;`X267^?Ak|+dJeg1 zg2Qvxy~Dny@`tV$(Fnq{#Q^Kh=fq;+Zzm?|x$T0-$5UXZJc85xDygz;nRh_IFI948 z;7}%fvdo(t{KFIoQ2mnMyM?qEL+7XKNGlo!!&s(ex57{~b71xkuv(tcRVE_LC?rwh zz+&@44}!$fT-|0vGeWx)#;Bfp5)4LQmN9mcEex@ShPH8M0UWqjek~stS9QG%vaR?o za@&Bb9ERc#3CpO}IVn|B{Lk+V5(lzIUiH3H*p9_)tssndD&2Qr3QPfoziq%`DDzil zqAH1Zc>h`^lgB1}Z?avKQBgbf4zMd5V{iUYdKk3cR) zbnnTh1Q)i@&@M62=(9V3c|T5JL{ZNF`VLUNwG7{eQY72QC@k%@C4dw^Pt*uD&YeF% z2z}xlV|S z_h+u0@T`OS0N4hbbIEwo^PCxl%GojvfZA;C+H%Ru^Ju6dQ#Q*|)2`jl^uxl*8oYZQ z+aN+E4Y8JepZygvHdCM&qZ-Gphjh83hrP3fPX#0iXAL@A8skF!620R9+2Q#9FT^4h zSFjY%^-PU+j^$Y2-UeKpH&%gS2vxyq+|%fcE%i>-TZzq4Cj=Us*-TMK z{e^w%OKqu$%I9FN?rdNRo8va6J?#l;2`VtN6FDnAidGlJ1bagV zM;v`zVLqLpcQLqR*dUVf-pJ124y1j32Q1E88l7k#HVHGXQV{bhO~&rj!**Sn+jvV< zagA6kTA!BYCg$y#Ebn~-6=qSwn-`%~^NYDoV8ViaiRpcZ!c(7iTksvxAX8I1>{p)0 zbo;?-2b!w3Fd-c9jdHX*GE@U*!C8FqfW(;y~3kocj9`Z#b$#*Y<9ky4~ z+*L+ylX_+~!j8z%wje*5{n_})QVMpq5cTvv0mbd*Jbdx#l?}87#_P~Z=j&U(+kjtn zfyaB%SMY14t-L5E4%XO0rd<8QD}6C&+1Eajx=fGWE*@e$qPkqXG|!6_n4Igt`yjo8 zC?z8Oav6s3gRrpo0kFhfqsD-orDh_-SV#ieEgT>_dK3I5T{`!gnqzA~~qR8YK zGc4;gvNRTe21V)9XXin+TLcN zGLcUG(sPgu+tXqCS`< zYl^>+Hq8chF&9J4UM=iBSc9gY+|_)KSrsKa=Jk-ty}q6g5#jHHgU>~?Vw@R2g=bX@ z1fa^0ug!_Z@o*;A7i#q|3E#@{zDF6mUYNaraQe@wGiuedI^(>Ib-qzOqxah-PVKf- z@T`(VotwE1dwvI`ysH(e4dcy4L49*}#mL`57Xwa=V3`V=TpX00tTi&e<|Og}qYlmE z36%PTSG;@0KhP?4rC&GqNc3z5UN!d`FnK|P`)XQ!dHO-U!eiZ@u8Xr`XFxB>YD@b& z#2zB;6M)>Sxna7Awoid#T1(It%7midYGMK(z44wCz)a`!uyf6_pp>=X zroB;w%gVs<(VyXVj2gq~1DT$hHF1Y>AsUXu3+ipN3u2nfV%owauFYn9?tsPM<$Lk< zGGFS1n}^As(ZJYk^~Aw>BY;WC|IGPe(^+#hGP{P~MRAIwTV*oi#)RBi9E zbVU=|Rs{7MnW%JQQJ$`$733E1TtZX3er!xBTkzD-lgzb@3lZWs@s2gdkWKGHxTA?F zG4Y|O?Gr~KR|^lUuMzsmvS^F)gen>GGg3xzmwohlG{nMkYx$BghKv*CSBZM>-Jq;; zIMW6gHiGERB;-aULfdfPtBdtvC+~um(qDLM+Nk)IlI3!h4O_#p+n@xNSf{NMK~yVr zaGeHo0;JX%M)l=w^f}AQk3^Os_c3xecnfsP>ez2(t*nFzw@sC(<*=dRM%p@SsE*i( zW4zqR9dq>a-qZmK#0J*8u_#oZt~`)_{(G_+iE{T>gY}_%TCxSYY7nX<7GcbI@)@#t z&vN4@s6rEac)`J^+_8ik>c*33keAS@*Dp9($i)g}1wc8FX;>`Sn(kq-$tw?n@hJB_ zw#)~cDTTk*)&Qjl8VK3gRpicGbZXi6IPGjGdPI`A)6Au-%INsF2*U)^muR|_aP!;H z&d98Fv;jBAByhtO$X1!OlBSU$BxOP-H{8>dIZc0rh0SA1w1zu9#|~0hWf?e)4F9Fu z)41+~^u&r7LCE3pd8X*O5&>P>;8e-Q9T0ov4^b^G%HhoC=t4@$x}$cJ%QHp@38K+Aza#mVf?SK3h-VYKNZeYKu8 zdSZe9>J+)zOjf;(k|r~wBIO(6q%#xVOdv+oMBifct=|C!Vabx2qY9j| zGe}2knHZad^q}E22%h>`QNz^RPJ5>zz0~#u9ST0SC!d*Qr|}p)MM+6j<03K!ihK9z z10GflG9DwobgJTahj^Pw0w>2<-bWm;-+qv3O=4@>#xtCu8 zddFNr)y7I|;ZJ~C;vS@imSWOFTK4zr@Qz83) zd48UQ1$XT#M;3emGhVFKGdR!HPfwdt)+)?zx^Jpl>bkSW@P%rf>@=v)*5M71{~($A zQBiBNX=a?e3pP!IYnb#@Ks4}pjsY2N!-8Z}#VRUDcBZ{Z=mNNWf`?>p83q8|*Bid`^Mj4IZg#eE`Knr&# z30n#yd<-IkOS0CI=mn&tZCG~JF+1=Y+C3J*n9_KV;bAiGB7Pn0s{T<(SApwvuX9Q3 zQB1sZ^>*Qv@yoTrLnwZ#rNjVgSzc|aX>6izcm>wU$DY>?Nt$YUby&l9D^}>7 zxFQ!p*-(}aw5%sc72O+#hv=RAkt3Mvto62F$eqn#^%xoMP1L_P;-fa2GPx!P>#YTL zQPRXB-%%T4%bveNSh#R|p~QUDBy?8yx=}qvMxC1pnq7F6nSpjRse&7$Mn;D*N-W7YW_w^sW|w{L04GFD}9%3CVge2k+L(A!}u7c|`Ms>Kq$Gg7_K z^uSEM#$aPI1vy2H3rx?eU(sxGf7@esiz~g>{JN+Y71%Mij2~XUwQ6WZ(N-zZKr%C$ zrc6Z#nMjfqm}KOq#$wi~-+83Br&GhE*NuWs+jfA{MRywdo#Jb!kvU`5RnSVtHa5L= zb0lLro1*PEid8o2ph$M*mu!!3Hx@D&^0z8t%usf2KwpuLgh;ldvTB3Cm$o-8zRJJ? z1cp5*r%~%gU4fHS)#C0!4eC_9`@&xrOw{Mg(!QDT-%a|i;nW=4UgN}Oxls^yJn@S} zQ&j?Ki3xc3q6lt=S$F}`1{Egr=3GwiEh8#)8f|f4sB-AEk%++`i8@L#%J?HpDcUf! z*@Ur*e!ZdGD+q*R;>z)KpDofqwcA6&#^!VE>})3nGSap?N+X<{-YC%Opn~HrRPDN+ zA*@!Rcw}AY^Jf)s*~P`>-PSr3hER`En@-sC>hEnLTp!+&c!XCxxcC9#5~B+^hF{Ns zS2aO>yK(8Jaz=J6Q4&VzjR}r0wGsm&Vjq=P2hMe;)hr?pCIF1;(8uiY6`W-{x!v@0~f_mx`w<;ALNb zz?)d=Vs*^8z=pSY_S1<{4K=3vxA!7JgXGWM%d=@_7Jfv z#~4qFw3!hoTJ2Q%Y`Mr`y@)7*_zsL>Y~aF;`*j_3k-5rKUZGU(u*-S-V93q zR!}{J(@UuJmT?z{3GL{my5HotMvPoFWLTzED9syGUs>ovN=lIXN*uQt51_hLz43Ix zsg)0bBCND3ZOry)TJ`7Pz556YmDibX&`FePPhVnFim$cZV>$79ya!`_8yfo4GP~`{ zx#AL3ng%K_ot`37GRU>P)whAL`lkLKv4K-tO35>Df<8P#lZ-9t8}+Er9B zPw)fi?i~nEF{7hx2BjG{?z=pCuCD_dtq+Nute4QQ!jn=0DcFcr1YhVYhCgyDUf-6?R944mE+;s z&W>gI@*AF-p=MUrJ+?gEdzS?*PSD^k*SG{@-p57+$g7zUS7vr z#VYGS8gR;CZ69~Twov#1K=_*Dc75fRR*eTYPj%up<@;1wyfFTkL6cP?8bZcN^1Xh% z=2v{xd8|n$k>x5(rs@w-`$w&eDSF=#O__bT-#~=q@bUb>#6t1f)RgnTId6>|x; z8e5g&I-;oN*nMPsBF?CHjw9_{E_ZHdmUZ27P2 zP&Wg{y>NfjQo`(!0>UPd%dvN+DZ3APcdj2_`%b=_8?w!;v}6R?mETX7#dzta5C7l? z#U}8=c4s|*d*UPDE~^c@ofY(JMsO$B;EIK)KMjJhu^)_2AeX@r3h}lB4K&Z=ot5*i zMq1yt&SdhW=<#+NLV2`7s2Jfa%Awq#ZQ|ZI7X>v#wA68r@Gqo*RKCpn;M3BNjCwi5 zqHx3{Ebx58y6Tip`wHZR-0vrqFpyqV8bp|GK;Ap;eH4XO%7ZH=LFeymU#U}G$jR99 zBD_Fff1)BEbvZ*lqLwZh?HJtId%dz>d)!5F&9h^kb^$A*8*&ANcObXs-iQ&sC;}kH z-?-DR&YhMtlr6KD3C-JNJ~Z_rW%D@(fn|rE#Win<&=kxc(xb zP_hJO3Z7dz_{mZHqZ0KbCb;8-@f*>r6Xfn%5|k=8`1RYTNs293CCc7Bah-A=Ko=ba z04|;^ zQoS?q>yR`>a{*Jf_r)SUhBhzNm0t6bL<29@k7O#4Y4)>AdGM=WN?i}%SJ4-t)cK^Ob4x#d;)4&S3@L9Dl=GFiWNPUNkaz;J|OnZlkWyD9E^>s82yNvUaM zDrnkwbTUkIkk%QW+QC!xu)AmtqP-bh5~INV=1g{f@{!ywo{NiN6Eb4cuT`jwTfce9 z97qtefh#&Zlpf>p0V$-+g{i%m7QK;EMffb9Nq{k3NFTiF6j~yb14gw}n<1B5GbC4g zyfSc&_^|jofodj7OD0q>{)38(F>aMiACpD3wK) zVemlX^)F7KiMnIl!}%(h9H>gx)F@b)Q5MFI8wvA_o}>E)5z4=F+*#m(HYW+>C<^+L zAr`?^CS@tfo~1Ko*j6`>X6Nm>H`(e|Uy`I5KqxJ_`b8eKyUI#{7n$7@n3$~JbRFPh zdEQai*J#M!G3{O%q1};Ta_C=0hxN&CK=|RMn_M1-ll+a$r0gmD`p^w;-yyY$f%Nrb z?g+8;1u!M+^$moAn~hcDUcsCFU5gj#4~@kTCJ3tnk~zF9Fab**Df(&?qHc{X3ABWF ztNjj2f{Ou)t3tkcU02PRiA}SKA)QQvm3G0_9Hyr3r#%O?^A>RmWm^E5YgqEZ+F7O_ z6oge6y?irgQeuoIR*|)Mfy{4ifO#2+?F_trJqa|AS;MGRuVQ>0d~C!TITchBNlQ)a zk_utSw=C$GtmP&aV*k#XYA$#ONcbb(HheQdhM^d(rYEhsc3&9jm`O{d|~sgqiye z*fDhLrupQL<^^Uf_*D?(^{D#CbK|mC)-JATBeD5GIkgMcYv1AW{ubupxv6L6!yCrP zH)2NjJ?lj6y72zl_e#cN8wigw*VPv&_0|1-&GP`!KJb>r6E@NwBFRDy-1l#{LI z$HXMNaPYLT8pri5R&Rjx2d2wmkeUFcQFWWhWfQ{cd%-CzWkPHGb6w}{14g53l*!AR zZ}G}wWm0F5ZD%T-OvujAMg!Zfe9~Km%qKGrb9*#BvTxspN>5eyOpL@9Zn-$hIG(Y#vc*t8%g0a z`Ng%(1RiovjF_k747m5$WC~~5Zuxvdmy+b1^|dETzd(wL2{gB*u@33|=>|T=8RD;G zP~p=I9k0|Ay;HB45QXY$lrl2JYvUt793axSad)8uRi}q)p{8RrxSB7(!y67G^_(!Y z)zg?esX66j>~51=mc+kebg+@w+yP9BXGeYa(q_LaIcmxBw~W|4(f92Sby2SpU+a{$ z8tE|9ARy!f&Bfv{C$MWHU6wVBsn$oWX2Y4$>@~(G>+c3)b>}*&vxr5fQr&@sE5GB% z)+O&4J!E;k7_-bh{D(r7qoYjNCy3<%%Y_sQWPiKNP%A3jR$^WEI8Qn4Gt{Whp&dYT zQd#|&D2-3E!A(9RYDtD+<)6>ndX`Ics>cHe848fj4oe*l9yF3G(q_!sF+-+*+PvbKkX)lFKv2=#>=gUH9zT(HmKn+sb6auCG(HnUV8f zL0IhPK3-{M&#lVp!lu~|$TBh`2KTxY91&_x-aBj1Km zD0_n|?JZxh<;AaXoCpwxs zvI+{;VbvLhra2gf;jChCdJOs6DmNg9Aqx(%XeavxpfRWVoswb;TzlVh? zH|~h=QVJ)5Eow6O!7odC39L1%i3WhM*ia#czm$Ah;jKk@702Gu!sDIUiWfE{2OfV+ zYByP{f&I?emOL^`pOn&SOAS%H^CP+JOS&d9cjF}Zg1LbV2(Qjl^}AK#A%XGom7>99 zXMg-;Shie6FXcSNnyVXcYv_L(AOa72d>_3DsG`8S-B^x*$Z2X@p2+KbDHBm=kXTonWQ6ILU&j(r z360X11V2Re*dNrF;3Z3~h(>h0qk2*YX7WpyFKTN-AzC~|yC{G;))G~rv^KUk%m?e)&xyx5E*L4Ti44nrl6*erm$o*W*_=kz{L znP{M+3nwzg7b;nv2&9`I>gW!{m@d17pM<-CsOeaZ2N=SC=Z?Aj?z)4!UKH0LG7dHj0*l>GEPc|DayB<=hv1P`3a4v- z&5lc7$9S%97qGA@NJ)A9IK{I&w)ox-LJ^`nd?Hg7X;4Hi^WGUccrn%ED;MIXUMb!} zOi+*0s3mZ@bL)LLqO8s-z09ksiq8ByMV4N@EvS2+cR`omPvtPwOr=o%!L?Nak@HqO z_B^VST7!1P2P$-k>^|!i{A9Y!f^bEi)3)E_Va=X3nK-9kD$!RYXfdyhnBs>AhPO-w zD+%?h=rL5JT!sxI!pit$UK=C7v!e^I>c_7B^kc^uY{P8VhseJr9kX!5W=np>rx`F; z|A~v?H7}WHjF~9+8Fm{f9@mFc)xBqF0{cGvD!^SjXI&z4W_65l6al?>W!)vKKUqMMlqe|@epZuldA{T& z{XqePx2xj12V|S>$cQ~Tf$WW_o~PEnww~0+273D+{ZR?u0^wMDx6gfn9vqR{^H zUzNyyAiA!B&V~c25$H}s`)L+2WBR47QdUEFcnA;G_W14-EaZ2TnQH+qwNgRHS2~-a zZ|XxqIdSSmsVj4doUEBTGRRQ$F(tuHjsq{N^yUDSM^M9iTX`_(txoi{PrLRo&VTS_6Bb0h8w zA_jdfI6Q6;b`e8BqaNark)#C3ts(@D4#^sh>k|v=3#x`Vj^WOF_rh?Cb9qtwTgFceySQ{TW*btr9U2s+mpRn#xEIm3OD@J&}zZ zx3L`NL9szj%-BDZFPIv2u#a4APfEvj%%HpU2KW{?pU({TRFcJk%>Ydsa@`4OZ$xy2eH^1ofZNVj%*2hF>f*uXFoNoa3JZb&qhP; z0N$%B{~lgS6Z+hsLwnnT&cv6D6`3@V!B9PnTg6kNo`@1$mk+&LP?wYw4AF{-dJ;Ag zwW2gr4f?Qh;reo zY~X9;`n1|`tBe(Ld2AU;F`aQsx6_*qyl{n!B@VY*5c1eWej~S+GNW}FIjt!xa52Bnvu{If!Bgm?4J^HG zFR|6iKy;j66tX!}C2P%!ZDfpWZHDxKLiMPKv8i0m3-rLJA2nt32xPoRb)iBH#hZC5 zePNnEy@*;92SnD0o}VCB?}_rfeKBz-8>@+wyr5yDAyR>wUu3k$V0Jk^*!t{68@*|C z5djrh!>-Y?K+t8iJ=

}92FCS<$zdctM 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

em#UX#? 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�||C(=}p^||_fJ+tG1>7SoQaz~~Wa0w;8c{{Ucr+kQQz4nUyk?I4<-vPTOD*XV35z~hhc9_ZO5jvY8S0n}%RolW#x zk@Wll{V(+6-Ih)m>1v3yjZQKLRZ0Bd_Yd&Tj93kuEe3NTN5A*zqRiv46jSCi^_YAf z)y(E)qr_pUe|IyGl6d2mH~|VFjpTB=O8Y+9f+3#dsgV{)l7o#Tl8r&c;dpQ)^ijEK z`grZ$x*Qfhv`|ey&U(?q#?ve*pVRd_`?{Ty2_pYB!BUHFeZGey^}QfA8~KLm!)y z9_jl~&|+YGZ7ri9z{w4x~pD|UFYDvD^ zbyv?;6_kW&B2%k_?OLh1ia5iDEK3kT?FvVoeE9GbpsyN&+X()eONnL@6;xP+gSSh{ zvQVsHNh&}hm9Az2>}B*p(TiAiOtkvy86FALmobN$(npF7O!*WaBr8}^=X=>%qC-MV5#Jj zDUZhE{0@ewoetFv3aKEUWUyV_HJ6VSQHz}{#BkL?juaKfNi-Ya04cU1N3MD`+3hWUlGfT3AG@JNn7N{XASBhXm(5t>q||}a9Tc^b$4r#;pjKB_ z%S81pIF_oTEga@Xt9@l;r-qu6upzK2#9W*G5$*RA%&P)KKX^+nlKQI6GBtIY{3{w3 zS_;;csOZk=EuwdMU;J7qgN4&YSc=dfrWmuPuOc`BPB|FVLr)*t#IKai?RfQA*UJ5-&+0r|i4$-qc@_1pFxjRVik+i58 zVp!Aye9sU(yP%zyY&=oY#L+`jBoo!h-c*fh(cmY;GK)xpMQuvLs&D^4H$Y5O%Ihk@vFF$?}A2=wX|V^0YXaAxQ{FmLOjVGGdtC^wX@Fk6|#mH zih9`X7+RSEQ$gZmc9Ic}jh9H%YxDjjtt`fQex$U{BrvOiN;`n6SC42;BiH6Z=*bq{ zV~Qw(MIAg=Lz<|oHGL0=L9Tzzf;xJos2Kc%!5uYLN}iH>sL>~$CB&AbLl7>Xv`oC* zjb(qs+cr>M37c-XG5sXh0ZY&`FM?>a&jM*$k>_5Wd7v?UU7&L`aI=LZs6H=wt`2dG z8dvAkSEZ?>TBv~rq6VvjArgMuBYB#eLP)N{V8jAQ;0`^sBc2Os$za!&kz@)ecY?-%Cr&+2`8pP{xQVJ_$NkLs z=E4l@5@x(lG*usQjN8y=>nWq1(6FhV2-+EJJrgMXSN9-W*cq1I+UUZTjdDf90(GlJ z5SLF1RpjjvRdwX4K<+kGXDWWOvrwha%3S>|K zJSsdfnrA#ZCEV8CFB$g+S!RW;3hQdc3T1%(3KZb2-&{BQdtP;tHbruBz`XV4dNH@ARP&JcamoDAEfG zg<|i+Clu(u#%=E1?p`pnyIjW>f^`70(nd&#TE?)zLbjno+KHtodie9OWZwS(C3X(c zq{l;*tvO|{mXxd3P{UhA8)TdA85dvKTI3@pS}pf&~% zpsgrt-CvhO-NNqaxmR7YnB<;CL?lqM16~;fx~XBO{S1s8jZ*L=f8xR8`5D>!|tT z&YqR6KHTK=Wd1d6+B~LupKNCE6uXZDxhc*gIe^MQD{&c0I{4axuOE@4d4Ae@dFbjK zS%RHM)Eoey4>^_>S?#1~uj9CnLl5*sW2DDQihmVqX~LaIT)SeEDS1M)ZB?PC9W_3G z%AHg%%TJAe0QXPI-s1T6fb3E5gR%BT;-bUsgV_f=yt*f{=FHO1ku)#5aTJqex=C>p zI#L;OKg4J%e5lJL0zVnZXS&&1_xDEU;z4+*pQ?mWiy$;B+5ycDL9Q}s&^K*e@(C|@ z8&3*NwJs)41&JkEHm0K{ok|$dwCR;math>hRk!~D^0E1|w6^_zdt&wd4}0}oH1rum z*?%8*X5Q{yjh>=0tJ2rfPqeG6GLX{J#GXtvo_<{}EPlPp1~A$Xn@1MHO!ntokjckF)KNjDL9J=$UOgbbj^}HE zA9V)fT9iwuz|@7vEX;GH000NbC4A@{XewjM(3)y!B95|mnxeB4EYZ=5>imvh8%~pA zC()#R<#mjRw+TZ_`BH4A+WH%q7!VTUSHJ}|vp5wE zHBgd(Sfp{r%w%R@(%_zWvQgI3)>FqG zin(%9!qu?PeKFIfI(eY<2)ggL;S%aR6o~7xgkYnJUS&K?io9*FQ=ldG0iVM9y zS1*o^NonbhsXR^@tO&blVt-OwR}mtTPND@AG15t{9h9>u%>fnDj+I;PaokH9&a3rq zfMTtv&}&%F0~AsfStP*J2o>^+DW&sLy(GojvRZKpdVr#!jvw-LnnsOHL(-!SR?-Wf zueB=-aFj5WX(guvm0Dn&S00$-PM(ZU;mEfN0F7Hw{y7QmAXl_8tvH$voau?9mF0{d z28LR9mYhcvo@dgE(lnCksGWq3sEjLhpw)ic9N)&Br*94_O<;F1F@tx+a`d~+4ks@z-K z_R<||YPB%xrjz6d)M|f~dPhB+VNBr_rx9u-4C)O)6jzAjPd=Qbfof^|ZvYfxE@|nC z5>traQ7Y-vERD%adQj@;>FmxXhf#%;cxp%^JO(Ha`GCjS(kSIH&8=AdPOpip$BSdk z0gBfxj)k9%{{SJkN5x*$$8TI6O!fOiFZLMj#@g@(5oR|0awMN{h{Ws6ZOYH`npwRp z9B4L)m=a?%Y_ffQzHM3m08w**YBhtB#eWtFDoCel(9+_{K4GyiNDAJ@Nr=>U8rMPc z0zd|z;b09-ST@age&E}iiywsDn9Q^pd=B(%W?K`R#wxrkMVO~i1ypg#IBj$izxhHH z4-BeQf_{QCd2MkbnER+j2a(}S`WkT+$3U3mD{`ch8?)1a1xPd?gF*;6D%7FD73*1_ zpBuJ);qynk@-RI`Q_=2-aJ2q!-15`yyj3PKm?Uags~TIXfOLcTx472o^}nq%m0#2< zlw8t*H5w2&(S|9F90d_3cN#cGYElb z0Thz})DJZ|ucZ!p6xvo8f*JxijFF#1ULR=d8HucZ)>cdDr;-U}Xn>AS^N|;xc$v|U zHUtZwY%QwE7l#2f*QDw+#ww#zDfx;wr&h;^hGarW9G|DK&fhG!6p3RX@FaMH8O9F<73pT^mV=$PvdZr;N!Ft(m5Yl| z<50jS{g9KANZyYd4NOppsVeK%+f$u$0{I>fKWD;9(W@Q#Ga)^MfWt75~W2#Lm{gb zVx*%8a};q@ zY6a$j-7KuJRL0`h1OxqV?JnpoB9rT2r_tPjBCT~4)JZ8^0yPGx^2eV_tj)uN9l`$q z7(!Ku6kgs80nJK~Yr`E#q6Lu^gmB(VyM+L zGAxP!RRnO=MidzVPr|~dWZ!LD=H)^(ICx1?&n zE&Zmwm|WbR0R#PqxY8CWABIgx{{T?_T?l;r2Uvtk7fHFb?fA9HJpTY+_m6gV)@nyg zv>KSTdc!1STEMY4zXsR;03WTde{GeneEP4`{{Tz*f3wsEgk0SSH^0*7pY|T_tc+Ck ztx63EH6K2k*)`mNK(W92-;sVjt@)0u!%~&?6zV&|EKTq9u(!}(pU?XrcM>o)H6x^d zNBuA5{?AR*Qj4$*z*rlBYu@1T{XMCUN{Z8_<%hvtRjz){nH*}B&mUjF`u;igWp4PZdGyg;287nVGETN|RF+*JUe@O1`!P}h z`Sij0bjMX2gwd#*62YzbJcas_ZT)?!2k`;YX)b&>&_#H8{{XSlZn6m(nYGw`06bs% z+~3;!c|ZVDBON7j9gF(($1NO}4*ZXxDm7o8FK^R->FmM_g%uR*K4&$cDF0)QHReK-L>0IyFp znEgJGgX^nPaehCj2l{(KB*?gC=}bNC{{UII`uj&D$}pd| z{f?EWVk$)s?do#VeLWvTelPg9=Z|U3gmG`@(}5ev9-LyQ0Y}u9H{+!+&bR!~M9ix3c-0 zT|wzc8Y-iQPZ35I+P;F;HW%aQM;s1+-hG$88iR*dM<{g)bt^!()Z6Rz{{VUZp6k`# zR&hcAA1<=S2h;Iy_uub+?v7K1Gt*S-D7QY5aDP`itzpIfpYI=^dS@s@9txg6+P@!5dvT;@T_&7*qX>`#B})Cj=jtQT z9tQv$l0g2SLG=FsA8$t~{70?4(YonTLFZa${2V%gEg)AbV#JO=7q|F-g}thdY*ZeT zk)FzaRO=C>vfYtalVSkX&A8;;{XeI-{-BYjxa)oNruNxvuSd;b7{`di+- zW*t8qL68$#p0)A+0EGy4kM|p-wuTA}g&ha?f3Lfjw`=9DiVCHKVz4W<@e@N&Q{;|% z^sLO0Orba<^Yr&A`*x}OvRP)JitBZ^h5rENj1kQ|qgeJ9(jiu$Gz zd6)rWN3ebGiMZaZkdjp!U0cl8P}RfC1LeopqK;xvw((fR0d%3J4isqz?d~GKBi75C zcc^z)$?udseeu6ywQW6K_uMm8?tJAMq?2uaw%fB%rt;jgxQ(NVIH>0|kcMAfO-z4P z1xj9X-cHfCG?pMW_3I=yq3YC>ioC1=Qc^ROr6@qDZU(mYi*#avbr_kzau0PeQ;|WC zb5Bk+>vpcc>+PA-+Ye~A%z1 zgOyTSer?(w-mRx`fr!U-CPD|0ryozZr<5s%L~4L&amN)td`GA}deEEU?{w{IKKY`g z$?aUWUm-_;qpy#2Q@?{5TeGpt4%t&vL5^BjAghycDpboW0eGeQetnhm81NvL+1=jb zRriNl9ZPFH;eB)ht>HBkigzgc2rFycZKB-%gF!C58k95y)Ev;7`T8F-QP$I+Ji7g8 z^ILy;!y6=7>^&)~c#$L`wW#0%Hj>t0S?t!}ur{#c*nec1Zh3ab?jlU42$$_q8qkV) z>7`A0*QqYx2Ob%zRg5)pTIc0TaPsP`GL(;wdT^m*Pb^W0^pN@^nz7y6Q9QiLZf(l@ z8`(}`jXW@{51Fla=Ybz*K#QndCo+nZt^wgnWQu=Fj()&6^y`YKFfA~WM?q1dpu);D z`OGSjuCf9}9f#0@LHzp|?eoTwNF%}2YeVzl=S=$aUoMEjm53mcNEoM`22cARv!w+M zVUjT-Xh&pN)6DIvDACDh0zk|O0P;T{Pix-wLJ^A4{{X9xNk!GJC>+=1f1hvo5Ax}C zj;bw9T+^}{X0IP@I;3&N)P5Bc4?t2_f%=E4{{WxrwoNMYAtX{bQAn@)Ed@z6$gU1P z!_$>eJGf9(@Xz|Z&r{;9Qv)mlXyI!5miwo>O;oTz)apEJt@hz{5(@$tiw|yGYY#Ha zO;+V29$hT6$&jPU#!QhNOm$ zCJ2Z|q(;5DxF1hu&@(*BvnuK?7*G&!2=hPE_2~-A-wkLPiJZv* zMTRt@iWn8GE4-~RTSZ`1We7i^9?MD+w}Fjd(JM55RwTx=T!tTz1=KSW zVgB{(7ql!^w3bnlJpTaI^ZmUI_g6C3H4Wj8H0oRV43gC9(3g|R9qi)wARqRh!Q-E6 zyh#KyuEr(x-={_t73=Crux^5%F|v?8x~*z1Y1pxmI?rH$B)1^zqD5_nU%Fr zXCLbQpE`81*J3bi0Y~>C*hHV?)Wj35AC;O*9(AAf zj~>cql&^*^H8Kk5N_CxJ?_?r%aohuQvKmz`bKosHjpnYDV$uXgo* z@84U`DMf(5V6pI*cBrb6DdTyhK*>QvNE=+!J)@2=OA+<jK8D?YU7C9$Zu4#Y(>FY}u zj#GCzt;3Imnyg^{6rcy~K4;}Y)x17a?c!Q$wuYXnvW7*3v{9JinJ8aE%K9y7H1TVH zxAr93=O$#<16%|-An>WBGBHYjpRG@9JQh}FI%?itdCokm{;oY(KEf3hyCZ5;)ggka zOeGUb8(Zp-#DSv#e{2$c`EFSv1kf4^(}4MOPi~GNT4d9S>133E6X_(}{cUfr_<#xb zqjqUt-}QcdH}o}P#2STpIdZn~pE~ zjfX!@O^D}@Y`o=^FQ*Qjq+=)szq6@P(<=Igll?3J1dqY`-2VWv_R)}@J!rFeihf;Z znlJ*8pxh6~)9c6r-22!hpUbBfLck*&4xoyAl5VNbHv^mh0Iosy@RFn>R+Q?pc~ArP z=d8;K3>+#RE$IL+`s7`Xu79u7+jU&6abGjjD;jZZH_IJOUr4#Oll`Ce{{TVs`um}v z;qdiRC}=w1Zl}_^ugFls;{O2ak#DcM(>-_^3UwM+{UDobBwGIfLN9Nn`PFWH_$lk! zzI|)Y{{RXK-TBOCTzr1pdtW5`cQH@9^LvUt%a6$Aahtmd3^*#9Dw@rgB|Nm$S$fKt zvT`K!uHH%GW{54C-o+aYrOdl?JPZ`gbZWqjOW^|QMQcU`4j_tC8R(yUxsni}0Kzix zsi6mkXDK%{z(8)eD zVkW4FB+&iFM_eUb`xpx;+(cw>^D}olaWu|!(0?zVQJu#B04v;>j7mfcRRFLoNFyg1 zABWU}Fh)t2Ze)MD8>_1^lVs^UTf=13?%E7)6>4%=I@H}X&y0_E%Y)40qsCWBTuoIc z*`#tM3{>*Ta!5YcAc|QFOvlDrr2(L)%ZaGL86LDFqG>EIWwCz;K(~1j$8A|(Gz62R zD;lc}HKr8QfGB+XCA2Hdxq}sEF)8i0a83bxKl@~JqE0b2m5BfY0yz`oZkLT@0;DZTz(gK?D~C? zTef1st#V}&YUsDM9aR+dRQP;;YKj3@4J34~LJ(fXSR|St)$txf9GYB^Myl!nk0C%s zUmP%N!=Y?YTGAVPQ5-g~q>v$CX|GEKCcHx8`h%ZV z2l#+I2MP)d7hBzZJeM1UicNwgx{mR!R4$N6ji?Xlm!g8%e2S7oWLTm55mqT*B$ zy^x`Kay2#d)l?MI2y3cp${GQQ^Hel%9CI1uSpNXlCAYW>JZDI06}&T2#~>3{HQ)~s zii5_z9LT0frIy{uwP-}?MO9LcP>`!i_=FDDY%5l(1uE4(qkSVQ=c>j|qmrDIJI zsTe?b3Yrn?T9_u)Jn_K=`w0?Ni(F=f5;)gZsR$$)D}uz)fgsdr(#qaUPC|~VzE+Dh z1tw04T2L0ETwFBR_4|63@w`Slvc-#D_XLro*!$Dc3+QgIiT&obvZ+u51q&Mx#EgdX zCcbzB$!O8IS;+;WhT9%U+&97{Ehln{gH@#|N>c#TSET%F7w~$CTuO3}Jry=6`D8OK zM3<<@R-G-Ntm&m}L2gGp5=u}Jw3~`D?mejsRO;4FsT#HXN>3c(o_!lTN&CeSbo~fN zX>c@^9kHf!+G=>yjx&hUlxL$#R*4{S_DtoNER!lMwY3weHqeqk4PXL*ZN>f8>g6Kv zewe9*gBuLdjVmLOQCb|H`k@o-GQObnJe10^CqB=PubF;mWE1NnCc*EYIZV4TIMxOmK4TPnq>q<;gu&b z0i-)g$!iOH5(T!BIYi}_%CzzWTqG4!noyEg0;K+35h=P!(cy6O3L0^&b5^W8^#Z!M z&@L&O^pwlZQi4_Sl$IQT$;jyUS{W-Mjp?b~V@SZLjtYApz$fSru!ieAJl)c$S7$fSmlzQwr2re zM2bNjNfK*T(=&-KZDFW=Js4k(A zM*v8w;+#f5XIu~@5ekD_D6csQmZp`XGMI71K|5BXSA~f$7`wMCW4}81S|Pz2|+1C1&h45bM zZf>cmrA{_=*8ykhGo>Uo{b6GVp6%pg{nA}}9FEC}tvP`WE zlgkXTvi(aJ0>|m>V{LRKu(F2bV@vr=*C4NKX$)bgnW@%66{)A41v&^_ZSD29FhalX zxx$91*Cdj(ky1cG1OP(ZEf^dHBvYgH{G$3-CA@o+d-nBRM6_5gv&Kn5J#?}?>vH>(?je^S9Lk|5 zscIM;$<4%aeJ;R=meST~9`5D?sh!ylteR@85=N1#p=feA{Q3}cRHAA2>j=ORMhxba z84KaYpm5SwNh&K*rGG1@-WbMundH(w;!4P3&{5+m7A9&-BIyqjMPLCpACq!@h4%;* zA#s{(8jqkpn86hDKkT8G#FtgVe`+a3{5d|Hf1N+dZhju^#IN7mZiu5a^&5&jZ6sAu zeZ18bGT9(t(4QR9eb@_f18Lw9_4Wyx4-pa{X^<|~m}e?LyOIsR}Mio6f=DfwT6$d)xYzQvZ7K*&@JVllHKAZ<5|7C;pL z073nE_aO5*R_1H64y4wYIsX7cj~^lF(N`u9_fa_{l6NcYlb`o0Vf=st?D=$CK09|8 za`aZ?lY4Y`Xm%e|ZpMMAB+Yg9=E?2an#^rU4O2sqN*aWMzKTYSYKl~JHspOhnQSrK z#HH-zk{4l9q>46iRbb1HT2yq;F-a20tt!O9LCX%|{@78de8DuR2Z-v`FrUn;W_E@? zEsOlh{xof0l3Q0G7titoVqx(;ee$Dkn370nbC74T{{X|bw)RR2sUq`I)j>?vMm z%v(^cx2uRdcPI_!-k2poGJ*{%105jO6;LQ>X+h9l+RDRlkjr2a8}=MyB^Z(kppv-_ zLPEIEco#iq>@VdgotxE}pOnALtF?b0#0?2^BQT|t2X>IkR_rC3w?OfgeJG1le2-F8Tl z%W^?Iumwxe$pW3F<6T6IP_$qS)D1Zl`P;d! zf}d41Qg~FNN*IQAVSC(P#jSp|3)@QllSXieFd2q)k_ppHgF;E62CEEzsQX7{^ffZu zy(sdy5;E%`Gj|o#L1m>?Ks2MwHPu+DKHj>LDy+RsEloo-1~~?Q2a&FK$x}}~rAe~Y zRP_;}&*=MDA<_XR{@>L0H%%SL4>W{`w3>&Bn3m%}WTgN&3bhpT=(Qu`jm|hEbmDr$Q55&dmQIZC_0!=~CgB0nwEqoV_d+9tg9HmPy zY-kZmsP*t_R|r6sc04$Ao2aKueN8nK<_PAUt12R|HBDNXBx#Emq+P+GL|sjuhh@~1}IUgv3RNn#q% ziXk=b`2bIssp#hX8ut2@<=GL`L=Mu zO8P1au_bkaQ)?`?S3kR_;MqnP(oRZoB!3ijtp!DCq;!j$w$-|~Ji%(rB}4{LqljOI zP-*4xNJcQNMFF)F{`$(tC&?b&t)59HKi}-(5>Ck@PO;UpM>DtrH!=lRxY7x=y@aB> zi8+p8DH?oL$>W6-q4}Cu9SV7F(Vvnn5)-LjH#&zCsz+jR=4xxliRqi~M3i+|6HaQR z9#(}xl)$8gTZpe_pG%OSTHNqJ_C1lEAo}G~B;k8N_;m2CE5u{=^jY-9E>h24gur8s zU$^*bGhdc^iuIZ)QnGVI5(r~TM1o-@T+JeBm+ldYK?JBQY*d?ze_w1|T_Z#FH?e4p zr4ojwzGE~MryowATWwRDXuM5K#JOQa032yKW(V!*4^ufMq75)IIF&@f4CUXD@vSqY zGKDw&LgN1bPhs1cM6mrlEXvxr8ftH|P8yWrK&5G(g%HI`NJ7vGV!CKNj-W`d%a5;6 z78u@T4>QElK8bXidR8g=nc8ZHSi|#eBwEAk?E#J>I<~VL&<3W2B#e_*sMVTMoCh5A zt)z8~=}^E5it23er4&}5I{sZh(yVcPzkwyF0OXiWP0XqwrS!C|ji{}qmfT+Sz!CbJ z>Oqt=?TRweLPMQE_X-a)8Du!X{Xf`vl+Moj{8FfYOlfWhQ+Wv$7<|7{wcxw~$4^mJ zQCozirb=qrKf4w2s?~}&){{Y5BgEz^xuaPixe@B{xHigE`t(EArABwH!~szH zuLhdpPudnPf>&S_wD|ob-u}^BLe0r@E}rL=M;|dLrks#7QHpiD!(MQ*B0>~JH)#A_ zpN^C?97T0x3R9+-=_uN(5l5DuGxybu*&4bw@>WF#T6n45XY-_L)p*&VcQ<_w7y)iu z-BWLcZ|&@N$6YrP>2n=54;_M%Nd#(*hE7EVDba(^aIjolZR&qYKhsCT7Kuv@G$*z| zK)|S>Il$@0Y7vi`hL*04>FOwdy|}!EZ9MX6ugKvAL5^9KtqaRR1j??Fy9p!G4YeDo zjs%JeGdyke!p{4|C~2;HV<1A+plvaV5(y-FWOR`(#pF^=Z6Ii+7LuYc9g)mMLen8+ zBL#(3wGeOsYKEC9DXFR^Rw76gz$S!&O^}AN2dk!dy#hT5z})asU#0$x#c2(^F#SS5 zh4it=3#g*X&)&2E04gzBcAh8Abh9t2x62@3ke}(R20xxQ7c|JsTjc(>q_q= zA}I+eGSD{$2SBK&k;5AL^da^B`rN%`zqTK3?Ruyp+`V$3qTN(e#X>^kAQC|T08N$8od>T>T1geX%EA?aRUk8G z&Vs*Y7}B1n<@WXXz2BQ#F%;GHSjk8&{!@ys zmRe~={W3(u>OIDH*1t!2CAl>U*!w65{i8h%Xb7p}q#SU_uS3>>{y*;@@lR$okvNqzGVfg<5SliuIm>iiMyTCln!}0UzQCwY{zq(EPe# zt;Cs=;`x8FI%%lKNhi@q^!goK56Sv{eZI0q#=RtE5wTUN9dM5j=H7-D0`>yex8RUZ z*WH%s5Y!R*p0*NZ;D((|OiC&B79@QK7P!9+b^gBD@yE-f0;9+Z{QA!xDB9p5zxz)= zUTt%3ee7I-)vkJF)^<#Ur^p)r0EemZVzk(h8pIn}bdovxs8-;Q>+L+ZhPkG$m=MWY zl_Yu}^;fBhjXpraHC{bmQZ4=*k`J~T?MS1L2TCA~yh2J)Q|JDErzHz0Bn7)3bb_P( zr|bDQAp&Z-&r|Li3`!AN~#WiYhr%oc{zLn|1 z8YW@%3O<&#t#76NhuU_TLF3iQW=@z>OJ=vj!UQ~M8D z;-|8;)P}j^`j711_aysjXHqhM&C^FwY92i%kp=Y;$KwA0*ZThek3ZMi%}vr^pc;-N zr&?xfh13ndN{c8z>_Gf~Pi;wB5;q&TaOhTVRi;>Q+_^rLA(Cl;4hA?TO z2G#Tb0E_iA20KC z%(0>^Km^y%KjG>emk0EV^L{V>x7PmDXQXlkdR0KDpr`mcj?v%yEBWJ)f3E;>Z*IiL zR*}Q1Xi>wcQVjrtN(-A36^TDyK~h4G$F(HWA1n8g;+g5_2XI#SLlA#w`TEie{uN2xnCdaw+f)>-t)$o;HPl!mOIYEsnT+Op zBiK8xTFPD!C0+(7Vq!HNOs9`?4$2>Hj>iP}J>xDm3=4dT#*pZqlK=?R0G{ERT zyLeM?cGl12YsB$NwJGye`zzHa{{Sk^y25QPqNLvS5mml_us7x~L|P3r@Z#|BoNXC1 zTzMcBa8ycl0=JM8`bV&wPLW&Q-bkdFX`lm4l^6hVu0KA4liWP}ocA5N;{_0&0Bbx! zG_Iy2%gfWP)PIt<$BKLo-0q*2x!PKZw-0e{dfkDrA0mlr9_$#=EGN1G~2u zo@t67@`$OSy}%y8yS2#P`Qm5P8q;I9j?N}gM3PArCYDtL1nOZGNUD@-ap-ShWfi4@ z+$cX#;09yoUqO(he7@eU;fXHH_qqBL&4;A%d+ENB>_7m}&E`n{T{vS7+R3B({{Y3~ ztR$25JXrBz{vYvAdyC@yy1JoLQq}(eSJ}{i+N}!pFKe2uG1EuZyXB>M187)|*~z1p zU`2)8dl2%-bIp5GEq~;p1!?~PHBkQmldl0(d|)FV%nW}%zHI#y*jWvov%4cKlvOqR zpCcCdqNkz9(n&#={_j!aGZYb;I=2f&1_~Ol1mpp)%NC*iecf&RPGbSrTpv{{C&{Ij zVKDU}%%il_40;ZuE?V4L)-=19Nt$b?sUoKiLiu1)gUY6-j(XqMdEw&jpN5?wy?kP} zyDQV3W4hN&t5Y+*Zr8+5Uk}_w+GLPaJ2MgWApZbgaIds(_gs;;THLiRmdz9A;-M<% zKhgwK%c-7SegKiM?*iBJ$;apAzRYa}|e1ntXazTSP2ZHhK?~kLL~CY1IY|< zDr?XHc1o5vAD#!XMYPHR4ttuFrYd~?%Ad>f=sx!49hwqR*@-2)!6v)|U}wmEol3?` z;-XJ9vQ-HYykM~ku0a8mC{PqPaK52I6=SeRYRR0Hj0lQT-5*Mipg&MQ+j~B>L2((1Q<-j~3+v$_?eiG|gHg%# z=)FbUgTj=4lMz~J_(=JGlQ`;3RlZlnh-DxlYMQoHQuDc}T{QCDY~Y(%9tY#viKUKc zv^Q~SixZ!SDFFPw!H?V1l0zJ{X9lZUWREIm*XQ#U=}{9aOI-JyMJ{P+osohGQV6cb zJtNSB$N|+E^2!AG39_& zOp87L0C?+YJv?37G#4iP-u~A+7~>fli&W5jhwS@0VrwYm(iXK1TGZnla&z`(yL@ znp20%AK>W|UeQ(wWRd5mo)oA)ZAFZO$soCA7ml3xWESom_>y;9js~>NK1RNM z3mQ1eG((Bw)3tR<$sBT+#C~J|+GUZfqfN*pl6e;=>u+WfNX;E&6sY-m*P{Da3OS4# z={|&X%Oj}_ujC4`p8_ek2Ks?-%K}H{{>x+mDqCFw_KrFK0E^*Y@bqMgz=FDJPjTxC znBEs?)c~gm&LnfLSqairSNnG+_WA%lqKasi29XA!q*M}3N%-MSac|wV*FAfJuH75oc4aBB_zX1+Z6x#6RJcV_p>)Mh3f-NJmNW#O zJ(1n+3kYkei83x%*%HYp#K1rr(Az8jgFi9 zd*hRJ{F~kzeh=>^;;DuysP?TTY6^+AzSt5LG|7*e-*Yfkns*CxV4xP-+O_dZtCRXN zRI2(@*VL2iQR&l`mU2fj-dSFRA)IT#y3K2oTepKl{p2^V1jH@+m zd(tx_UNTW!Or^s~{%o|epw+=2kFT>EX>~Yht)0f5rZE z`E_cWCK(fD?KG&5#X4>5Qao%yF*DLa&V+$$gU!eF_Ee4}jadmOMnBc-)gn-lDsUiE z{YRywPz_cl{{YwhxA<~B(^FQ1s%t-&QdS)-)&oz~K>q++kIl&^-3zy!DbnYHFoc1S z51(AtH8EQ3pM>n??E zFMsw2>G}6?>^OAa(?jX}&s+>Bzl-1ffB32QqQsqEW37EOUSOZh{{WM$cGIflX}9zP z>;AXr-q+5&I!AFD#~@YVPx79lAmZ=!JafnR52c0u+_Nd5;nNO?TD0qt9A3-m9M}MU zyqk_sy#uMcx~WitxIZuQ9+{+<_W-rkSdpateOF=#=InpldwoSd-jlNe)f_9&& zZ9e7gj=J3$MaZ40)Lm;1N~be{-I8HqPD1^ zQdHlOM$(P@z6iDH6rOUl0I>{_kzOXNs1GWimq|AmQRP{s{=_CTfZRbmF~XqYpFXuz zkFYlOH?wIs9QeFW_^Qut&9hZk1RHyB<#z^8an|H&8v}$&DpR*2$YB;p+BQopv~pzS znp@ZpXCWq<$jH@Dt5vVs2lx-4&(o;QcN-gh?AuDBK=>zsr*ZhOwIomqljLYmM8~r- zdw#PyQJ?ek7WOImekEU-5kqX}!ENLWSdU`c(F)E8;5v3lJy{nzeWXUx?5h z&uo6b+PS=y1RJ+$VW4WPwo`d$B&yC*R!B|`g07mjnufm-Qfs4J#^B4WP)F#H z4Qd)d7_N+Ms7UJCgCf-b00;$5DVmH_@#9?MrLdWsZH{QIH8|IzY&L#MYh&ZArp?q%6!iGq21^Z)jMELjKH-L%oVWl@ z;*nexzqKr}{X~&rty6_CNoopLjSWB<86H*5riM+%MYNG_V~{%6xPqluP?K6P*3<=^ zNMNCX0FVHLGSyk^w$hI>T0OHxwlSN3E027?@c5&j0g&<5?VL?DHAIy-<;(6WxaDsX zB7WmA04;)6mE6M`u87%mvs3}8NL?U(wBUFOA1;+TEsd1(D|pwba`Hkb&U_gMh_53s z$PovnRDkSGNNOQ7_}c9D^vlwPqLU$#&9xOKBX3f+TNLw9SEUT}6jOrnB%j$S1Mq;g7~xu$G|hPQ^j14~`db^tmNN>5nbnSh z^7k}sL*&(ljv++?&~OU#6%8&*nlz8@@^6cV9K7?AC8^2esTfqWqfkI;1i%IWdXnd# zVO#r)gSa(`Rg-d9bV(?n)vY_h1GLd=M&dlYx)^QHs#!a+@a%-;p;h3qM*X09_tLb^ z4l&j|gw&z&m6(vw{jDV=MmW{2S5rX&ha;0<+Pq>{U^v`X$5Z)w?YJUQ|RyeW7g9O)(Dtdrsjn*Si8!WL3<>cR4=M%)j!$ZkHE^yo(g|(ebTD9Pn_RCz0~K9Bf#p&~Nc1`Nc*xOINsX-i zm6|H7?QLu_HDxH7W~QNvS#KCR-DP$J|y(?NJB_+H|v!Gr$l474iq?(t01Wh8lXBw`z*N;?c)dNM&G^ z6fa7%MJ$XxMTD12`y;p05fj~JXSxxx>ca+2O3j?m&{rG}oq9Nv>SdMSw*esfa#iV- zaK%U;DrTKWl33=)u&7feM<)X9B$ zJ8J+@g2X6_1wI_{#xeFfi1FSJ1c7G+DinEYVoQ>I%>vW&_3BCcZ{iIi#TwCNg>+HV zIy{XEJTa{}G9OX#OBgz@aisfKCxvafN(X(Vp;1WN#qjhtlk7u@BB_iU2FI-7|jjvok-Uh`dKw-O?(pDKREbtMf>V;@aHQ$^vy z?V74uT+L+DmZ_g1k))lgrjj#x%En~T6lg+)Kt7|{-My;ZTEn$mM&G;br6t(0)LK*~ zN*{AzC?W>EL=iM3PF(UJ49#JWj-$yo^D)7xt5!X$_#Ww>7nOEC!?TP!v*Y z!9WbvJ&o^JHH6XKm$?sNNhiM?eN+fYBB0LCaw65c+#wT zYHij%*6i*l;VwdAl#lS#1Cmq&Q^VvMoe$fS9J17rZA~diwdq!EQlX7(JzAMncmwEv z*Y*M3?PQiY74aJoPXI|AGmeBdA~hma0D(&SWYip27_B~7r$_VocWlMU{Fv#yOmUe_ zR{O+N*FiK=q;Cd1$zNGA!bz2hj-UMEkgN3i`;JygKYPZ-a;_P^#K_0VhacO}>uP6X z;uHEM@xz9Z>663r>sMd+Q%6!y)t}Adzvh|;6g`DOwD;uIafck;nPLJe0eev83kP*X~Z?4dn$(m`%V)T>O~{w{r;ZeeF+l08VI3Dg`Qi zNvW=D&~KH)THOLk@q-XE@dHorR-fSN+CSks``ahC{(t5+3|Xq2eGhE(Pi10T9~F90 zMPImfv{ZYyY%@VKELAyLLyD@3oPcITo<%|xm>Bxz_VaJJJC@xeM|n*^f zlNHwey;)5};~BU26iKE^OvPP1hG}bjdfC@WXSKb^`v*E$a}C5>Uhxt^y_FPFJ03zX zDe&k%fDWUr=a=vH$(nt+im6lEQ`~Ss4VpGE`2cx!sRzivk3FIBH?ud#QufZ@IDN%{ zni?AVB$&^O$z$?bDkI8m`nbT3u7;&!vNAQ{Qqf2QGcUFGmeOpkac_ATRx#C-F=UY> z!72@CSI7!b3RaC?mTlMZ?=nRZtatFaIiY1_6kTV5RtHct?>PZk2muBfjdS@*eVra! ziiQ5|&I52(R2V5~qcoLrOGj5UO4TT8gmKfu5}gR_MY+GS+co;MJ94m5ZZ*RpVtkEb zCZU09(SAVu`g3%;J5`jN$nZ%jl>K-S0cJYX2SqemEm}ruRH*q=rzxtWrm4u+&rTr9 z)8$S-abcDGm6-XUdPu4=v{J?5rIKv)jU_80D-@+!LG-o#uUoRG>LEe(MnU4na?#TP zffcEj;m$;0@Zr)lwpn6^&NtU!_To!P#bR)3z(4}Z2_mwT;L1l?*(&ls#_~BT zTqOyutgNUhOi^IWHYMe%^U}{P;h@^Mv*SS;g<6dwIKh9?{hYJUB=TR!5(1@NO&S z`V0UwPLtb7Jon}UI*6JXOQxpr5aK-vq;QUhQxjK}j)P93P*f}w@i>ts$hh!S)i#d} zR8q$+ByiBPv)-PDY9pnWi5AD`eeTBV!B3|FTJZdD!CJM#0%=8{0Qu8b1Jn0VnPz3u zR?K%Qiq%LV$$A0Y;qnet)N$!YNtJ|DO9d>_<&2ed^G6rj1<5PHEHze*)j*DrNYV{g zyQu*10QR%Sg;=W-B~59-)MtqD`T6usabY2eWtmpo2-p*^^!tHaisk926reRDB=st~ zYIjKvI7=_v$5A$AP){Qz-6lu}p5mfN%$h%~?f$>D^UkmW(Sj(3pmE{n^YR|OF>4&E zz+P!xY@!l$ir|9XzX&wd_H>7#GI1erz3N7xZCP-wX*lEy4H05%NJjbni4Jzxa>hqP= z`C6B)tjW~PR`s(+q|{9EnHr#ifLOBrkO2Hz-r}iaxVGKp`nt*DvobIg1lJ9ZEK;A# zp}aQs(Cv}iStyPeR4$NC1u06_wa*f3=UVh7V(Qu~VVB2Jfn6OX4Hw(_?P(kB(M!a^ z2?K%v=lXk*3a(_O_BhwxF8#6&z}7$K}^_(W*K# zI;5=9L<|zZ5^+5kSJO>W*s6wERF7It=H~iu$Gxt&>aJ3w13>^brOBc2*!`j3)DI!) z+_I3MlmH&!)m<-+8ERr=hPGvlJJm$XdRiKKg33OY zmSCryAYSFRZ!B}|v84+%I(RvtH3R|>5Ps4?@&sq3+q)sL-8BXQ9wrnhq~Q&FotHH8 zRr8@IB1YEA)YI(!;kVQE3tOZ^**k7{+{w3Ytt_$4X$+DmUob!p2py~nk_~H4 zBczO!L1}S9uC6+&3VLcvi7H`;M>tHx?2|!GB{9j7n-NtTi>W9ixI7y)Q5tm zp0*q`d94*;yh05B_#H0jsDjB{C41!|byjmyzX3&SJM@8h*Ggm{)U zk~AQ{`)_6?Y}#ojwU8TWBJPca4Nqy)PgYSvap-b-L*rj6$8Ri0SeFh6U>23`)tZn< zH0j44X~&Kssw#0nkyMD(OCg%;D#%@UCOPB`E%Y2--pp;|Ll}Zn{wt(ld_jQoW%C8A zPn|Q;8?iTYnl!#CD_jb2r9NsXetms3{{Z13KP{`fuladz4~`q3Fe|rD#J~5Q?a`1OOww{@J3LWc4};r;_Q@$In3(KDG4d zXSYZtw$@MMVel6uAd+?*4WB*C?MPsaBN2hk#K&7-(O+=mNJz(PZ8G=NMJt( z-|v3?*1E*%7?4H9&->r_d-uz#vMc;Uhf(E2eL!#rKjF{(Z{C! z7?okhfPW*KkLk|`-7B>U(f8Gi9rY6+XlB9KK0nUcX z*QVK{C!2q-{>S=X=y~>}l|K!7M{yEH0Z~exn&*I?2j=$|;GgPLn|^urtyn1)=^YgO zTsmu(lyX|*lgIk^{-cZk0Jiq2WTEZ!>rAY;j8uQC*QkPwxwrt2sJI{R1o7=~xK&*b zllJvr4o1lz;Om#zU;88eO1Jyh9@#fJ?H#=`);f-&GJa>SLWGZ}AML;1{nN+!bm+Hr z018li{{YzQC)f^d0W37~EJ#0#{{T;J8^i+--PZ)p%jx_6-p=1Wp@&3L40ONkz z6Y0n%qvz8N;*pR)ms#VZVnx&eYyJhe{{Rc0_m6DJFr{mrsESK>4&J4uA_M9czZ_ru z57hI?9@sMKz&$7dQz$5ZKBO9Dzo9S1jjzSNpF#)F``uWMt*nurrbSM+2E^LHn~}#H zTkGu`4M4H2YtpNDQbjEJHU9uNQ$!&`=w2;LcpkV^6NwfG{|{+`=uSn=tGM6RMTetiZ)q!k~~ z4hI*%`+xBED0m8jagK>?$z-c%x31!<0q=X*pUL2l#|Gg0OhF=@JggOgUO3Aw-ZxAi}P?bVEwFT@V100ujeau#+!4eMDc7euw>jKOXFE zS%#57eqALpR8R_a$f_-@x4o}n$S3j5_`lcuJfbqahy39n7FAq1X&oc?(JpPoIx8#5l`Ty&mt zVtp~ySI~6U7gWJbz*$w6$LYJEhdwVr%;cUo^k?REF`Yula+x zHf=PNvW)j>Wb%&47w=iNuF=}NYLb?rVRBvpS1YP&TY{G7pL0&^%V)}VOH4JU+YkFq z7Z;K**x`nu=U=m+)bAPIXPQ+7ZQ^YCikcstbe75T80q8VM%aCY)f;yPl~TmpQ>!SY z7=z?Wn0Fp>k;{jWrxg)bR%wi%%%9`z6>o61_OZ!0q-w1+o{k}1V^^*h{QUxUX7Q=G zPC<@B312NtYIu5+QR*qcb@WQDsnoHhNe!C%j-}~PVgZHlYfmcqAIsOJ z{FKbb$Dj5V{{U@kgU7L)cL7&CIz!-sDA``HeXgE=Hva%&Za)_z-GuF{P_CYH9{bM88Q2*IfDoOj)Z z)Y!ZgI^$@Jq10I(1yY0Qrq({-j!Z~4`>E_Lso-1gEU_^2M}19CwV8n)wd!StcAsUn zxMn5V1j#k>;a@SHK7Ci;cx*S@TZ*opk}2d`%DEyZN9~xVH8alO5oTTmzb8oN+?f(b z1>BAR3erEX4M+Yf_Viag4J3GK)Ps}fT2S%EEBiVs)jCa7^v0M;9TBUL$tnYXB<&!S zF$7pT0yra&XBM-^9LirXx0Yx}r8+FRNiG7wpoc&g*CQ0i%M|q-M@$mSEMOQXSfz?Y zSBOSj6m|kj0m!;F{hr6#m7lz*I&0;O5Aqs%`gDY-Bf6Cprr@~6|IsX7}?Od`yhO@#A z8x;FL%4^rONU+>Xs;Qt6@;TsXP86rDIC1NpO07vPQmqk2jaF)B@tq43Ja9^XF_*I+ zq4u4on2z9akZF*8dS=)G2w_^DKW#`K%ciW9DN!9H5XvEl($r5byR%6u%z+RU(i$mw z7UZ6Nrj3zHI}pyzQb`rz(x44-TAn{Y_^&R5&GOYW*geW)MR@-JfaK*Dlf+S|=w=bZ z2L)0|29Kr4QSInrD|rlv#)myVJUt1XnB6bPu;FBG=KjH2z=5k+|??ZRjx7M^#L-}+g`sr1TQNY?5k-GXSJqpY}KB=zl)TAYBj@F@aAnFE9AMgtCs|rKmdRHBwZd z)eLZix{(kgQxRceNwSZAlI?CI&_N5s9=|V_RgT@Ee%35cuTB0!=)oD%L&H7nf;*3= z=I81Dx3bo`l6curu#rU=*BWc*^RG(^Dv($LzMnp&P*F)=Q56j;$yrl8vD4C0)1$n# z6%$C2#*s%DFD#7BU;rfhNfX217k2$P&2)@Z{{X9xRhr|$LoA8_rb+Sx{Z#z=-(&d> ze=BS+#;&tZlD)Tp$K-pnedCiMwB?-^SJ}IAWLdtzLs1cyhQ6gpX_+j|z`cdNhnC!K zyNH~h_ga-S;H3J~Cj*5}1$_G6*&E!l?(+f_lnB)EN@S2n;%~+I4tD0En}PC^X+44U3ShYjTHDks|v9E!8IQ~i_5cGs2>Ta z^7;P&FZFr#aQkIiJ-4=_p5A1@VUm3!!_1iY71>mt0VCNpqBM38$6oOoivC0S*1a@^ zj6#Pr=}`$*xdV~;xAgx2ZS~;$q@<1)m3uw$pX6{-g8F`Tqc7J=sX$dPQ>-l1Lc^MLkEU>M7O@iVi-4;MPxge{EFeEJJ+R}UQbvB}+U z00bxDz^MZmuMd_#Ephucnu~B_EAtz3XJ+Z+#L;ca+@AB!S8lw$CNBtSA*92=nGB>9 zpL13x%IKt65LQ&kQQiG0eVxMM=lEtx#dU6E9lIqhEh|RU5Vb(4 zaL+EHWh61lRz?i#6AIVMPHTaWu=E4fI6!c7iYlqlE4xY5-w{E9z@dzj*E1 z{n?z^{{Y4}9vX_XW_1@=;^^^}n7zJ|WH)70)qC#^vhX-KvNTnDiz5l$k)}$bXO>Bt zIaw#q38N6T z71T*!K?9=8zw)_SJ;_s?gyOc=cQuOJxhg2qj=qkk6<)ba&O;|#_PII{iJE-nT|AYd zFD%gnoD{I&HE|rMTf~=2x~WbAgcc-Inx=EU>z|fxG#BeG3R=MkFsc5gbrl+`Q$cY||6FS=sTirXCq7v$+9TiC32)1!Zk5T^2A;Nm5`A z3p}h?>GYjM@R=;uNoHC=WHEpf4Fn~st5ZNSTGqX!7fT7a=08e_J zIqdJ@w~lvPg;iD{aMFQD`Q(z#z!8zrwY%9a)g|oct7vsORx|{&RE zUBQo=6furz>FJ;T0YwxNdFt}*M=YZwUshF%M+D|oi2=5y`h5?u?&$=U4-`Q_lTxS) zmyj)dLdVdGC>8V1r$&2CD!n|YzO7A74KECSq@U~0w5pG(Kf`0MdDd}l`ur0tA(d(cw~P(bHYhuBTWKHYx3Vg^!AD~AxO+> zd`Cq9){CV{3<~k$15=9=kD8XDmApc_5zi6bsDY%Z;Yu-H7#@6jcE_v`We8XkDfaTl zq6&!S(^4cxk)|sPD?=1B!=#_+{?6>+(Yt*fj~#&-Ae~hjfycrX*Nrh#$D;eTmRlN^ zFl$rXq;}BKnc_;C{iCOb`wGegt8YaNHQ9MS$TVT8G8NRs91RYWr12V0jXH}TGT&tNVa=2_+>WMzgGNP*xU zVWf#vk)`Hf6mm%nN#y&zno8{Zo!q*vrhtMtltKVd0nJ$AyiRy=>deU%Ev>;=gv8hQ z+N8Pr2NUIra2-r)TB%b5BG(A#OlCprM=4Q=qQ}oYG=fCXsFO81lAPS!T!MY>OB>U+ zS)>vbzDsMVBqY(Hh9*!Jo?jD@{+o!;N!H>B+U*Qgh|d^LHJRj9VM9_%hU4TjiVmTq zRYIRO$R3_f<7y%TbP(H5DMPik?TNStqQf z$!Mrbf*NZ4g%pfZQb&ywjt3GOLh#GDhayXF8UU?ALI(kx?JZtB2l6qj)!b6X;@Jw^ zrMY6HfN+l(DpXNX9devlpI(#uXJqF4Z?gLLtM;W6WOKPp<}(tI(W1(<^h;Q>RaKIK zp){1#QZ-DnlWj4P!1e~+6z)5OJAJ#CWpGHZ1YY6>4k$sd2A~!68QIDEvunHD<|S5j zAu0(iBaJEu_^KFEfOd+pI47;s@w+1(*Ij9|I{yF>Ue(mwD{JF$ao0-F8S4!yX{)PY z5|2#tfa1U}uaB>@t}%%jP;8Lh>XhK_OTHO7Xy_ z_i}PXa`CG>Nd3B9Wz8D`ht7GzE`F?!|tw+#v z-P8u5cN-YwQ{}4JnP26oiPy@cAtd9iGIqXL(vP%I!ed|$^#p?&pGwoqrQLqxi|y7T1e47ItgyYj0K&Rsk?wdXFVC?H z-p0xUtz@U2KR+&l@NH5_F_3n|uTVv5N#jBDKjG<9@l(6<9~?eabT@p^$4M;RZQ6TR zbJj(XX;zA}4EY!-v-I^wCRt;Ovk_TUsN8|%Cd6<+o1M3d0>esoWbooeKb=qQ>O-`4 zOLL<5 zQi8(9VCC**USfdl`?z7dQB_@PK~y1$2h&QC!};|e-dNo<$8y^v{{R|*9YIJ@C^b?T z(9nwNQ;HGkP;~I$n*(%pmiW$fcJ0GdZGGFd^A84Imo-k*b+j1@35iO2i3tAyC83u7 zXrvm9>d1bCdurx668=rL0IJc>9b9AKsRFzLlS5k7h|WbiI<>qPc7MI34p6C##yE*!*RhKoM?>tmU>c@K#BpS zMO3u)5w<8&(_^XV{_iU-L*yi>ds52`G;`v1wniy@(Nt~x91wlkZ5ODhkOm~Ev77~D zw`pOFBD;Z;LBgvU0A@4*G0t1&Pel@`Tcws)@g#;SX$nh7tV+pnlprk9HDXWzD21w7 zND9qQG*xXDB4wweuB)Dt%O!I?Wf6FxqNjpiEUaUL?_`mts|V_;k$?@yx}=Fbf4Z(5 z2`j3NRzXSt2MSk<3}d%A>1@$Gx}Cxz@>?Q30#O_S&dew>+5ig|p)BN{B1K!p4P*G{ znU@-Yni|++j%rHknQCN}TAnqvbQJ0qCo$W`8(NE!J+3l%mmVFojL8TUBxg~n@*VW3 zLrwyOR=qK9vPo_=qJuHwgq3tqpdCc^GiBFT#734h73t?4lBdMWRRoI|h_*p4K!`m- zgvSV{s3bH|B(BAVp{GyydsE{@X{m~UPO6_@u<##emqpi>Q*IH*Dih*TGwVgIPNnlC z00E|J)7?T;WN9JDV?5C_OtHv;qcn9o$d%@a!2&n(qW-c&89&C}%pNO?&(w~&85kgn zYOk&-kGJ#avL=eo;jHhpvW2KQ*0jI`d5ROmhMuEj5u|4pg>+Ov)5A{!%+)4=rxHQlxZgR=h$zWEh3)VRB1wl1R|?LP)k$H zkO=!T^XO-=Pa-ynA5mdeuXTKY2NWKBI(EQKC-9|;l20o-x7|PjqpMunMPdnO900Zh zlm5kS(<6e{vTUtOLHVg1*=m{ zBA$6QAmh`hiBkkgQ6v|M>tk^gGKnN=c*y|D(EYTLR4Ul08kB->W9^5zi4moVf;8$) z4;*khXhF}}gXz+ShF4@sdzLm8B7;%%2T&?}_!^8?zTRXY!vHg zplKu#G+>X@r8H1bd@SixfMDo|xsAEpbgh?wa#SzKWE+Sc3O}}hL*CPDe**&W&Tv-$vSTV+$e-lt^J{>{y zp(BL_dQ*DA;oKvhjH?nFY92!b_-o>TKcrZ3rYqE~wLFx2V}4b|LbWwm>Z}E96H7xR z?M+bzdNx@qlr)e*7KmL~N(!-Jx96JechXwy+m7IoB)72MM>s6CA=X;efH)Xz6G{{I z^q+c-ZgW)wHPh=n(T;{L8bgPFN)o9 zJmghN6I9Xw13~=0tudI@%&R=9B$5Rw`fdmG_F1|8Y*z-(F<6o~ZizHB@f8N5*k%V% zz@W{1x>dH?S(t-Vc#(;12wu>1v1(`)P(TEO$3H%s7J6Udiyw)gof?tScw~1HN@SW{ z6%m#ZMx-gw)-DhA2ipd9dl->)qN$ICNGwY?caW_O3C#{G($$R2-5e^EF1qA@A zo+pk)KtFF-s>M4;=f}%XW14BDXc_}}HBEJebK(AmzM>vLvEOBdp<8xu_K^2(Ju$y?WW_ z{t|ccieHca0L?oO)cINDU8(ZVt#?OLO%3lAKJwdMUc%XRWm(cTb1vSkq6BJX75@Ox z*q3uXwyS+=DWm7+38@*$Am{8I7;N*a%41$MKi~$xEDC3d>*{Dg1lU^Sl0U?ooBsfb zC)|1|<_h^ZyK&5N`PN7WzZ%JkgV0}KGZhyf3 zJ-S>*X^Q=wB?OKgVGxUYV?WSbeg^}K+un@8o?j)2q#g~$hrDko-94o$_T|l z>vBUFMj!xmp1By5iwoTU09)Jr$ixBQ5AnF?pReQI<9!CSt~zq&DAF)cP}ls2t}MQxan1PtqTko)^!E3U^8S4x zr&Hofs3Z%11&7n>J)*df>Z0Hg{$7{cR43>DLDbYl(mf;d`2PSC?IDrD!96%iav{eA3r3bsk=j7c@?BtdM$h5^U~fJp+@Jde-4P;{|ljHo0E)6<|C z+C>`D$hP_$Hx@tF^X@~^r-&8kGgbo_Ub<4|#>KzjqfNNr@GMBby0mD(iVXa^)=yI7 z;M}*9gJLW+{{V*{Qhk?C7l%_?4^JcM*NWHBpI)V_kUu}+&Aq1w%ymOmH1q4fF$8+F z@P4NM084T>{CjaDFJ6<+!=a%dUT+H$Uq6=#Bu(){+`PwT{02qdO3$NDLqa` z`W;}4eFzr+0B(M^_QClMw!`JtQh=E)#*$AQeox>J=snU#qXFg7g(^D90luq?{XW0! zefT)k1qOPqg!CV?tl$CoAMJ;_TaruH_`2~#^dGaX$Xj#39Pmp20K9@Y_NT7}P-+0L zSjb5fg|Q$WSQGX7a@_EJ`>IJEx@MH>4AJOd4Y?QNk@Y{<--Sn?O)``et!vX=Qu>Dj zNn3qC*Y>I+bk{t3&_p93AIqlbDV3_?axEG^l(CJNGQ^;e-$35pX{!wn#7~Ak(#Sy{ zww)ztzz;AqDsfNC{GEK2f12L>tN981)bms{l+Rrn_Kkdw+NEp0d$21iC6uhC&x(^7 z4Kk7R^q=*;&VJ+8%H_6tf4COHG4{ryAbxBD6|ayq;naU~EvT};x-uG1F^#yK)YK1^ z9OPgD`!4I_rp5mNNFBx3y={%PT~A^6e_L&7nxq4KB_?u;yD&->B1Mje0V`?x5_$Uj zi8<2`TT zRZkz@JW+*M=@BW_R0{-w973u98dSzdA4?Bp_Ay6qV;zveiYS1l1_2bH^2ZK`(~;vi z6~g1}r&xRf#>xri!r$>c+uFcLJt72yUZbrkxn{8k=l~ZN=aNUe7c`*i%)p9Jbltch zRNDKg%d|-z+1wH{gC3O;;j7%Uh8%@ZNdAYPYqo}Cyx6G8H;{^Y)y6u!aS0MepsKBU z`GY@eZHjD;M`rF?waC!1CZNM&Cf_@TcA=Qlsz~jSdYD^pcYY)K>IGP53P=?=Qb5O0m9_o5M$pMqt|_WW2DFxgj~Z|ubg1*E zTep8E4cCj_pAENdCMzc$cH7&XySON}{9kml#ZQ1tRyvA~dU|EE(9u>@(akh;=a|EP zkGLwy;e(#HYfE|vfZLrw!l`&rlBzJZAd*EY)h9LTX0UN5EnBz%Ed>sEdVf9#<%2xLsqsa`hlUDP9~u z!_h>nY@!Yb)I~|Boj=3=Q(ls@G$}SxlkM4Nr;1E!okKF))(zLF_X-}`=FVd?V?QtmPpmGUHo>ptEEOU7d>Pj9z6Y^1T` z{{Yk3zQrKCxbTo^b@Tf^e0^|wV(rmMGtfu{RB@@VpUS7x<>%HKn%N+9iJBi5nGH=i zav$yFk#11>iul#bemy_Xb=2XMl6aeKo8~r z02kAgbrsa}(uZUfLXW{DKo`)`u?R-1`27QdEN}e}wo+iRD+X>S6*L??xDTIH6D(jM zICD>xN0A&Tb5Ggn)4a00Q9V4aUSSkEjDDa=(lxnj9Yi1T;QM}C$tWR70!G!XXMKp-1?Wv`HOTc>d7HD5b)_cU>U_r4|K!-pA3|%szSW%bT#?)X_xE4 zQO=T1C{NGx$4M@9T0u2((k_w59klyEs5l?Y@%h|$v~NM({hvtT z8ROm=q;DsrU+yIb>1!T-gY)hy-leB7T*Q>`mrx}6Qv$x3`#KZyoL}-4w5c^kE00xn zAG05`pth${{`&?{+!pkB*qe?N3w}7_{?lHDh=wJWzcEkqbbAdO^o0o@ZF+8LBV(#X zVRiI)&6oXi{cY@}r;W{J1wj-VZ~*n`Vx)`k5y#K05>ypa3Rp(`A4=-rh6hm^xFCPN zKG8{XRaywmA#OOyp{`FJBd1azTf}dSe$Uy%t%Sdl-}2_J?aldw`5W5UnCN=rXys|A z+jM!_arT>sBs^_LRpW4PO48gT5JlGi0MPpn?pIGE3kwSUK_QzwA|DYn^T_`I2Sn_W zZx=xnkKJ&$anE#$K@0Oy^TQG7E7tj&Vk(LXC|;f@=yAVmO$IuW7gHL=O9-c_5ki(l zrql+OAYAe6>u-TzRS;&>{{Y9SkxqmY8A%nQ+kgUrQJ+2-{{Sya_~#|5+(?qaQ3S9$ zNad^xpx_-#b#JAfo?cI zU#I8VW{)}b>r`$bk4{n41Q%ka!;(iP-(EeX`h8fb&rXZiCX^JfS$yc)SRb!EkL&*N z?*0&rQ>T*WTZAH?pInQQzy$}3k^Me`{{Z9fUVSOAU6Q|xUfiv|pYLB!d+XhMNdoud zkACajM_|lOkZcJATmV}9n_u3(&Z=|6tYuscA#{Pw{-gSy1;@LJ)1upt?T_XD4!9Vc zkPBUfw2^Qd{CKeZe~-P>H0hqWMug1>Ce5sZLDO=qZb=*q{{Uadw~iLSE}v2kJh9f0 zU(GuqQMo^vFUfp87vAP5a~S=XfZShghREdUF#CFg5sswFQ9d%7s}{BJR7o-k>Smp3 z%({n~$_wCJt!Rv;5!^sU3! zhaRX)y7zA3!{9d!7TTX?)7N4)y?#!j9mj#AtlV@oc`O!RZEeaLIOKY`>LQ|+hLQ?( zk6bX!gHzws58gQZ7~0)MDcp4D?ft(#fcLi-kX=bB)PBbTg zBs&*7COdNNE%mw}sjI8m5pA8}lR%f+nhn@nYdg)qRzL_@gpnjmJB!i4{CpODX?`_Sd1Rn&Ev6qwwKP;dv61jTrSs}5gTG9tBzg6mdRDkk_$97 zH7v29v}gynq_&KhXFS>J7tn){gf*eFUlN(Wuz~d<}6-iRqs3D+& zqwV~Wi6~L^Cpt)ELn=}`q8XitOz^0tkTZ%>v>*x}UX10s+uWO=9xcA!6?p=vAefvx zJDRU}XC$o|-%zeqdVz_-QQ)(?Qf<4R+tXD`n1-Kl?rg0!CRz+*Z5;LyV=_5pzsJnhFA{1F}X!=>eIPEUjKF2DciCEg1-&Z@a)@tLk%D$Ty19(4{OcDs#0| zaTqD<(rFYLdMM#i!%~}G_8(ti#%7+}+eGg*w0G(h3XNniG{feUn}6hJDHr zFqQR)^GXE*6(G||Wzup#Ot2Z#UXpn#s!8((d|9ZE9aBveB?Q??RjOi+Squ`^)_Aq5 zxtci`D*Xrq18-sLtC%LgTZEzJh_>$v`$JwMmykp| zNdr(sttvE?6+bcO)*5)}X=jSOXseEpYL1p<)RRjsV~RRDyDg?71T#JE8GR?)v0B?% z%$IVVZmWc@9J5k1el?8K=| zr{0Ev(FcsP%&Rn@fEc0}y({z|i+)+O43{QQHHNrT9svZiQQPcYCWD7c%2d-h`-rNftBOd_!&JeXJGI5M(?<$BSRNRG`SxIKro1Fck+JJ3y)Xe7Z03BDL@!n0|{!5Q1vB6d&!0AXm(Nojqc{&Umu^b*QeTmV+*F z^su<&DMOA}pvzT>7fR66Eb=+Ew6(45&e2lxInjIKk~v*Pa9#uhStR@*vHZC zh@RiV(G=?}J|hwSgz{CQT5)#Lqvk7LPNA)RK%vL@nwqYw92)bydPA^NGchmO`L zG_tR1N#ZeJ2be2f;I!yjXfDkm#VL(%NZwt3aY7SM8U+>49t*G(>P|( zZmxMhL2p=HtX7^Ks;sg;R7-gubYWkX)lTR>2-6jG(E+Fc1&Ot|_JL=ML^bEe#Qgm=WTpg_Or(ZA7=!-`S?yx!gq+w$iXdC%9=PG(`oT zdRoQ-Ak|YOXH9#lT=ata#@xpxbbH_C&`od`HBy!DZdrBhQ) zM~wCuI{$){a}S2OUX3bLm8kX%(2Q9LE~J!gyd)lG18}SW9uXSDSWm& zDrL({kgK6bW{xVVjB3)+<6@~o6=q6G85LXc;%gsQCwscw8&{q>5hHl>rDzn&f(t|d z8q-W{$L2|(t$HHbF74bvMZC}jw-Kw50V=W04UE{5_p+5{Heof>m=vpD*@v(Q?A5i}07H9Gq8$NU0y}W26aHoXGJ& z3{tz%#w%5#D)LI`jKU%`YlA^i^mBXriuYL-W-=fFYH2}FFPH4c?dU_dOjU@fBV8zJ ze6z>)ihq`!Y*qZ7b{zBx+PlhdBPod5yHGq3h!2`cYBLo}G$;T{j|q&c3wm1r0AF#| z=0ivr<;WtxDx7{;`+Ac$n7j*Sqcs?V#}%OR;r^=igZ>mD@D8*2fd2q5F2>qhKN}5y zYxR@G+8t`FFHtUQZqv(GQ-_K|$`SLJSC*7q=np6-f$bDTHNS@Do*6SK^w6zQz~FV)KHSOA$92|uaK)ySK%`Cxa^%hMmH;o zuc@HOW9p(Y)KOPa&hS;yO&bfOw9}&@2ardzTNG(z@l=%6-AsYq-AZ`@U+`n2$tSkI zvrCI&B(<6_>cfL83Woa#&rdZq)bm3T(8911#m(6o_Vkstih@rTw?EiAM1He=d+IspF^p0m|{Eq%yzYKeeZ_{OJ<~=uq+WV?Z&O%x0V&0v2(`+r> zdh~0yKC3N;l!GAiG7x^J*<6r`RyyP}Ep=y)P2bzXS~8BsqkxK3(x6g@j!6g3xUD(@ zw-q&h7PcI&KDlr&fUl>|WAb!$GEuc9Owh?RRTO?Ej7vT?yeUA})CphhA7>WxJYY|5 z3dsq^lcXs))M-kp*HbT;1RNfMvq<}Uv;?&#$;rh#v7Q*eR4%1`*a3V6eW37TMn$JeqgXZ zAz1fSq1FW!;a7}+0fhvC!;5rRZ1UM%o8?xL9SyAk!5FKmoCdB4?bN5vgRM}iC~~-L zrA0PQ8L-*xHC0?S6xC2o4OE#lt9WW5si&L@xhjK1R3TMRLBG`dFSefHt^%BfeO1q1zKi0|SHCEyg4u@b~S6>-2Q9ip@)r~n5ZT^C(i zQK8$}nO$S-m{OsC6-OEYMHS;y)(F+!8a#d(rQCG2(aBL;OZLpwsaG_!5lc+PWRaej zta1x+B*a`E2eR23fZeIO%CgZiq(8q`xXEL2vYEm)I-(M<3dH`t@n5;t@ zx`rxgQOx-Yc-{((ZEHnGPb-KEnc_$)A$pM_MM+Z7l3(@C0}y>@+gk0X{YlMH(TA+p9&ha8!QLEQlCTi8p`bsP8c?nGoO*8KsXSLtFN=)iHS*DL`p_nr@;LUJRB13)|^$W(F%E z+^$s*9zV{%>Knw6yA%+kdCZNqKKW%jX0E3T5kV@8(tlxn^?iD$%LGv{GdPd zgG0$B;z!oj)f(I}Dy%=l*#)(&-peaRdZ)o+rn-Rwwez7 zQ`h!%@@wg;>P>{AmQwYmI#61vWsGSr2has?ptt)UYo2K4ywbJ$XGUr-5_I_te}Hsb z^pjh`ojy9zD&GwclYGa|q~1bAo(PNm#1chN%StO%VQ;IBb8D(Hn0^&DgvGv^Xa(^ zQO(%eOR%c=%@`~{grF|x$m$+c^6NBE*W)Lqu6D>`#Fdl@44=ZJ!O>3#jb)AItfF~n z(3t&8=#UU~8=YSFp{-_yX*EKu>L{_86oKm^lNtQi91d&MB$CehH?&a{NxdBeWCCX*wif4}-RUGGsReJcSnkv8~zxm2!9G-rp8blGd zTPv6oRBmrdvGC;8+SIG6>3Vq*qco?@f`&UQt1{zK+r$V4L@VWlE(%mr;gFsf>BFty zsjbED$Z7HwR5MRQAp2Sf)WuT}rOHcEl@TN+Ke2#-*A^(&(_`$XlWk_W+b<#xR7k~W zDaT7xWPBj7Bhc2A=@&Xn4Yl^uB+$n!Nht1+Wxt|z;bb8U`Wws{lbt#1r{F5t*)UK&%a*9;%%2UV$GJAGQk{R9yPD& ztA^q$#=Qz%86-`rITUUSJI=WpyfY~z)6$ROpCewB`4aTfr3ONlsw|E_9JnTez7>RI zHpM|)mIAf`GLr)Up>;1MT`YMvHYLsJ+ixI}JI}7%5@ac0mmL71Y6?jjj+n_!6?HT* z)CyrPlCn!(9aP{60shU89@&;{uIBbzB#lHtV>D6P$hv?O{xHq}K7PGF9lhFGNi1_Q zx)V4K)MAWE>Zg!Gt6ennsLx62*;(q6m`PUOYYI~9tw9w{IE8e|lOhsPVx68b$s#2m z&<|v<`j=u0ZD&e=S%3vqa7$Bw3`&we4GnrYwu~eOVj~*ZwGh=>ya*?aR*n9cpIY@V z?dbHeSsYHLm&vB)ID+|U>dZw>m!@|Su#@Y_{=BX+*`$s`(qL2?8Ysb5(Na5b4MuZZ z9+UXjI)y;+j;dFQ;K^F>U^N1~ICM00XK(K>kG;LtJ?+-nIdOaMq<8k!?Jc!c1l0^x^>coQRoJocO6v+A8-zu?A!-+^#1@?_YT&og12t=hhOat{f4Th z5-byAw`K~5H%wz$zj+m7tqW)MEv$JS<2mB+W@x{J{{Sy9<pf zBTtu1Tzns&P18mJBEyRxpg-61{!^e2({Y;T&!{92Y(FO8{{XFiFaF2cf^>Iu z;Q;aLgQbR__BKCD{Xg4V-n?HMyUb&%1dNY_Q|#-2Ko9tS1;4`F`}bA|fYd0j+16ng zU=JVdz1Rx%;)qR175h5QRX|<`=>zCL0DEpeEDx_R#hu$cAf z)5ES|Ik`H&*B|mfX=-|G=Z{=u1A}3Hd9eQg4|=a!(me-RexFZ%>(r+XqyxbJ09b#$ zdtsW5PMSP=ke{dg4Y>aRkVm)ED_ma-1dEUd z_E(S%{{X}20rzHrFLKhqW_s0Wl5y5iP{7|&vEV5-=lzK1k981uy{;%eeP}o*1a-zq zS*^#={{XHz{{R37Cf?qTJvEH{E5oL46umHUU-EU5BG$PUvADhLNBCdy?{WaBMRU`Z z;H+gxrhm=T^&FaX{Rjv8{{T_X``@x#kydY*>FOOM(Ek9abf~AO)CeU|4g(GgUz_r5 zPyAEaN$oT|dO5XpTXj|-8hxH;r&Mc@La7Wi-r#9f;1m8Q+9$yz`t<4b96EB1oL=M` z1O9UB>bC$BYaj6c01s)}C8bXR(%RFk#fy}%O(2q3NKJshC+WcUothA*LY;nC>blp| zb>honK@3OXNF?)a1^w+-si>MCPPeTIpdQN$00h+UO~p8&awd z1RRtvBK}C{+>6b3X?x5DR5fX0Ry6Vw0Q`MBzRsbW*rpacY$%L1UP&yJsrYpuEIfrN zo&eLWy8i%@uT@iaN6h+t)s&}#Y95Q&*`C3p@i=vlb#7lK(5BQ^P+6j*o<`Dn3O=6U z?tZ$0p)u9x7q2w>*?RN!qp4lgCL@N!OdYsyXKb!3n3q*30Fn3PYGyf((>FC1?@DUWf5F4Ao99(zb|+fHu=?+{@!NX4 zyE_59YO8nRDzPx<=&^J=^DjkTv@{(xI+hALOt46^n=^4$(?bI=tCjM&4RXl3iPXBi z#T>y5J3l||QVbi-q0!!>OG|5f@&FrwEgiy;0jUa4mpNGI9lu(hK`7N&-zyL?~Z z96f(&>F5pg_E4H06e68^ zG8~3HK>K(KeZExcr+Xu4zAryl3R4*M>X~JylUUPIDdfG=R*(nR`VVU+R4j~7Wd?Y8 zbeHKN@fh}HiR1ns^8WxXfjpd$QdUZ06$OS)2B@rG10yrj$wGj*HVfiV-&^VD>FmNN(R;OZPN3}i1VQRVg=bvjIhQ_x0QG%Xsz9BHKx z(ZFbB`ARFPWL@D=^PpZdOiE2-=M z0CuLT>bhz1ktukiS81%RsDOPac+yV?pXu%4GEo?#84(3=Pv!Rd^x-w`AnNqZKh^%l zI+a&nPb}F8C6)ZuwGK>TP?8N1>mCNw28{#g3B9=X(U(-p(E=(BaCrRw-=9uJ3|BEU zPIRF;HK6t4e$SRT`Sp(#T9q^rc^*OGXI3&pCz3Q4R7WIS+fN4k-;a7pO<33Qd4v0S zb!%l*jK;qTH3!a=>92NpYxefz#>IAzA%v`k0_-4Voz-FFJ&vo3{w@#G+TFV73*}h| z13}|}bLC&RrmtXGtt3O2D~e~zoIL)0eDuCu?AqOd@>909)@mtf>ZvzoMbVAVlAfYN zEE6sMsWfaDTY?WB<4$q6NI99Mz185$3O+c1QknUJD17=mqnP8S!nMkDy zNW+JfR*Wm;bJ28~ct|R1Dk^;|r8JaLrA>#aoAlqxm3+Q`B06xPcA|V8TL<#9{$3e> zn4PUdmELr6(RE$|SgW#A)G4R_JusA*=pcDQERjgb>#-%25I?W7d&`p$Rs&qJk^vc^ z^DRsR=nhH#WS7(3ZkIp0c83Uve_j6oq5(b{9vY21h{}u(<5k_~ulA-Rue$qe?LD)L z$5PX5`g%My2HVHb{k;WE7?iB8|GuES=m!z40!|I^shkzbf^F1YZ&Rt}JINE7q z`)bsi8ze-vHDr*KVGU!irC-&+C-OM<=<5QWeY6$)@_ec()AyP${1*fyTdtmf>^-8f|+Y z)9k@v3^i1W^o*%fL&xmvEK}Ots4;-R6Z(k+@$|SJ>TQS1_H|u8c;nQht077BkU!oC z{=A=Q4Y(qJn)I{82L_!=imbJd0RI3_rT9Njue9=8vI>#bzfFY~;_7@g7e7Ea{NBX> z0Iz?oy`~_6(~x${Q|Z*TlH`W47QOzKu>^B}>OIn+VD!988T?E8ddcKx2F$1%hPmU9 zr`Ff^WFYXRdPj8OwCNy>@au@NI={zAC;lV+P5te-^zEniXZ<(%2VBTvY#l%!*YR=q z^?zUR_o^P07eHuO1NQaP9~c7Q-r9(@xi=)9K;--N525Q`EPuqmv~}oonWGn9)}!>3 z`Tn5$+tWcGE{chx*XP!RKg|bv<0?OxKgyhT^xN_FF3qRja^Z3ta!ON4xb~ez9^A!A zQ$@9NloBi{i_2s3(O0z9s8TxBP|ANvkuBkthFfV+Ml9{Co+WKyW)!c*P9Ri{fjgz& ziMh*b8LKksrE8J^0~PKyz|DO+rTpCj?uuzP&J*u4kzx|FYHe+qho+~h-Cx}2!DFy_ z7Nf1iVr8PMt&a?PBi%;0MGK7X!q8>$>VOw^ELup1hx zmOQRIXyhxuj8bQFcnnP=y?2gN0)tl@D!LM?dE>dYS6uD^)pUcB7@B|q3lbqm$6pKT3Rtk+J?H@!*^n=cokm5fQ(BT>8WqsS%$6Jdm96e#8<_N!))En zymL(sPO6TQyCIgEtv3{vbh#*+f}HrFrlp1`500lxIlH@i-m80Pyi1f};sWFh4iwUB zPU`Tf^Ek&!Y%K(ray%0xmn$MfE8gixs<0udp;Q9&TIp2IrW9b_lhV}f3?|yg%N-5} zZ0$Nt+gFS=wOOy?o2PeI{k~HvlQ{TW7mvzPVPmDHiWRcc!55DDq_NbH*~zH*b);(A zNF?`H2ak}b`)R_5rCU|)*|`PK`0sZlT7e1*!~sHqsMK;mZCrE$&Ef_GA>DO3O|_Md zsEAf-I9F@bO+!r=*kT||O+7fLXklGneOE;@iDZy@i=z?9_ECR(akpG+dabIzhNVGe zg=i1LDtn1JK9u=%CD_v2ceH2@p{}!qbEZj7wglABX;x7{J9~j_l6pbc(NRYSnwKL> zAg8a((NWS!87s{JWuG5CQ1Lw^Mrh}AAWDNQY`RzjYm++1rBrC5nL?UZi6ud5V;#nf z7-G4o0-JfKX*5e4_s1JM3h4|5A5K9cpatz9ijmtwTIHnhK}|~>;U70pwRIFC5b;q{ zQ*)20GKP89Nfv3C0tfBcxd#5wm}Iw!Z6Y)`j2+M|LJ0DQ9l?pzMR@vCB~n~?vb^rK zTU5}mS{G*i(P@RCq6&)lV+3^!%_U@U7%5dDj-sJjshBBesgTJO6*Xr}erKkDguRV{ zu=dkUE#x8LN=EMMt&Ikv)dghcn7htcwalJGuxp+VKGeZ1a_!}2j78#49BR}fNkU1@2OmIq zbw^nvxj`I^;Ujltpgtz51*fGC4_+NQMzPF(>Hx|2@A{Lbmk8Ij((_Cst34Yu0zkjRs)Oc8uSM=&A>d1&2pM~08b}3+j;95HJVt$Z z=3Kh`LMmlStVRl?M6L&hEQ*)4bF_rodRDBBJp$#ms2uxRYceW816bOy7@+ZTL*V>C zGJrt%js|Pec=YS>Cni0@=_^hqGfuz<;cW!>a1j&sPqO_UBV{m~rUEKJV<4K`iRVG5G0b?4poM7q4N^Tw& zk*wyGW4D0D@@oJoQINWc9~sfB%LH*fNXyMf6VOmmOB~qRJSLoDMJZ@vsmVI7LZ>3c zGc=INE9!`S4Xwq&-RzM;eQ#l5EPuN#;9(im40@zGWM?=HLe(RW9+}(YxRGVMxl*^X zT~!M7J`b7cJYW9fEp;^T~fEv6?w3~v%RT&E6Z6BGyS0SD{yH%{2xNfMh(-W3u%% zMJj1m#Qy-maaC`Vt$C^2nPQTw#Nb-b1R(tgKF0e9G1#iyYK8L0(B<*I=6F`pGuf&h3C$_U_sO7FJ~uW9A!Z{?@g%I)EU@fwPT{LtdRE|l8C zy6&9NmLRKJ!wQ+5PhybTL`&v0%A~pTWj#y`X@N;Np@-Rb+++C}d&hKZ2 z8bpezu$i$1J{~NDk`?n)wGAT43FgIs9>tugX0USAy$6Q!E~8ukSe7F+^`>~!9Tabu z5nS$*GLq7X3aeJN2%#(K+!VDxrQ~`$8FVgWl}K8t5{@JiNh(BERCzqgtEM}Uhy8{B z0H?OEVj?z4oN056{lDzzhehxUh)TV%(Y%1a2Qt=^lDFPN>0E%zXbjdx2>XB6h_o17#}0hD|Bg{ zk85ehaz#I7K3}&z1{fim*||Jca|e-JUf{u3MO%Ze#>X^O^l}-b`!T4;d@yy7s zn$)msD(Wf$y|2_mD4ISA-KWffgF(m7qHrkavm-O}vJE^ui`C8*kZ2>`>wxvk~t0-O|=UR|S!5k=cX?ZIs zYCh6v8yA(r$t4YHNgs*js+9e^!z5B2F|r~M#DHIxJo_bv`go>DO=7!%=`{cX?Sc(> zaIdQzo*f7kEv}*Zh@4Mhas#0TpeXJH5t0cw@)!fBDqNJ2HQ=JBN}3flQroxJZ%@Fg&$tXYMgxGxm_HsNMWA(QVp_I~? zp)1{0t}Be52~R2>sIJqu(^@HUpfFa$ zA-a+YSTKdl_+v;Qrle5bY8*XUGBpYUMLK1oqR(ckGFYre3}q$4Ve7NCwRF*={iXvN zlhxN`1dJJwQ$*=^7O?<*O}(cV1+HX;7Otz7`DcgORrz`Jb`s7Qlt=4gqj^KdO2h9(#0qPOpOtKezqiE+m_B25hcJ3JqPfU z+CL%b{!W)%ct-EQh@BuURQ~`NHDWyhr}D>1EbGfsiA>+Q1aMqQ<5ZLzucpMFlq0@h@c->rbWd%|`=@U|0E$HR%5UYFOc8GU8T#6(o7|$4@Mfc>}YciZ$^#QqGaz zQw7lLW_3T4Z)C{rXj@jLWEA0E(e@GfAKB5Q(X6y80W5MniQqVoBk9x3mDCamA(3Uu z$n;>3EJl{1C3Gzs!BHHQ0wV)iomp=xf`gOo>y5$*SVqC_B?=8RkU%-X1d&c89wM~p zxh-yxi4d#^B=S0x(9o7r7P`0s4G__e2T-Y+ndO0|6t5%{trOB#OBATp2qf_&(^UPE z2+$A^1|d)?f=DCVLG6L@w8k6)tsCdNh^cV66{7rr9!I5936U5_tRu(>WCV7aRDin8 zPvSHLu_S;GTb{9OgLj^VXObFg@$=!W2)83w)^AMB+y z?NwmPbsQff<_sS48?UF`S#;j5mZt|Ak*H)$RjQ>87uO!N=G9ZAwen8X)iu~$79A;L zk~)g%;*x_kLriF7H8Gn{Pvj~Hv|=HpNj4teGn;cf(`lPrO(+GoHcK0`P79gx(hlWP+29v?45Ahbs9D2s|xR=XNeTzbrSuB3I>9Tb% z6*K_QiOR=Vt|ZkSVJ0CzNgydVC)-J7wvF1<+ep7jG;~yU{2D~Sp&6%*twnWXXp|Oi^0`Bd#8W(JQaBE}Gc2^U%U4Y*S7fr#ym=OY%LQII(oIj0 zYsfs4$sGDEr-9GV+uCC}7OEU~++C6!f>uNbLzN_VQL&B&m8Vu%l_Zg%kQiZrj|>nB zKA_239@>vyBc{52Qux#ewbDW+N#`M&P@o5i$_CY;RYIxdM<1VQtRnGCG13fhk{!)8 zA53vH0)vie(#dqkQgvyOw3S=|=tX!`)~C$$_>#d_PZ~x%O;!6QCDk%aSr{1(MpZN{L{{Y>mM@yHYvAkjvoOd0He=KrE4u$0j!3AXqLD zl++dO{{T#+smGT9Y3M=VdKua=dqtIq?$!AXM6G|?mFr+xEy4N&&(lxV$LM~S_Ekz? zbm(OYD?oo|Tv&n>0tvU!8=s)}y)Ec^wxv7>>k(wL0zu&2K^Nc~i(dD)ziD79L8o4* z>xpm$(Ubri)AT2UUkdI@YxHAGfIb_*J*lRsR5?1cUzH-ihg{nM`y9aq9$t zTTuF3aDKPvo^4`%xe|DUk1^9JlSAp&8!xN${ywBz^Ys4!THfr&MxY?ne2-TopDwUC zEOl{kK7*UvpX=@DRE5qBdb05ADmSEF!1Kq`@_(n9SJVrS$K-ol9RL+0hp$d40YE1->zG*!0(J0iZiE|L5>LH5 zp+*3T(E0V^%cOuu4!Ov@GjdP#AML%Og@AAm4w^=x1Iwu78xn5TA5qPZ^grT#m0y|AJI=boRB;p;S#5J6UB$I*EMpYXl^0NDFt3ZB=%{heKzSBV{Y z(bRqnv9OK zX+P^+U)o9CwF4Nar(R+;X*_Av+H%6c59$8K0?ztyfk-aVCEp{b`1jZ_~APxMDqOPvk_ z-sFE_4dGxnY4kQ^;fSa#wqL6wUJqGdw+-ffA;?XPi>TKRP*U^mM|$%Ua=Nu zR=5Jpwjbf@`jh^{+L)I}JvZY&53{6Gi&Z*PTW6$7eBbr46V`oF`}DG1Ve z{{Ves?f9aSx~YnFPzX8bg?}@C$^QUE{{RAhM{eO6dWp7q+jQyxI+t+Q!;h+4J4UBX z3&`i57XJY2dy&1bwkMsf?_6qII3~CQ`fS|uH4(FvU??hK2vyZtkpbIO#V39o~`O?YZ&>ify~taCnrU@BkS#E z>g;ds?qXilmPC)tl~yW%dErM7OlPRR=4sCP6@WDmS;Qr$1uQi&G&Sxee_{0ab#|||k zhG=O@aN*X(-Y@X~0B(Qde(ofYoN?&rF*qG$`*EVe#FNd5ALIER_OlS$UjwfcG7T=h zzv}t*!|j{;ANJ$hzARq7XhR%FPyikrf6ve*@@FX)-1ytyS=y7Pml@SN)~a$!S>uZb zT4acm_>wI^`w;Sj7Us>oLNzkn1_Sy?H7_5qpG;?@_wFOGmQZ_@4L;f)zI*=w5PDA+ zyS`FT_n!L28Tm0u1Ka0a4A8W z+b{B8tlD%RE;_cdO7F1j?d!CDN+$K&ILd0gB`kPa4b6?)+f{Nj4(}6WAfwtwWnpD% zim4<3U5NmDt!(k`cDEC{7}uO0D|u7lTWBq2aUZYv$BJ6C)BY|&q0$V8$}-yMxVMFY zlt{#i5I{7gYB9k1=9%;BV_x#aq=}c8%Hj!eb#geCL3wH^O3MYvO8^~MC)3it#P%|& z@LPtM$UkjJuMfrXSLf1*S5&Qx5=Z6_`o7Mp-+55OQ=iH;rJd<(Dr=eLkTpFxDIARO zAJ)zlkD!YI?7}$Jo;X{EfLr7U^ZPn(NTl%?5J4mujbVqoO&q^AZDl_Hl>GID>M=~LHG{z~bWoQ5r zv{5D2?1;)gZ$d5Zc=lxvjIuG+Q{}*u(or0s8j23Osb!;5k%(&2hdASp^Zx*!rDY89&5Em= zL~(u0`28gVE6O5f24+UPiG4q&)*p{+S@a>3ggGpI2l#)NUSTq>hxiAd`oGmqr`6IT zRZUXYk-?)>(tT0H%nXdi;Q1yVk^MdG8!FLdT}c@9$DjFsF1C@m9x65f_;^;nf0tRQ zKw4-isSC{&H=0_NoY|%Q=^i-IhpJf;;eR93e`%HGNjx?HJ29a7e}mVhQLv>nl*z}a z6wh73S4&ipeagujNi4GX9zXJf88E})Z6TpLf)`$XpIaYnnG0O3q>Vt)erJKF*hMq; z^|s(Z_^E;Zuk~^3S}*3y{It7MdiDixdvu=Es@^S^pY68>6COO-Dw7luEH!XbT?;bl zD#{J-$o{^_Il&F$rNs10q!a*y+_m9R`$c|ZtL#m6vu<)nqDgFTAH`y&NQubJK_KZM zP|~Kfpu--hw;%BP#qW0i`eWukEb9ib**8tI!RB6shtqB9rdHVEC__4Wp{9fjE#y4-Kx(bD**uFGO) zo#LLhs7D%9ElL7_m$<+6_F43aGet=lIF_t5kwAWQ^E3mFNb1(B2G4D#x`V0I{$P-O zeOQ1gT%6*kqph+r@aFI-Eqx_cCMx-Vh-9e&*HDvGS4ASxq|uplXlO$)Q)@Q{{?B5A zT+?gqlf+OP85F?$`d8xI3s?vYrBSL*X;Z+D=h2MYl@df~ps120ik_7wmYjJCfh5k6 zG-N4lPYR2J{=cyuv|2`mUhp&X9$(L`>ykmLr^HN*aVLn!pWBaKmYKZeEevwzDkY3# z=;)%EnPDta0u9urk0ZR2FQi+Gd)%5CjBaV9=lx&m`+9l_0!gkzS8wpwhx}KSI%J`j z?(p(tYYE64l}hBXan&eT@$fu;HHKvXt;dgD&p%Igw=ywniGh;dnsj;*omu|?O;5|J zct$u|#;1v{syxV`1BN(*^ZcpPuSjDnq3lki#H~~nv$o=oE0StymZ56t=qYOCr~o&n zB&11J;GI_bU)o8nRyzaWxGwTmpY6D3(u1O@ zs^jrv^*noAw5B+8rb1cEXFYHV#jXgr{?7pM$J6{h@1{Ix{u+w)-m6>*6}>>4U;ZdP z&_sfS4jpY-A1G=%&a)p#xZ{iREn&wzem$p^L6V1sI=Y=LQ^Tpz)jp61HY5B$2b-VI zv`q*tjuh!nh@O0UaEhprW*m$0^uP2Mx6|4=Ar;S6s*Qrrao}`Hxtza2ePpIGlVfnYvd#hHt>3ygoGhgEW05?)TypN~#{Cm3a=`F}2 zQpbV+05I!}sc<-Jk^M*beL44WO;tTGI_{PN(?qg0^~w}!9P&kh{Cy9$q#;zX>v4k3 zLB_p&`#+fo0))a0lu z#Zq`4q0K=eBcf0}o5ka6@ncfS684M@Tt}Wx51{kvI7r&#Y@XiOpWc$(YAc;eFvW># zDIs%$aw$PxlaXUO?hM}BrQREVD@RG0e#_5ot;4pdvD4M>EC*8Uik#kRn{s5RYw1@9 zLx?q|k0yl8Ekty&C`Qt^vds(ML!=mvuxbaw)%c0>r_0x+a9i9(w#(xcFzNxAkST}K zxT_L;=~4>jgMmYR<+~uJ$m4f@S9ZfgU(z^%v-X4(X+cX-o7~&QHwMew@>ZlKOr9dK za|b0^rt{WJJYmU8dtC{-j_N50>>=tKfG+1oMrv@RXY$}$wc2)cwM%K7ERkGGS6(d| zC^9ip2ntPQSM3TY4Gu&~d~0B~I4=Q7f5-MfN^1BAs2Eun&zn`+k8 z;I`a!^3zK|GBpgFp0-+gc+8>MD(j~*ke6Vt+Q^`^vP!rCNC4@;z%~3p5Cs~C6yZ*v zy`0ABZ)0!%?HWdZ)O|9dmI|^d(0@sSypmJ`qO~WoV9)yioLXpDW z5_O;#X}C866K_kg@ykBS2hCv%l6co;?UcreuCapG>&*{3Pfv8 zCZy8<_& z(amrO{=h41duCn2S5lV=SesoJg>o3TrB$m!JcT-T8#F?KCSa&kiW-UqC>Q1k$*-Pz zRAZJ3i3F}8pD5YQuSHK84ff5BXl4_IjdY_vsA3L5xEihb_95Hi@oo}qHS1l$9+ENP z>Q=|$I0UsbO7ur~W`PWAsVqgU)3L^{604^?Y24*}xOxt_O(dUi^i9Fn+(eI_>I0<@Z&S`Ra)fd+=7JbEyC+$$Ksc(n!t1h$HHF(U$_?FO~< z>nw%}h!DXLq{72eDbk{GqM~Lg4AO}-G@wmV^z2j)7W~+I(39${hlDNQ+7@Dp&L~)o zEZi%WE64WJrqD|aq)Of<=E(8QuHvt(F@{@| z6IcKN_9aj*?jUwi3`@682|1)}SfBuBT*TJCK+upyItty%9h@aQr0O;1f0I~4>ttSm7Z>}R5Tg}hY z)$UMNj@B6LpWq9DL*<@421f#Xzb>Pa1irea((miR73ulJVW55L2E^iz3D~ySke#+UxEt-Vzwmok-RQBxi+q`gI{}VkzBJ z8u0bc9yJ_1zdy^Z#(E=d4U^J+W45G^!95Ps#!FEdj6}w!vLC#iom5ymNjbmz{^EVj zjn(|JN0ilr)Q}@98lbNX^d(CmEy))H>HhP_w&Dd6hPAI&){*wH0QB3FpvC7gb=WNB z1vXC)l!j_dl?`kV)=}0`Rj-1klA@Yqc-|I-lk_I!`+WrJ%QPmG^7a1!SDkQuIzu_P zn_M#}dw0PcK@_K2GJiR5_)6@%*EhNTM*jdVx_n+MGnk&QHM;r-AvGQ^2VYS$y+uw# zW93`N9wM@)c^Jz_J*nNA>hS?$X&8q0Rm^l--}lu!T=64_0N3Zk_VgMSo4+jP$~V8* zNhM-JqDU0eN=L2H3Mz^OYH9o|plLdbRDUSn=37I%r`Yu$3p>Ug#Y$0UQMKfg8ys&S ziDnyuIc37MM78cGHeOEy+bLsyXjTRUkOB0s4E()#4wU}@TQ*jk>4V%EkKy`zjy0t# z;e_MouAX(KdfU7C6o0~f{z?2-sNbJ0K0xL%`wO%(onxKayCZ$V3t_N@>EoN|T z+NyFX;>k?7xKad-q>d>rNp1*IwozK^itdeg{h)(Tr1|1IDJNf`dP9?Yin0s;x>2k1ZW!xU7uwH9S->F%s0&Q!Idp>MBxL z_4;*cLBS{5Q!jxyiNVwSUzexPheKk4S&EZ3JcdZx^R)g0{t?iAb^5rEfNQ0OM+)a3>J-P> z);b->F5St~{JdFiJB|h4@7Pk{pj3V;V zYf%+sd^$TRv2F=JTU*&OT-;gINr;wA$HZV71H^(yo(2G*=vJ`XZU9Lc1hi*FfaZ-% zsr0Xxm*>;uwe+--HC8f~O8j}Jh*m>UMt>P^Hpm7uhi)SswOAX|n73QO)hRo3+2T>z{HBv|VZ(8)} zi+7=m9W`WhIdy^wYGJ07`RS{1GR$M0>*HrhYb2wrcl&y95$2IhhTw8%WDTTot?Mkv zQmO_+#(d5y#8l~1LgZ>bbS}O{xsqtD%(ms6D=@<(pjAX<0uVX@;z&y>DF`xf;Z;#v z4NTPYWNPZ*js$}rAgLM>m?O#LhG>YTiW+5KQjjfuH~ODuXtF|Cq?L>d37HjkeOFqElpHEa}8Yz!12bVQ7M4Y^t(9&pK49q z0y8XasfQ8)0=S?!p!EA`>(Y2FZW?A+popH;#;j`8z>|{PeFB5iK1HkMrhwK&VoHb5 ziAwr2F(T$k2j&>I9sgP8bY=-op z#WT|j(91nT0~l5ctrSmmd7+Gu-~vF`q<@FDWVD*<;Fe#)G=s%}<4{i;W9Q}3vfW1% zK!&I$gp7q_!}9AerbMF1)xgOdOX5?l<%XpUnvaQEJH;Y`IYuCn^!guc2q6~JUBD@A zPl(hqoc7dKqxvV0P58{$Fx$!rb5npBO+3gsA0`z8&!{w6DWE8?Jvod#r68I|k~d|E zbqb0@PhU*Y6<`oc9-Tz<^|Dy^8A^ze;nGP8t*F##q1LpKK+kTmKx%7Fl-$`zElQ*6 zpsOeVjQ$tZ8&}s$R+PsMoFj^wB&eA{X(_P_9^!|^HL4&W(Ir(h#d}?e z_^Xl!DuGfea`Fl}tEQyekVjD?Bz4kKw7wBE^%GJ@M9@58&CNt^;Qp(gMy?uRHPzyy zyQP|=lSX87#5n>p_LfZl03%pT1`BjDEKx~%#YIX60<=|EE*KhcjetLg9ZuTV>YR=? zf{u!zDDt&ZWTe8iLQ&JwR@PC{JJe(9DqP9;OH~S$Rgq&&M%O=2YWaEzuJ%>8h5Rf2 z_Oux4yUHAWEf5n5d8B2co>%}O$07Z?O|67? zOzgK?yf)DxVBQQ~9E$|)AOMn(k*qZ}0=>BSnZIq!$t|_GLutur?kfZ+qfO$uyuhAV=y+OyBfCK<_UgTc>(cT4v zaGL7r*l$)6XqnMKg~}4q7RWu!f{FpDp~X5fv}1d<#L9%(Ud9?Y-{Xihbt_6!0=cd@ z40YVtp)~0&O=K)8r;btfiBPdprsANJA&sY2su3(IwJ6bjG~C}+x%XkRnJ11ZF5!|n zSRzQFfQc>>#)mGdP&A$-V*;&S0O!%)n4vMl8x0Cad0MfzkVhjBwI-@Vdeh3d>KUFI zV%YkncA=%NqL2h3r>3Y_NUeq`NwjgZ1Fb>jfcA#w?ii$NM~scOInbyC9|A>EvPW9* zb63VI(t#9{(((cY)5POH3oUyI9%N#MoGa89TrjvTL{P3$CCq$I|}YvXUD@Gp5;wNdEwSd4M>82Aa@QIO>|vH1mBxo?_37IGOkIO(Z2KYQ(rT&6OxWPG(78+cUH z30z7fsYtPI=!#GU40-k#=4%kKG=v`;#0UMWD53n=SLKghjJA18BS2URDAGL5E2xk3 zp`#h&pH8>cmQSH`Ym2Dokzw@I6|R4w-ug!m*U^=KK$aUK;lPMVn`$9)@@37zx%=e0E&Ar zF-W4MW2F8Y@TXoaZ=ksXqgY>uh{_BC$ zW`i6LS?)D4zXff3ALu>$qfzvyP4&d8kVe1xH2(m;=iaEJHS1u|*Q^egR#2o1kD<9d z{{UNy0qw|HRl_mz>C|rQo}(msUi|$Dxg-1m{{SDU_WZ1b4JXg17>a&7gK`il?8u{tuU(46!Zf;K=^sZw#)5fB%;jz6OF{W$zs z`=h$+RvZT&lrrcvZaSEIc=ll)+pVI#TkFU0jmFYxkW3SJyJ{asT`iCF!JR5tu z$m53&lq$mNS^hq|L<)bv{{XxXdUDT`$Ewnzolk|)Nan!ZN7sY(=l!>|@7gofNb(&# zQ?O82umB5M{;$E{e@|%Th2#}lWc0OeBUr+cY5?kFa)If-o1f1kk#E5^_MSv%B7+@j z+Eh`Yt6Kj6gj1~kKml9a5pU1a{eS2^)nj1bnqc&(_IEb{)_qFAX&l?@bNKj-VcWe?*`zNY^GTk*%^k9!gLgC8GW(i`pTvoN;VgSF>@&*3@C)$XWkw|WxQ9+(PMQ%mE$J&&23q#XyENIkY zp0&#V0EIz!d-XT+-K^U5)xI2`WbRyrBoQS3IsVHZfUSZ_kpTtL3aqSe&(XmD01tA% zwXigBZ(HFyd>eRSQ%*iCqDK9R0VmOFdI@u6!K@;%QK_!3<62~P7Es2c&{y&Y^3z-S zUeMBE`W~xrSLV$uP`2#KNU;Q`INEA>NqV=asZx^D%p+!L2c-x+aqOPZ$t1!CQq0#1 zxX*OVSxNaC_Z|b!psM{md;R_7%tA7Rr7PU30KoG3itwgLJ$(v4lV43YN&f&Y&Wfe0 zk?OOZr%j&j{QX3>Q!L$^lanihLl^+FQf(#1!T!kXkcb)!5B``TqcT=jq3@Dv`sF zOOypQBv5sjGL8rQkMaKB-o~9ZKNn6JRCV9#xCKG_9Y){Rfq%~){Hk2gapTn_WnciQ zHLq3G{Monp>tE&F@>6lG6-9sCZ3wpe(^HmKk{tG19gUqC)PjidR1jO}0q5A$kWYiZ zz3Dl&vbmH~i7N{zr_Qg?bD7!W*lt+?CWFqNU}XMv>rJ1GVmdq?ZohJGAK`nu`{T1Z zo+rnoRhTW9)n==H?wVS>le0mRrlQ*vk{QEevw+j!Cbihe#6BvN01nv?W zI82|wVoi4$_zZdD&@#?Yf>x20of$NZsdZW!)lM>CMHlszB!>)fsMtS-7HPLh!MnB9wQo|j4cLDM;w2HrX-dz zGmkLFxcTOvm+k&t6^+XQd1TQKrdX;>4(};w!CTnbfkEj$^=&*(N;a(?Sj~Sw^$v;d zRf`4`DZ}%x^80vwodwm=)l$_D90^ehfmTMTODs}AsP{u$^=KjxMV&hD| z8T|hM)xy0XxJdkC8dq8Uhy7l@zEwRYpsMjbB@Gm79aTC6k_ymEJc|sK0;V}wmGQcl zAMjuYwpK{mF>4q5kYopi1vBTv1df;x8d0#oSIhleK72Y*;;O3+*`!fARK{eemDj?A zuan0NcOi-+3;sVI)gw}04ou4ssZsEnXr!uiTH2NlDkYVq z0d&VQQ^w4Xs9#H}e`em)#^DRh8A3M@Ps2fg2dAw%v}Q^Z5dlg609Th?Qq5N_HXeE7 zijkwE$jL_Ck zq>8V+X6v4-?I37RX{{Rn3YLig~d8DSLS+Y4NtK88`G%B>ROqI(F)OBqO zpp^t#h(Fis>^FP1#2f1$`w@ZWYk)EG{{UC7N}#!rF;|UIbLc)*^!&f#haJ7Qpr**l zlv;}9Na-`Q(NWX`3=yogw6zqqW61i5M0QnWL_x;l=Y!C>r%Lon|Vn!An@V_enZRroeaA(CyT{AWoiU;ambMU#brc- z8D)ruI*^+vR6a0y>|$dB)BGRjsOV?-or#XWwRYU_Qhl0Wq1<^zjwuweiddtg ziRX3%vQ)X&zl$I6_L}C_+BlWazPg%%xZ-+BTuE}UC45F&k4g+@_J5m?R;Mz4mh{~7 z`*vF%ZZ0kjiTrzZGf|PAn486P0xYQ>wEVbr1>2qulVCr@{{XH)`jhSDARP3Cs7_TJ#d z<**R!e%<*W+u6!V^Hn(Qvo;qqwKtsGLJFL&N|7q}1w<2KUE-sWj4`XPkZRL!a)rE6 zt;O8Xc#n0if-)$h%N4;m`Fc~<8{H?GO};Cs=&`hlMx&5P0APC8?E5LvF3;t%`99ap zSj8q$*qb-E5t=yTq%C&oyM}ihl8C^ci z?w%#Kg$os$oxw&uaz!cremw@PURyoI?t+3`ie!<63MxGTW9L&r>CiLUc*~Hts zek_Jx9f{d_p1aw39Hmu4c`{v`(94|Mvc$FV$41%Fkg7odcAB=9mS8$qFUKmi1v>`-)H^SSBkDyQ36 zt?5#jT=wSM7~i#|j;?$x6@6_%B_7(%M-6<5lEhLjR;r*<(o@YR@VJrLkf;v3Vi-1P22rOWNM&H;YBV$?3e!rk!IT&sySpmI zbuP!;bL2L`+cdcPe3-4vZi+0V^i$_1%TvghbCt(!jHHFqX&+qGI-Wgj2=bs?hVa6z z!?NcFl_sRu1e_Wg@Xrc$OHePPje|)&gi){~xqDGmfV3KsRO?nNqN;myL(osPrp{&Q z>amb!F`vRP+j!w=&TM3!MuP#Kealsj#Vb=k+gE3Ebytm)fLu#*6xiwqk*84+J`yNH zP)RJTOEKZbqKD;N;BQCaSIi@&q6)LvDYxR-D=_I!{(Y%v0pct7$#;P@H3D_u=Af7nKL55N)RjbNm zar$Ay!CjF1N(_tt01>OKrlEDFqnfrz^!>^6X;t7MDoOm@o=Bz^?|UAfr--(-ZsR73 zDzyzx2*A$@^e(fKR)!lpkjDMvO-`MPg~4W2z^83X9ytJ007S~Qg1P)QK5+ZlR1(u)(;J!+;7nd6WE5?2w2Cqv*VOc4jm9(n>8}21rlXL#_ z?Yrosb3NYQPXw$Db{l&IQlw=iO-ZwiHDvRaWhX0 z?rNq1PZkpuQhBwl^!Dq|4%cHd#CyS|xgE?~QPxM6DpVgZano8PytqYi`g%#3T9gV@ zX4sG+b88@!jXHz7*@0I%&H;W8Pmr=AfcS29M(Yo87^13(@` zwMZw(kDp3yATY&oZEYx7VMo+y{)-_j9QuGMT40*>$~uTnOD9zw4KmWw43<(nbkd~M zbaB)#*;A{l0<|?UO)`)NB#Zq$x*px{XOWO1Lb6GFgP(!&>t*Czrl~Yscj=KAIT1uLliQb}0YDx-N;ntcdCahT+86^NR%LNWTnb-v$ zi6sE@d)aLdgk>_5B1VHw07Byg(+nd(Tn{3|R=sb7IHZV7uX8j?Kll2xjvzO?uqf4Yr;K{9881zU&mA(G}9>tdzQrs5~)kSJ#Qom>XU!O$~MXn_(MzXay zr=R;j$>NQl8fdFRg;Ek-#5ZdQyU)pRW$K%ATenD@7R#97o3zf@4&P z4~{s|57ALl!~8wRsctlDVcdBAzI_O$l49hobo`A!)lRUP)bd$>*DZhdoBP;`GHL!( z(;A)5YEM}H=?@F_{{UEzuloN0@xN{a(kP=Hc%u$Ib6J=bAhm|CB9)A&zQ61}*w1pR z5Xm;0@YE^$I=Q)&OidR_9)tYfmqN2%D zi0P`L^2;nsEiF8+6oG}5Tq=pQlWfD>}mEscDN;&r%coq1rmfrb%h(rb?AUX=&WHohxFXT>VG0 zHVdIr8Z&9sOJfIxJxMjMpGfXrBB;dR6Hh<1{J)p&={BjA#?ix9Afl#Mo_eX{GQ9r) zbRlRUSe~dN&Q^+2&WhjXkEiL!w?amglf-Wm) zRv$S(m$usPoL24Z?wP|3|Y+ntYzFi0~Rpiq%hZ}qKKpIVfqnwdOW zOw1Tv(Qe}Ipqi$iKa+ZoDw@-Pr%vtnx4Tmx5NffmMREZk>RvQzmO4QJt6ntgTZ1K5 z->U6vEC>!?xTKtSeej z@IPiklTsSFq3BxCN4Z;|sB%$VABL*b)qKT!O94Ps)2G@g5}sHRCXYoCY`)uScq9#5 zK7_q753Wa8-UA#Zi1Eqfay?$pZHbMwz!jm7x(w;nf+?I*oulVd!=j6nX`^ZF{=ER-!Aipz7SQxEa> zr*57hZf+)U049;w3oQ>}{)w$~f^sXvt6xVUpXsAgBms3ua#|nbT5)he2Nj?{E~CXX zl_DB?N>{0ni6n-pRb%Cpw5t?tVnj(BG1aN0MI}NHeuDCAhFGoAvbGC$j1xi^K0`Re z07w8+r(}&GEj7e}69BDiz~GbfBn(g~AQIguaTF6Zszp3c1F{IK72Y(CM_OG~5>r2> zQ3&K4e!pgWbPhy}R1u0EK9xF88d9U8jl$|N`X$&(0jdxQAQtTmI9L1~PmwZpaIGA5 zgi=b?F~?Hv8#^wME4l&%ldQdYa-RxQ-(w%BPr%=^WVq08V|<+Gydp zQF645gHj1+;Xo_seL6S#fi*szotPR^NL0@gPda*^PhOLhl(V#zboBKS!YY?^;NYqRD_Wg z=<<-fG^mB$>ai0obiOqp0%I3Z!8Z2P{{U9gN2p6IjN|wujg?26!KPAIg-G(@POA*D z!wZkoiUmv_=$JDc0FsRYzv;N~8R|Us!c1mPd0pnIuE|9Qo$8>eb)|(`MTn(kJLc3V zPy>k;G6k3t2eQd7WE*VqF&ZVCNFlWlc+!r(Fccg~rF{*0b}L;M&_sYNF+f{LR#B+X z6I5Xd^Q!4A4ne0&e?C1nWgR-x)3!qg_S=ISSYwPD$xc!j>S*=HBFN=w;^vxSr29haZLBxtfWi~GIqFRdS;L1o0FOb9JB$6kMJ#kD|o)57D z?y0cF4&>LiPWoB6a?|;mgi=EV4CZ1QKgy)WHJe8(cf9g zr4^zEqB)}q%Ez_P9AqAuj?btqTR|pQACjlcX61@(h9Y??s;boDXU$>eaX5+(w5q6w zOE|rXKi5dQOP*btZ>rnwFBVgGxS4fF->xqK>s@ zwFE~pg;o7khGi71Yeh8x@v88zQ7WmoR&JV-wwi`Ko~@gXuacgHp{Zky+BK6>wPAvs zmeY%;fIUXB=u5MDdG?0ow~N5LyFnDD{>}-!HDN*Yav16WpisVIlsc#@T6C(>wp$yC zEg9Z68-%J01{8ak#D!{npE^i1#~OpveO)CMOZb7Mk}*|TO^?b}iuOn=qpz-4smL}m zFv|?EOA`lFxord=X{EBUy-T&R(6Y)FSJcB$XQ^u)tHON2f&Hs zjWkt|#)K?lL-7U&1n{UnT`;6kG;&7-%M=y0kt|P87(%k+sS3)nNh7l@%~1aU4tVxV zkwy`Xw1dF7m@1d86vC8X)z9JvwWcw{qgIkY;pI}&#Tg_mH4!7=fCuys&#aNs&Z1PF zJ!YNiX=IisSBeUV9bKhTq=t>-BFE_8k7^;dnpD#;s>aN$M*zU_9-xA>Kg+5-@iA73 zs2nQ*MGGqm0BgX5T8}S2wif>YgvNHxU#UNwFUPoG&q;&Zy}5+nJx#gXQaw#Bat+J2 zYV#Xs2~{J0-6Ylfr)^Pqq!%dZZ|xK9t=`&8*lu2hl`XY>x@o8L05@;jT6Ff$b#9ky z1OEVS!PQq4z^hPt1`0_&bjC+tSctxbmP~6uUrd@dQU%#@&5P6y@ft}If=L|l z!MVM`{C}zJ9Ue8E*IVygffNf*{01z$g%mg{lLDeKU1o`#HKnLhPpHKEb>mGgV z9HU59^q30u&16tT*f1Q}5J%Vjdtcp6TLY&Mgf%9;W%6n* zWA*y|KAhNb{vPO1k4~RP@heWa76X&V`t~31X8!D|Y3tU~M5av-&#odxH?bD}xBmcd z!L_aK`dXY1Uh&gjk3PAqt8wZCUgF=If3Nu-^vFoyYt{9JIz2jaN`zx^s^EPtE%pAF z{Ci=eEB18QZA@3pbulLY01!|5_x}K6^}n_ZY5~S+(~8AdG4ef1S-}KfpT++G-hRJd zY4o0zz0%1US`f$V>P%9A2`1JY*#7{J$YGD-2S8Z{{Vac0B`Q%1Lj9aXP8Lg zlp0cTHfzK4h9w;Q0!Dj^0(%Yjb~dA1X$+ zKHN!lBWY{h&gLdR(Mv^zKP5LZHazLk9`?HTy|&R;QzFYFdMbs|3Hg>`PtP^SRNwI5 zt2Y*B<9AwhrY9F#ySult`#Y#M?lI(wk5)&wx1}cElCEi(gb_i9&Pi6`zL1YdBoXWj zbGpyV{IR-oG+)|U?DAYHx5p&f%u#rMgcCNH*HIafJgPt|WrpK&+^!-lpvv;Hxdf;M z*r)twPDtW$p1z{ua4pa0*~3LuG+h0iB93Vp!jpo12U3=yNV>Z5Z|yJFjxT@5wmcU908l^X>2X>L znp3W%s!*(0-o=~+DobfbZ8it$NBhsWVu{tOL&N9(UYMGA?c!;Va8bZy^--VB{{VJS z<9-L`wiRU6sV{Q&PQvR-X2wJ+YWz7|y4K{XzS`F`loS~GC!O1biY7nP*q@fq?(1FS zc6BV!ZH%$g&PnBpB~e^dg4px@y%2L$lAXD1;bmE_XaO}KekxD`YeB|@b*4_k>k8ho z>EDw*X}W8FycF9faMN~IU+#QmT~!P@Dx8i}Y;E#9D4OJxH&jI|21fP3WKekIUM(X{ z>h9I6`?~LLnVpXXHny|tVf-qFX36|?r^pj$WZQJNuud7?X+!EKv=oRT$u$|sugf?m zqZjgHv@pLL_SVvB3`I1UNih2=oBPIag)_Cglcw?*44jxOsEj35Gvy-4*ToBfW-avt zNwFU7Yc1y_PqoOQ9`9(qwwqmQlV8F0G0s2)_-k`4L96vWo}<%R7ogX_M`+ZU+Y-G#BXrt!eD0%V&LxiA!&YDpL{AG-_{ zfjKw2{e6NxvfU@%d1}{kxI-P(meC1OxTL`X%(x_W%p7{-ARKfm++i`?Cmsv(^gn0v zsQsN)cKfAz3d*WT%gbr_n?DKsG8hJ8 zPuWi|^?!q;^BBGruOB*B{DOqkj92;e6vs7083xr&DW|BXo+xK9=}LvA7L_8pht;cr zdjNjE)wI#2t4ONEnZOjLKHTHi<wK3~DU37~5zvSsAh9|}NmY)#epDg~)nWUyif}&VwSSlov zI$dmnaMbVvA*ez?kUo;@U@SEcYGa5OED!3HKVUTZXQVeF+F^s$;2)MsuWw7f)}XM5Oq+%77>$cd)zEw2UKdyCVRiZ)0Wi$ zgIZL6%2TJ@ToXqvYRUqo1|mFeHkE1=%T%=j{)Jt~J>d~bGXMv@0>tE%=r4>e5MLr$o0s~J|0!YXZ#_-d##-c)t z9pvB+6brBP19tN&ju=@ zr4kPmxi}ETGHaFxfAT``vEoUW=m)x9OeA3(ozZxjg*<@=jcK3q{JK#P2z5=^nz-hi zYxea6L^5IV%a(=eS)s{6qLj2Qr7PBW;D&HKq1`^Wx98ePpdm^c82&1MtIwyyi`FJl zLJ6fYz|<4zjyyBhsj<;e!BtO7JySb8*&=dI^+3Z{JVhuXk%H)g4;cehh~oa!Gb*T& zS5Q8b{lD>5>h{g52S9YU9Pt?c0As9p)S<}3B{Nh}OC~n5d8uZpv{dv)R#@X#Rk}QZ z9LLD8E(qt^Yo#&8C98jERa^4ZKR%X5>mgKTR+J1-eW&~t;m4s502M*%z8$vHCjw+C zmYCGRK_f>;DNnPRgt0ub%vDMoh;Ftehx>nJOKlvt6cyGZJa`@-KlNv&DFqm{K>=(3 z02TAk`8rs=d(R~$EerV_s%fbwnilg~CV}RbR)tF&K(Q4EpQ!hyf2V-js3uk;IG~~Z zzssj&(>-p6G_?RcerE)XW6$<<^s{6pY9I2`1{z7>ny#W)q^GQgC{&tCcu=5Cc*!J+=ZD$+x^0w{BZve1-5Z~Qv&p!( zZtlz^e{EH^F{f?TQ7RKk+UmUYtpv=ZNK2`|H$RK}rS;4vF>Lsp8k6Oo6!YQ7=hGJG zP3l}!Q6nOrW~BcBgXh(kO@GKd7QY%z$+`58r#{o9>IN!$@ES&w#B|=nn-R$W0Ey?? zv5{Y1i|!>3zz!-;T!++q_eLX*cy;6IKR^fj&--t6W2I_((bcGFJ)VBOcmSs2-_zB5 zf4pDa7C^>;b-LH7vFN?c{-5D*$J6WWIfSQk5!Z$ddUcJp*+=R8k!#xj0OG>p{{Yk3 zdm}F%9VzkG$RFkYex@twWlI5Za0$60#N3gvcy!%VzA0TPc*kO&M1%*%Af63NCDlpZ1mA$Qhr_$Vk&4;@V?4CU+m6F;pPY)nE zibV<7#ShfTHI zamMm6Y9dtp@#WXeJAL*fvUXnlq}+LoR^Gz5V`gI9djmO(prfeWyI#77aPHU_I(G#H z7T*5z%Uv!uqLvn|o}oO>%=Z8pCQ0sPo$hSu9=SseRlx?Lx^;fuq50*GRyO;fW$=ce zppNpQxhXK8^xJ|1= z1hteI%J(xG;U!9fhARljZ)TBrcT)i=Wss@V2jXh}6X-nf52v3&S<)@NTK?XIOOmff zG30&~2B$TsEllJ9Is`Dygv!fLPq`^G_>H5RqRZ~6>+;fKYVg?lowZ3^n<}RRTw<#G zD(P|%)MA>zc#Py-3`|tgH;2cpi{e2F5WrHkBOZRFG2_6~qWImd;VTS+JGtgkTBd?N z?%IXoLWIa3LbVj=E26>TDmQl8uiLZDgEckv`Tg5XpRQRbXmGg4nCJ2BorzIQo0^K9 zwo1G_~5seCa107^;79T|&Qc0<$8Ab&-kTqn~0!vgH0y;L??IVue;kQJZQV>*X zP_AmvkxH^g+En>y0Dw-Q4oQ)wro`a!>m*EZm~XX&tdcCB#A@<2IU2a8FHNCduBu3s z%Nvmr(}NxEPrAkgVmRCyg{DqRAFyB(OpX-5=;ffA?($oLg>}qzU=Y!$(u_O50+s<7 zcWdvZDbq&aj*fy#96cN_B~%pfoUh$fJ5o^8S5_;$Q&ObwERW`Ui7vMQdVZu*?pUql zTL{Lf0)oJrg)C|+E09m0%k84ArS5K$UB=~tz|MRvDg(NrP!PpH0)ye9p{{sUmmv(e z`KyFVKZ#OP$wf3iAk9x!Yf)oaAyV;27*17#FuM+Ke`u#I31_r%G7BC416=UR-MVhQn7*_wJvX(am?2k;Uk4X9iSQ#LG|gFC+|jv2JupMg`I%bNAZFQC0J0N2A){ysv}a#BubAO zRitsw5ET2#XiQU24?dOC6pByuBm8}&f$k)Yk};)bjy*$xkgW+%kkWle?CErZ0Kv%x zqa>|!pgmPj&me)+M5X(s*Bp?>pjFIi7Dm?ubTJy48SX56_R|?8-G#rWv~gN3>W4>2 z)GUqR1~o;97h-Wku9Q<+1L@M1pXtt*RxMN->4q+Jihrfz*x{a~;_Fh6D@R*JNhN&L zcC3z?XjPVJqoR@IsCdzes#3k=1Dk}ox4KzfTg87B#4)^*NBWvb9n28-A0^XT&~c}& zI!}LW*ETX*+{hx1PQuDape_JVPHMxq?KB-bJoR&9Ybq<1tEb3rOl@9YBPOPu+Gkx6aTH)r9G-on zym%$If&?ujwznoWV@~ZxlwABY6a-M?K3y$=W`=2JV5pM97yTX-JaM^dYGc3G*!T0>oBj%Wi9 zm^A4t%PU{TmB zQC0UN>_j; zsU)pI#2^3)d6GI?ONLx-KOY@!aOq9qqWAVw4YRq*q$xd%IUP37vYJlFL;^*jWi+YYo zQfq9X@DhLnRZyjr3TIOalTs=6b*+VMq+xm+SX-Nt#kff(u#zzZP%LBwLO6na%}(B5 z47Mi5*xwWSyE%f|l-RuH;@f!2yo436TJ-rk`JM@9sIL;tsMU>3@*V+<7h4-}CJne+ zF4b#gv^2zIWo3Qd5^_UtBrML3P ztpR3;k7}bV2e}knzsP!PwSJd?? z<<%7GKikxQH{^efhvV8q4w76Ip!Dh3<0=NMo~J`j&Vi3M7a(u|1dpk)Yme#elHfL) z8ua_CDr*#{QxZ0}=^zvUf3^UBy?bo1sr2hY)<*%sS{(WR0Gq6D12+SXf1$m-+SQE`x)^rRxlVfixn&KB=Ginf3NIi*#*W z%?cO}@xj;PtGpDh!lN-pfKqu)j5A9dWU`iJBG(-7UWuLLG69mH56IX29$gj7NFAbo ziNL4i!H@C=pFXIYKH;;}_=u}9^m!Uwb3;~! z(#gcK(w{nm{!WR&N4bzY1??v$l;J{nljeFzNlr}B&r?-ZBvQmA5L2jy!J@{i`R2ZV>htJ=c!`+lU`HGbXYCw1WRo9B1vO16si~GGX)0Qp zS)C(VmP&+AT`bo^|!~ zr{`a@&tH$`v++L%v@3C+B09Sb9WEm~l6nr(bTmdfec@FP_>ex=drI5hecH( zb)v1QKs=Q3{^4f>^oAh)2ep13w54=w@Yt%zgaCB_G`kFy2h3#9=i%vtQQs$qhA>PL z16r$7S}EYi6jFH55ybT6T@;iaDma-Y%fuxQQieTOuSK4orYVeyk*mT0o?8#Lg%%gK zqwMBN+v$!Pw&W|^e9Q1)X^$;U_*7{;dP8jKb*kn-S8i%iO@9H>%0&qzAAxFoM#WWUvoP(9?}8RjA^6<562&Xp(qC6uVQ^RY@Ut*Boma zmy*dGKr#|UWt4^&B#(BQ?{RoU*2+8;?PA<(P9%%~4;l>Dt3z#T^+qWvtKwAxf`r!t zB=H$)8iS1W5+PkA?Hx^YDD0x4V{g+Sh9BB<#mp`^Q~iDJ(XN{0eO$4ZUf`e#`cwn> zf7OnZNNrLe@WjPI(_b-Dk@k;1nCezjCx_0+Q(b!%V;_yt3u=qhy5u8(Ki++o?jfYq zNo{FaJ8(hu85R3DQ|#!@7K|r}pb%*osI5Uf4h;vd_&UW;Qj$8e#V6b_J}HuFT39Ej zlS^u=sIBtCk*GYafWP#=vctHxg&|LhR}8ulSdooP)u-7?*N09`10s;DJR!so%*vz5 z6(~vh*ZdtzSc1tzC|a2+R-Y!*{h7t&)+yrh6_O{#)X~ojLNXY%80tvX``!w89s!`Dj&s&BiTje4$)+$K+5tlYPLbuPVU`6QoIWf zmkOBMsT-Za(ngd(y`&0IoE=3N*T^c7=UjBSdZ;L9_BDMA13d;#Nh)b;(kW5mizOD7 zj&c+3;BTWQo9Q>V*VyywW3^qT=FCt>I9XAMC6`!Jq?{2>6`|lr9R=12ZmxG*OQHHx zKmxR6f(eZAAAyIFuOB`g3D|wyw3Rh==9d?_F`I9DW-|M41oUEg=y2I-XPFTsgBK{4_ZMOJ!yT7NbjP?>F(E>#$v5|v>iK|H@ zjIm;3_OyLKjF@?(R8Yxf~h`lvazxE5yYsDx$Uyrcx>nB}tT`r`ymj z69kW2g~dv^z1Fo!Lr`L*n>`;5wa96aoi`uF zl1zLP(n&NmbnL4Q4P;uuTBv20%^cY1kdr+~r-n7L`Tzjn8~X}NVF|KhYQyQgG@U9x zQCN~5JW!o0N)NDb=yI2G#c;978-iKT)8Qaci3#{uQ70U7PnTF37P46ADCU9bsw$wC znzFVLN&aA=mH{!$}}kpy%=(IMYV}s+tUgm}RRA0vIfmvDDMQhCx#!GO|Y` zQKJV6LDkQ*J5%A@IlV_u7*MFjnHLmqO-L1o$-PZFM?1=G)@wnkIO@k%SgQ(+Bg}$G zrAH2q=knp~X*!enfczxvHLv>`UAOX+sAkDjJe3ktQ&2AX#NysbL~N1C64B(OW&E3y z^!Aqa2`$wmjzwq+$c&(ziZB5A9JV~`pDOgPXL#b=7Fiaop-7-m-SpN)Xh#Y*e7$=6 zSx*A1$tt#`lI{rga{j&=_R`n-{yoL9$`tr?Acm*-KhMyzQmO?(2Z8%~g4Xq zvG%W~y5^$n2lXI-w?6bu0XN7z{;$id zULH-)AB!LO(f3e*oSb#<0sdWg;ug2~-v0of_pf^@pi{4XJNk~f+#pf?NKtR``g`|E zV^W9|@#}#$a>X5pK9B{|=s(_X@7-UnE;X*he=(;~kJr(8=07W!ZEcpul_fFnI@DF(e`VWbmvKjC}+eZ37D zKnTZ9DXHo+IUJv*{{RG^_k;BIvWmF?4xFc0U9W3j^Zx)5@5I-nmrTp2Nh6OB%d8>( zzu;}|>k)BLPLhj>R{@Xsf5X=nlHb|`i~j(Pz5BvCwBo&Q>Sp!+L;T%&Wb_6@ z=zZKlL!6GR0Q-8z)d6gMU|euO0{;N(-;O=lMik(2>vX4)>xoju)vxX&G@oRoa{-k^Nf(p>!{hck1OCJ?aV|jn5 z^*SlPuhae`@$DS3l60C@y*{o~nu`AbtL*AxOQeDr+;gYvz~udXrtrzdI(*3;4LJ2F zDq7&*kI&QoDSveEhfIl4jR>Iit$)eXxau#!Am57<&(i0EVn@1^3M-zR)|zOoQ`c`$ z(WpFrukrqe`g^LVCYkF&lpga%>lfXzQ_Au51z6ty0P7XCz1zdc8SBNPKMP~e2mOw? ztzlDgh~trEVw{V8N38yR+`=$Lcy(5NJUhRaSib4rM*53HZOxYK>tLtoSyU2u_gNz= z4Mk~2&!q)_pZcrSW0XrMh>8J{e&5;Y*UiWN6@A)&=|B0L?LMQSs!IAzfwi_i2-3wU z)dohknhMIgb`A=O8~B@ltWUXO_6D-{-(cJ2?2>41CnLKGp^hPPXi z`<~@`gp+A&;VAVoB1u|-jL=gwrF`ftv>k4pQ(9!5pIyr_V#E7J{8%5yvj}a( ziNJsd+x||4a?9eKM4Hz>KbKgAds~pi-ruN?ul4+UX|1%Hbl;0Z@c#fm_BzTdj*#5n z`fAnw@O|s)zGJU=pyHJL>-?xX$dyJzrsC~jyoBVDs^?2_pr7gQ-UgOd@&uo^wEqB> zoo}_(q9h$+oDMP#c%M$S>;82)s5=91+$Ja-h zr4mMliflZyrJe5DxVJvU_7=>%p=oJdH@lYS8|bGLgc=(8h@Hz)lw(SjrFtp6L3e)$ zkP?>bTGsg~S^rkeN9ZVYr8I>tvU6*WL6IT?qwR}n$D?iZU(a=UFa?LHLFtC+3hn46ge2>n~h zV|b&EqM$g}MHMZzNeq`lQ>`U+Ds<4IfB_s$YTAuzE9hy{zj|OPcO^2@WhqYWiZ0%L z%bCnn(2AYCMZ0jBJar8$k5Z7$B4F~likyNu@uDsf%6ZFB7uznpIK@el0YG8UIPNPIjunJXwQW+(Qa>m ze;V9ZQe+n&)i`WWsK?U%wH$xKs&aV$0Jfy36%&Pmnmm7nMzRP?@$?Y4C5N$w`q9d> z4c_~Q!ZmI)Y18TekZC`N0fAf&?*hDHL-=^pHP4^=xb#sw%8o2{YQHN5B$LPY4_gI0 zSm|n+)*y>uguj4kxA^@}xiaqFceFEGjSdIfQ|tb!^jy*jNO?dpaRRjbtLMZD{#fX; zgqPp1!;AN5n$&!8`L$0aQf?a@?8Ha=Mlal~3~YvS`LSYwbGe1w6fGY6KFnxmTEH6N+J`+sYopTLt`pm=&|#Bs0t9T!bSZA=La3jV?~pY{!U&lI1(B&BHN zj*$#hl519(Vs#AOAfnteeJ}0Ud4Jwp%X>Q9KypAlV>Oa=@#J3ME&wuu9!}>ojpWBX~PtmTU z+H?M{KDj^Pr%Ku>qMf2&B}F|&OpK_(5<>76B0_|}4**?8{{W~r@X$d%GwoKkc&jC^M%7UYD@hlOD!PYh4amO+_xD+& zX0~O|gsznzXdm%^?D2TW;R>cH@*H^M_Vp&6p{+C(l9xF{EQ}E~B{VXjJ|K~jQa~7e z314j87?tEgG^t}l#DF+s9$hMrRJQFU!K`D;g#}3C<-mCZ)8;z9NwPAxo+AV`6w)j$ z66l6_g9+v?ScLnBYg*ou`EPm@nZ#!arj_||;q&U2?jndd6>U|eaZVg^YeAfK!zT>& zR5=J~@(PNxMzs-0k{xJf^0Y#DgBW8!rsMI=y`sAKq!50ZkZGFIwfj0+V1`5EDF};_ z0H~ny1QEy9mHB#ig2LeFtER?9M*)_;nmU*oxH41KJWjJck)&kx4h_SI~Pc@eEfos1@+X?WhOx>0EQdV`gGPxnsnC(ECPWn&fLnD9lflcz1lb^{Cn%AtG|h z9I+Jj#STxHt$G+H$i80=jSWpQO7+Mg5oxH8zyU<0k?b@&7)!CzP5A!+A7^L;_Wmo8 z;xMP#Pdfbky*jjPW^-DsXFj@r!Tirz_Vsk$399RBW0cDsM}fllq?hf>#AA&tR7WGn zrLIlD{CoD?q9@YFP-Z7MrU&}C{#|Ib5Rx!hkIVUS^#1?{NAvk><7KPr4cWfyar0wp zH(v42JP_0>lNBB&Mx>=kG!mi|sEM@lNgVNedm_D<&2rA8NYzSzrN^M-O8)?trfitb zk09-!JbeMBKWOyo!DT^ZU`ICnO>=TCbsKYYe|lMHx=5)VUPU29r}2N6rpXe`dtTp< z>;AX3>v4fm{cbzryq^)OZD#f^o)zt{Y2?u>kV3{&&}05@CX)WmBG-=Coh+;D!U)5vda zPK7`Vf#;4rXo`-e!z&IrnVvgs5a1Iwo&Qo_DnN=amMq*&ka!2bYmaCr90 z!=Zb=A6|@7WsW^Gs}4O*iJ3>J1pxYhQbM1|9E<&Z?}x*Y(l%{!7CZ^)Ciw%qqS(J5 zyTf_ND!hAZt9Oo6wKdYA+LH@gBP>iy1{RP2O@g0lcBR+8TWX<2aDV6T`S+&pCNXXI zR|*LU7Y-H2k^cZ!?Ca)t+`WmlcY5cy{R(2X_Ux8O_g(`dl!lu%kIt?ll1vU?3!Z6} znhNZor7*Td;))a#M=^0CiA0NK0l2h^)rb-@S6wmf!;pxR@1<0 zBO!s|#{gFzy%9<4Drxbx@=X<09Ld&HyDN1602s?u$(zVy=FJwXrrINLLzAp!6>(G1 zf06)UrFkR)P-^yXXKtZ1D{8%0!2{*SpPBQ|9yI6!CB)4!+})`Lk^(u-tz0T~V2Ta| zElC*EdWRi+SziX;tifYHhD<528%rZZGPC4l$WL2Ywkx*=8yP>B6BZ)6s}j*wE=3AQ zRanx+9IWEb_zeuQ_&?~ZDwLrHnL4sa9C!~-ttH$p0$ixns#>dEI!D9i04!*tl`HWQ zP5=$PbCSOHscLwpZK;h+-U6PUPr9U}sKnOM)YnajqK7E-$gs&>9HcNhrI4#AL=ncX zHMe5NB8ekImN+DjAS!(+=6tcy^|ivZ4lU*jaV#px2l^O18Gt&CJV4YsMMYJ09)e7^ zH#I!)Qf3h#+|Xh$f5IsK-l|hcjIPB^Us&%{!o0~)De`c$quo@328PnE&}n64)N67; z34$~z9rZb_Y7Tf)9=#ab&t+tV?P_**mPVDeCwps83W^E-MOzQl)e&Jd5F9D;+j6I}kM3)kECK3;-A-9n3tO8W06@ zKo+FaiS)_5x0ZG)v)oGlG_~-fkP%dF?6E_n8l3|*(x4MshM(^InQF;%RPj|+(NC4c z(Z`atB}^4{l`=sNdbP^1X&|Pkmqjc=OUTk(TS>W5f=i3nzk)q>rIABaQHdZq#%KW{ zMozCGO7vy>+B*wDw@%9)+QTcD=*m?TGeVU-7^ntD_&^4yBc%T8`)Da6nw-?6xjI^k z*=A|lDJtfs%gY3ERM412)b*v<&oXuz1qkv~uV%!6Kj zX7c0emMn&?uI9={`LYMx-#QsJ>MEEQC6 zEb(ZJRpcrgOP?C(3P05wF)xEHgzWL^y^w;ylExTTgaSn}N#Fn&so*-iX6jACIShnZ z!`h%xMADMV?WEM{jYUUstxu+4$zHXwM-Yu+bgIhE(8P`AT6&r)NZE_rDxpe3FU_t^ zzXgZ7j_Q`+cy6VJIE2!@+(jxEO>@W3r737_oXAOKF~p#gjY{r7r>$T44D|}5!%z3h zjjB47r>3R|5p_caMKtdmsz$F`5A%S6NFvreHMlG`vdX{$k_gf;G1{eBmA!Q-%UAND z!kD~Cye45sjI%Xs#g&v1_8-IZ8OB`k#+M~7Ld9vS=c}HoiYi5TnA5a1GUVx!z=08^ zhsPS-5X zQ5zqgqp6Re`3{~Yti{p_T#Y3yMKu)rm2=e86Uwu@;PIw9Y;wwV0%tX5b+-Yu8{Am? zTGz3qx?X@*-LF#MCk;@-1aXt-S<6v)4JVJ0dRyMy87${?dxf$vGpN!8^3|lL^g{S& zUawS8NUUnBW(gvrIHsB2vRNcyr5b4B94G(}>+HTu##^9biG+qpTT31a z=fz@J4~Q=S2WUKex;aQ0E%eCZo*D{@fv5n04kt-GNhj>-OG8NUjGR&mT56200y>vy zV-+&e&}3_(F=J_I)QvT{C3wi>GNYai&$DX~U2fx=HHPAQQI#6BLn~$=G2bs5;)gUn z65U)Ym?TdT;kUagDs+aDG&PZ%_#>lyi!U5>>42rtPmQjwStg{xW|?xBsFu@38U~7y z>t!tqMu{X#8iJ&$)JG=X&9->0zM9rcinH0>zljjerJ-1ro5&`WrU)ju9C|^!PpWCH zZAe>-t8dbjoDyhUAfr@}OA}m*SA}|a$5F=13{{lmBN?%^4N{FHZIrI9maS!mpI4eH zXfcsUpW6g-f2XqxOLA?}Ex>CiliTERXghYrE zjNA(}g-@1o)2v4!xcAoAn=d47QI*^@IVy@;d7zG!XeLT{>A+I)#?#GB5nCH9Xl!l| zwEKy@z1^*@uJn^6p^RaH8Z=Wp2_-=krU5jsNJ`pmJh6KY-Ux~dM~Pj5E#d;js!s(B zL9KE{YAM$4SPIR(2GHAh3QRLcLmuA3EiNHj9TXVq!4(hjIL@(8Q5d^QZiMhvsxh-Z!C*l+^lSzdt^NHf|7ttEta#8gZ!e z9#!dagQ1qbzJ(xLh@?*(a4Lu*(o&vCl)E7C#3n3IT#}%IE$jhvb!iX<`efR7#`>5JEvWPP{{Um`u2-Vy9(_Lm!8P;g+6ZszuoeRM{Gatg_T&0{M(n{z z^5fOrh{sNmMxZHRN#?*Ca(L&1d;4HErLPW@+rxn&H5te9>n|!#HXxDz01$n$Kqk7n zUDrWL{{UP1{{X)F`)n3IXRlCo+e8RF^Yt8D+;TrW^X|*q!H#LwWL;=dw5X>vU-&x@M<^QNp#R-Bw!#$!y44o9C`&5=@pS}z|@+kKZnFpsU#BA z(|MqlHmnX=uOKE#Y3_slNdCUmTe~ai9|xyQqCLcBR;p?8^{#8ge;{$vb9HVi{2gv7 zsc5L?$5qc+OTM-K;e2;Va}!NwpYF^WJYGheSRN#wiG?$q zj-Q^&SkKblIeR@-ji>=ia8@8tX*BT26%-ZJMsh%2L=e-z-o+|QPK~Z;3u&GG{rkIS2A=j=matHPHZDBN#lO3#xS=)gJ%DgITk2;T^MSG6i zjH>Qr5g--Pzz`ahF2LrL#Tyy)>oe_q#b=&uVp2$wYL(2hc-kh8LHANa9EgEPj9)-t z2>K6opKH4kGui1fkTn*?1#(B_z*e4Emk9kVzfK;WXp>PCb5IHy<4|k{VQjSkyU$O9T(C7^S0;DQJ zc)V3aWA305#1<+Vi0U1$A+^}5e_-*a-mVO=v}o$!M((G2*J^aL5fE6nP_IIr;%Q&ViiQGByvYi(5$qj zb&x=J1dG@oWb-^tVP;q{k_lND7h%AH4w5w|r2!yQ9-SG(6UTXQ%2z~+tO!w)LI^Ed zHwucXpSPv#R7WjAhN@bK5ot43INeo=JaqN&{oOrhnriuwA*y$%(RN5lP(HrL`)1tN zky~7((5z5gnu!TeUld!31&W1`XVAn_sS_0Xx z0n)PzLX}y}PIyyPV{wq?aF6p}<}F}0A$Vvb2d6j=z;bo&tP z@JBxF2JtF1J6W3RwrGrrCCdWeMKXquOb-hdjzdu;N(5d#2lp$MhikanOo=t?TSQ|K z$f8dQhPQDm1FltI8I@`nsO}Z%(wYdV@S7VIGNwwG57t* zr8JUHz!+%+8d9|+n$-UQ>IK%}CDr6m$zv6)9t89OgUC*__`gzxLoEhL(m2tkd z7BLkRnE3M4RkgLX6*Q#ET9nk$MHMu4>R3%2S{SP()s@fWdXV4TLu0o^WpfH9=DOsN z0#1|?1yt2c)o687HQ_;%8v@&n_wNX#l@Ft)Tate=JH^}tsOJ6|H zBgF+pKaxOWYKW<+G7`!o1wkmpR(`Nfr3ZoRvTxn~9G2ljL}o(tG;akMxrpMUQ7FOc zPjADVD@B;k71&}VWNHkBEb)O{@%T7UQ2F)Es^!R4 zddkZp#N$=L99;Xn_jfym-OcR!ULy4kO(k@yD5t3i5ED--`JSq_>1S^Ry2$a!O-lS> ziK!}0Fe(iwM@sFjxoP&!V`=URYFQ(!+S`w7?jJo3UxKXUFx!fYBIML~=SXT;Q=c5g z0;1{kHLg=#yi!>-kuH%N#ZV1u+LW4_dHlx?nTc*=+&q0%PWmYvS3xUE)|4~_Ksm|H zM_+T@k)4ZmYz>RK=|;M3&9nB_asp>bkAp9TqOXYg<6j)-MM(9i0luJnji!%H?5cdE zZ{&a2=y`fijz{##{%5CxEJ(fVNWHD}Hu_xqd!~j*SynJeI=H_E-(RQr{{WA)hT~8x zN>?2+WvC*ZO8S`85vXdp`rLu}7vtLph!yKl)5INT_r8~P$xf4hufKKfxF4t=*8b|j zkHTsBbyCz|wBujp*O=)xzOV8B0Afe@{{T;RRUmg7o~bOp69uJeE7u0~Y5Zwm-|O4) z?{w*}ss4}i{{UmGOzc>$ts{@=#~1qWe!lBo>UF=U{*Uwj0As8~omaicBFFu2q5lAQ z_oCf<>ONo3{f@9m!HFPn2Lt{0_4l#UYA8N^a5f8j^Zh^Le(a-DY3jnH)61+9I4h>y zn}56?YD8KMYt_J~QN7=*b-=#>+v|VN^#1^1@7;T>e_coYh#%JH>3{I{t`C6yy%t^o zBozK1@}96rMca?1#qae4`u_m0?!5@+kiQ^#ZW+U(zfB`>S0jKNkz8iWE=huiv zHL0)V)TpL?5!tu^>ErQp`1aEZF|SJ_xO7E9O(1nWC13%+)PG)o$NGD&k=KpXfYOWm zKiTS1NLj3=~)r>9y;q-LdYUZt!4f7=3Vf5(%@9?=wUPL=6z zDvq-Gg4kSh{YIno{;Of`r3oAjI;yKHYO531et-Bc`(ytA6YoMYJdaj=PAQT0b;Qkc zYlY*Ba1Fk<`rh8$Sc_!W9aUpt!I*UtN{axXkWbhBPuAb>AbVX5HD2Oz({jqt(MC-? z`jd@uHFY#@Z)p_Y$)QMXQ4K|ei)Al!$K%@9~s|$&Olcn^M zX~!4?KX3aze58Mxru!cvKb=Q!WO3CCR~%i#E*BXp1f3=R2byXa3dn3;onfK?{RmND ze?H|eaROOMW3^5~$6>eI!UBxy5Jn!Rq*ugO82MM`48M8j+jlvw7gfd0_=_hRQBf;O zjua&4BzkqZ{{ZqU>-4AHpCx-mvC~AGTWNK_O5rO?w~6ZVCcAjFqtxWw&OCDU=KY!l$%WnWlWYS#F`GRc36O3X%5u4^Fi9`H{Ua z{ptM3y8@dtxNs9~%xqb_CJo)>F=)hMsqoO!vM)B<_UnmSjTLBBgj%1DoOCxB}%@sbucs`dqeU=4dWznYwP6?JAWVSG&K-Hnb`7>Ks^Gb4qfFuYGihTL)2?iv~pU)1eIO_^AW zH!jJj{Ydu&?AMk@#oczm2Gen>c$9()t51dFngki*#F8*aLK&@^I6MWZp!M=O6eG%* z{{U4wDxW1beMB^$cKGU=dMuMIEhG3H^j2dgmFna}6o_t7RfYbf-}CNku@POs@W#jD zuMt`wv~(Alg|iWGKgGRQ;uQNy82bbu|)OG_m*l2o(g8bk~Wn4&XONl#T0s-0mY ziB$kMAaF_g`yzXLi);0W#+ncs6I|ESfe{OhZ*ZKbdl?|B+B0)$? zRZ`c%1faVol2l&|WZ#ld3#hl$`+gq{C3J8yG5*GX&(d3{%qmBSSn30q%$n88vo9y}a6PV(JQUQ-47CD>fcfM6{TDn&N*Oqc z@Zq1&J#wT)N>HyFAGQQZTL=YMN-h<+7ICEM;@{!<_VRd;6=@YjZchyGr}_HuK?;)? zCC`!c{#|0m)WMae$VXW2Y3SJyE68=lJ5&uV#Bu3k5|S-@f$c0zvopfri1i8)gGzqR zJu@RCGMPN82&nbP`#;M)D5>ia^6(mHiKxd%O*J00lt$51%Jj}xLn;|%NR943y#D}) zwR76W`cjg#O10FqsW~(_`#MsNC0dTs4KeHa^tSuhW!vd02abBIln}>9QtFi}J!M?6 zdP#_ci^&@`#fXfKZ^>z;r->ZO%4920c&?BDrYVpCJaSLj)2vrTN5}pj&*%C6T|2;& z#w#clB7&ZvxSBQBE5TiJ`;k;?KdMrB`X9x;v8p{jB&r#|4SdJUVB~$BDu+;mLjhL; zw5|{G{$uj%E;^l}qh7;ichB6n2-VH-r2d8m%|7FO80TEtww!u!~7jImln`4bLKn!R-kbF z@M~Yok4ZcfI825IIa##wH8u4y)l`}5a_~(Y6?sz<)iH^@u(d%}O)3R}QTh7&L2!_~ zvP^{PkY~^zP8@$f+0vV64G4gP6K0K^`ckX=c=7vsRc*b`nTCpRz(^28nGq*V>W4Jb+f0B(JtidMHE06aiR0Px7Cs6RfQj$$QPU;|ZqvA|R813zy< zT^#j0YXdygbySqXT0E4JOoY{VD;A{B6C&PyVqaR+@%ui{x2SS%crp7{qbCMY9U`TItN4RcG!!#SSuTkw(mDLTC0dC=YjbDz z<-C#G25En>jB6zE;X(cmy{XwkX{cX6pZbsT1Fe9*ENsf{h4KFYuD1SS41G3MOe{G} zlsJ;ch*sw2e60TfZeLrKEmSySNcs|eg;B|?<1WN;$Sg=X`4QFaP}@Xf6{`bU@yV}4 zqy1Q1g)DziR{Y!ox_!J2Ks_k%!$uLS({$-#Nctbo(0{fAk80v#{Cug?Z3?fgI&P9S z2KMxmWBqJ?zu*tGf_6Sbq|M?~6acMr*9{B~k;xvb{xqNXo1b<`S(pq{t5&D1g8W@U zw-!Is@_0X9J-q51X*@d7>%L1B8dXo^i+wq;KTd7#ix@*uQ`Y*Drr@&^egOJfz@B&? zaD76 z(D=Q{{1<3vskU=t;@s8ydvIhR$K`RjIkGWVQBzjd)5>Fr%L}P%>QWE0ZIuVt%PAE$ z@H4O5+x|j$Q1H*HO~C&Ex`Lzq9ke&dROEc|=U+T^^V;qmt%=x$qCfOylWhnSkm`tdFymf{JV;2<6uE#%cw)cJ!-1CfdqjqSDbHCRoTQHsgatrdPQ zJU;5jRaQ{e=W*NnZc$*(H9lW1gA$Z=_1Sv*lSE#srCk_))|Oi+hTiCSmpBD7Dd=!~ z^FhXgqGKJcq<>E)#>J%qX^79$5!%tC; zs|;3ZN=)KKl&X+MRa*g+D9ET4kojrjMW744_P*Scvv)NfKXFxKy4hilU8hhYk8#Uc zl!t9nIFhhvC~UrF}nIIC9+!+Bs$H}Oey%a0tP5R0fA6!kxn2~ zm+d9Fy|#+oWPxBa5RN_p8>lJ>aaUwMCY=>h$A=0hhCgp)D|eghxN>)kZqb}w4P_lZ zItVirRP@s3v2Z0eTP;zM1>=%9B{MU$Y92xfKGIu>X11Lz)UEtc6w)ynn&`{pr)p(R*4o#zsclls>p6hbsAWn>{X$NDny97m>QLtRBAxArw@Sn z5mF91Ik$k`gt@s@lJWIXMx_sLE9q8tD_YWp=}L?)D^%7}sO7TN;z^~7IdKMgs%s%( zQ#M|Ln0T3=$uaY>m@UEe-sa@r+6nFr*5@o5ogn%mbujMnlu>wN8ign_1x9)`v4Cy+ zd_@&m*5gQ2J*yM8Xehm+gy)Bsr%AXa^8KYWu&mLD1eB;lv>6P&RG}Jbi3>zop;pjH zx~YrET>~z?$@REMh+rc-X6!qnv7vB^3ch4jYXQ zPNGFH2MFqzR98zR5LG5xd7~K`ibrz-#UW|srA26wsw0iHT!I$Ef$oq`D&91-Mp?;H zdP*aMqt5N(zV8&SfTmXi23y46g2cQ;;GVN z^^>(WMy6_gQcH}bXr4&ulpPWIW{O>N5>2cCw>MF2E%wQ+ErDj-bu6+GkrZWX;eq5_ zH+@N<;l{lsl1VO-;!?D>O;Mm~0V7t0&l5mJ5|r~MxTZ{WR26AcJ!@8^Q)RJ{P|{OI zN=rlLs+%Mtd3E@bju#9qa2dt#&$`-uHOQXoK_bTYaERjo>F{+(Tq!l8pwAitbLrJD zB)Yd`ir7SCTX_q+9EYNa>IEuXig{Eirh4vE7P>==QR1qn&dc_!-dSj3mPz0(EZ&WB ze-4aTo3HqOJ*qLPi%+JZY0}}Dc$m<(koBoGC_L&14z!`l$@R4kj{w!cIRRRLc@Geu zpHlJDRl!FcNOMg*HEmXs4NW}rQc^59iI}zYQ_#rjvHby&{{SEW7VYs|i&k@3?gXWQ zJX{3=D*pgPRY3lc2Awf@ut_^x(_9XLNcG%@n&)uqa2Y#kgG0|iEAb#u6j5h%X6vr_iOyJ+R^V;HTy$iVDo#@t_gKb z9$-@+;g~2Ug<_Dep1QICu`yjt0KJX9)0M3ob>H>NBe&DUO4Ng0M1W~eBnF>pKD|?$ zF9oi`A&xZHJged%4S^UA%B4uD@e0)B5l}{Y+M^@4B&WiE5unP{(N6_c6?Ax-dU{z5 zQAIfhETt1c_VhIp)5fvt14u#0C!cbL2N?>ylVxhxBwK86P_T`9$@d^vEbpZ*^ktp$MpXI zTj)Kdl7#6#pW*9eUCyNhkF%-q-ZBWa$K&chKhXaGL;ZcRSd?ib{{XA<=}doAs1;OG z=l=i~)@@FC(!BHe{Qm&RUehpQ#)Q(pFY|P@Youz!Q$1x{X(#+`{=@Tc@#o#T-(7k? zAfNC&1O5iYAAalICHKD9rr!HAbnOa~Qa!vnEjkH)}WiqXJj_W-MAW>3XnGbcDol{ zS0FO4@rr7?ids2J%H~)p+7s$nl~9)YeJp9VyX%@Xp^aXZJZMEtJrAcr##&g%GyH77 zmKb1po)!JQ6~kO+iz`i66puYUVWrd}ooQNVZTEgQVj189z>5Mc_4aQQ2-Ra!PH1cM z{{V~VKPg3KGS`kN{$4-Ge$Oa0^T$c{)Nte}=ke61+<5hs@l=q=ViGK%_yw(SdH%l4 zp$XeG%{4>WSXivKL)elmUe=!prxuIm?aF# zA*U@90wMvzif6gdYzf8_rFReEu0-NR8e#%g^&Tn9m|b~i>QDlDC4T(p&W zDw@h;XsnULSt|XEvW4QFcp+7g02mGf3kxTVh8`U>$}5i{oN@bodQ9>#ET4q={i8oG z@bpQ(N_=73-TwgBaO|;DL9}vPZ!+0^i@BW1UE`B2Og{S`IF0`0C~`B?m;y5x)=&r+ z9^RCA(0DSB%y9?QXVB7z$kMdvo(7*~xHon&CQDYM4jP1mP6Ut*b4CE#5I4yW}JeUVJ^*^tVrmrBHk z;$)_DfIO&2m3)si2DMBe5QKYcFiT1Jw zSDl0fm16{lKB9!=)R1Zc;Z7b$q_+lG?bUAzyGf)N&=H5IQBNS0W9mZG`gI+5EXk32 zO7m0p(zId)6KF( z)?(tCcg;kfjbyeE9L`=WGtP!Y2Z?VgWtbW5?{p51-4gXj;^YNp*ga91^Us z!xTjou9XWVB&FYP3EXWWxRyYzUeF4PapDRw$E`p(^y}J`4Cl@3 zM`>?jbv>_Uq|-|V&mCt>tOb7*U>eq-)O4?we2rG!$;ptV$yH$RzPQ_u3UWYfgve=xYSm@gj`Mt@4 zbj)ES&OJbq3aZKoV$fuOr1Ho0W@E_vY2G&*iwiqTh5Cr*u(^tE-5xE)n={(8@b8KR z3aqqZqKsRhUiGrsjlxUM5pC|RuHu#>BMC$n^Zty&5TjC~lU*-VR^dey>y=5R!(g#l zd{kNLU5nWh(B-ieHSHACv>V50g(gtl zy2%wQMo>cv0&*Yu@+pd~t)8sUn4-<@j9z)?X=lm9Pq;CwYKG-}^mPjat9c87AU3tf zu(VRlEp8e%cDj!C;wy$ZWJ{j-o-FWT8P~5+$e^!6_O`M&P{#_Y?Xz3k$pWnc7PgQY z5l+?x*G`%e0jS4Z9vW&)g=}dRWDJE0mgeU6 z_etlrYuVOBGG9EPnl3(>qf}CW{2^QdNd$4I>q1FxEn{-g!U^(V)VhV)$aY;NyhKw~ z8S?Y#BL+r?7d2cp6eeISucMAwWzuL!AY&z1R1;MoR1c9g%{swBhvQluc7{VmWh`}QP*sg^q!HDEvMm-ul)Qn7yl0Y1d4oShpXWbEJQbufgZp zaj5$bN$cb~<}}~yZ%990Zf*3pzY16K>sjj}o<^1@`rh`p`^V?qg$cnYt)rAWhgpFn z{w;6!pZ5OjMLy1zMJqWV(}!K#ka^<&0PAz_T{=`24dy!N`bEd&u{Zw!VgCRX_r5(+ zdEH0?oI1o?(#`n>!}<^i7x(JprU!>7bcBaKpYcbo4nqs61TP2tNw*{G!S`0kucu8g z0jR$ZP4YI9NdA}S@o*0|_ViJQQcZEw$N?GS))tiN;YX*DbHP7ec=~&}w?3wyXI9hm z>lu{&cm(j@TYo`rf8PD3l-!P!2Pe{_?*&T=#QIF^I>j#v5Zl=WA-2FfwPwEf5s)Q6BB9c~>wKXa_ zj?$`vFMsvVJpTZP*WFvhuV}|q1E_{$&Z`7GaeY=l>`1@205s1Yw@P&xLzn}TKsRFg?YGg>_N7bwlwmc87Hu@8B?L3z68fri4{#`v3 zX(Q=1B8RSV)M{M-wXdsIqHp-nZh0L0OlmS|(vxi$r%nh16y>dM0b)L*^KY-c)Sjtz z;Y6sqOAOOLXHpgb?2K*tZ^1v+x%&I?Bx9t2t7TV8`W*ErQpaFT{{X_q-|hal_S4GX z&{Otw;6gwke=ek==;Q13xA>o_xIBG5vPmYVk6R#&9zADAg!_>?F0AKLr{{V;6lkFEq-E>)p zAn-o|!|VPd->5qGSejP!+x=HO--{pkpKe5o%|q$a6T3#5myLSH^J+XWAJhGB?S4|KiApcKi-|!n`O{fRMRxT(+H3HgpueA8Uw%(K79kOjoNG$%Mk);u9{Xf84V+{ z(;kI#C`cZsucasQgxE7|e}kKIb7W}bqRaPhU~fLut)rb7OCCO=NdG&71L<$AfaCpcJ&k%V>!N*E*4!RGyj%Ua_o6B&diPw_p20(%KkA7e(EWa# zpLOupt1B{^jy)nfXL`rh{XN?qjUy~)WA)ze+_1?b=|!l;VQQ*iB(o?VysAIP>G}3+ z%lm9Qr!npOY`~j&uVD^6^al+80P&SQ7{JHDYm@OrrH7XfUzHD9IDByItV&Op`6t*L zS-0lznhH&;wIOOLWl!(#Wj;@Ez+#S6`&zuQ{x=fS>IA6$KcssI?-%X3Tt4vb6)nnK*K3(f6(2dnQGkAQDpBaPPQ0)!JU4`CzgCBtY7gP5Xdz*jbJedyL+%@#FAP<7ub;}MK zgtD?dJt0xUa#_Fc7k2x;@wQ*6`Zv%eQ$;e*e1qvBZ8%eBWJix0k{aQpm8j#Rn=4^8 zpt}pEKg7HbiA<1q@W3ArTPy9%Bp6%<)x<#*bkN~&*q9m^lq68cj>bVp8b*OY3Or~0 zeZ`h>JQnd<8UV1W5WE7eKp!gPe5gFSR!Xokn%C|B099$_(N6E(yEbQPXCNpBU+1cxp1lOGUtf-_gs7Fh zeSXig?62q5J8oT-Sw#&sbtIG1)YMIz4H~p?(Z@KiEVT>d^?1t*Y5d>Zo4ajkD$jLp zx}{J8k-!2l2;gz&(Ji!y344VkR}{rF!|kO%)OrG|#1O?SbqdD1@m0vGu`z;7JV z%)~Wv)zz$37izB>q@Foh*hcaYA6=km(Gc_X`hSnMZdF8p9a#dDJP)b)57}Ok-Rfik z4Kg_XV!dN(gN%*ZX_BG_fK=TOdOSnZbXzF}hxp&wlycn0v04g9$5CdWrvapJpdzP- zOx1NFtqZPC=Zuf_aqGihiW$XA6JHWkkt)XDZu<2l;cru`gT=37?!f~N(F+hG@H!8%MRcoitx$~(%4u(ymVEKA)Qd9wC&!c_#9`JEtuAP*~gQJ)^ksZX{heRmToA$NIBgmH3)eR=T*Hf3yCs zJt->klH_p`(@{+6UsFdbW0p%8q^+lw2o75I4xjHP_V(eL7osX32=K|SuUh(6pO;jb zuA}ZvBz>HHGf&(6tH-Cv_kytQ9(MjSM-NVO$( zL_s7Jd2MgN{{Ug_2_6%b%WAC;koErnFP#N?YTgz%U#q2&s!z`Z@Taf&`a)1dQZr>FC>EK-J1Wp_a62?So=+P#BZ zk;iXMCNNvf`VaMR`Sh+E^Amoc1d)mi*X{E2{Q4E5#$)TUICMi(6VFjIyc(l|@~tea zw6h^#MLfZojlCw;KHpU_qOMAZ1COs7et(}1m4Qz12rPWhpZEva`*YHx1BQon*HY}t z2-_fYTe}~&so*d}A_uIjp^5xas460&hg09{=_H?NuhJ7|c@@Qc22hj+hMaiu;(WSw zn@kGgp^Gp-@tRZf>t!5WAjIP_xTLv{89_xxg~v9grj8NxH}tB3{yxdVE|m-L1psHr z3UsufIrRhl1E~vQPOIMhoBD{qJpNC;jAP5IQi6l7GR6zoog?rqdyXxuP(JRi$z45a znudD7=&f=<;2-tBC+K(s-PT9c0XQeE8Z2Z0J`>b73w|s>H|L+n)1GZ}^!BJWlU3;l zSecbcw*>G<;@^>PulsLr$0IvYxOKes(lW6nP!K<_Hva%0SJ#97x3?uMk<=XZqG`jf zM^2MsZT&g0C;lt{01@pN1(Y}Xyt=7%PzxSCa$E3EC;D5D_TNu;V1#g>r%by$wwO=y z>oQ1GSf9uA{M?iN@_nUv*x`O2mqjLkLk`+w?eqSAy=7S%6idFi7N zu~qcSvfDxWdl2&E0#B>e7-^=AMx?bf#E)9ig!vkdlJ4?IZIUtj!4R=(zov)nSlVzr+k{Iy#>dG9Xi9tbEv#9E;saqRdu`%3PeDx&I(0NQXsY&H8 zE7=dRTyio&8bLT7DnXk%7q3nW_sCJYhxdc$;VAtWMqDPoV zzA3Ua)p*UrJUK+I-Fu2H(U02nv=mg8HJeKlva%UGE_*#oQp}iayqOGa5J_0697#z8 zk`)S<_G|!9%9YQ>T#Vq4^Lg}2kSt8iDb%t65NgS#SQ^rzqlpw02R@~%v8a0oW^8=7 zTW&46U5?LVH+3H6%;O%H53ZXZx%TchlNp)D=3tUpGF5cAxg>aHiCT`LJdARZBm><` zTr6yDH0y3AfRHn;m90n>BhM7+RfV0LGZQs@W#u|hWjKC`>EGSR(Xb~=Q zn!9%I98M~qKV6W*WoDt;&`DcOhp5_nA8BIdj;4y1x+YlLE0L^vRd~c~lK7hUE`6qm zc=wY+XwC;{paDwhuAiA>UO68j(Y@qy9j?=KcUZ0Egco+J8Cq6t0oI@ZkcY^~W;E2# z(jrWiRR^0Nm#4*wmanby)kR-hK}A;pj*6Qlh|Xnc9-XU_t`uqJrjDd6k1dsMZSCpb z!nHP+rA&qEsc=EyH82&eD%9XjMKP5&@S~)6+i95D=uXobyHsi_(IKlKT|onBs;wBX z!3Y}cy;eL{)zS=o4GbHLBV9{rCxOzMqBf+Yl`)Mpj|D167MMXSY^`C<{imAdSS)_3 zStCFuXRia?inS|1JAk0_G$e7SLP#tv@1%|?#E)?$q9XtUC}7&zd`~v1?kCl1anl#@ zS}2w(Je@?C>dc-Bt1$J|DdV7)at(C^R7@`HD=DoTvFA~@v>!ogfnvNQT+a(Ja7xBV z%G1o(gK;LA$>_{(S2C8kvQ?Ja3#Ei2<-(4~FXdHgl^iLYbey0DroRc4b#+R-*ovY$ zc)X~Q^{-c|$jl8vq6W0K?fmgimobmFu%CR~M`#Dg`MR1ZNn>bpS@{}Nv4jaUY-d+ zkt&^5^Uo!Xqok!}axMC}`~zk7k!iY$H~@F?i3(_SojuNYl|;#>na`(9+&Oq$NJ_-X zMqz@Z@Tm1?$JzGNu9#A<+Ez_e)u4=xJc@{7mN@9qR~$n!*rbxU1%DtB?X7UZG#i6B zpA!ba6bb#8rF*#l02d7PuxCCcym5$+>98c!66f_lFaghz&rVL*r+Ch4TF9iX zXqImseI-iGqME45rQn|rGI5{?DtKHV+2CHy5ChyI6HR_vaRaA=vQs8_sE}-BH1!+4#JbQTOt$idG;7dC+jQ5P; zcveDnElA?AfOzBAfa@tCFp}2C;hQOwqn4HmNE8>v;xXDFmRVy|RgBf3B(db1u{S5( zo^JzW{pb~2a=n6Ec;ma^9lt+Q%d7$gkN#}dsYSO8BDxBz)! zX+S!2nvp6csfLzV6i-=%EVTBNB_$;+GO<~u<~Wg2-cUFuE_n8Hd1i(?t4l{3qn6zZ z41y66iv##jkj+48ih1;fCukKOWn-c_=vx(Las~$yY86kTW2HV92BM;>LoF3U?W%bz za!e}`BbOnXoa5*vrjj-vaP&q*nU6o4@I9Pu7L(iGtXh^}XH7H3y!doS^kH`UOM8ZD%__8jw;vfv z4F0rrr4J50TZi&npq`t&`&&8u7*9ow+LdD?1a#>IERjc&#H|$zkz^_IJsa#kYI;iiKpD0YE^Y7#JDhpDgqq=R3K4YZ#-Dzxb&=#ZScR;xQalxcGf( zifJ8Q9`S;cEe;z$xAIvSvX%McNl}Q3yu(3|plXVQT5%R?EHt$lN*NMOB@(7L@&1wz zu{P>fN>?wJ!B13sB#iZrH^BJ8?!sL~Me>?OD`((y^~nqwdFeGP1qI@`j+y8bMXP6;&o zNEjYpA=SM904)Bwr`>(MO}Xo+r2j}NrI2Gzg*`bMK0Yv~q=jcU0)sH{Q{?EuHo5Ej%O@BV5m0SLi^attvKtJ(5*k#mp5^K`B)2yHi4hPVF zKf~RI1v>Xx#ApSr`M=cv0L6d9+5vGV%cd4aE(eu*&kfZ(Foij>UB=fY8hvwyPZ=v>ex4eQf(U1#@wLmo^AD5p&xmQC= zWheG=xX=d>rlgATIrGn_RS#OxWNUJHRj87+*=s5=ie-&jS!>yiWi~=DN-&5hR4gtn z$Fn$AgzIX#15c$#*<5hwfr>H8@sPeC6l256gNdNve?R!7 ztX0+dj8yd5s6|tNGBZQ4^my?ltqPm!i^ zkM(D&>tq@i%meG1XZ%0Q*CaTt{wo?#)78sKkcq0~tXeoBU?A3pK|w1y1z0SXc>%LE z?ZF=RF(N3{MI~Zun)#Z4Du1hs8m3qAA1HVMk1sRFq|J3LE=rp%PmHG&buEjfq@J>+ zVK}N;o}OxoSSj7EUU=$i8T@}ldmrqNe(@uS4RtL~o_$Z*(|744*4iyd)XF%}`taf~ zY3O}AuFsx-9CrtM?8;uvq5GQd!s{)w{5rmTgwfN{=C@usRhgc6}O%0E5t}MP)EXt zIO9$OsS4oHKBFw~DLu6+(Xil07hnZNF{*~WI#jCFz<$`BHIuA!By&9I**J=apQH;#!vNR62BYx^^0f@r{t0gV{ez15*V?XV-^+DWDdNFXf)->vaRwNg|m@XrOQ zInX<%Jaqs%=^iR-(2(hPWTujh1w>U6C){Xl6pa!Fd13ptcwn&sr(YwTEA3y4ZEteF zPf-z%Mrzrq!3LPERWb2o;B~T(aco*sra;=w2nSE`1LVbYv*QSKEeltybhM36Sxu0% zCJ7zTv~j&##UPE=r75h;^#%|c)dSL47E|f=)s%8ac(-~GBOWv^Mkv5>CZEUWlf$jg zaI;%Ir+10~IUzw68cSk}Tvk3HP#!%)&(A{}eY6H+Q!M^z+s?B>>gpwqLg{pA*iGvC z75W~1q~GqXR#5~(k~7t*!_;T&Bj-*%DcWMXapOy;!BnD+I!LAnp~z88dhr;p$s$dz_5Wo338m<5q`tk0oG)OOB)ssW5XVOmhVPpYnY`88A-!aLq$@<2ST&PD?y6X zQ$1g7F)+58Epi5guB}TZni`tO;btbd;iu#}I3E}~_FmPCy>`4=5lNGet8x3%on)ag zNmQ6xiY3WJDzbAuO(bzrRW_NITt$E?6cx0y?d_D?$lfd6qyiAQi%~JqC8mi=D>Q+3$B!!_GGM zCM$cHq7it~Le5Y!tu@Bcv5b}_NGFLo2t!afz zjPge)j5Cy2%GlrX4w76YsVM5U?GjF_MciRgRV<_6ngyck%O5)9sR}101;I%Jc(Im@ z(zdc{D$csJj{uQcC^~_zGt*kvtW>p!3l2g`>P%{5>E!#ks!c`*DKZm`$-sz`)znc> zAwbZ86aWYsN3u4(g4QV{+aZy!V}K%-I*EzcQ5n;uNeHf^Q4dmcLTY+p$y7U4)ufdF0BuiJ)IwPeF-Y;{o;f9gGOA>a5~W-O z9NUBR_E))FPA+DMs1ZscB@=?z8YK>Nu&Vtj^ zM9jZ)E5w0ZH|kMy$@X&b!+YYpF=)zY)F?5h@cNzuJaT^0jdEI`h6P2PR5;b}>IWge zgaS!g5krAMI{N1S0K#&6K2F#EOur1Wbv02|O|$lv`GAuF#Ym zDJ}g7BmzGKbHF3nSBz9pb>i#|G1GI*$Lic%06*C9KdJVkz>lrTNZms4El#{;amcYh zPoN(C;6>^D&sSwdTDQVF$diyxtNjnqf35x==eE%5Ebs@ z)JI}05&ySi}F9M{kjoWp?GwR&nl9j;-{=-xflALKRn!ye!kZg6sJ{7nOVRz zp(D$zE&wggk@-A-f&B6H_Rof$7}u`?KqA*(Z^`2S08hvD_wNZh-A`O>K;&5e0Iq(Y z?T5QYiVsQdBzVvj!LRxHgzR}+gJZ!w{dp()5r22+xH~8ya6Ec%cVKzo3;919kI;Pw z{Eyp;ppLAn4o^^|f1$Ys)^D%Y_P4iHM@eTil7rB7z`eBp0KENASjaX!l$C&7&rPJEp9*Ge@}9R?81O>Bcgc8Vcqlp z00&Z#IX~2&$MpPvjrsPJk`$5EdYKAJSZVZ>3>f`In~p)_pYZmULR@KVuS@L}G#96J zY5a#zbdXA2SIDRGZnpZ6FK_BE?7ip-^sh=tuS$3+*59Px`jSu9!pr>tx3s2A;B}%; z4=$#PNj|*Ta1YYon+w?Se{HnkO%6I~?aYR~-AIm<^LM`=P6@x~{kOUq(B~EW`m)=y ziUw+ZpX_zt+qHov)(llo=H}l0PP%XwBi;g zi0bkY8kRm?M0v;zSAa;;57&czKh)~>q9|8abqJ?OU8N($QbN@A5vtf5GXky4TGv8; zfd2qMN3{kO89)K)lOr54Bz1?+s^x8T95Zpla)0Pwdhp$SI&w0uj(ot!^Xrh5=^yKU z47w7VA>jj5a`jf}I=Q~75? z7-%t)-k)F&ZruL>b4|Q%u*3{@)>l#ik~BdehB&;)S$sggphh!V)S}|rR=%{_g9o>c z2*WR_003$ER|Fm$YuDC~YV536Tx|`Z*E@PW7(Iiwu)8}Hvgt0g8+#uHE*FuM0Q1ZC z`s8n`IVaj4S=wXTHcNXYW33@ktIU!Cc0V_2u|B8EheH{nDgG_R5b39o0~qP$DU@A` z*bqg(AfKhLz;9>XBYO0l!5XP*4}|sRr2r{g18zh5nDO)nfDgNwsr!1|a759AN}VJ2 z_2WhubNyH7NVvb#@$cR@?CH5JS5Iv<{{X7J5%1<{xni49s}?9!~?;pQ(b@PtYzr(&GMRsq%#b zp4ED;wu|?DycQPqiYTC7(ZK7)bL46J2S-DDzDsj%z2T79^VQJd@tG`-RrT#H6?mI9 z=U6`Xu{(aY7a%nj)~%}k8%7@bauqX5E?59O-EM9zE*=;b2fMZJA%#-sbG>9yRImGw zWT)!xqYI(XA`luis_Q7)IaOj%&ntLLz@O1aHEBR5fU9vd^c`6@z+Z-#&aQe+=-d>w zlpBIfResypco^!nV{tnswd0vHHIR!XR&Q~zYMJI?teH*k!S@L75?XH?l7!Z_J8i>| z#fkCmKxLNXxg^LP%b3X~h{14F^nPJmAZ#LWED=#v>;0e^@iBtWUOs?zXwxbf+&4P( zLCwX->K{vfTiRf{6jJ~I2grGUldT}s+yydv3pd6r=P})Zfucm4C0~W0bdAXaBuYQxGRCr`b@a^Y| zM0!d*RgoL>^}pBHOPeet+oorY28UDK>5uY%o3Cw`D#lxTk@~2F6yaR(Jb2Xbr>9W2 z7EXY}Qk43%(^J;fQcG=LzT`lq0^aPtTYpbs_%#(&Y{uM2k;O;z>2pk`BO0cZBxBN_ z@m{?b?Zf1zk;_!F2gEHmhA}6RDr*OzMh(?ucjP(xTicT|#9CLUgoC&rH9epo_Qgo^ zsLx0ycGO1@4+?o7x9$FYdnC*DwAASYbgr~C80aa;GYQrt2CT@!=g9J1$S0EC-nMxx z_R$e?vcN(&3YiJ1C+DPqen3;C<3cGQQ2F}*0F(V$>LopV^&+aLBP0=1sHeqaq%p_k z8gJw-08l&(gGm-P_vDfko#c`+;K!zeG{~twzdp3IM=}FO;0KxW$^QT+6VnuR8O-!@ zOEj=WRT@s~A1fJxo>?M|Wz}{9XrorJwe@>#=bHL$DBq^J6yP}j0IQEp>1&M20DnyI z{QZ4@Ds%5V;;H7&H|WuL1cV^NMu?Z)G9LVyO3y*`ukbsm*6+&Bu+-31aZl zy?LjUM@=a&8B>yD=c*>B1EhClCS z-u>39dgevJAJh^4+k*E=h~QDB@23Vz~R>gLM$&}O}P4fKg1L5*(Fz63i0dNF20>fR189c zarydtWXYil@Xu6{1G!Jx_L`6Lbs=LRfFOqY3lU>}IlmXbw1JHdO**Vm$!g#5!fReU zaZgHhFj4;5Cd~I1wyObupyv1I-PU@kUobjUsjUEWk;CQw59id#sad4tSa2=C!+GJ4l{`PzJj?yaTRI}4_|cRPuu#btUcd~a^d*!!PpP}MH{ z**j-*Vd`@=`x|go&`+7g=C;0ws%jd53FV_%BTKPX0xh3uj!Rox<1iNucW?w?)Ua4k ztw)gzYANfSW1`K*Yn7fjtlLX?W}<^M6$c=n+4gm&KVxpZY*h090CRgl&9$7*xH0&u z+!l77G5PF5(m@{Pj*^C+Y}Q7fbMBn1t&D02sf2>wW(i`VseCykj^5nM;Rh5n6jNLu zv3St>brG%DTW4!oS&WE4QcW7GN_-~_O#uR*ksSf~Y>jr|%xx@=QxmzjJ63M29VY3U z4K!GcTze*$V&)~z?Hr34XDydpHa<$K$l6zuo|v^Xuc`Sn@nm?UiV|8x1Qz38_@jZ0 z{{SwEtrBD*cNPXl04f}5TnYhN14@!JrD_Q^=nd^|#LaI`!iOD<>+P+#w+8v$H9My% zi%J~UCbwuoim0iQi*8V6w;gnqsZE&J^z`%9W0Kglia0*pM#0c~>s|?Bjtc82L2BcQ z6jaTO!WN%as(L5z%4#%=JGnR2?I5r>=?G}m{-Wqi7a@EK7}07@7OKp^ z1Ke7e=<)9D>{8)im`4;g@IUeYrrVznwpCuWT~i9%+)i}J#6(; zx-G-JU`H6SG25S~u;j}X#P+jgENMloHyh-pNko!I zMPDUX2&$m@1Kh^6Z!VeUtge!lnHhfD6<2Swpp2igTB=%9$In~gW_wo7AX6-hV(9i+O2i!&441dXpqJT&kCc?AQA zuU=X;bB#=YlD49g?INm1j^a#}eD0Cs;T9<(h5$1Y`<#GnZ+?#1V_S8$@4B=qvVw5Z zNZLeVriVCU4n=e4(`MzAPHyzY44R6X-s{Pg# z6RguEER;~HxwvWN{38|fraHkj1x+JVEb++^qR2r_I=p3cnwK(#D#S1=<$Mm+s`d6t&Cnx7|2O$>7ttEa}zBq&W} zk;OCCEXoe2j8r*AxV7vDv(s(3!wt+9YDw`DCM$<34!WO{5~8{C^60iX?Prz==VGA7 z(g06jBm^VS=^Bkb-m%CQIb{(dPg69s)e0&qR-x&}J_V|%im7zQlj@C`cpx(^t#R!% zgu@ijuWi(_!gAFrAq>Pgp{@^+3s64Mbky;wa#96WUe(eY#BC~9B&`SsJOQm~)4fGX zRjqY(Bt%b{HB?m8^zGv`I9zo+FIJ`k&SR3Kf*o&SFK@52Tbs4Jn&RRxUGCANT2N`X zMFK^k6;jPzUUi`aW~K1L*2XJKgZg&bU7544X&8mhDi_Gp)6=Zfb&EkV*t0Aw~%9&2y`dr?nQ>p<2fBH1J||XuLWGEF)3_X*lhm1e08v z{Mxy?A(vuHJXNxJ8N{H!kbhMJxg|r3g<{3AiaQP7C)b2D`{R?X1|DqvQSB-D&81XTGV7vXrk*7xKezj;Nc{Fu zXoCye*_3M)*4}PlWlOiI!Teg@jjlO;AblWlgTZDwYAdhG5(K&Qn~k;X?$1v_ia*HXgKRw_wdAX;f@n&4_? zQEU4@7Zi}mBOhnP9F7S64>4daC#-=boNOre#=S{wb5Cu7-vgsj0~INTgi;P5p{DH&%p3 zFbSw4l?T?Iy(EGltfo4sul97Pe^o!s6HtDBT`9KB9EPJ6QY+&yW@rswCYCrJc%h_k zysQf}Pxay4hd( zYIShheIHf6Yw4OQ{=~?%^oC7Z#s-ckBcv)z7V*@|ra*qY568GOnD+&raww#PL&N8h z{(hxRz66fb$51sKRDRt2$5tRIlUb6$pQ9U|L1NsFKCSGJ$6q7-x>Hs?NmLpQzesPV z^u52Y;F0cy)xI8=T6`q@`pk+Omat!^1nPFUHnq*bAJd<7U=K>PuB}w=r&$ZfepP|v z>Mi)=`(M-EwEdl1u7sER9tYr$$K%^)i5+{XDK+$J%rkUoIBZ=b?N)ln}2Th0d_9TV`A#ONV1Jb^Hf637m)wE`2a-$?tzE#y)epIb~ z+;m+sRaJE`HDgOfE7KX)u6jp=NY!+%KG~^OiFC(kt{4JIJfCKE-W0l?2FN)gpU?cA z2ku$R=p@ioQy9smI!{zhLp?S=qKd9sR;PLDa!@)ZkxeaU*~qe)k;@58w&h9x03T}< z6kQ~eHCH~Trb#B6jc7lY?CAgtLG->kn5Czn+qsCbhAC_Ei#~>trFwWFrzmn2GSpe6 zEW&qniEPSZ7W9jIe4&sl%kekD#Ag`$G5(>`QpqlnAA%k*c#;6m=URM*c=XA&A%+S% ztN^XZ*UyHdmbMytiKwd{qB6b#Q2Jt0vDd&%&>04z545b1J9rY&8=3DGOKA($iLBYB9gU3^`VJkc!3d(?c{;*gR+yh9BDo z#{TyMGx$1=7&fn%9a`$z86i|<2BeJn{{Vy2{wu9*{(t;*ujxM2$mg*%ut&0c2C{6% z9z1j|X|WY*u}e{pk~rg7G2i8eK}i;(=9Nk2#QP-OBXk9#s79eQ6{9HaBj!jM^sYKQ zPI5g6HtH~;>T1k9T`2^H*Bgq77G_vAhT`y4@Cop}qRD>Q?#CooMWcx7j%g9J7 zYNn(blNCN8P8w-Saiw!tuT(bBXi)1yvH}4l0V&RtUyD&{`K@V=&^mdo5@Xax)W(*j zDdA}3dXrCAA(}c#Ddu5uPfV4#nvN-BxQSfq=h>Ug*3hA0`kWM&p(SVspc<1J6n5v& zqS#biHA`!Vwnm*w2X#RFO{PI#6}}<`G15AV=~GQvB#<-)tr;4Y zrZGqT9Mw53H3VhJO1&c(C_^|2%o>{A8IUreyO!Xzlbp}mlt`FIk>$O~~D)F6^b zuS9a%s?FjE$Z+a){XR`9KeUN~7!<8ACoL>wAWC=skrHkMWzHHY9VUmYFLw0Qm-1YWv+2kUYoKFKhVy_ zBy^ThtXAL*kXOci62{n}1zLn?JOSv~d?C#4Dn7*AiMR3Zo2kh3{^G=CC{`1cmTWyt zu~XGkEVC%7#K+;WwLYQ1EP9knCYe)LMzIx;wCfyj5x|)JN~@$pbR-X?{>XC zJyzDup9ltdnJEI5kOp~f2_=uabC%$DE9={d719ZzYk6bUhn^)Z1hn&IBjr;-K^W;j zAlgM?uvlAIG*UI2#dj0Ng!WvqOPF)ORf($LEePS#TDLVx1VeS=8k&=H;3nGC8Ty!F zIOua5dpER_iAmek(S5W=4-ra=mD8?S6}TqloyPlZg6ivX+Gmh%R+s4vu60u8-b;2K zEQ#DZPw9dH0=fAK1)SHCe&gI#pJ}@nPXO#9DWJIwphy5UIb~8Jips&-&`O#kag-9Z z2_rPC6$-$Cs-RP$6c;;*wVva0G2SdPyoMm5TtPwvWExjUYKA_ZeJApZJkx&?dRg)L zdVyC~#1s3WQXNo5QBfY?}aPkOhv596#a9_b<&?h$AiB#Ffi zlkkZtuN0{~2;y&KVTwPYNfK?j3baopSy~xXiU-cJxm=UmN}BY`6p+*wV^t&~dbk9_ zszD>iB+F4E%mjx?iE3jZ*}j^`vfE~eu$3oh=6M%hqf#qUDjO6Gxjw8oRCHw`Neuvu zF-Y2)MF9gyraa1#KtF`_o@zO(DkN%@ijF6&meay@Mdh9dW>5{v7)fNXCcv@wrR`q& zNh6$yU|EirUp8e^`HmcYa5K|U+{JGStOcZyMk=R`6^Q$5#=mD%vECYbKeK8|sB)f3 zYNe@>w5$melnWeo)gJ(J^}qWMZ(0`*cE=Nxs){)9wBJO)XM_09oYR zGopS7jQ;>nU_ID7O&f3&bpUxPy8s9JvtETTN*c%($Vyl3Az1yt7w5yRr5)rK1 zAbvRH56|b>UxOcz73n|76aO8<3*;C>(gwCICYVw3;m+@{MyZL^&nk``^URO8Zy;}YuA+l869A0i3Ebd zewI2*amO}M^*-J3qNl<-xJ4dW>j#j3wIA^|{{V{nuqp)y4y{UcjgF#i#rWfk{{XLV zsrRBu>V_!IYNDsCOi34O>b>s2)Y$(3kF}8!%4_SZo}>Dgmc5VD{0HJ4;{h#XN{;XsX-p$4B!MVMU ztqJ@ z{An8|$B%aUk~mlP_3ZMD-kba`2>#G4HQVWH z6LWv5eO!xJ@;<-Rd-sf=FWJ>WkP0mTJZb0l`t>3> zWEThhS0C#i=soLNwntA#3pghOJ!_l)01Bb(#p}=Ik%rqsv8n5O7r3Zkjs&=Bx-1Ub z%gZn59uYV1M}{-p z?w08RrvfzwHT3~O!N>CJTi^Ihr&_-L`JM5@6Fn6+OB0LSeU;x^gi8?v9^FH>TN}3| z`-b%ihUeW-vY_;Wy1u;ofO+CqYYS^9c?<4aoumYYJ;D(8@+pr$Fc%0|wp1Vk{hW0#uZT`O=+cGtHnh&2EyHpEaI<9ci-_q+FYe|AvR)ZzvsA(ArEtF{h@W>@E9 zn`!K_0TDj!&*oC5zciLQ+s0o}0D>-W-RC^UgIY(qJ>AnlqXrvdG*5Qqd|y>4q-5j( zX~UyiIOBwwAV1oJt3QUBQauUIo)zn1+E`(vrl+QY80q1LDB*&VKl60(!5YI9F^dmO zamE1Si+_i(6|y9Dk;595w+lr>Q$+-T4N0l8`<{GCqZdp5U4xHeX#_cVll(m% zUSFS0nL4Wy+qJZ@MHGinSxS&{ ze8n^6T6*>AuD1ChD+`l3;a{|Wll@$J&9OH$*t|UQ=A*1!b}~~#6jh4Q)Kkudw97{6 zd28q^2Bxt$xb}_>cDGj&p*|37AD5ud59QOg^NUEDNsUvqQ2Lsl9$&MM^Ho!BS@Sh3 zF4d~1po*?4tWxDFCz>XUAo1&t1;y1lXA%WqTHj7bwSFm__{&kO5D38^?DbWVWdYQD zRi-IIeqLYZ=s>{cX^kwH%yWIb)Km`;si&insNtHb8C*=W5#n{0z7`~X6p{zj-qDz2 z?U<10FgRAeWOZ0RI4q_q{~*O-<|8Cyz)M@q)tKGh7mEEzj4H?!n5PS;l(U zW9oXtDqB*0ZUxB~x6uAi*N<)o@jJZwa}q5NQCc7e1bu&}_#4D|b-Ryk?Y#X>T_VurH-%kO%T_0fN_zTeJS(Uvkp>nlEXAV00hH~l zC#@N-U09DsDgvDItOnTk;`>?Wgae46)Q|S=ZGSNR)>KcDV{xR8Jg3ya^1Oy z+c+#n)5~lw&cd$8$VC=6;I*ZvJI}9MYn)L+f zRNLM%9IgmLr&9naMp05c_#Qn(PhlOpUEDyZ9y{pD_NwWmi`uM30<{Mm0!Z>!Aunxi zJ=LGyFk>+TG1wbpF|=?pJsYq^sO~H-DQ*W%TTW70r`>tK(fZFvqe#NS!ua2J`oWo>b-Srs?g=ejLy}6yI z`#7X?=tl8Bt&g?IBul$N`mmLHfHZ+pM{Yp#t}1iFnXgWrcbjWLdXM2FEQO-f8(eHk z>oo&K05T{Q3UyTJ9RUu|(c*V5))L7b9(Na0O$AEB_7YY_wRdc$gDX8OBD^8UHCt0G zBBB_JHkOyrY=$+7ETXr&EW3oZ^2X#;R4m}BH2jBg6;r3o&_}LGZtb@<3{u{7kOPsb zdv*m$KNp6f%|K$Ni~$3=$8uFxPc}OnT`ZX##8KokIXo?8Vo#B-riN;om@pODLt9xb zT47FcPmF)%IU{ufnJ ztsvEHS6}LVka(BYUGAk_0nkHsqOA(Vrv`}4T7jCA(A<3{;TZvfz|TenDDK9n@{vJ9 zBB=xAP891FS26chlhR{p-n?Y;c$}6VI&Vx+f3|c zN@XMX$@61cQ_7x{r7_a$Yk_?n@yQ#m-jl?!0x;32Q&2db>eLZ{0r~XJ9CKvSu9_H~ zMkgCiDd8^iu$0u(L0Ir4U|z1Orl7sYr4*2Ufcrxoyq98oP#iU-vgj4Am#X-MLYz5b zO+^Bqi_fDccC|)Hz>0(9Y5Cb;vr`l@GfO0% zC{o0eMqNw+r)tv_#wa??Ej>0PDO8H#>fo=V7{z^M9ErtCRLsPvNf(9FZVU1Bzqek} z9lLXpB@6XUEMhQn3Dg|B6H%+n^T4M~#c^?eV-w|IF*%TqBN{@jJh+(ksbbm--GS@nGBbv^5#L}Uu$MkaDp*aH8mQB zp3~*Sty&~@HcMk~5fEA=XrvE_ngS>@OoHCI>TJ_wBLW(FS?J`d!{Xj*uxmItERm$vkp`4EaWw?Vukjr;1dQ+;I!zRIZ~C)3NU_|= z6$lzv1Q_&;V2aU!HLtH(W}{c}Wie1v)6q*b_zYrX73yZMmMVC~W>!=xV~mI@V{mO? z?Z6}x?V0T!SC00;!yTg&1YRoZGBVISnFMek)cWU-O~-K2>ao9R9_dkTBq>D^t1;0K zJWf@I8jvz_I%t)rrmd%0VX7vQmPLhNQwvn1DPv{|3&mF}q?StX0@aq?y7r^wAr7G-%Ms;I_U0UWC}!QhJT$E26Xa)asP;0mwu5t;X5n zBz_)(x3gSrR`5k?i*dO<%zBy4SiI66^X95hJb+f3LXHQoWTwX8adpW|kC0PdO zG}O5aMFk}b%)U&UQLJufc3L41lSEiKf&L-9sOszq(8zLHa%HMl}l4&lRsm3L3D2O+gv0N$oy-Ys1g{-3~o1 z)oW9c+goP{xu<;oay(WgGVGPL(#@1=Wu+0((K5k}#6+@@6joG>TEKgZcgvNqu{UEY72b6_SL&-A9f9uD*d3k=KSDlF@vGw!+0Ain?QksaBL<$!`94ImV zs`T}!9s#)0w;zwE^!Iq^YhJcvkA{&?uyx2AeLj~2kHNP*kI%QL2M)FsSK$D4#id*R z6p!^FjzRkW0I%-KwH+mz`6QBT2leOPj6PtHI&5B_H6ORGN^EWo z{{RR6C)+*|2aijYwJ2{y2fz|ruu0hEP03Xl`5Agn;{ZrSv z#Vx1BdPZ09ATTbqdV^MgWdHEBW=PS8nY*{{UQX{n^)bP)}V^fvL)E>iT06!5vbP zW{$F*-ui_-Jc>BBpU2kz#0gmtTd^yrBRq8ugAz?F(2*F(EE=MudQ!hHKQ4)-eK^F^ z=t_9u6t7Z#(vm2niDZp5k1D_s1H5cYadu&I?8d~4T}U&i)Z&%L%ly3%O9XBh!fL?L zyvRI%)&Bq&(0#hAg+yfG6C7%5lAfA5qoQi5(vhT!T93O5x>_h?C6phdl76Szk(yC0 z5CXbK`G3j(02R}4T5FAsII-e?!SeqAE`2&iWp@Mub;Q#>O-%H;#fno5l2JoW&qW$Z zBw=7OO4GvLpjm+jN%Zg*J2bF_B9!#S4Sc;mc=_~><6L(u7^oqzDruFk_0Qv! z#0m$gt|`W+%AR~{{$8@rjFO`zM-oQ#)R>AY$mgfiHF0xrVU7fhgs-cH`h&_C#x4gJ z9`7tfPyhh(raxz=%nvS@`e)bmjLqSJT{Svu{{R)`>TA#e@)x4;Um!Y*Kh~Mqsp;!- z*p#1aW|lOPOlJ4TWEm)oZtj%Q%~?ZG(KATEQ^g~ql~PBxrnQRZCs{wSAcIdKP9V_a zapC3FW`b0?UCzWPyNHG!TJ+boh^0dVLsP){5D!|MZ_THc>kaj|wtjAwY7Fkt%H?*> z;DiFCig_f)R1oO0#r{=HTFj=$P$T+~jlf%3zM|B2L@49}0Y>doaimtiF7Ka1>nUa2 z>_MLl;4*`qF1^}(i3;Nwp&oQSMyfH>$rPB1YPoS#%5peX$kQZ$b4?t+JnlY4qVmUE z6T8{umH37&1X+OgWMX3D=u)63h`Gj*{i0)tHOXp<3TMd_Xke7 z>R8oC1GFlNyOtSRo<>0Q%JMZUQi@3iIhrMUlR)xF^;FW!5`CmO3Kx(~DL0vQq-a9f zeVN0q_6C|=0vO}$;ixYM2AEeA%v<}O5#%}kyb#_N~*e*!3+VrDBzNPhcDTdSAO9FfTvXrYr{{LXN~eGa(&zF$r?Zad>+RYw zOFLtReqbB{Pcw>we2+^cX#5AQ033P{vGrM2FwwM`ii(?qd?w#f=I zwR~yqyMYI|j?X%ZgQ}vqJz%Y}AfJy%yJfakvcab0c_-O+^S9nRw}8P{FW47(GRtfz0wr zBs(nZi@8B6_+8-?tJn03{xuYJr{N7Boex!=iLT4jMMskR+8mN(w%u(ULI|SQnx>2S$XnG)mW%dI9zO$k+5w*24JS#a9ZCDjis&P+PsMhn5I%xgB{sw%>tTs2+o=y zKQY#}roOl~F6#}#Ie27ra6`heoidY3$Q+7L)C!8{q1GJphGH>S?(3SCdee{G%VHO$J9m= z3oBN(wnP^2cX&hvRfMS;Mkt^#Bme*uraEU!M+4MN8coeaD+NfAF9d`t)l-#pXUDMQOtO}T*4^viIbLna-n9dW{L$7Rl1V8QB^=Afx-L_W>%NdX}8*@?X>aB0&-re zpavrt;t$AlU3X%-=f00ozAy!#G|(!>s69?=UOYVd$wgRXndP%JLro}-p=FXu)-vUu z69kOka}W5n&(qq=X%=Z&$<%7V5=k@-!iKd2g?&11=HEnOJP3k{tpHln2T&cS?5A7* z0RI5ODf<)wftK*h^+`w_G3^7^8kL%w|*y8w6>xLEpyNK+}NA@ z54KH5uSzW(uppY?b;sJ%!=y2PXus))_n5%Rt_VMX1;_jta(VXLf`c7wb=t`5^kdKXpZKq~2nXT-{k?dA zc=gP;_OEgDwf_Lv-`%jk4-UQ7GQ^!+-~E61pL!=X>wR_aU3;z!PLpCm7U%tswF(4^ z0^x^6GRYv3hNDeK%=-0=zc%OSO@|zRPxa5WI2<}-sP5+W9?xgkZ zu$J`z+%f$ia1Zq)4hT{H!``~zT{OUR!M_@Z1O5wZ{{UZm0GxUCu%(R$SXy-^}N}{e9@IIQ8PR|MKHN?n zSa9nNwUZgO_-;qzgJb>xem&gz9{{WA#zZ0IR8vdI7 zgZv!?P|-TFvWYlgZ*gD;^*>7sdlv~53Lj32F0J^LA&otM)%!lqpQ+*TsJ|@y4L2kG zkMzIwKGDgSC(ERekjkFU1s2OgHx5l}@s$o~LDACNg8k-+-5@7CdWwxDExwNr2haN0JF~I!bn(o~B#)ZR(_yI0@&17brpC+^ zo^DV35uKAAx7s_s#ynhZo9T>tk!Nfh1J5@U$DIW;(tGF<=X0{Nl}V1*T<6a$3av$J zT9QUQjW}V${t_S6lymlXbasO?&Hc*w-H+RJv8U}v1pSBD6;;(m<0I7Khi8Vr?#M{F-|0RtMR`bY}YVydp%yvA!zlJblyXWXwy($ieIZX}YbBOZf< zVw`Y)F1L_qiy0Z17S_dxAKKJ!VZgP|v4EfWM{h^!r%rhFlzMe=NYtj|pP?VqkEgWt z9as_80^}92Kdpb*5Klkrds83wP5Je&KC+i$Eqjx~kEPr2I0TYU;CoL&L#qo+pF#8M z#F9FoFXwyOrlO0l`hK0G7@RB8Z=KTr0CvHt>oT?JkHdLm1cLOmf@Wos!Znc`*=&8E z#}Y%zvrjr!3-%8n1HZ$EOlTBSRa#~YfDZEm&>am%F7Axi9v2NM;(de~0qar;AaV1h zE74=w5aaRNKX&%)+mmtRu=Mb4OxD=M&mzOPa{F3?6Gr(}%F@bH_+>8X%}Wtb!A+0@ z_#W5U!5-@+#jFYte(ebAf6*mvMrVwEH4ra{RTLFo8iDHZJe4;zDrHa!I5b+5@n?a@ z&(Ev*{$3a?Smk_I-{M;gG|8E&nr;^W*y zeY`I)Zxe3_Dm2FlVZn?E;R2*!_JtJ$YkLTpA9}eEvOLD z)fh=5{ie)$`f>gq&i4JhO?7W<;ExvFmlXUOyz z?(V?;AKP132v^IDmu2O@h@r9n04S)1+5*-MrAnXA*YWICv+UDda+$wQ*$w{6fV;ni{WB7b-L1@n)r`eBR%cBsexdo0q&(GI| z2hXk<%GRB0nuVmT6-g~5k--|tB|SYPa71RXzwMM9pXe|2_NwXbW<>DWbO_YaqvzMB z1@toHYN4imJwL(z&rxbB>1M}HVq{q8<64Bgkr?DyBMT!mh|H)}uWS2Yq55rHWgcFC zZ8+1{tDPY##~_w1Y|hgo6E(s_B2?63QDUvepnd5c9dSqz zn&6TN0<>CUwBhH+9dA*=Bf7so^?u(!T6LD1lA{}6iw$`3KW|wy^%V11B(uP>Q!B*! zWOQVZ1N7v3qd=*qLTYsr{{R{%uOrT%rDniN_&hPh3X0c&AM75U#!m}PL}jlcj#*ZB zdir$`dE|r}qqFG?5o;Th!2J7H9D+!lW+9?l;=BjX)9oO1Xj>gmF=;(ymNnnReF-+1K=kv^KtLddy094XK zZUG*a{{Ug{*Cs5a#5}a%zsngl&-$y@qts*?a-f4=K6&|5pu>FCM@2_VD8-stWT~vj z;;JK9pZH!rw;5EizI5E8Q!PV=i(Zf%D}4vFa~N7wlS3IHQ&FVU0t)aVy)1E6B`74~ zE9vv}=~uCH84a;XwXi#avn#l%>nbT=rpV-IO-(e?G|@=XYmFK>(t))2n2-uFAfIXN zt{&6}Ae&uzrf73QX~2EGGaE`9RII)i% z#UQFFk(Qo90kg2UV_-+q-FFFOlK4nZYbY!B{#<%eOUl9^J6zD8@E?%rXErY@mYMdZ z)u^q=WH%hNyLSnVr7}m8tI5^ZM6{I?IbBHw9opPj-~DfF+}%lU6J1~xjINW!vv2?$ zl4x#Te?mlcPF@^uq2`}JwaFsEM?C#Lp6DEmb+F`hkz$NGF>-#qThcy* z>-6US{8$l^IQ8PihI*MAs$J9%t*pG0YjS_v`(Zc}^XYZ3_GJA30L|2qz#NZl$fs36 z=~(L`4_XhWseZrWN4CnEa5U?Da5~T*`SEVNrtA65-yL^TM~cSO%S*R&`Ax|s98_{a zu(n>=m1*%4WH0x1XFT$FU1J2Vr}9U+17=|b#k5Ob55QI})|3XkI*Ym5 z=0>o;h%H&r1sU(BlG80t1PbKmsvYk!+PmW~RT$m)yx(AUUfZJGS!vp@a^~|3wrXfx zR$}w5SC33I_`E(B2TJ;yD5Yc|sr3WwO>1l-u}`NX^$h{4(D2C4c+>3Y2|e+<-dfvp zLhS9iOf*b(rtV?Cga4`ZNs*le0*SzlD`qR934}bEx?o z4_!TI?hj`g*xN-bERe{+78=%9G>kFOfCC(0sGtO#kR-22-QR`BWAh(nE9NpdS{X4O zT&!zH4oQtgELpwTfTYJx(ak#I+NKJ6i5MF^7i~I%`*LNul|xE&kZ3AbQ3kBQ1ClTU zP#Srfj-J{s99XQXv8C+Q!C4g*lnBw8vZ3`e6dJM!U?}woYWzfPw<68qYwK~f^_3?C z)p6t<+8V=8LtRlr1yrBE9UWFDCel}=f48PR2KZx9pa-YRcmfh9pYL>glK&Hj$VqT4Sk*&=vNHE=-n$qe*olM2#I8f>aVK!0Kh8 z90AGn>1n-fw{!8A#PFgJ$oP8%pugy?qY4xofCs;>V;= z5j3@R!!skjw)pcXvZ|K$T#N_N;>+?9Vu#jUe=?jsH8a*kt(Sl zB=ql5H-e!ecdvGsBw#JYwE!)sF?k4r?tPjDNUSVv+GS^{A)1X*T56LeP;sdvJUUml zN%b~SZWkT*ce1Eq83h|aAPT76$}OZPb_M5dC8p=6OIjn~JbYJ)IRt}ZO30B^$=H#0!j z7g6_K5~4{JPKer|XVrsn^c58H>DyIVRw#h*?20y++M3-+1QD8rrD{0Tk4~H^X|c&g z=c{m(!YORD)|RqrT6rC3O7j|*q^!$UqAVrtJ>s@$O!n5ibZq!y_G??mW$r2J@O?5tTntBRpqNbvrXUNkJw1zD8 zT||+`1XNQ`AKBB;!!C&*#YmvCf=;2pu=eGxwD$IKT#~{g6(=T&5eteS2jM&`>S#r4 z*QK60W|A0$QXOR5qJl|vQ{pp`P%7lm;8L~8>Ee3WYu=9`6)dq(Q`XM3luc8rc&J(! z(;tqer!VA=ns{Lbq18?NoDMyjM=I`7MJ1dlY$B10g1|BW07Q%&_kawP709hA(QH=I z+ANlGI?d_?&sGEeLgjxYuXt>7=K| zRJc~HrJ|BVP}grBnp5OlT%OzYCxw-A@C!aEiWT7Mt@Yf z?K)H>YQ&l|89xu10MmzDcN2dMHFOv%n4*}?CPJ^xPp+iJM+Sl`6~jmS^)ow&)Djoz za6OmrHfGOVjkBW6wJc~`;S{ZW!D33&%ZE;FA#YhO_XK8u4-P)y2YXa$q2du$NhX!+ zaF2)>obJ=<4~@7iljErN_G_*%85uH}jBO@Ls$IdBr+kG@IR5|)tENgdT6%(h;-E^h zAmN86+`-GxNnx~Y^RXp@GPuYgX+u$(R9C2d)hD>QwU1AMBde<|3LfgwNb(*>%jZMU znmActpKjIch^k$4+q)-`&c&HEs&e^RA(CiPmZ_RrjC~zBrWQjPh(>Sp=h_Y6Lu@0O z*nXjyc8s+%zzqJu(f;28Txqq)0gWms7=y%DBp=!Q`ndl9<(t*DdEVNh+&i9@I)Sq` zyj!0tw6!f=Lyg^asIWnbq^kRLNnwFOb+dBHc;nn9&y#%(oR;z7u2>QI8spZVR{Lo=wq!!T`E`d^7q)@Uru?w}mbdix>eS<;gRVkr+esvS2MSO4eLp_^ zUcJ_3l!iZ1VfD8hj()%E`)ubO9RrTI`7Yy6tJC=8eLjZY>w9cQ0R$elSPnco&X4_| zKqCJDk;nUfIUe1i>Yglr#J{w4&N)hu%513G?QKo16uN0pH8tG_1M%*Tfrdv_GN>S_ z1Xnyg4^%V!*E*H(U6Hfaey3lS6WNNh4H41KyWu%y@uh)Wpp4M4h zcrJ|irl3!tpruci4Kv1_2d^z-g6>(t081DjDvI#?YhPd6njGE<44EkDY2%;8S3xR8 zUkuSItvuSiQN)q4JV*#XOE(_GP@_v}9Bc_z)JdVGYs8)dqA4Ws={nH5_L1f*#-oq> zJbgL^-yJ=5WoqIVMqddMQzk;aoXss1O0&xpVHV38RVrD()e=9$+KXkDa?z^=i3j*P zO)N{{_{wrcPXkUqnKUQm#FI{#=x0sAM~SGcqGVA`G1?P z)`GffxGIp(LFLHTSIt`zM;vQWK@z0}PGX(^0D1ADUC~y+i4W)7cK}wff}@@xdVo`1xL`o%k8H$Dawr)? zPxXJR%daa(8`4kgy!ddgPyATwr~d$&7sR@r*xD0(f$QzDjiTOLCm$_mXwu`Rg{R!O z2qK0WT-+uJ(;pmI8hFA-PKs)#X_<80ZS1FV+n)7gXzSyHP&ihVs`~koK7Vgp+OHwl zZ(3(%U8+{@&J~%JRrt^h1#^s0)P)1Bb|?)}Q&!U}%N11&zkFhq;er7Qqf*wzR3v4d zS*P+x62dtkup-y?9I$C3f>d7HxL8T0sGzF$vXDq-X4C*c38ha8(0gtq0&L=+aEnFVw!eoCdRI*VrSEQE@`1;U++&1VTVygw=wnq3H$8b2GXS7VzNH9xOHZRFhL6 zUfpC-OArXHLv~I?5!1;WEU?OqCY5IrQb|?A8DWOsvnxc(@-6PAz_7QpJC)U6RvIS< zA-hTbAeF)3TjpqTGOETmEaA;vNT4f53*-xVih>mRfm)jM+mCqu@*?WeX(!X;@~nWV z7HIfmb|dNd_M2rfKIDRGmCuoCiXSYK`#ic?cCYlz6oFql(x0F0>E#h6sMRuKDcD(L z6F;veTiN;ey~Eq)gC%j$!{X1Y7Ip2gD(t{LWRf}73jFL zBvg;bb>cKh8#O3=q%`A!#<=NG961{3%@#1pSy53%n53GY7nMxts-?%Uk~A2+pZP^3 z5X3b^>#9aUsYSu|e2sUwG_hKJOoic*X>WKYMgq7H-O@!*;a`rQGto22VQk{+@Cc$= zqF~a;;At`dKeUKZn3G4X7N&=x_u*{SG~X${D%IjDsj0Gy*_e763uUH~Xs?#iQm&d< zfX8csb_p6?BploleXjQUbc>t$dg?M2;xk6z$jsFU{j9A`1e(zlQ-wUbBj?Cvx#gYi z*oP6342XO%i-wGnt`F)C-sWl%!h}<;jebP+c&FIEDRRA&i?7P;-PN4i`^Ty!EYoE$ z8UFwiVfQ5sBTF=okHn>Haed5n3ZiOym$y9o$*tDGAhEki&xyAgzM()h8s-4$s615U ziuTm%?ZCyWrnt1R6Wgg-qnJ7omJH4{76ct21^|(rBT~`mde&2PV7Asjalw_S!bg+C zR&FJqC6A!angtS7*DW1ZE>}%Q6(tQ*I-}SIK&1Lj{o|(Tv~4k6i;IX^tS&B4Nk(7* zl0}KeI1m|t_2Je=Y#Xlgb+j7P#6zMsip{Sj! z;oKRVjdYnTmP#s(VI_u-F^i|Gqo6etc^EXJ6plBMw6j8W3$2g3?lw15+fQw~N^Vy2 zY%6atP@! zRZSHRGOHn!e3ThEjt-}8RMRLFH6s~Fw6&7QQZ+l&M`O1(>A6WE zyLkg!NR%ljhou>jg>`6b9MY5=Yths*z1{L!*a#ZMe08{1J?r8=v;}wtkW|$1G#SrH z%CEiqDtbw3>MChzAMWu|BxUG=WG9vCEYD*D%`_)i{JL2FpJdk-_X6D_l2@4!i6L+* zl$D8Ke}$Qca6V(Bh(4FCy;2A6GyCS0^oc>LC49eIQ7DeRLF`cSp>03Q!uA* z9BmRru}JS6@)g#{lCg`DL9itI+z)pr_9a6hZqMNW=8a!dP(FQH;KGbd;P`A5YRRc2 zfC`Gxda=i;$5W_L9z#<;s)?tPu1g1z9IuU-%(DS>I=Ns)$p_l|Dm2C98suWk2(JUc zgT!Ov`Pb8=mrTmO3{*(eAm9kCcvH{iPPV)M0EC10jNNto&^Iqu)Z~O1ACNr(ymt7A z5@|A9w_w%b_r3`=J(x=d9+M`Ku@`nM1^)mA+{BFb(iKuuwSx+k#t8@PYF4?YN_Li1 zm%@4}D#J;ptdK{`@Ub9p)HrqY&5$1U)M-$@f}gXj zX3U`R!6%=`)9d~o)}aTaS3$$8s5lkt42$Xow2`H6X1V8(02ln9d#D{S5v~}qBUk#k zeVu!dZEim|6 zzMXU!U!G6n>2dzT{{YwBPEI<01L4Iar@eqbKA4i~K;>4NYw6T? zeg&<~kJk43@&35>>Q=cPT_)md*8?rb)C+TOrT+k@)Sqoso~zagBqS2V5%~d!{6Q!4 z?`jUJp01#SoOKPH{Y8iR=w>k~*xxd-}O z{{X%|_ELt6kGmk@j`r!>)@RHdzTDk@aK# zzxDTTx2^OaL8{6HnMnZt(|rm0+@3BEv%;W)IxmiS-GBqM9Mh*Hkd6po0kF5!o7;i@ z9@#N~F;aS54G&I`859$6Q&JnZHUQuH`%5}&T^w7c;%N%Dut3$+(K_?V{=d)wKgQo* zXxiK;$RnpH4*|e+nJR(5KTCc{`rqquZ*?%Z9e|K{^x1S%rnx;y6$x)sF#ei;pYMNP zZ5V2CPL@IdU(c+|Qh-|5{{Vv?f7scqJ+{y_f6dpO^tCkC^Xn?rLt)DU`2es0{{XRX zZTKx(4n0{~G6hW!r(6uNxjIV@PbB{UiTeKlf%fNy;Be~xB6{`6$r}Pnn-O5YkVyQ0 zkH2Vf#C4{0Wgu}N^%0bt+w_tCu@*dVc_ZDF(Z@)Fm1;H*P~?yL1;6xfrzYHgukC8k z5vu_8fAIBMUDww0f>@Eul}>pG>m{-0C+zqGRqgZBRbldmzwI+;#A zY5}t`dmqk+jiV%ee=Tc$dG^DXSe&T%g+D(b{Krnh2>=cy#Xfy};=kcyyMk=T^D5}Q zl(Qp6xBfEhRalivG!y4HhVPnBFaX_}IO8C5=_A~Wc_eWAUCS1TX*B!32~_D>HV?%A0FnKLktros@9a&J*R=I1 z5rLz}b@s}OCtXbeeI=Faw_^tbjYInTf_2G1KFhQJgI#0`J z<7S#br&N+^9z^g2pU52X$6G=)p+kVD>&@+OFZs2_{fp5{P!2sA8IaVHDtg9h0@#Zl zdFKBB>?}F<@PfX7%dH1W&{Dl&697qj{;!}0{{UP5Kc~ACbp=x@da>;^Y#P(7khpmf zNd-)bG?B@{mR43BrA>ay9=%bD{52K(E1tB-{%9GU$=rX;hkEV& zHFZeYdm9T^h3u-dNz51s=r-0xG0;%O9;l|Po}PGQZy@w52jh=pP3qXM?#-^))hjVRtH;j1Sm@vF-KCiC4xH;fkF#i5 zbKR*n&cNiP!&jv=J8uC+UyYS&>K%vqK%>ABFpmEKxiMkQt?WFU#x~APxZSPe2LAxV z5W?7~Sx_N$`4LJSaOnEhCuq_)V<7W2_sH1hud4tm;~XYG7e#n{_hWZ_gpi`tkB zHrvK0p;%I3XsPLAX+nUaqIlrfC*YR;xAzroJ9=%laP8v)H9C*Yj;f!TB$G}R$4A7` zMx3x5e9i~?zi&wm!?{{9T!F&hD;iuk`IzjcIGd6BtVsU=U)b+&+SR5Q?qmdgo}=aa zIwPL+$PFn`kDuB8uiMdo-kZ`Dpxu;k%FiZNg{O?HmJd~kjYokb1cr8Xzt@ZV9ql_} z3F5e6-xO^fK2FTv^Y=wkyo!=k3UK>zN_qMG#(cUf-G$rIjp<9c={!C`v#PL*41w9$ zO-ixPJY<`BqL2`z+xq_itToy8Efx`NsDDZepA-GHcz>UwY3{rke0hxuK&l3ELW++( z{(hOKMLwr+q?jeWY5pTomUNz!vX3ZRunY~8n{)oh`gT(=BVd76q-hJMUfp!Xw`K?H3qo+;{LmI$dEQ%N{knWT-_t6Rez^l|_m_auTF zlcaxUYR}~P$nxXUlFJmRVMYWpk>{G@$Z-DvReB`fBIs!9W5Q&sAxUZI>owI1ch?G_ zKXVWHw$!GbBhuIUdku3Kg70T&!va*)rR-B2nd#09AZ)I|VwqBie}-7fzG@ zh5_Tp{f@2|!*YxLm>52%%;f(7sDC8J6|2oILWSNRy4PC`M0x}fyhMZckSv4uWoVkp zZ*520CDEiF5!Ed)2NUbYoh7=JmM;z(vp4%3e%jKXpAM$s=Zg)EqubC_OIc4!vQx_0 z8i>wDpVVeRi|X>qhHV;2;3%>B`@Ehdv+1D|Hc0s&_^z)V!78fX9WoCQkMPv-^FCc+ zeC+U`mZpY5EM?+}A%8fPbuflPKDzu?)Tfm^TGsa5#R~}6ET0hc&2#x@{YR_GrF75* zkkr@L=fjA`e$JCyg1-fk$K>dejY$=BOtR>LtiO&VjgYIu69w62${7ZsFR3pUR&qet$lwu}c*eNrc4b{U|4g`9Cj1)AkQ?P|&i} zWMveRQdd?}P4|HoqGXAzCXYye*l-Q6YySXGbe>R`1;P+`1M~g7E7E|b2f#iEImQ6v zQ}%qk_;lB~=Yqd=?i?rCQ$|p$BSidbH2getQ zmN3Iazh@Lhxcw&A=h{1$7jmBzRTho@+Oz}YXi29WbY-=8lidkQ(j@b)K3-Y=eQbR# zjIKbklc`03U>F9{;1U5s+HLp%dvC;MP|b&?N1@@+mT3W$m7yQ(b&o(ioj>eHKkr`l z8yV_>ho2s%Mx#RV0Q!Hi`q&OXueMx(Nj+4@BO0hQJxf@~Z9rW}9C3f3=EIMB#~&`W z;LH3ctW26*f%KE;ex9$O{+42Y+xyWp;m5CdQjC>2>O8vt06<};+}xk2=kxxz`+sgI z)O8*`c?C|cqlfXIr$0;Bk@(>8anH9jm%!uGj4CPAn5Vtfhzi2rU(N6CjT0!X4LWI( zpACA=nu!L54N3VNk;$+3k!lR{<$CHZ+a`I3&W+B@}eOOM<4Tb zB^ho_!(Z{m$J6kA?uVrxQ4jHdhph3;f=KlX>3Bu?8i0Oz{{URu{fD-lfKn@-uCk*r zRXxYApTF~g&1W)SF+2K$CAKlS+@)^m&tY+|L7Jk%ONz(faJ_% zr;mj&cqj0~9`t23QOAg<4j`DvEzMijf1mM(_phg5Zs~!wnO9~P-X#j)L zc73gs**LxFRf+!URb&4E(bjH)qQ0v;x3bkcqi=3}wi3FEp(xkxXODAjla!`44MaS& z@&c`GE$taGB&JyiDI79X8t@qfvG{*F*8t*&Fy0-_qG5^a8k$&hIk|TBdV}qVXupZcil+OXJz|zk zWNP3!Z3Emw*K<0x$%x4gs;_G@f>a8O1LiAQk}1*N;knvc-9rq&qqd~06so!ylNzy$ zSs)z9NFt;Wr0UH&Rc0~R%;iE>VI|x640d-tkJ@uoQ_YmB#nIF@GEDw@yB#E`(?}m3 z;)uCZFYjouumNcT<^^??JD4kcs->ILEEIr81N_LWP5qQ(_lnIk#FEV#kQJCDk--wU zC73EZi8PXGJAfoNNhq=Sx-F_}=x|vIT1~;7tCtOu6-32K)N=m-52?pc%_7XoA{EZ^ zxmUU)s@Rg=*ii+ox(&8HG@MGVID%NArE7`_(p?s#QJi3R8V1ru6q*l89+W=dmwRntibEUTh;5ZBov}Wh zXF;!nsSC4@^gm9RpB8cd0NxKhL)KDasj1_qWk5vjm8WR&jZ(pZfuf3H#xPq;0>6)C zPiod8@ELq)Vu3V{H4>ok%U}^e{09n(bZ##i>**CE@UCW&wS$7b6IM_$nw6j?l^N>= z9Xi2PB!ap+SZOhnEK(O?D7Os$!XLgA`-^t0MlPR;dg%ElE5N4^E!( zSl!5?g?tQ1xu9d%3h~vafE<2U9ZX6}sM>hZG|=R;bkNCN33;iios4w{8AmaXM6%N~ zpvk88;{00bBel4Vrc@zqr@W6-iV)?yyfmdrApAfI06twNY2bBNV_T?gn1nP|QI+u> zYfu;t+Wh?Zaz?A3EXuff(<4)lr=AC}o}(Zoyb!>}TF}5fPQH`Ek9v+W;_)su$S0a4 zC^(q|15Y3jElK(5@~>N^tTNj-!eNe9RtE}&NG#tnX-+j7snVjhEY($1J91ijd{2*b z9UgvnbtWdsnVSUO026Nll)2ce{!3g^8V_&@a>>Wx%>|WKzSNP zU1hwA0IQ>hl1?$v6|3#AK-npgWI@W%oP9V_UkprWgz#MkAE z(rv8~)G8sUO04cqrM}{(TE>q4IjY)5Alxd(1@G)hZE+LZ%(uAeZ7_6`_~J%DIsd(o!mIgeHtuA zN34pXl~cg(gH`4GPtr-TmdEOS?JZ^AH;>(N$Ppeu6r9yG)SoI>O;7r69$jB?y@z4h zB)g0ebsf7=L8T-zQFMdnsz3ptuAa8t=>5yQHaAst?^a~?oV%ud#f`_{bGbY&dmoUG zVePr7CCp)}_afKIYH@V`0K=pd(b30g(S^RY23oq3ZNAnEJ9RR;8aNc~UJThI1CA@@ zLC2_rWm|}?qKZIF+76>yk*L*jxX3&(G4=v$y2mYBzp{8O<3g0pg~#M_n4AFeNs7tN z_)LvPCaBlqrLbZtMd6V_5~E)K0MP`IEYf(1nIoxB=^A-(@~@7^ZS+3vTjM^U*bK5n8;<;RRH*~)YAR7E|Hr;-A1+}{6Y7PT=jZx z_v2=!uv_r-)Oh~S^?c{On%+B2onu@x(9_S#yg$|RJsn>!7Ut!6{{UQ(^#1@4VFOSq zdQ(oZOH_%cQ`p+pQLB-`2kUDeb_z)9uG%SIKBF~Ylb(3u{0sj8kI?@B#C!2W>($~O zASZ@;#?=7&Y)L;)RlnEz0q?;Fok{7@7_LuP8l^zc!NvaoDnTD#s3pDKVLIv45vi;2*f|<;5>JZKgs}g-bl0BK) z%XGH});29{ryMwchy7eS4sLFSSlq6bD0O2b*NuGoE%U=ox8|cA z_f10-QNdc076FPGlUs9dPqUFDHQtDq^gJi6KsR9E@CUU~cuxQYhiNqb0D3(o9y~Lc zU0GN^;>|0NK_9Z8Z&;C;anj`ICmJDEqo;O_D`uXanxKiX^@R=NdURVyBO8&;{ksh9 z9ST$fmiZqs`+wN!iCbH|jf#{09;~?8Z2%fGm5LEqEw^t)YQ*3 zYO=mQSsGSa8mVQK-JAiW`cKf_HSUcVfLXvCKF=?=r=<%Mh+c}$Kni&0%k!cAo?Qt2 ze@8SMjz7MlO1ymxP+~H4HL=k}Lz#wZiR(nhhD4R8C<=n4SnXiURf91Qtq z2Zm|Zn%*?8ix_l1RR=y;so-dTF14!uXCDf3zZg4RyBlYal#0$nsR-m0>bM@YG@*jO=4&ijauf zPgPv?TI7+mDwtGU5ygvEO>EO`Oad}iNGft`q^^E4MOvfb2AJqapsZ^K;!7}aR!}sG z<%MbRg`%jbqZ$KT^xIKUNiUN{1eEhL#o~=7W`Y=%bh3!#QzN^O4x-=Jk7e@DZspH{ zQOO!baG-I=nK=Id4@)A3c<35X@qlVb8kp9g)L;SWPO{KN8&!Q{V8Y7N6A)InKcwE{ z@%??7Y-tPMfZ9krH4*?P?CO_}%LXfsG|hTbP{#2%2~e>GYOsB1-}&OQdBhojp@MFpjXz1qC2S;M5`fULey!Av8arP0Mj17 zXRlAu)l<(=K^0QPRTU0qf_E7iMpBldpDO~#HWLi?4lhmA1iE7XiK&UKurHbBGfV6VSZy+8Th@3QLqvA4Kf&jx17d03s zr;e-3VYXLq?0mN8qJgj*TePrM*~%K&>*1t>8B3Lj&f=0O>Gv8Mc%v+~lHjU_x%#8! zo0xW9XtbX2=&-Zi14wDv8WI#ZQVh5!(S-owM@@4)6YqSRc@2{NMa|yNBA^VU%Ec;B zx{(ikX@a~-QU?v=H@+tW+FfnEA)2PU7qs*Es$7LeVwW4`o*aF3B|SlC7O5nSYX04# zsbDQ|!q+z*^EY#X8=bhLH-!XrnE6&L_lkZJ0i|>5I>nhHj{4r}RqnHOE2&2vKv6|S zNn!H*`qNwFZVwAV*m;~j$IMmdcAa%bQYH5tl-4g*C(MOrE6tijjJf?4xe+)Kc70;WKWiB^&` zAl5vD5zU9Pn0o5lB?eBdtCncw(yvg-QBncFsw>*VpJiSZ{F`Kvi@05E z;|$R)a~riw0zlQ0yem)7Dq}VaxOl=DR%@vnxvPhXG!R8-wN=NHan3qtQi&9BOrjc^ zYNvN*y|m0J^cNt8)1?ms{wLZHvB4W!-6w^66AIMv)j|oUky0`8@;w-k%_B=0Eepl~ zA2F)5{k=HSnCNPe?C1qFyt$#3jwm;;X+f+RZ{L?-Kb{<$hI}m&0Z*1(fbz93vMNy3Gn5w$? z)Ga^_42Fhn$Q{)1eIx06Ik|~0Hq^9KWq%BS#85cm2s{b(9)4XWvyo)oj;R%bxH>@u zp`ipYs30&szEv6P>|b7jI*D$1*6mJ z2bQt=@P41raqV0x!zb6KC7LY-YnmRgAHhFC&--qD*_4+D@bp@&Q0iZct}QqPzJ~U& zH|PChZ^yfU383TChULfhlx6fFf19ss`l~I89+Q8e{=9MrzZE`wI&m)5Y62)?F;DXK zh%pRCut~T0{V)A_zr70ZUXz8IMl4BTkISyhHU9un{{UDUf4mQMVAan`;dO;{$Y^WV zMolcF@<8PO08U9C?ZNlqP;1twmN^gvH8uYLKT)Nd>IV#dr~WDJ_|-|&eEMQEz$dIi zdjKu;7W#ir`3v32p~nudpd9tlnMgLjAlrfU{{V08p&RSdPT|vG2t7x62vTo>nv>_&FD;mHar8VN^}oaEZ+j>Y$JHXZjcY-x{a!1{Zl z#~@HBde~MNr(RaSBH;f3kJsMF@;z&$T1pUGQd|($1YeFv*N#EkK^4WLVGeR<~q^2g?!KKJxof31BX-1xIf@O1B;JzD!^%{Pa~|0 zt$q+`*A=P(+te+j+UM)^{-fJ+Mrbt*SN&W%+%rcZAr5KRVy-p}LyLj<=KlceSbjbE z6UjzD)$7)TWVv&m6#oD(`j6$-5tCKp$bYZr{5T&=pKdj}jufv<8Kj8maZ-H<>Rffq z+=u#$e_x>g0D1a*Y}Q|XQC4G zhvVH@3W}b!LOAg2J^2Ihe!rVr{bSG9+Ibb4lu7}SNUVFmyi4^BY8IQ{&*doiD@2qHV(__9itj7 zjyzGO%ExX=qDv3jZ!UF>!1|l}9CHgKTURD+(dw%0FCz~jCC24_rk^6K6-fIJ4w&4f zU)}qh(i#O~l@zD~B&Ym%ntb?mynpf&+jyO|{HyvOaAAJwq3u1<*xi#eWEp0fMy=fy zcuGPgDy-;eHvB;~3yYQfdxSYgBXzuP_p*}Cn}>s6L1}Frxm7-DvZK(0pNL@ew#`kh z!)X@-;fntNGsn}1`MS41Ie&) z!=*QTeV>oZ@2GHi#M>KhADG1LO}$us}plmgO7)rtd-)J+Vd%}LZMJk<0ww}Ik?R!t&T6*(My$^EqQ>tIaHL(x#nE4z~# z(?Y5j)F!G5S-3Ykobpc~eSNcM40FtAx>TpAHKql9F^;J`fgpBD>QhhU<>k>v>4Rqp=)OXZ(GJajFucei1!20>z(Tg5}WDm?0pR2mGdCQ__|L#S}0aC(7 z0T-Vbu)LD~N7vqk-_!@x2Y4WTzduj)9+^^-r3ot?IQfiLx#N$sC)c8}@(U{s2G-Y2 z1Q9H44N-szOcfrrhEF+5vqST&AY1Pz+Z(*1yZ8NnlmHSlyTb zQ(rt&{aBOmsm^!%T3>~Acp zBV`KZu*37g^8@_7D-2cxv9{`l`HB!eEkpkI)PV` z`>d5cL==q_4ANwtXQqTlQ&3f7h?z8rA@Mr%8RU+A?bV(#gsFP*CnNn{NA`L2#BE7w zL&NMD;h$gi9+K#5rT!yS5~3Wubu-9TNu(65R*bdKS^HYfyaU^pI6>SkK z{%AFsg{|!s-5^gMg_W~HDgZw(mru?MQlsJ=ag2En^?rRA%0`Bv zqR{^Ut3NOB^!vK^1p-YF$5T^N=OtSDDmwB$;+iOsfhL&^-V_ONE`EpIW|fSQwDhP1 zk3TGZpXBPXHMkl^B;o}QPnjp|;45B(?1gj!P-LcxY>i!QJS`2H^>q=oJ+f)2Fcd?Z zzaag89?(eU<5W^t#C#~@TJYh4=hHJzBmyE%wrUJ9!{ zYB51Wf@mxA=~U1#DGZr#FaaPV}BaqygMo?zT zXDcLE$v&ZW@OhQ=0&ExPIUd}Bt?l9(7fEc9TIcQPPi11zMcO_tCcJ+yl_~yyj58*a zr9#+V&3kIQ7SwO~=HKi+?^-u;$H)$!U}M9I9=cG(UrT;}2k=P#p4)0_!N*M!39nhz zJtLESc03>UJpB*)-r0WY)1x?#>95(;(9L1$Z=m{lj}~ftixUSx%%JpdvVA5-rQ7Ef=M4`I&93L^q-5Y z?NUPU#C|#d0C=(b{{Y2(x8P@oO-jM3;q}QYEWDfl0F8mS;>YRFy%-7d>v6h;{Yuuo zWJ9PM{4 zoD$qH*BZ&eO>0)5T_ZI({JjTM0or*iyp-`nkFCVVwy3i^b9angK0g^-PgS|F-{n;^ zO-WU_lNvKv3{Em?TF0lP^HiA@MhuhQGhL_Zm$LUt!}izDh5_P#)#O4~?+R*`$U3Tn zO+!JcMy?owN{p2s7sJ7c0B@UVQtpk*k*37%I{mnt5*mG`*#S)3hOc+j?L^9DausbM z`$`%Jq!rHtaDoB(vG#J;GerI}nAt&~3c#~ekTJ*1aiAHg6zGsc1h5NxeMO$WDI$u4 zv}DxkC4np#TWO(C)#=A(V{to2chOR1HtPyX{oU7bV=>#uYSCtE-yKu6n|9XGQW5sa z7|Z4IP@#2W=77dn=ukb{8>wJso%Ra*RRMe#YRN=$qkX|XCN zjw#?YPcw^^kIF-EP2H9mBA3R7hsBr1kwBuRtwX|7_=j*f8fv4XJ-cvsam$98l7MRt$@i``FgxuSp1UGP|@V}{ugW2Q{W|nO4!o386I+cbhBZSt*Pp< zk=MLaRmmjL3YOPn`iHdBNFiA#jv#Dev@}&T)S8GoPmwevn%AZ+ZEu$LDCf9k-0m;b z%4i5z@b!Tu1sau9M53qw8V>G*TG%M5q07}rQ%zrp#pN+`V~WIyPm#;zaH6ckRZTmY zB%`5l9RY#af}6w%ex z1u@Lupa5-QVwQBbo--EU(rCDiFDGhMv)Y#6VSHgX21 zRy>}4mt9IOuPyH#CGc+LVo(b9LqLjDRgEwYtvGaLXrdc=tP$e+%UHs*rfPvJgl85+v3i?E9spuoiQ_o7s%Zs9-maxW^NJ*%kzOl*{41Y_4eW-w=*toon zb*gxpg)17RN`en@kk+Tyq|R=Q-EAZy1eC7^|7l0^)Dwr7%0N#K+0qStb@j(c%>B$IDNUl5h9lr`2s15qW2qj0G6 zr$=+z&EZKT3I)!hKn9xFP#`4YfDHN$rQ@Zjf++-bu9Cv;_~>StrASt>3e;3m)5Ogk zHb=s#b{yWo*n#av-l+kSOIK*_Sd$53uS&IQbS-qrpnz+@nqZ!py-1~H4;^A}?FbYk zsT2%OS~}MrgVU!u7N>56FHurs$Fx-{(3*LYEY?M$Z?~RsStkDgaj}-VgQ2+KgY9IG zKEf78nWwUhYbO|q%*G|`k@C3P^Ev1Y-dpzf(O zARkVe++~gL1kgE>%`N6G;Of&F#uG$zH1Q;A{PFW0Dk0&*mx%z>&T)fA{ytMI)q-&@;xcT7q zt9wW;Hw$8(8m8W?6-`~^l4Yi;82n5S&;_r^jPzhW7i?_S{rMx;_{=RW4o;&VyRccA zadowolxrm(CbpOO#1YL$q{SqWO2kM#41Z0>9^K`5B){L5SX?aXg9j8e0jLfuQ(Evp z&!pVbA^q1CylJjka4StM-K{kfno(&^BhRg?=ysP_uh{! z4Q69EMzr%)P-RY7XIAQ5gQC6ir zM+4MnZ7sUFqUmBq6mYIt@yC(^EX1>uA1!#;nXpId=+ z-ruO&T}RiOa(EgVjBeD%!BC}`g_=}asZOKANvdVP`u_mo?-O@f1;+JpI<}?OX^L0N zsqIl?vWNgYT{Pj3D*ph**F6XgCX@cKBL4v6aBaZ++uA3o0Ci9#{6J8inq;WCF8u~wOWB*AL<=pYMYHgt~vU1&Hn(P`j7Vh-!|)7uO78= zAQ5UOG$XFoq>CS|!y60S0rmce-Mj>*Mtx|E@Su`S6Qn{o8x>wk55qHtACNT;9qx_yy?l14g^x7MT^ zTK@o_uLs&DjDc3+)nHO32krj=2U8eLokl#`kk9)D>A$Yk_gcosPRpvD;n z2|1;HUZ3i(TG(curd-Yjlv9M7rwLz4QfTH!G=ZZ>mZU~a>b-6bmAL?4*_={nw~eid zVIU2fgF}znDZ~676G-hj6I+E^;(~*Pe=7NKsp%<;&SWUoT57z66*1COQ=C%GMWqs= zh1#BKffL!=$r9a{o9e&k*@RMsG?Km_{8y(%!Q9EBZ|#K(QlDV*`#N&3&rs6R)6-K` z&y8%{v-u#Pk3y)OO-4!zx>g#+M5x!MBlHJb{YSG#xL6|*ved~!v=zlMT5vz$;f|6? z{h=d)C!~a#h%0L`*eb~Lc>3Ci^7J@Q^2D9;509dbrWCKJK3G4A&Z=&jwJ99?+jx>c zg>S2e~y-^!giE5kDY z#j9F_<_V|Dl>0pRbhp}2X4<|?4SgGABJgRh-BDCE6;)PF;-A3rRFLqrbgXRg4Ik?d zYNYRY!B7;}QO2NXNT->ppvT&Hbm~Nw@&{Jd)HtUceZHUS^5|cw*d2e_8&7d`Z)RYs zH@45Lj*W6K<)oN>+E)2ZBrw-TJjj%iT%9Z|;aL4WnA#|~1_^?aRPmt%3{r>ApSP`C zTgP?>iXJ%?!z&>*)TX1kasWB4c+;&!znL$@U8C^}J$z&_e0=m%A0v%IFqgStOnbZS_AqV*A!7!r(+5dvfIvJ~2EJeqOmr#P zcOAlLWVX5qG?3}77;DhMsLZs@N)QGK^T;IE?Nl?hL!(whQYnR=rCn6KP!y+(ERUqj zLMrLC$-f_;Wzt&DB%m{^MuMfP0iYm#r0}PyJsm?VLJ-0>Li`kig4JVCD^EK5e$KPd zQ;2GsD#$7Wt%|}IOUhg;A~0@L6*vB*9zC9I7LRQ|gEFvSbpfWOt4w3|@$>1Mxr~qp zwsg{Xn&48Po}Wb$y*Hg>qw$km<$Ux=M3B=f6%o{=HCkg;x29Lrwo9%oqc4b-j`9VIs4bfFC4MTm3XQwojj34Qxd$5Lr+&C zzwud(d~+*?1QJR5k4?Rz<_kz;-0pPnn%!hdEi#}nuCiD)MnLk(>fF6`B)dF1)T>83 z#K4s_8rcCJ5YR;^MkqKOgVyOk9=lGDe|%-?oSDeB+)T$%;3#q#Iw>nEDe-l%U?HWa z%RvQdv{j}fL)J0a z_QD8DN!16QQG(=DkHbPMTKS%ekMj)p=r`ZS?xWvSdtVv9x8~W46+ybUZq3Ex_T-iF zX4+hSLvh1~rGge(e1f7G#7bg{RxaG%*ms?F0lQkk5DPWLEUab3PSQ{zlqtvoSf__t z_iFqjrEzZ8`#tP8R`U2ZuC3#C60b!pnvitpYr>tD>PUy3`7S zNT5H9Jb3jsY#aPndsFT<@WymW;ygjS8(M{b56OvEuZD0O5OO+3@N6sa`NP^#e31qlj%~p_v%`PNkdz^)&`I3=MpMJSa=n^6HjV%IKhBq+PI%C8x#8kDRQ>1Xx$kb(KMq()?0ITrS8Bx~K6mczq9m0_sRf=ORR96-+P#EO19t8IF_Qv?X-dG=!{{R|#AHTNN<=eZmi?w>MWp5h1?%R2n zZ_k{`ZQ5zG)O12yS5QeonrWeuDMHB!h^v5C+-oc*8>WaW2!k3_eiOj`hPXfF=vj94 z@Fh?~NTUQ0Yf7I=XV=p`4lODvKC9eX{{U0|Jbi9Gz0xewzFlH6D;^IPHXrMQ??$!x zbzMV;QDk7;s}2SJwzvn9Kd2Y?wZYFl###Qj=r(JbeYemimwNz1hy8PPE1$ z@MH4pgpz;;gLBCQanBaHHn;eD^ka>Bv~vZmDnFO_Y5c3!MW{dlEoZffV)8R zV=QQNdG(La^!+^B`u=~|+ui&(^y^+S_2V*-R1td-Yk!CO_r3kP6yfvYS3hU?I-!zE zejoLIePH(CY-fi|mtrVRI_mc4{eSn7Z}^{eGL1A|JtohHSa9ow)DP-Oy}qNL_m6s4 zB+&Ho9Y%)(tVQm5JP-CC@;m#v2B3g?*`;uLhbbiRZF`%NKiFFS%p+jy_H>fsSB=0! zigk!cL1jOSeJpq*^KZ|))6=U(bh;}s@2{s_hf*(b{=|TN>YXcBRvL#6xhsFEApZbc zbMA&UCZuPr(N9PTD5XtIbzG?gt<8nGBaf&bpJrjeH5IQ+II5Kt$m=aF8ZiZ(kJJ!N zfv~?m=<++7;+-X1cc?8wgXVg4SQT6lJtOFC&-(-Y2m2p&XQK7!;CSWK2+^Ep&#a=H zT#}`=3l1;!{M^`E-5Oeo4z+HEIanSv{{Syoq@&`&2nX=IUe@~a`1e(m14r}W*RJ&) zC3xrjokbYpezylvJc3QQu;3AIZ%Havxyb2&vbod+M^oaXw;(o>cn457AD%znJ-6d6 zDd*Ge6H6wx!c<`3T1zF)q?^4s4;8*0D$@*X&z+{j+Lr~T_cB51w4!TSA)qn z9G~m;_Q|}68W7*Jrc83`Brv6YdgddPTGjxLbr!vk*YI!c^)a3RW2fS*f}l`*`pN^1 zKd00FC!Q=nv&DzKu>cZ!cenxa>zQ4CpXxyW0C^tU@swvhc#uUpkrWrYfxx&wQ~CUT zeX}&{q;ai!+Kqjy)WxRy3tx^uuQvMe?Hf#g4m#O}L%@&qeqBtVqyn;+@K$vU)(1c& zS%=e-q>uJK($6_4$koa){i?_Qed+sX-6xM#K0dxmzt7WgRb>AFo=45RonE(mFK6xi zT{`N}$p#0l_MSeFh9r$C9XM`J(Ek9i_aSq0#G8h|t)wNdF72oDWP74bMt(L2`b2%b z7H=?k+ZF614>ay8{@GXj01ua6O&{g?*AsO2z%PY8XIlhxmHTt!XI9Ucq(D_+&t|sm z9_7lfDH|C-h-M|$N`hP5CGC%kbIQ?fWNCZri>s{sT5hJ6WDQJeRdo$QMMVP_y{&@UPl`Z}RBX9Xb>X+$iIYNFUkfk^b}UPQ`Js0AO$a_wQu-b#RJB9Ce<8B{h`Vw3GJ{c~o42 zn!sfj3ONUx@I9xykVR`Gq!JZL#~gZB&(o@;PG%V%81nxBRzJBZW3#vRJLiTb^@`yce6Cu(Fns zW3ahJ2AY7hwe8i01w1xpprN2rXiXcA9~XRkSe;%`Fbo0m!LCLqab7jR;(FO%`DSdW zDtf;m+Zik|#lGRp)yqdf>?W?s8hGKx9F1LBsF+m4SzSvhrcGXmO7JgX5+r3d_U1N{F0K8lf*)}w(v7k$x_CVZVmwNGD=Lh-W% z4Nnm9K_{r9g5#DW@O_#?a6eU1SYw-sr&J{63fVxkROzHTe_A2kfUGmqp`M!}y6+jQ|F`O)_bU z9AiGdokFhPG8j66b1nOSUf+W!FU zz$bdSkXWLh#O?N0zi-c_ig2;yk_Yk?HU9ty40?I>hirKh#T>Fk1aiko5vXK;3~w4p z%OtWgy0lGB0n!iZ9Q!HSOQ}(K$je&QYwPDwKf%_V(J0=d`E{2qRidu4wWJ;v^2X}& zEQ(rSu*V>iQ!*zG9~{2)cA^RsgNtE{J2vdbv600LneQW5tw$xlHVLZTwc_XZt>A10{e5%H+sk@OzY!Elo^EgQG&{k5-JXc7aVvk>wIylGxPGoFyytlHFN zV1}xms%kQR{&$ubLN&75M5(lQUIEt0$2^VWOZJo9xi|1!Tw>$Q*|9g&)wLue!_O z%P?>Vr9YP*9$(<;a`rC7*&Q)QCt&V<$DDX}`XEVu-im4Dn3<$aP*c!j zgi?uRm6a7p7r6u4JDag=5@^^Pm6=Tk*wsH^{OQN1VMn}~WP+nio_tU2tv

`8wR+ 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�=gMMjBC4ELc+j-^!)pFj$;}?V^PP`IUi?BGBCIw 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�$2XGf^`@ zs!3}3fstO5!^=kIZEQ>uaX{EpA)x$VsQwnNJ4rRI3fp*fM|$A*Chyr(^%ncaR_s`! ztKHOlYKQytjH0JB@K)DuYMs%6pEC6K^j7b1QpObTBkW9$x4BRjd#ay zlG{5SHa|P@+q5znO{JQoug@lXZsxKWaCb%@7d8q6!efO!eojiKb*fs5f88_@#~a&7 z9?V;Q*`&L5hW5%ho;B8DVWz4N#8~lNUn&oo9WyT{ZVF^WYLN(Cei?MJQ(BEBf{j51 zKqPA;P^C#sRQz1;>`pp7{a41#^|#X_ntW>RdYGv8)*17alvH_!r;>d3NM@-r6xh79 zISCAtAg53ZdIf?gx6O?Vki&CoW-=Plpn<3(x@#60Wj2z6HHQ--~e{+ zTVrl5tl_wQ*gYJ?j#L0@rHpC->}EA20?kl3k{MRYGT*@HG8l{kQSE3dm-tO4E}s`R zMjGQKbFEccNl#d{GeWmDOB&P0k%rPPNnV!3T?k!4XvwIis#R(Qe7M%U4;~#+ZzPS{ zW$}DTN``Px7|j@vs=(9X@X6FGK|@-*(c}7Ojv}0(gag>$WWT35%wyJy_wN&*G z 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 RG&~l$;pa{i2RwN7|Jg9(1ls@r From 2ab201d6390db8cee25d7fa7eb3d5b70090bb3fc Mon Sep 17 00:00:00 2001 From: eugenp Date: Tue, 25 Oct 2016 11:09:51 +0300 Subject: [PATCH 102/215] cleanup work --- .../com/baeldung/datetime/UseDuration.java | 8 +- .../com/baeldung/datetime/UseLocalDate.java | 32 ++-- .../baeldung/datetime/UseLocalDateTime.java | 4 +- .../com/baeldung/datetime/UseLocalTime.java | 26 ++-- .../java/com/baeldung/datetime/UsePeriod.java | 8 +- .../com/baeldung/datetime/UseToInstant.java | 8 +- .../baeldung/datetime/UseZonedDateTime.java | 4 +- .../main/java/com/baeldung/enums/Pizza.java | 7 +- .../PizzaDeliverySystemConfiguration.java | 1 - .../forkjoin/CustomRecursiveAction.java | 3 +- .../forkjoin/CustomRecursiveTask.java | 17 +-- .../com/baeldung/forkjoin/util/PoolUtil.java | 1 - .../java/nio/selector/EchoServer.java | 2 +- .../com/baeldung/java_8_features/Vehicle.java | 2 +- .../baeldung/java_8_features/VehicleImpl.java | 4 +- .../java/com/baeldung/socket/EchoClient.java | 59 ++++---- .../com/baeldung/socket/EchoMultiServer.java | 101 +++++++------ .../java/com/baeldung/socket/EchoServer.java | 73 +++++---- .../java/com/baeldung/socket/GreetClient.java | 59 ++++---- .../java/com/baeldung/socket/GreetServer.java | 67 +++++---- .../java/com/baeldung/streamApi/Product.java | 1 - .../com/baeldung/threadpool/CountingTask.java | 4 +- .../executable/ExecutableMavenJar.java | 6 +- .../java/com/baeldung/CharToStringTest.java | 10 +- ...st.java => RandomListElementUnitTest.java} | 4 +- ...java => StringToIntOrIntegerUnitTest.java} | 10 +- .../collectors/Java8CollectorsTest.java | 139 ++++++------------ .../CompletableFutureTest.java | 17 +-- ...imeTest.java => JavaUtilTimeUnitTest.java} | 2 +- ....java => FunctionalInterfaceUnitTest.java} | 71 ++++----- ...ctionTest.java => ReflectionUnitTest.java} | 111 ++++++-------- .../{RegexTest.java => RegexUnitTest.java} | 3 +- ...nshotTest.java => ScreenshotUnitTest.java} | 3 +- .../com/baeldung/socket/EchoMultiTest.java | 72 ++++----- .../java/com/baeldung/socket/EchoTest.java | 40 ++--- ...t.java => GreetServerIntegrationTest.java} | 4 +- .../exceptions/FileNotFoundExceptionTest.java | 2 +- ...sTest.java => PrimitiveClassUnitTest.java} | 2 +- ...lassTest.java => SquareClassUnitTest.java} | 3 +- .../arrays/ArraysJoinAndSplitJUnitTest.java | 17 +-- .../java/collections/ArrayListTest.java | 19 +-- .../{PizzaTest.java => PizzaUnitTest.java} | 41 +++--- ...a => JavaReadFromFileIntegrationTest.java} | 4 +- ...t.java => JavaScannerIntegrationTest.java} | 2 +- ...va => JavaWriteToFileIntegrationTest.java} | 2 +- ...ertJTest.java => ListAssertJUnitTest.java} | 6 +- ...estNGTest.java => ListTestNgUnitTest.java} | 2 +- ...{JavaMD5Test.java => JavaMD5UnitTest.java} | 57 +++---- ...JavaTest.java => SandboxJavaUnitTest.java} | 2 +- 49 files changed, 489 insertions(+), 653 deletions(-) rename core-java/src/test/java/com/baeldung/{RandomListElementTest.java => RandomListElementUnitTest.java} (95%) rename core-java/src/test/java/com/baeldung/{StringToIntOrIntegerTest.java => StringToIntOrIntegerUnitTest.java} (97%) rename core-java/src/test/java/com/baeldung/dateapi/{JavaUtilTimeTest.java => JavaUtilTimeUnitTest.java} (98%) rename core-java/src/test/java/com/baeldung/functionalinterface/{FunctionalInterfaceTest.java => FunctionalInterfaceUnitTest.java} (89%) rename core-java/src/test/java/com/baeldung/java/reflection/{ReflectionTest.java => ReflectionUnitTest.java} (81%) rename core-java/src/test/java/com/baeldung/java/regex/{RegexTest.java => RegexUnitTest.java} (99%) rename core-java/src/test/java/com/baeldung/printscreen/{ScreenshotTest.java => ScreenshotUnitTest.java} (93%) rename core-java/src/test/java/com/baeldung/socket/{GreetServerTest.java => GreetServerIntegrationTest.java} (90%) rename core-java/src/test/java/org/baeldung/equalshashcode/entities/{PrimitiveClassTest.java => PrimitiveClassUnitTest.java} (94%) rename core-java/src/test/java/org/baeldung/equalshashcode/entities/{SquareClassTest.java => SquareClassUnitTest.java} (94%) rename core-java/src/test/java/org/baeldung/java/enums/{PizzaTest.java => PizzaUnitTest.java} (60%) rename core-java/src/test/java/org/baeldung/java/io/{JavaReadFromFileTest.java => JavaReadFromFileIntegrationTest.java} (98%) rename core-java/src/test/java/org/baeldung/java/io/{JavaScannerTest.java => JavaScannerIntegrationTest.java} (99%) rename core-java/src/test/java/org/baeldung/java/io/{JavaWriteToFileTest.java => JavaWriteToFileIntegrationTest.java} (99%) rename core-java/src/test/java/org/baeldung/java/lists/{ListAssertJTest.java => ListAssertJUnitTest.java} (83%) rename core-java/src/test/java/org/baeldung/java/lists/{ListTestNGTest.java => ListTestNgUnitTest.java} (94%) rename core-java/src/test/java/org/baeldung/java/md5/{JavaMD5Test.java => JavaMD5UnitTest.java} (77%) rename core-java/src/test/java/org/baeldung/java/sandbox/{SandboxJavaTest.java => SandboxJavaUnitTest.java} (98%) diff --git a/core-java/src/main/java/com/baeldung/datetime/UseDuration.java b/core-java/src/main/java/com/baeldung/datetime/UseDuration.java index 125b6fbe38..31b45aab84 100644 --- a/core-java/src/main/java/com/baeldung/datetime/UseDuration.java +++ b/core-java/src/main/java/com/baeldung/datetime/UseDuration.java @@ -5,12 +5,12 @@ import java.time.LocalTime; import java.time.Period; public class UseDuration { - - public LocalTime modifyDates(LocalTime localTime,Duration duration){ + + public LocalTime modifyDates(LocalTime localTime, Duration duration) { return localTime.plus(duration); } - - public Duration getDifferenceBetweenDates(LocalTime localTime1,LocalTime localTime2){ + + public Duration getDifferenceBetweenDates(LocalTime localTime1, LocalTime localTime2) { return Duration.between(localTime1, localTime2); } } diff --git a/core-java/src/main/java/com/baeldung/datetime/UseLocalDate.java b/core-java/src/main/java/com/baeldung/datetime/UseLocalDate.java index 47b1b3f67d..82f5745b3c 100644 --- a/core-java/src/main/java/com/baeldung/datetime/UseLocalDate.java +++ b/core-java/src/main/java/com/baeldung/datetime/UseLocalDate.java @@ -7,39 +7,39 @@ import java.time.temporal.ChronoUnit; import java.time.temporal.TemporalAdjusters; public class UseLocalDate { - - public LocalDate getLocalDateUsingFactoryOfMethod(int year, int month, int dayOfMonth){ + + public LocalDate getLocalDateUsingFactoryOfMethod(int year, int month, int dayOfMonth) { return LocalDate.of(year, month, dayOfMonth); } - - public LocalDate getLocalDateUsingParseMethod(String representation){ + + public LocalDate getLocalDateUsingParseMethod(String representation) { return LocalDate.parse(representation); } - - public LocalDate getLocalDateFromClock(){ + + public LocalDate getLocalDateFromClock() { LocalDate localDate = LocalDate.now(); return localDate; } - - public LocalDate getNextDay(LocalDate localDate){ + + public LocalDate getNextDay(LocalDate localDate) { return localDate.plusDays(1); } - - public LocalDate getPreviousDay(LocalDate localDate){ + + public LocalDate getPreviousDay(LocalDate localDate) { return localDate.minus(1, ChronoUnit.DAYS); } - - public DayOfWeek getDayOfWeek(LocalDate localDate){ + + public DayOfWeek getDayOfWeek(LocalDate localDate) { DayOfWeek day = localDate.getDayOfWeek(); return day; } - - public LocalDate getFirstDayOfMonth(){ + + public LocalDate getFirstDayOfMonth() { LocalDate firstDayOfMonth = LocalDate.now().with(TemporalAdjusters.firstDayOfMonth()); return firstDayOfMonth; } - - public LocalDateTime getStartOfDay(LocalDate localDate){ + + public LocalDateTime getStartOfDay(LocalDate localDate) { LocalDateTime startofDay = localDate.atStartOfDay(); return startofDay; } diff --git a/core-java/src/main/java/com/baeldung/datetime/UseLocalDateTime.java b/core-java/src/main/java/com/baeldung/datetime/UseLocalDateTime.java index 7aa1eaa276..7f39ac2f91 100644 --- a/core-java/src/main/java/com/baeldung/datetime/UseLocalDateTime.java +++ b/core-java/src/main/java/com/baeldung/datetime/UseLocalDateTime.java @@ -3,8 +3,8 @@ package com.baeldung.datetime; import java.time.LocalDateTime; public class UseLocalDateTime { - - public LocalDateTime getLocalDateTimeUsingParseMethod(String representation){ + + public LocalDateTime getLocalDateTimeUsingParseMethod(String representation) { return LocalDateTime.parse(representation); } diff --git a/core-java/src/main/java/com/baeldung/datetime/UseLocalTime.java b/core-java/src/main/java/com/baeldung/datetime/UseLocalTime.java index e13fd10d6f..9bd8f9706c 100644 --- a/core-java/src/main/java/com/baeldung/datetime/UseLocalTime.java +++ b/core-java/src/main/java/com/baeldung/datetime/UseLocalTime.java @@ -4,32 +4,32 @@ import java.time.LocalTime; import java.time.temporal.ChronoUnit; public class UseLocalTime { - - public LocalTime getLocalTimeUsingFactoryOfMethod(int hour, int min, int seconds){ + + public LocalTime getLocalTimeUsingFactoryOfMethod(int hour, int min, int seconds) { LocalTime localTime = LocalTime.of(hour, min, seconds); return localTime; } - - public LocalTime getLocalTimeUsingParseMethod(String timeRepresentation){ + + public LocalTime getLocalTimeUsingParseMethod(String timeRepresentation) { LocalTime localTime = LocalTime.parse(timeRepresentation); return localTime; } - - public LocalTime getLocalTimeFromClock(){ + + public LocalTime getLocalTimeFromClock() { LocalTime localTime = LocalTime.now(); return localTime; } - - public LocalTime addAnHour(LocalTime localTime){ - LocalTime newTime = localTime.plus(1,ChronoUnit.HOURS); + + public LocalTime addAnHour(LocalTime localTime) { + LocalTime newTime = localTime.plus(1, ChronoUnit.HOURS); return newTime; } - - public int getHourFromLocalTime(LocalTime localTime){ + + public int getHourFromLocalTime(LocalTime localTime) { return localTime.getHour(); } - - public LocalTime getLocalTimeWithMinuteSetToValue(LocalTime localTime, int minute){ + + public LocalTime getLocalTimeWithMinuteSetToValue(LocalTime localTime, int minute) { return localTime.withMinute(minute); } } diff --git a/core-java/src/main/java/com/baeldung/datetime/UsePeriod.java b/core-java/src/main/java/com/baeldung/datetime/UsePeriod.java index 326cfad650..5a42ef83b4 100644 --- a/core-java/src/main/java/com/baeldung/datetime/UsePeriod.java +++ b/core-java/src/main/java/com/baeldung/datetime/UsePeriod.java @@ -4,12 +4,12 @@ import java.time.LocalDate; import java.time.Period; public class UsePeriod { - - public LocalDate modifyDates(LocalDate localDate,Period period){ + + public LocalDate modifyDates(LocalDate localDate, Period period) { return localDate.plus(period); } - - public Period getDifferenceBetweenDates(LocalDate localDate1,LocalDate localDate2){ + + public Period getDifferenceBetweenDates(LocalDate localDate1, LocalDate localDate2) { return Period.between(localDate1, localDate2); } } diff --git a/core-java/src/main/java/com/baeldung/datetime/UseToInstant.java b/core-java/src/main/java/com/baeldung/datetime/UseToInstant.java index 1ddb096cf6..94154ce5c0 100644 --- a/core-java/src/main/java/com/baeldung/datetime/UseToInstant.java +++ b/core-java/src/main/java/com/baeldung/datetime/UseToInstant.java @@ -6,13 +6,13 @@ import java.util.Calendar; import java.util.Date; public class UseToInstant { - - public LocalDateTime convertDateToLocalDate(Date date){ + + public LocalDateTime convertDateToLocalDate(Date date) { LocalDateTime localDateTime = LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault()); return localDateTime; } - - public LocalDateTime convertDateToLocalDate(Calendar calendar){ + + public LocalDateTime convertDateToLocalDate(Calendar calendar) { LocalDateTime localDateTime = LocalDateTime.ofInstant(calendar.toInstant(), ZoneId.systemDefault()); return localDateTime; } diff --git a/core-java/src/main/java/com/baeldung/datetime/UseZonedDateTime.java b/core-java/src/main/java/com/baeldung/datetime/UseZonedDateTime.java index 0369de9835..2d1b17484b 100644 --- a/core-java/src/main/java/com/baeldung/datetime/UseZonedDateTime.java +++ b/core-java/src/main/java/com/baeldung/datetime/UseZonedDateTime.java @@ -5,8 +5,8 @@ import java.time.ZoneId; import java.time.ZonedDateTime; public class UseZonedDateTime { - - public ZonedDateTime getZonedDateTime(LocalDateTime localDateTime,ZoneId zoneId){ + + public ZonedDateTime getZonedDateTime(LocalDateTime localDateTime, ZoneId zoneId) { ZonedDateTime zonedDateTime = ZonedDateTime.of(localDateTime, zoneId); return zonedDateTime; } diff --git a/core-java/src/main/java/com/baeldung/enums/Pizza.java b/core-java/src/main/java/com/baeldung/enums/Pizza.java index 5bc2d9a9eb..bad134bf00 100644 --- a/core-java/src/main/java/com/baeldung/enums/Pizza.java +++ b/core-java/src/main/java/com/baeldung/enums/Pizza.java @@ -7,8 +7,7 @@ import java.util.stream.Collectors; public class Pizza { - private static EnumSet deliveredPizzaStatuses = - EnumSet.of(PizzaStatusEnum.DELIVERED); + private static EnumSet deliveredPizzaStatuses = EnumSet.of(PizzaStatusEnum.DELIVERED); private PizzaStatusEnum status; @@ -76,9 +75,7 @@ public class Pizza { } public static EnumMap> groupPizzaByStatus(List pzList) { - return pzList.stream().collect( - Collectors.groupingBy(Pizza::getStatus, - () -> new EnumMap<>(PizzaStatusEnum.class), Collectors.toList())); + return pzList.stream().collect(Collectors.groupingBy(Pizza::getStatus, () -> new EnumMap<>(PizzaStatusEnum.class), Collectors.toList())); } public void deliver() { diff --git a/core-java/src/main/java/com/baeldung/enums/PizzaDeliverySystemConfiguration.java b/core-java/src/main/java/com/baeldung/enums/PizzaDeliverySystemConfiguration.java index 5ccff5e959..a276b3c000 100644 --- a/core-java/src/main/java/com/baeldung/enums/PizzaDeliverySystemConfiguration.java +++ b/core-java/src/main/java/com/baeldung/enums/PizzaDeliverySystemConfiguration.java @@ -1,6 +1,5 @@ package com.baeldung.enums; - public enum PizzaDeliverySystemConfiguration { INSTANCE; diff --git a/core-java/src/main/java/com/baeldung/forkjoin/CustomRecursiveAction.java b/core-java/src/main/java/com/baeldung/forkjoin/CustomRecursiveAction.java index f1ab2d8d09..ae79787570 100644 --- a/core-java/src/main/java/com/baeldung/forkjoin/CustomRecursiveAction.java +++ b/core-java/src/main/java/com/baeldung/forkjoin/CustomRecursiveAction.java @@ -30,8 +30,7 @@ public class CustomRecursiveAction extends RecursiveAction { private Collection createSubtasks() { - List subtasks = - new ArrayList<>(); + List subtasks = new ArrayList<>(); String partOne = workLoad.substring(0, workLoad.length() / 2); String partTwo = workLoad.substring(workLoad.length() / 2, workLoad.length()); diff --git a/core-java/src/main/java/com/baeldung/forkjoin/CustomRecursiveTask.java b/core-java/src/main/java/com/baeldung/forkjoin/CustomRecursiveTask.java index 5d4d97b805..af9805c33f 100644 --- a/core-java/src/main/java/com/baeldung/forkjoin/CustomRecursiveTask.java +++ b/core-java/src/main/java/com/baeldung/forkjoin/CustomRecursiveTask.java @@ -1,6 +1,5 @@ package com.baeldung.forkjoin; - import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; @@ -23,10 +22,7 @@ public class CustomRecursiveTask extends RecursiveTask { if (arr.length > THRESHOLD) { - return ForkJoinTask.invokeAll(createSubtasks()) - .stream() - .mapToInt(ForkJoinTask::join) - .sum(); + return ForkJoinTask.invokeAll(createSubtasks()).stream().mapToInt(ForkJoinTask::join).sum(); } else { return processing(arr); @@ -35,17 +31,12 @@ public class CustomRecursiveTask extends RecursiveTask { private Collection createSubtasks() { List dividedTasks = new ArrayList<>(); - dividedTasks.add(new CustomRecursiveTask( - Arrays.copyOfRange(arr, 0, arr.length / 2))); - dividedTasks.add(new CustomRecursiveTask( - Arrays.copyOfRange(arr, arr.length / 2, arr.length))); + dividedTasks.add(new CustomRecursiveTask(Arrays.copyOfRange(arr, 0, arr.length / 2))); + dividedTasks.add(new CustomRecursiveTask(Arrays.copyOfRange(arr, arr.length / 2, arr.length))); return dividedTasks; } private Integer processing(int[] arr) { - return Arrays.stream(arr) - .filter(a -> a > 10 && a < 27) - .map(a -> a * 10) - .sum(); + return Arrays.stream(arr).filter(a -> a > 10 && a < 27).map(a -> a * 10).sum(); } } diff --git a/core-java/src/main/java/com/baeldung/forkjoin/util/PoolUtil.java b/core-java/src/main/java/com/baeldung/forkjoin/util/PoolUtil.java index 521616600f..fd24a6fc66 100644 --- a/core-java/src/main/java/com/baeldung/forkjoin/util/PoolUtil.java +++ b/core-java/src/main/java/com/baeldung/forkjoin/util/PoolUtil.java @@ -1,6 +1,5 @@ package com.baeldung.forkjoin.util; - import java.util.concurrent.ForkJoinPool; public class PoolUtil { diff --git a/core-java/src/main/java/com/baeldung/java/nio/selector/EchoServer.java b/core-java/src/main/java/com/baeldung/java/nio/selector/EchoServer.java index 285d4e51fc..ffabad9c4d 100644 --- a/core-java/src/main/java/com/baeldung/java/nio/selector/EchoServer.java +++ b/core-java/src/main/java/com/baeldung/java/nio/selector/EchoServer.java @@ -15,7 +15,7 @@ public class EchoServer { public static void main(String[] args) - throws IOException { + throws IOException { Selector selector = Selector.open(); ServerSocketChannel serverSocket = ServerSocketChannel.open(); serverSocket.bind(new InetSocketAddress("localhost", 5454)); diff --git a/core-java/src/main/java/com/baeldung/java_8_features/Vehicle.java b/core-java/src/main/java/com/baeldung/java_8_features/Vehicle.java index 011173bcaf..045fc90590 100644 --- a/core-java/src/main/java/com/baeldung/java_8_features/Vehicle.java +++ b/core-java/src/main/java/com/baeldung/java_8_features/Vehicle.java @@ -9,7 +9,7 @@ public interface Vehicle { } default long[] startPosition() { - return new long[]{23, 15}; + return new long[] { 23, 15 }; } default String getOverview() { diff --git a/core-java/src/main/java/com/baeldung/java_8_features/VehicleImpl.java b/core-java/src/main/java/com/baeldung/java_8_features/VehicleImpl.java index 83e55f5f4d..64bec0246d 100644 --- a/core-java/src/main/java/com/baeldung/java_8_features/VehicleImpl.java +++ b/core-java/src/main/java/com/baeldung/java_8_features/VehicleImpl.java @@ -1,9 +1,9 @@ package com.baeldung.java_8_features; -public class VehicleImpl implements Vehicle { +public class VehicleImpl implements Vehicle { @Override public void moveTo(long altitude, long longitude) { - //do nothing + // do nothing } } diff --git a/core-java/src/main/java/com/baeldung/socket/EchoClient.java b/core-java/src/main/java/com/baeldung/socket/EchoClient.java index 1ddf752a03..570bd60b2d 100644 --- a/core-java/src/main/java/com/baeldung/socket/EchoClient.java +++ b/core-java/src/main/java/com/baeldung/socket/EchoClient.java @@ -4,39 +4,38 @@ import java.io.*; import java.net.*; public class EchoClient { - private Socket clientSocket; - private PrintWriter out; - private BufferedReader in; + private Socket clientSocket; + private PrintWriter out; + private BufferedReader in; - public void startConnection(String ip, int port) { - try { - clientSocket = new Socket(ip, port); - out = new PrintWriter(clientSocket.getOutputStream(), true); - in = new BufferedReader(new InputStreamReader( - clientSocket.getInputStream())); - } catch (IOException e) { - System.out.print(e); - } + public void startConnection(String ip, int port) { + try { + clientSocket = new Socket(ip, port); + out = new PrintWriter(clientSocket.getOutputStream(), true); + in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); + } catch (IOException e) { + System.out.print(e); + } - } + } - public String sendMessage(String msg) { - try { - out.println(msg); - return in.readLine(); - } catch (Exception e) { - return null; - } - } + public String sendMessage(String msg) { + try { + out.println(msg); + return in.readLine(); + } catch (Exception e) { + return null; + } + } - public void stopConnection() { - try { - in.close(); - out.close(); - clientSocket.close(); - } catch (IOException e) { - e.printStackTrace(); - } + public void stopConnection() { + try { + in.close(); + out.close(); + clientSocket.close(); + } catch (IOException e) { + e.printStackTrace(); + } - } + } } diff --git a/core-java/src/main/java/com/baeldung/socket/EchoMultiServer.java b/core-java/src/main/java/com/baeldung/socket/EchoMultiServer.java index 2ece1ceebe..b920967545 100644 --- a/core-java/src/main/java/com/baeldung/socket/EchoMultiServer.java +++ b/core-java/src/main/java/com/baeldung/socket/EchoMultiServer.java @@ -4,68 +4,67 @@ import java.net.*; import java.io.*; public class EchoMultiServer { - private ServerSocket serverSocket; + private ServerSocket serverSocket; - public void start(int port) { - try { - serverSocket = new ServerSocket(port); - while (true) - new EchoClientHandler(serverSocket.accept()).run(); + public void start(int port) { + try { + serverSocket = new ServerSocket(port); + while (true) + new EchoClientHandler(serverSocket.accept()).run(); - } catch (IOException e) { - e.printStackTrace(); - } finally { - stop(); - } + } catch (IOException e) { + e.printStackTrace(); + } finally { + stop(); + } - } + } - public void stop() { - try { + public void stop() { + try { - serverSocket.close(); - } catch (IOException e) { - e.printStackTrace(); - } + serverSocket.close(); + } catch (IOException e) { + e.printStackTrace(); + } - } + } - private static class EchoClientHandler extends Thread { - private Socket clientSocket; - private PrintWriter out; - private BufferedReader in; + private static class EchoClientHandler extends Thread { + private Socket clientSocket; + private PrintWriter out; + private BufferedReader in; - public EchoClientHandler(Socket socket) { - this.clientSocket = socket; - } + public EchoClientHandler(Socket socket) { + this.clientSocket = socket; + } - public void run() { - try { - out = new PrintWriter(clientSocket.getOutputStream(), true); - in = new BufferedReader(new InputStreamReader( - clientSocket.getInputStream())); - String inputLine; - while ((inputLine = in.readLine()) != null) { - if (".".equals(inputLine)) { - out.println("bye"); - break; - } - out.println(inputLine); - } + public void run() { + try { + out = new PrintWriter(clientSocket.getOutputStream(), true); + in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); + String inputLine; + while ((inputLine = in.readLine()) != null) { + if (".".equals(inputLine)) { + out.println("bye"); + break; + } + out.println(inputLine); + } - in.close(); - out.close(); - clientSocket.close(); + in.close(); + out.close(); + clientSocket.close(); - } catch (IOException e) { - e.printStackTrace(); - } - } - } + } catch (IOException e) { + e.printStackTrace(); + } + } + } - public static void main(String[] args) { - EchoMultiServer server = new EchoMultiServer(); - server.start(5555); - } + public static void main(String[] args) { + EchoMultiServer server = new EchoMultiServer(); + server.start(5555); + } } diff --git a/core-java/src/main/java/com/baeldung/socket/EchoServer.java b/core-java/src/main/java/com/baeldung/socket/EchoServer.java index 3607afa7f5..dfd281d51c 100644 --- a/core-java/src/main/java/com/baeldung/socket/EchoServer.java +++ b/core-java/src/main/java/com/baeldung/socket/EchoServer.java @@ -4,47 +4,46 @@ import java.net.*; import java.io.*; public class EchoServer { - private ServerSocket serverSocket; - private Socket clientSocket; - private PrintWriter out; - private BufferedReader in; + private ServerSocket serverSocket; + private Socket clientSocket; + private PrintWriter out; + private BufferedReader in; - public void start(int port) { - try { - serverSocket = new ServerSocket(port); - clientSocket = serverSocket.accept(); - out = new PrintWriter(clientSocket.getOutputStream(), true); - in = new BufferedReader(new InputStreamReader( - clientSocket.getInputStream())); - String inputLine; - while ((inputLine = in.readLine()) != null) { - if (".".equals(inputLine)) { - out.println("good bye"); - break; - } - out.println(inputLine); - } - } catch (IOException e) { - e.printStackTrace(); - } + public void start(int port) { + try { + serverSocket = new ServerSocket(port); + clientSocket = serverSocket.accept(); + out = new PrintWriter(clientSocket.getOutputStream(), true); + in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); + String inputLine; + while ((inputLine = in.readLine()) != null) { + if (".".equals(inputLine)) { + out.println("good bye"); + break; + } + out.println(inputLine); + } + } catch (IOException e) { + e.printStackTrace(); + } - } + } - public void stop() { - try { - in.close(); - out.close(); - clientSocket.close(); - serverSocket.close(); - } catch (IOException e) { - e.printStackTrace(); - } + public void stop() { + try { + in.close(); + out.close(); + clientSocket.close(); + serverSocket.close(); + } catch (IOException e) { + e.printStackTrace(); + } - } + } - public static void main(String[] args) { - EchoServer server = new EchoServer(); - server.start(4444); - } + public static void main(String[] args) { + EchoServer server = new EchoServer(); + server.start(4444); + } } diff --git a/core-java/src/main/java/com/baeldung/socket/GreetClient.java b/core-java/src/main/java/com/baeldung/socket/GreetClient.java index 21959c7469..e6f14bb2b6 100644 --- a/core-java/src/main/java/com/baeldung/socket/GreetClient.java +++ b/core-java/src/main/java/com/baeldung/socket/GreetClient.java @@ -7,39 +7,38 @@ import java.io.PrintWriter; import java.net.Socket; public class GreetClient { - private Socket clientSocket; - private PrintWriter out; - private BufferedReader in; + private Socket clientSocket; + private PrintWriter out; + private BufferedReader in; - public void startConnection(String ip, int port) { - try { - clientSocket = new Socket(ip, port); - out = new PrintWriter(clientSocket.getOutputStream(), true); - in = new BufferedReader(new InputStreamReader( - clientSocket.getInputStream())); - } catch (IOException e) { - - } + public void startConnection(String ip, int port) { + try { + clientSocket = new Socket(ip, port); + out = new PrintWriter(clientSocket.getOutputStream(), true); + in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); + } catch (IOException e) { - } + } - public String sendMessage(String msg) { - try { - out.println(msg); - return in.readLine(); - } catch (Exception e) { - return null; - } - } + } - public void stopConnection() { - try { - in.close(); - out.close(); - clientSocket.close(); - } catch (IOException e) { - e.printStackTrace(); - } - } + public String sendMessage(String msg) { + try { + out.println(msg); + return in.readLine(); + } catch (Exception e) { + return null; + } + } + + public void stopConnection() { + try { + in.close(); + out.close(); + clientSocket.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } } diff --git a/core-java/src/main/java/com/baeldung/socket/GreetServer.java b/core-java/src/main/java/com/baeldung/socket/GreetServer.java index 8bf675c7b9..05bc65a65e 100644 --- a/core-java/src/main/java/com/baeldung/socket/GreetServer.java +++ b/core-java/src/main/java/com/baeldung/socket/GreetServer.java @@ -4,44 +4,43 @@ import java.net.*; import java.io.*; public class GreetServer { - private ServerSocket serverSocket; - private Socket clientSocket; - private PrintWriter out; - private BufferedReader in; + private ServerSocket serverSocket; + private Socket clientSocket; + private PrintWriter out; + private BufferedReader in; + public void start(int port) { + try { + serverSocket = new ServerSocket(port); + clientSocket = serverSocket.accept(); + out = new PrintWriter(clientSocket.getOutputStream(), true); + in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); + String greeting = in.readLine(); + if ("hello server".equals(greeting)) + out.println("hello client"); + else + out.println("unrecognised greeting"); + } catch (IOException e) { + e.printStackTrace(); + } - public void start(int port) { - try { - serverSocket = new ServerSocket(port); - clientSocket = serverSocket.accept(); - out = new PrintWriter(clientSocket.getOutputStream(), true); - in = new BufferedReader(new InputStreamReader( - clientSocket.getInputStream())); - String greeting = in.readLine(); - if ("hello server".equals(greeting)) - out.println("hello client"); - else - out.println("unrecognised greeting"); - } catch (IOException e) { - e.printStackTrace(); - } + } - } + public void stop() { + try { + in.close(); + out.close(); + clientSocket.close(); + serverSocket.close(); + } catch (IOException e) { + e.printStackTrace(); + } - public void stop() { - try { - in.close(); - out.close(); - clientSocket.close(); - serverSocket.close(); - } catch (IOException e) { - e.printStackTrace(); - } + } - } - public static void main(String[] args) { - GreetServer server=new GreetServer(); - server.start(6666); - } + public static void main(String[] args) { + GreetServer server = new GreetServer(); + server.start(6666); + } } diff --git a/core-java/src/main/java/com/baeldung/streamApi/Product.java b/core-java/src/main/java/com/baeldung/streamApi/Product.java index 18f3a61904..26b8bd6fed 100644 --- a/core-java/src/main/java/com/baeldung/streamApi/Product.java +++ b/core-java/src/main/java/com/baeldung/streamApi/Product.java @@ -44,7 +44,6 @@ public class Product { this.name = name; } - public static Stream streamOf(List list) { return (list == null || list.isEmpty()) ? Stream.empty() : list.stream(); } diff --git a/core-java/src/main/java/com/baeldung/threadpool/CountingTask.java b/core-java/src/main/java/com/baeldung/threadpool/CountingTask.java index 05aa14c5ae..effdf54916 100644 --- a/core-java/src/main/java/com/baeldung/threadpool/CountingTask.java +++ b/core-java/src/main/java/com/baeldung/threadpool/CountingTask.java @@ -14,9 +14,7 @@ public class CountingTask extends RecursiveTask { @Override protected Integer compute() { - return node.value + node.children.stream() - .map(childNode -> new CountingTask(childNode).fork()) - .collect(Collectors.summingInt(ForkJoinTask::join)); + return node.value + node.children.stream().map(childNode -> new CountingTask(childNode).fork()).collect(Collectors.summingInt(ForkJoinTask::join)); } } diff --git a/core-java/src/main/java/org/baeldung/executable/ExecutableMavenJar.java b/core-java/src/main/java/org/baeldung/executable/ExecutableMavenJar.java index 2c52a17904..09344902b7 100644 --- a/core-java/src/main/java/org/baeldung/executable/ExecutableMavenJar.java +++ b/core-java/src/main/java/org/baeldung/executable/ExecutableMavenJar.java @@ -4,8 +4,8 @@ import javax.swing.JOptionPane; public class ExecutableMavenJar { - public static void main(String[] args) { - JOptionPane.showMessageDialog(null, "It worked!", "Executable Jar with Maven", 1); - } + public static void main(String[] args) { + JOptionPane.showMessageDialog(null, "It worked!", "Executable Jar with Maven", 1); + } } diff --git a/core-java/src/test/java/com/baeldung/CharToStringTest.java b/core-java/src/test/java/com/baeldung/CharToStringTest.java index d91016d104..4fd451f2ed 100644 --- a/core-java/src/test/java/com/baeldung/CharToStringTest.java +++ b/core-java/src/test/java/com/baeldung/CharToStringTest.java @@ -7,7 +7,7 @@ import static org.assertj.core.api.Assertions.assertThat; public class CharToStringTest { @Test - public void givenChar_whenCallingStringValueOf_shouldConvertToString(){ + public void givenChar_whenCallingStringValueOf_shouldConvertToString() { final char givenChar = 'x'; final String result = String.valueOf(givenChar); @@ -16,7 +16,7 @@ public class CharToStringTest { } @Test - public void givenChar_whenCallingToStringOnCharacter_shouldConvertToString(){ + public void givenChar_whenCallingToStringOnCharacter_shouldConvertToString() { final char givenChar = 'x'; final String result = Character.toString(givenChar); @@ -25,7 +25,7 @@ public class CharToStringTest { } @Test - public void givenChar_whenCallingCharacterConstructor_shouldConvertToString3(){ + public void givenChar_whenCallingCharacterConstructor_shouldConvertToString3() { final char givenChar = 'x'; final String result = new Character(givenChar).toString(); @@ -34,7 +34,7 @@ public class CharToStringTest { } @Test - public void givenChar_whenConcatenated_shouldConvertToString4(){ + public void givenChar_whenConcatenated_shouldConvertToString4() { final char givenChar = 'x'; final String result = givenChar + ""; @@ -43,7 +43,7 @@ public class CharToStringTest { } @Test - public void givenChar_whenFormated_shouldConvertToString5(){ + public void givenChar_whenFormated_shouldConvertToString5() { final char givenChar = 'x'; final String result = String.format("%c", givenChar); diff --git a/core-java/src/test/java/com/baeldung/RandomListElementTest.java b/core-java/src/test/java/com/baeldung/RandomListElementUnitTest.java similarity index 95% rename from core-java/src/test/java/com/baeldung/RandomListElementTest.java rename to core-java/src/test/java/com/baeldung/RandomListElementUnitTest.java index 1918c801dc..6ae7c40f4d 100644 --- a/core-java/src/test/java/com/baeldung/RandomListElementTest.java +++ b/core-java/src/test/java/com/baeldung/RandomListElementUnitTest.java @@ -6,7 +6,7 @@ import org.junit.Test; import java.util.*; import java.util.concurrent.ThreadLocalRandom; -public class RandomListElementTest { +public class RandomListElementUnitTest { @Test public void givenList_whenRandomIndexChosen_shouldReturnARandomElementUsingRandom() { @@ -20,7 +20,7 @@ public class RandomListElementTest { public void givenList_whenRandomIndexChosen_shouldReturnARandomElementUsingMathRandom() { List givenList = Lists.newArrayList(1, 2, 3); - givenList.get((int)(Math.random() * givenList.size())); + givenList.get((int) (Math.random() * givenList.size())); } @Test diff --git a/core-java/src/test/java/com/baeldung/StringToIntOrIntegerTest.java b/core-java/src/test/java/com/baeldung/StringToIntOrIntegerUnitTest.java similarity index 97% rename from core-java/src/test/java/com/baeldung/StringToIntOrIntegerTest.java rename to core-java/src/test/java/com/baeldung/StringToIntOrIntegerUnitTest.java index 6c1493d89b..a7ad0bf114 100644 --- a/core-java/src/test/java/com/baeldung/StringToIntOrIntegerTest.java +++ b/core-java/src/test/java/com/baeldung/StringToIntOrIntegerUnitTest.java @@ -1,11 +1,12 @@ package com.baeldung; -import com.google.common.primitives.Ints; -import org.junit.Test; - import static org.assertj.core.api.Assertions.assertThat; -public class StringToIntOrIntegerTest { +import org.junit.Test; + +import com.google.common.primitives.Ints; + +public class StringToIntOrIntegerUnitTest { @Test public void givenString_whenParsingInt_shouldConvertToInt() { @@ -16,7 +17,6 @@ public class StringToIntOrIntegerTest { assertThat(result).isEqualTo(42); } - @Test public void givenString_whenCallingIntegerValueOf_shouldConvertToInt() { String givenString = "42"; diff --git a/core-java/src/test/java/com/baeldung/collectors/Java8CollectorsTest.java b/core-java/src/test/java/com/baeldung/collectors/Java8CollectorsTest.java index d94f72b685..ac8c666e4b 100644 --- a/core-java/src/test/java/com/baeldung/collectors/Java8CollectorsTest.java +++ b/core-java/src/test/java/com/baeldung/collectors/Java8CollectorsTest.java @@ -42,192 +42,137 @@ public class Java8CollectorsTest { @Test public void whenCollectingToList_shouldCollectToList() throws Exception { - final List result = givenList.stream() - .collect(toList()); + final List result = givenList.stream().collect(toList()); - assertThat(result) - .containsAll(givenList); + assertThat(result).containsAll(givenList); } @Test public void whenCollectingToList_shouldCollectToSet() throws Exception { - final Set result = givenList.stream() - .collect(toSet()); + final Set result = givenList.stream().collect(toSet()); - assertThat(result) - .containsAll(givenList); + assertThat(result).containsAll(givenList); } @Test public void whenCollectingToCollection_shouldCollectToCollection() throws Exception { - final List result = givenList.stream() - .collect(toCollection(LinkedList::new)); + final List result = givenList.stream().collect(toCollection(LinkedList::new)); - assertThat(result) - .containsAll(givenList) - .isInstanceOf(LinkedList.class); + assertThat(result).containsAll(givenList).isInstanceOf(LinkedList.class); } @Test public void whenCollectingToImmutableCollection_shouldThrowException() throws Exception { assertThatThrownBy(() -> { - givenList.stream() - .collect(toCollection(ImmutableList::of)); + givenList.stream().collect(toCollection(ImmutableList::of)); }).isInstanceOf(UnsupportedOperationException.class); } @Test public void whenCollectingToMap_shouldCollectToMap() throws Exception { - final Map result = givenList.stream() - .collect(toMap(Function.identity(), String::length)); + final Map result = givenList.stream().collect(toMap(Function.identity(), String::length)); - assertThat(result) - .containsEntry("a", 1) - .containsEntry("bb", 2) - .containsEntry("ccc", 3) - .containsEntry("dd", 2); + assertThat(result).containsEntry("a", 1).containsEntry("bb", 2).containsEntry("ccc", 3).containsEntry("dd", 2); } @Test public void whenCollectingToMap_shouldCollectToMapMerging() throws Exception { - final Map result = givenList.stream() - .collect(toMap(Function.identity(), String::length, (i1, i2) -> i1)); + final Map result = givenList.stream().collect(toMap(Function.identity(), String::length, (i1, i2) -> i1)); - assertThat(result) - .containsEntry("a", 1) - .containsEntry("bb", 2) - .containsEntry("ccc", 3) - .containsEntry("dd", 2); + assertThat(result).containsEntry("a", 1).containsEntry("bb", 2).containsEntry("ccc", 3).containsEntry("dd", 2); } @Test public void whenCollectingAndThen_shouldCollect() throws Exception { - final List result = givenList.stream() - .collect(collectingAndThen(toList(), ImmutableList::copyOf)); + final List result = givenList.stream().collect(collectingAndThen(toList(), ImmutableList::copyOf)); - assertThat(result) - .containsAll(givenList) - .isInstanceOf(ImmutableList.class); + assertThat(result).containsAll(givenList).isInstanceOf(ImmutableList.class); } @Test public void whenJoining_shouldJoin() throws Exception { - final String result = givenList.stream() - .collect(joining()); + final String result = givenList.stream().collect(joining()); - assertThat(result) - .isEqualTo("abbcccdd"); + assertThat(result).isEqualTo("abbcccdd"); } @Test public void whenJoiningWithSeparator_shouldJoinWithSeparator() throws Exception { - final String result = givenList.stream() - .collect(joining(" ")); + final String result = givenList.stream().collect(joining(" ")); - assertThat(result) - .isEqualTo("a bb ccc dd"); + assertThat(result).isEqualTo("a bb ccc dd"); } @Test public void whenJoiningWithSeparatorAndPrefixAndPostfix_shouldJoinWithSeparatorPrePost() throws Exception { - final String result = givenList.stream() - .collect(joining(" ", "PRE-", "-POST")); + final String result = givenList.stream().collect(joining(" ", "PRE-", "-POST")); - assertThat(result) - .isEqualTo("PRE-a bb ccc dd-POST"); + assertThat(result).isEqualTo("PRE-a bb ccc dd-POST"); } @Test public void whenPartitioningBy_shouldPartition() throws Exception { - final Map> result = givenList.stream() - .collect(partitioningBy(s -> s.length() > 2)); + final Map> result = givenList.stream().collect(partitioningBy(s -> s.length() > 2)); - assertThat(result) - .containsKeys(true, false) - .satisfies(booleanListMap -> { - assertThat(booleanListMap.get(true)) - .contains("ccc"); + assertThat(result).containsKeys(true, false).satisfies(booleanListMap -> { + assertThat(booleanListMap.get(true)).contains("ccc"); - assertThat(booleanListMap.get(false)) - .contains("a", "bb", "dd"); - }); + assertThat(booleanListMap.get(false)).contains("a", "bb", "dd"); + }); } @Test public void whenCounting_shouldCount() throws Exception { - final Long result = givenList.stream() - .collect(counting()); + final Long result = givenList.stream().collect(counting()); - assertThat(result) - .isEqualTo(4); + assertThat(result).isEqualTo(4); } @Test public void whenSummarizing_shouldSummarize() throws Exception { - final DoubleSummaryStatistics result = givenList.stream() - .collect(summarizingDouble(String::length)); + final DoubleSummaryStatistics result = givenList.stream().collect(summarizingDouble(String::length)); - assertThat(result.getAverage()) - .isEqualTo(2); - assertThat(result.getCount()) - .isEqualTo(4); - assertThat(result.getMax()) - .isEqualTo(3); - assertThat(result.getMin()) - .isEqualTo(1); - assertThat(result.getSum()) - .isEqualTo(8); + assertThat(result.getAverage()).isEqualTo(2); + assertThat(result.getCount()).isEqualTo(4); + assertThat(result.getMax()).isEqualTo(3); + assertThat(result.getMin()).isEqualTo(1); + assertThat(result.getSum()).isEqualTo(8); } @Test public void whenAveraging_shouldAverage() throws Exception { - final Double result = givenList.stream() - .collect(averagingDouble(String::length)); + final Double result = givenList.stream().collect(averagingDouble(String::length)); - assertThat(result) - .isEqualTo(2); + assertThat(result).isEqualTo(2); } @Test public void whenSumming_shouldSum() throws Exception { - final Double result = givenList.stream() - .collect(summingDouble(String::length)); + final Double result = givenList.stream().collect(summingDouble(String::length)); - assertThat(result) - .isEqualTo(8); + assertThat(result).isEqualTo(8); } @Test public void whenMaxingBy_shouldMaxBy() throws Exception { - final Optional result = givenList.stream() - .collect(maxBy(Comparator.naturalOrder())); + final Optional result = givenList.stream().collect(maxBy(Comparator.naturalOrder())); - assertThat(result) - .isPresent() - .hasValue("dd"); + assertThat(result).isPresent().hasValue("dd"); } @Test public void whenGroupingBy_shouldGroupBy() throws Exception { - final Map> result = givenList.stream() - .collect(groupingBy(String::length, toSet())); + final Map> result = givenList.stream().collect(groupingBy(String::length, toSet())); - assertThat(result) - .containsEntry(1, newHashSet("a")) - .containsEntry(2, newHashSet("bb", "dd")) - .containsEntry(3, newHashSet("ccc")); + assertThat(result).containsEntry(1, newHashSet("a")).containsEntry(2, newHashSet("bb", "dd")).containsEntry(3, newHashSet("ccc")); } - @Test public void whenCreatingCustomCollector_shouldCollect() throws Exception { - final ImmutableSet result = givenList.stream() - .collect(toImmutableSet()); + final ImmutableSet result = givenList.stream().collect(toImmutableSet()); - assertThat(result) - .isInstanceOf(ImmutableSet.class) - .contains("a", "bb", "ccc", "dd"); + assertThat(result).isInstanceOf(ImmutableSet.class).contains("a", "bb", "ccc", "dd"); } diff --git a/core-java/src/test/java/com/baeldung/completablefuture/CompletableFutureTest.java b/core-java/src/test/java/com/baeldung/completablefuture/CompletableFutureTest.java index 5363a73afa..d337382934 100644 --- a/core-java/src/test/java/com/baeldung/completablefuture/CompletableFutureTest.java +++ b/core-java/src/test/java/com/baeldung/completablefuture/CompletableFutureTest.java @@ -43,7 +43,6 @@ public class CompletableFutureTest { } - public Future calculateAsyncWithCancellation() throws InterruptedException { CompletableFuture completableFuture = new CompletableFuture<>(); @@ -56,7 +55,6 @@ public class CompletableFutureTest { return completableFuture; } - @Test(expected = CancellationException.class) public void whenCancelingTheFuture_thenThrowsCancellationException() throws ExecutionException, InterruptedException { @@ -110,8 +108,7 @@ public class CompletableFutureTest { @Test public void whenUsingThenCompose_thenFuturesExecuteSequentially() throws ExecutionException, InterruptedException { - CompletableFuture completableFuture = CompletableFuture.supplyAsync(() -> "Hello") - .thenCompose(s -> CompletableFuture.supplyAsync(() -> s + " World")); + CompletableFuture completableFuture = CompletableFuture.supplyAsync(() -> "Hello").thenCompose(s -> CompletableFuture.supplyAsync(() -> s + " World")); assertEquals("Hello World", completableFuture.get()); @@ -120,9 +117,7 @@ public class CompletableFutureTest { @Test public void whenUsingThenCombine_thenWaitForExecutionOfBothFutures() throws ExecutionException, InterruptedException { - CompletableFuture completableFuture = CompletableFuture.supplyAsync(() -> "Hello") - .thenCombine(CompletableFuture.supplyAsync(() -> " World"), - (s1, s2) -> s1 + s2); + CompletableFuture completableFuture = CompletableFuture.supplyAsync(() -> "Hello").thenCombine(CompletableFuture.supplyAsync(() -> " World"), (s1, s2) -> s1 + s2); assertEquals("Hello World", completableFuture.get()); @@ -131,9 +126,7 @@ public class CompletableFutureTest { @Test public void whenUsingThenAcceptBoth_thenWaitForExecutionOfBothFutures() throws ExecutionException, InterruptedException { - CompletableFuture.supplyAsync(() -> "Hello") - .thenAcceptBoth(CompletableFuture.supplyAsync(() -> " World"), - (s1, s2) -> System.out.println(s1 + s2)); + CompletableFuture.supplyAsync(() -> "Hello").thenAcceptBoth(CompletableFuture.supplyAsync(() -> " World"), (s1, s2) -> System.out.println(s1 + s2)); } @@ -154,9 +147,7 @@ public class CompletableFutureTest { assertTrue(future2.isDone()); assertTrue(future3.isDone()); - String combined = Stream.of(future1, future2, future3) - .map(CompletableFuture::join) - .collect(Collectors.joining(" ")); + String combined = Stream.of(future1, future2, future3).map(CompletableFuture::join).collect(Collectors.joining(" ")); assertEquals("Hello Beautiful World", combined); diff --git a/core-java/src/test/java/com/baeldung/dateapi/JavaUtilTimeTest.java b/core-java/src/test/java/com/baeldung/dateapi/JavaUtilTimeUnitTest.java similarity index 98% rename from core-java/src/test/java/com/baeldung/dateapi/JavaUtilTimeTest.java rename to core-java/src/test/java/com/baeldung/dateapi/JavaUtilTimeUnitTest.java index 4bce40c2d9..e4753dbd5c 100644 --- a/core-java/src/test/java/com/baeldung/dateapi/JavaUtilTimeTest.java +++ b/core-java/src/test/java/com/baeldung/dateapi/JavaUtilTimeUnitTest.java @@ -14,7 +14,7 @@ import java.time.temporal.ChronoUnit; import static org.assertj.core.api.Assertions.assertThat; -public class JavaUtilTimeTest { +public class JavaUtilTimeUnitTest { @Test public void currentTime() { diff --git a/core-java/src/test/java/com/baeldung/functionalinterface/FunctionalInterfaceTest.java b/core-java/src/test/java/com/baeldung/functionalinterface/FunctionalInterfaceUnitTest.java similarity index 89% rename from core-java/src/test/java/com/baeldung/functionalinterface/FunctionalInterfaceTest.java rename to core-java/src/test/java/com/baeldung/functionalinterface/FunctionalInterfaceUnitTest.java index e07bcc9a8d..6f3384c8eb 100644 --- a/core-java/src/test/java/com/baeldung/functionalinterface/FunctionalInterfaceTest.java +++ b/core-java/src/test/java/com/baeldung/functionalinterface/FunctionalInterfaceUnitTest.java @@ -1,7 +1,8 @@ package com.baeldung.functionalinterface; -import com.google.common.util.concurrent.Uninterruptibles; -import org.junit.Test; +import static org.junit.Assert.assertArrayEquals; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; import java.util.Arrays; import java.util.HashMap; @@ -13,54 +14,43 @@ import java.util.function.Supplier; import java.util.stream.Collectors; import java.util.stream.Stream; -import static org.junit.Assert.*; +import org.junit.Test; -public class FunctionalInterfaceTest { +import com.google.common.util.concurrent.Uninterruptibles; + +public class FunctionalInterfaceUnitTest { @Test public void whenPassingLambdaToComputeIfAbsent_thenTheValueGetsComputedAndPutIntoMap() { - Map nameMap = new HashMap<>(); Integer value = nameMap.computeIfAbsent("John", s -> s.length()); assertEquals(new Integer(4), nameMap.get("John")); assertEquals(new Integer(4), value); - } @Test public void whenPassingMethodReferenceToComputeIfAbsent_thenTheValueGetsComputedAndPutIntoMap() { - Map nameMap = new HashMap<>(); Integer value = nameMap.computeIfAbsent("John", String::length); assertEquals(new Integer(4), nameMap.get("John")); assertEquals(new Integer(4), value); - - } - - public byte[] transformArray(short[] array, ShortToByteFunction function) { - byte[] transformedArray = new byte[array.length]; - for (int i = 0; i < array.length; i++) { - transformedArray[i] = function.applyAsByte(array[i]); - } - return transformedArray; } @Test public void whenUsingCustomFunctionalInterfaceForPrimitives_thenCanUseItAsLambda() { - short[] array = {(short) 1, (short) 2, (short) 3}; + short[] array = { (short) 1, (short) 2, (short) 3 }; byte[] transformedArray = transformArray(array, s -> (byte) (s * 2)); - byte[] expectedArray = {(byte) 2, (byte) 4, (byte) 6}; + byte[] expectedArray = { (byte) 2, (byte) 4, (byte) 6 }; assertArrayEquals(expectedArray, transformedArray); } @Test public void whenUsingBiFunction_thenCanUseItToReplaceMapValues() { - Map salaries = new HashMap<>(); salaries.put("John", 40000); salaries.put("Freddy", 30000); @@ -71,22 +61,18 @@ public class FunctionalInterfaceTest { assertEquals(new Integer(50000), salaries.get("John")); assertEquals(new Integer(30000), salaries.get("Freddy")); assertEquals(new Integer(60000), salaries.get("Samuel")); - } - @Test public void whenPassingLambdaToThreadConstructor_thenLambdaInferredToRunnable() { - Thread thread = new Thread(() -> System.out.println("Hello From Another Thread")); thread.start(); - } @Test public void whenUsingSupplierToGenerateNumbers_thenCanUseItInStreamGenerate() { - int[] fibs = {0, 1}; + int[] fibs = { 0, 1 }; Stream fibonacci = Stream.generate(() -> { int result = fibs[1]; int fib3 = fibs[0] + fibs[1]; @@ -95,55 +81,44 @@ public class FunctionalInterfaceTest { return result; }); - List fibonacci5 = fibonacci.limit(5) - .collect(Collectors.toList()); + List fibonacci5 = fibonacci.limit(5).collect(Collectors.toList()); assertEquals(new Integer(1), fibonacci5.get(0)); assertEquals(new Integer(1), fibonacci5.get(1)); assertEquals(new Integer(2), fibonacci5.get(2)); assertEquals(new Integer(3), fibonacci5.get(3)); assertEquals(new Integer(5), fibonacci5.get(4)); - } @Test public void whenUsingConsumerInForEach_thenConsumerExecutesForEachListElement() { - List names = Arrays.asList("John", "Freddy", "Samuel"); names.forEach(name -> System.out.println("Hello, " + name)); - } @Test public void whenUsingBiConsumerInForEach_thenConsumerExecutesForEachMapElement() { - Map ages = new HashMap<>(); ages.put("John", 25); ages.put("Freddy", 24); ages.put("Samuel", 30); ages.forEach((name, age) -> System.out.println(name + " is " + age + " years old")); - } @Test public void whenUsingPredicateInFilter_thenListValuesAreFilteredOut() { - List names = Arrays.asList("Angela", "Aaron", "Bob", "Claire", "David"); - List namesWithA = names.stream() - .filter(name -> name.startsWith("A")) - .collect(Collectors.toList()); + List namesWithA = names.stream().filter(name -> name.startsWith("A")).collect(Collectors.toList()); assertEquals(2, namesWithA.size()); assertTrue(namesWithA.contains("Angela")); assertTrue(namesWithA.contains("Aaron")); - } @Test public void whenUsingUnaryOperatorWithReplaceAll_thenAllValuesInTheListAreReplaced() { - List names = Arrays.asList("bob", "josh", "megan"); names.replaceAll(String::toUpperCase); @@ -151,7 +126,6 @@ public class FunctionalInterfaceTest { assertEquals("BOB", names.get(0)); assertEquals("JOSH", names.get(1)); assertEquals("MEGAN", names.get(2)); - } @Test @@ -159,8 +133,7 @@ public class FunctionalInterfaceTest { List values = Arrays.asList(3, 5, 8, 9, 12); - int sum = values.stream() - .reduce(0, (i1, i2) -> i1 + i2); + int sum = values.stream().reduce(0, (i1, i2) -> i1 + i2); assertEquals(37, sum); @@ -178,10 +151,6 @@ public class FunctionalInterfaceTest { } - public double squareLazy(Supplier lazyValue) { - return Math.pow(lazyValue.get(), 2); - } - @Test public void whenUsingSupplierToGenerateValue_thenValueIsGeneratedLazily() { @@ -196,4 +165,18 @@ public class FunctionalInterfaceTest { } + // + + public double squareLazy(Supplier lazyValue) { + return Math.pow(lazyValue.get(), 2); + } + + public byte[] transformArray(short[] array, ShortToByteFunction function) { + byte[] transformedArray = new byte[array.length]; + for (int i = 0; i < array.length; i++) { + transformedArray[i] = function.applyAsByte(array[i]); + } + return transformedArray; + } + } diff --git a/core-java/src/test/java/com/baeldung/java/reflection/ReflectionTest.java b/core-java/src/test/java/com/baeldung/java/reflection/ReflectionUnitTest.java similarity index 81% rename from core-java/src/test/java/com/baeldung/java/reflection/ReflectionTest.java rename to core-java/src/test/java/com/baeldung/java/reflection/ReflectionUnitTest.java index a12a2f205f..e008616c72 100644 --- a/core-java/src/test/java/com/baeldung/java/reflection/ReflectionTest.java +++ b/core-java/src/test/java/com/baeldung/java/reflection/ReflectionUnitTest.java @@ -11,7 +11,7 @@ import java.util.List; import java.util.ArrayList; import static org.junit.Assert.*; -public class ReflectionTest { +public class ReflectionUnitTest { @Test public void givenObject_whenGetsFieldNamesAtRuntime_thenCorrect() { @@ -20,8 +20,7 @@ public class ReflectionTest { List actualFieldNames = getFieldNames(fields); - assertTrue(Arrays.asList("name", "age") - .containsAll(actualFieldNames)); + assertTrue(Arrays.asList("name", "age").containsAll(actualFieldNames)); } @Test @@ -35,8 +34,7 @@ public class ReflectionTest { } @Test - public void givenClassName_whenCreatesObject_thenCorrect() - throws ClassNotFoundException { + public void givenClassName_whenCreatesObject_thenCorrect() throws ClassNotFoundException { Class clazz = Class.forName("com.baeldung.java.reflection.Goat"); assertEquals("Goat", clazz.getSimpleName()); @@ -45,8 +43,7 @@ public class ReflectionTest { } @Test - public void givenClass_whenRecognisesModifiers_thenCorrect() - throws ClassNotFoundException { + public void givenClass_whenRecognisesModifiers_thenCorrect() throws ClassNotFoundException { Class goatClass = Class.forName("com.baeldung.java.reflection.Goat"); Class animalClass = Class.forName("com.baeldung.java.reflection.Animal"); int goatMods = goatClass.getModifiers(); @@ -80,8 +77,7 @@ public class ReflectionTest { } @Test - public void givenClass_whenGetsImplementedInterfaces_thenCorrect() - throws ClassNotFoundException { + public void givenClass_whenGetsImplementedInterfaces_thenCorrect() throws ClassNotFoundException { Class goatClass = Class.forName("com.baeldung.java.reflection.Goat"); Class animalClass = Class.forName("com.baeldung.java.reflection.Animal"); Class[] goatInterfaces = goatClass.getInterfaces(); @@ -94,8 +90,7 @@ public class ReflectionTest { } @Test - public void givenClass_whenGetsConstructor_thenCorrect() - throws ClassNotFoundException { + public void givenClass_whenGetsConstructor_thenCorrect() throws ClassNotFoundException { Class goatClass = Class.forName("com.baeldung.java.reflection.Goat"); Constructor[] constructors = goatClass.getConstructors(); @@ -104,8 +99,7 @@ public class ReflectionTest { } @Test - public void givenClass_whenGetsFields_thenCorrect() - throws ClassNotFoundException { + public void givenClass_whenGetsFields_thenCorrect() throws ClassNotFoundException { Class animalClass = Class.forName("com.baeldung.java.reflection.Animal"); Field[] fields = animalClass.getDeclaredFields(); @@ -116,20 +110,17 @@ public class ReflectionTest { } @Test - public void givenClass_whenGetsMethods_thenCorrect() - throws ClassNotFoundException { + public void givenClass_whenGetsMethods_thenCorrect() throws ClassNotFoundException { Class animalClass = Class.forName("com.baeldung.java.reflection.Animal"); Method[] methods = animalClass.getDeclaredMethods(); List actualMethods = getMethodNames(methods); assertEquals(4, actualMethods.size()); - assertTrue(actualMethods.containsAll(Arrays.asList("getName", - "setName", "getSound"))); + assertTrue(actualMethods.containsAll(Arrays.asList("getName", "setName", "getSound"))); } @Test - public void givenClass_whenGetsAllConstructors_thenCorrect() - throws ClassNotFoundException { + public void givenClass_whenGetsAllConstructors_thenCorrect() throws ClassNotFoundException { Class birdClass = Class.forName("com.baeldung.java.reflection.Bird"); Constructor[] constructors = birdClass.getConstructors(); @@ -137,24 +128,20 @@ public class ReflectionTest { } @Test - public void givenClass_whenGetsEachConstructorByParamTypes_thenCorrect() - throws Exception { + public void givenClass_whenGetsEachConstructorByParamTypes_thenCorrect() throws Exception { Class birdClass = Class.forName("com.baeldung.java.reflection.Bird"); Constructor cons1 = birdClass.getConstructor(); Constructor cons2 = birdClass.getConstructor(String.class); - Constructor cons3 = birdClass.getConstructor(String.class, - boolean.class); + Constructor cons3 = birdClass.getConstructor(String.class, boolean.class); } @Test - public void givenClass_whenInstantiatesObjectsAtRuntime_thenCorrect() - throws Exception { + public void givenClass_whenInstantiatesObjectsAtRuntime_thenCorrect() throws Exception { Class birdClass = Class.forName("com.baeldung.java.reflection.Bird"); Constructor cons1 = birdClass.getConstructor(); Constructor cons2 = birdClass.getConstructor(String.class); - Constructor cons3 = birdClass.getConstructor(String.class, - boolean.class); + Constructor cons3 = birdClass.getConstructor(String.class, boolean.class); Bird bird1 = (Bird) cons1.newInstance(); Bird bird2 = (Bird) cons2.newInstance("Weaver bird"); @@ -168,8 +155,7 @@ public class ReflectionTest { } @Test - public void givenClass_whenGetsPublicFields_thenCorrect() - throws ClassNotFoundException { + public void givenClass_whenGetsPublicFields_thenCorrect() throws ClassNotFoundException { Class birdClass = Class.forName("com.baeldung.java.reflection.Bird"); Field[] fields = birdClass.getFields(); assertEquals(1, fields.length); @@ -178,8 +164,7 @@ public class ReflectionTest { } @Test - public void givenClass_whenGetsPublicFieldByName_thenCorrect() - throws Exception { + public void givenClass_whenGetsPublicFieldByName_thenCorrect() throws Exception { Class birdClass = Class.forName("com.baeldung.java.reflection.Bird"); Field field = birdClass.getField("CATEGORY"); assertEquals("CATEGORY", field.getName()); @@ -187,8 +172,7 @@ public class ReflectionTest { } @Test - public void givenClass_whenGetsDeclaredFields_thenCorrect() - throws ClassNotFoundException { + public void givenClass_whenGetsDeclaredFields_thenCorrect() throws ClassNotFoundException { Class birdClass = Class.forName("com.baeldung.java.reflection.Bird"); Field[] fields = birdClass.getDeclaredFields(); assertEquals(1, fields.length); @@ -196,8 +180,7 @@ public class ReflectionTest { } @Test - public void givenClass_whenGetsFieldsByName_thenCorrect() - throws Exception { + public void givenClass_whenGetsFieldsByName_thenCorrect() throws Exception { Class birdClass = Class.forName("com.baeldung.java.reflection.Bird"); Field field = birdClass.getDeclaredField("walks"); assertEquals("walks", field.getName()); @@ -205,17 +188,14 @@ public class ReflectionTest { } @Test - public void givenClassField_whenGetsType_thenCorrect() - throws Exception { - Field field = Class.forName("com.baeldung.java.reflection.Bird") - .getDeclaredField("walks"); + public void givenClassField_whenGetsType_thenCorrect() throws Exception { + Field field = Class.forName("com.baeldung.java.reflection.Bird").getDeclaredField("walks"); Class fieldClass = field.getType(); assertEquals("boolean", fieldClass.getSimpleName()); } @Test - public void givenClassField_whenSetsAndGetsValue_thenCorrect() - throws Exception { + public void givenClassField_whenSetsAndGetsValue_thenCorrect() throws Exception { Class birdClass = Class.forName("com.baeldung.java.reflection.Bird"); Bird bird = (Bird) birdClass.newInstance(); Field field = birdClass.getDeclaredField("walks"); @@ -232,8 +212,7 @@ public class ReflectionTest { } @Test - public void givenClassField_whenGetsAndSetsWithNull_thenCorrect() - throws Exception { + public void givenClassField_whenGetsAndSetsWithNull_thenCorrect() throws Exception { Class birdClass = Class.forName("com.baeldung.java.reflection.Bird"); Field field = birdClass.getField("CATEGORY"); field.setAccessible(true); @@ -242,21 +221,17 @@ public class ReflectionTest { } @Test - public void givenClass_whenGetsAllPublicMethods_thenCorrect() - throws ClassNotFoundException { + public void givenClass_whenGetsAllPublicMethods_thenCorrect() throws ClassNotFoundException { Class birdClass = Class.forName("com.baeldung.java.reflection.Bird"); Method[] methods = birdClass.getMethods(); List methodNames = getMethodNames(methods); - assertTrue(methodNames.containsAll(Arrays - .asList("equals", "notifyAll", "hashCode", - "walks", "eats", "toString"))); + assertTrue(methodNames.containsAll(Arrays.asList("equals", "notifyAll", "hashCode", "walks", "eats", "toString"))); } @Test - public void givenClass_whenGetsOnlyDeclaredMethods_thenCorrect() - throws ClassNotFoundException { + public void givenClass_whenGetsOnlyDeclaredMethods_thenCorrect() throws ClassNotFoundException { Class birdClass = Class.forName("com.baeldung.java.reflection.Bird"); List actualMethodNames = getMethodNames(birdClass.getDeclaredMethods()); @@ -269,12 +244,10 @@ public class ReflectionTest { } @Test - public void givenMethodName_whenGetsMethod_thenCorrect() - throws Exception { + public void givenMethodName_whenGetsMethod_thenCorrect() throws Exception { Class birdClass = Class.forName("com.baeldung.java.reflection.Bird"); Method walksMethod = birdClass.getDeclaredMethod("walks"); - Method setWalksMethod = birdClass.getDeclaredMethod("setWalks", - boolean.class); + Method setWalksMethod = birdClass.getDeclaredMethod("setWalks", boolean.class); assertFalse(walksMethod.isAccessible()); assertFalse(setWalksMethod.isAccessible()); @@ -288,12 +261,10 @@ public class ReflectionTest { } @Test - public void givenMethod_whenInvokes_thenCorrect() - throws Exception { + public void givenMethod_whenInvokes_thenCorrect() throws Exception { Class birdClass = Class.forName("com.baeldung.java.reflection.Bird"); Bird bird = (Bird) birdClass.newInstance(); - Method setWalksMethod = birdClass.getDeclaredMethod("setWalks", - boolean.class); + Method setWalksMethod = birdClass.getDeclaredMethod("setWalks", boolean.class); Method walksMethod = birdClass.getDeclaredMethod("walks"); boolean walks = (boolean) walksMethod.invoke(bird); @@ -308,19 +279,19 @@ public class ReflectionTest { } - private static List getFieldNames(Field[] fields) { - List fieldNames = new ArrayList<>(); - for (Field field : fields) - fieldNames.add(field.getName()); - return fieldNames; + private static List getFieldNames(Field[] fields) { + List fieldNames = new ArrayList<>(); + for (Field field : fields) + fieldNames.add(field.getName()); + return fieldNames; - } + } - private static List getMethodNames(Method[] methods) { - List methodNames = new ArrayList<>(); - for (Method method : methods) - methodNames.add(method.getName()); - return methodNames; - } + private static List getMethodNames(Method[] methods) { + List methodNames = new ArrayList<>(); + for (Method method : methods) + methodNames.add(method.getName()); + return methodNames; + } } diff --git a/core-java/src/test/java/com/baeldung/java/regex/RegexTest.java b/core-java/src/test/java/com/baeldung/java/regex/RegexUnitTest.java similarity index 99% rename from core-java/src/test/java/com/baeldung/java/regex/RegexTest.java rename to core-java/src/test/java/com/baeldung/java/regex/RegexUnitTest.java index 414401eb85..e4ea55aae3 100644 --- a/core-java/src/test/java/com/baeldung/java/regex/RegexTest.java +++ b/core-java/src/test/java/com/baeldung/java/regex/RegexUnitTest.java @@ -7,7 +7,7 @@ import java.util.regex.Pattern; import org.junit.Test; -public class RegexTest { +public class RegexUnitTest { private static Pattern pattern; private static Matcher matcher; @@ -499,4 +499,3 @@ public class RegexTest { return matches; } } - diff --git a/core-java/src/test/java/com/baeldung/printscreen/ScreenshotTest.java b/core-java/src/test/java/com/baeldung/printscreen/ScreenshotUnitTest.java similarity index 93% rename from core-java/src/test/java/com/baeldung/printscreen/ScreenshotTest.java rename to core-java/src/test/java/com/baeldung/printscreen/ScreenshotUnitTest.java index 7e35fc3e30..650abc301a 100644 --- a/core-java/src/test/java/com/baeldung/printscreen/ScreenshotTest.java +++ b/core-java/src/test/java/com/baeldung/printscreen/ScreenshotUnitTest.java @@ -7,8 +7,7 @@ import java.io.File; import static org.junit.Assert.assertTrue; - -public class ScreenshotTest { +public class ScreenshotUnitTest { private Screenshot screenshot = new Screenshot("Screenshot.jpg"); private File file = new File("Screenshot.jpg"); diff --git a/core-java/src/test/java/com/baeldung/socket/EchoMultiTest.java b/core-java/src/test/java/com/baeldung/socket/EchoMultiTest.java index fcf353281d..50af34d61a 100644 --- a/core-java/src/test/java/com/baeldung/socket/EchoMultiTest.java +++ b/core-java/src/test/java/com/baeldung/socket/EchoMultiTest.java @@ -17,43 +17,43 @@ public class EchoMultiTest { Thread.sleep(500); } - @Test - public void givenClient1_whenServerResponds_thenCorrect() { - EchoClient client = new EchoClient(); - client.startConnection("127.0.0.1", PORT); - String msg1 = client.sendMessage("hello"); - String msg2 = client.sendMessage("world"); - String terminate = client.sendMessage("."); + @Test + public void givenClient1_whenServerResponds_thenCorrect() { + EchoClient client = new EchoClient(); + client.startConnection("127.0.0.1", PORT); + String msg1 = client.sendMessage("hello"); + String msg2 = client.sendMessage("world"); + String terminate = client.sendMessage("."); - assertEquals(msg1, "hello"); - assertEquals(msg2, "world"); - assertEquals(terminate, "bye"); - client.stopConnection(); - } + assertEquals(msg1, "hello"); + assertEquals(msg2, "world"); + assertEquals(terminate, "bye"); + client.stopConnection(); + } - @Test - public void givenClient2_whenServerResponds_thenCorrect() { - EchoClient client = new EchoClient(); - client.startConnection("127.0.0.1", PORT); - String msg1 = client.sendMessage("hello"); - String msg2 = client.sendMessage("world"); - String terminate = client.sendMessage("."); - assertEquals(msg1, "hello"); - assertEquals(msg2, "world"); - assertEquals(terminate, "bye"); - client.stopConnection(); - } + @Test + public void givenClient2_whenServerResponds_thenCorrect() { + EchoClient client = new EchoClient(); + client.startConnection("127.0.0.1", PORT); + String msg1 = client.sendMessage("hello"); + String msg2 = client.sendMessage("world"); + String terminate = client.sendMessage("."); + assertEquals(msg1, "hello"); + assertEquals(msg2, "world"); + assertEquals(terminate, "bye"); + client.stopConnection(); + } - @Test - public void givenClient3_whenServerResponds_thenCorrect() { - EchoClient client = new EchoClient(); - client.startConnection("127.0.0.1", PORT); - String msg1 = client.sendMessage("hello"); - String msg2 = client.sendMessage("world"); - String terminate = client.sendMessage("."); - assertEquals(msg1, "hello"); - assertEquals(msg2, "world"); - assertEquals(terminate, "bye"); - client.stopConnection(); - } + @Test + public void givenClient3_whenServerResponds_thenCorrect() { + EchoClient client = new EchoClient(); + client.startConnection("127.0.0.1", PORT); + String msg1 = client.sendMessage("hello"); + String msg2 = client.sendMessage("world"); + String terminate = client.sendMessage("."); + assertEquals(msg1, "hello"); + assertEquals(msg2, "world"); + assertEquals(terminate, "bye"); + client.stopConnection(); + } } diff --git a/core-java/src/test/java/com/baeldung/socket/EchoTest.java b/core-java/src/test/java/com/baeldung/socket/EchoTest.java index cb09d42f79..6c93646ba6 100644 --- a/core-java/src/test/java/com/baeldung/socket/EchoTest.java +++ b/core-java/src/test/java/com/baeldung/socket/EchoTest.java @@ -18,28 +18,28 @@ public class EchoTest { Thread.sleep(500); } - private EchoClient client = new EchoClient(); + private EchoClient client = new EchoClient(); - @Before - public void init() { - client.startConnection("127.0.0.1", PORT); - } + @Before + public void init() { + client.startConnection("127.0.0.1", PORT); + } - @Test - public void givenClient_whenServerEchosMessage_thenCorrect() { + @Test + public void givenClient_whenServerEchosMessage_thenCorrect() { - String resp1 = client.sendMessage("hello"); - String resp2 = client.sendMessage("world"); - String resp3 = client.sendMessage("!"); - String resp4 = client.sendMessage("."); - assertEquals("hello", resp1); - assertEquals("world", resp2); - assertEquals("!", resp3); - assertEquals("good bye", resp4); - } + String resp1 = client.sendMessage("hello"); + String resp2 = client.sendMessage("world"); + String resp3 = client.sendMessage("!"); + String resp4 = client.sendMessage("."); + assertEquals("hello", resp1); + assertEquals("world", resp2); + assertEquals("!", resp3); + assertEquals("good bye", resp4); + } - @After - public void tearDown() { - client.stopConnection(); - } + @After + public void tearDown() { + client.stopConnection(); + } } diff --git a/core-java/src/test/java/com/baeldung/socket/GreetServerTest.java b/core-java/src/test/java/com/baeldung/socket/GreetServerIntegrationTest.java similarity index 90% rename from core-java/src/test/java/com/baeldung/socket/GreetServerTest.java rename to core-java/src/test/java/com/baeldung/socket/GreetServerIntegrationTest.java index caf56a8c76..06b37d8539 100644 --- a/core-java/src/test/java/com/baeldung/socket/GreetServerTest.java +++ b/core-java/src/test/java/com/baeldung/socket/GreetServerIntegrationTest.java @@ -9,7 +9,7 @@ import java.util.concurrent.Executors; import static org.junit.Assert.assertEquals; -public class GreetServerTest { +public class GreetServerIntegrationTest { private GreetClient client; @@ -24,7 +24,7 @@ public class GreetServerTest { @Before public void init() { client = new GreetClient(); - client.startConnection("127.0.0.1", PORT); + client.startConnection("127.0.0.1", PORT); } diff --git a/core-java/src/test/java/org/baeldung/core/exceptions/FileNotFoundExceptionTest.java b/core-java/src/test/java/org/baeldung/core/exceptions/FileNotFoundExceptionTest.java index 23be2200d3..d701babc20 100644 --- a/core-java/src/test/java/org/baeldung/core/exceptions/FileNotFoundExceptionTest.java +++ b/core-java/src/test/java/org/baeldung/core/exceptions/FileNotFoundExceptionTest.java @@ -42,7 +42,7 @@ public class FileNotFoundExceptionTest { LOG.error("Optional file " + fileName + " was not found.", ex); } } - + private void readFailingFile() throws IOException { BufferedReader rd = new BufferedReader(new FileReader(new File(fileName))); rd.readLine(); diff --git a/core-java/src/test/java/org/baeldung/equalshashcode/entities/PrimitiveClassTest.java b/core-java/src/test/java/org/baeldung/equalshashcode/entities/PrimitiveClassUnitTest.java similarity index 94% rename from core-java/src/test/java/org/baeldung/equalshashcode/entities/PrimitiveClassTest.java rename to core-java/src/test/java/org/baeldung/equalshashcode/entities/PrimitiveClassUnitTest.java index 16f25ae021..603b0bfbf9 100644 --- a/core-java/src/test/java/org/baeldung/equalshashcode/entities/PrimitiveClassTest.java +++ b/core-java/src/test/java/org/baeldung/equalshashcode/entities/PrimitiveClassUnitTest.java @@ -3,7 +3,7 @@ package org.baeldung.equalshashcode.entities; import org.junit.Assert; import org.junit.Test; -public class PrimitiveClassTest { +public class PrimitiveClassUnitTest { @Test public void testTwoEqualsObjects() { diff --git a/core-java/src/test/java/org/baeldung/equalshashcode/entities/SquareClassTest.java b/core-java/src/test/java/org/baeldung/equalshashcode/entities/SquareClassUnitTest.java similarity index 94% rename from core-java/src/test/java/org/baeldung/equalshashcode/entities/SquareClassTest.java rename to core-java/src/test/java/org/baeldung/equalshashcode/entities/SquareClassUnitTest.java index 52d024a696..0943436883 100644 --- a/core-java/src/test/java/org/baeldung/equalshashcode/entities/SquareClassTest.java +++ b/core-java/src/test/java/org/baeldung/equalshashcode/entities/SquareClassUnitTest.java @@ -5,11 +5,10 @@ import java.awt.Color; import org.junit.Assert; import org.junit.Test; -public class SquareClassTest { +public class SquareClassUnitTest { @Test public void testEqualsAndHashcodes() { - Square aObject = new Square(10, Color.BLUE); Square bObject = new Square(10, Color.BLUE); diff --git a/core-java/src/test/java/org/baeldung/java/arrays/ArraysJoinAndSplitJUnitTest.java b/core-java/src/test/java/org/baeldung/java/arrays/ArraysJoinAndSplitJUnitTest.java index ad1f2dc70c..885c3bcd6c 100644 --- a/core-java/src/test/java/org/baeldung/java/arrays/ArraysJoinAndSplitJUnitTest.java +++ b/core-java/src/test/java/org/baeldung/java/arrays/ArraysJoinAndSplitJUnitTest.java @@ -7,11 +7,11 @@ import org.junit.Test; public class ArraysJoinAndSplitJUnitTest { - private final String[] sauces = {"Marinara", "Olive Oil"}; - private final String[] cheeses = {"Mozzarella", "Feta", "Parmesan"}; - private final String[] vegetables = {"Olives", "Spinach", "Green Peppers"}; + private final String[] sauces = { "Marinara", "Olive Oil" }; + private final String[] cheeses = { "Mozzarella", "Feta", "Parmesan" }; + private final String[] vegetables = { "Olives", "Spinach", "Green Peppers" }; - private final String[] customers = {"Jay", "Harry", "Ronnie", "Gary", "Ross"}; + private final String[] customers = { "Jay", "Harry", "Ronnie", "Gary", "Ross" }; @Test public void givenThreeStringArrays_whenJoiningIntoOneStringArray_shouldSucceed() { @@ -25,12 +25,9 @@ public class ArraysJoinAndSplitJUnitTest { System.arraycopy(vegetables, 0, toppings, AddedSoFar, vegetables.length); - Assert.assertArrayEquals(toppings, - new String[]{"Marinara", "Olive Oil", "Mozzarella", "Feta", - "Parmesan", "Olives", "Spinach", "Green Peppers"}); + Assert.assertArrayEquals(toppings, new String[] { "Marinara", "Olive Oil", "Mozzarella", "Feta", "Parmesan", "Olives", "Spinach", "Green Peppers" }); } - @Test public void givenOneStringArray_whenSplittingInHalfTwoStringArrays_shouldSucceed() { int ordersHalved = (customers.length / 2) + (customers.length % 2); @@ -38,7 +35,7 @@ public class ArraysJoinAndSplitJUnitTest { String[] driverOne = Arrays.copyOf(customers, ordersHalved); String[] driverTwo = Arrays.copyOfRange(customers, ordersHalved, customers.length); - Assert.assertArrayEquals(driverOne, new String[]{"Jay", "Harry", "Ronnie"}); - Assert.assertArrayEquals(driverTwo, new String[]{"Gary", "Ross"}); + Assert.assertArrayEquals(driverOne, new String[] { "Jay", "Harry", "Ronnie" }); + Assert.assertArrayEquals(driverTwo, new String[] { "Gary", "Ross" }); } } diff --git a/core-java/src/test/java/org/baeldung/java/collections/ArrayListTest.java b/core-java/src/test/java/org/baeldung/java/collections/ArrayListTest.java index 30b0111555..6f291c535f 100644 --- a/core-java/src/test/java/org/baeldung/java/collections/ArrayListTest.java +++ b/core-java/src/test/java/org/baeldung/java/collections/ArrayListTest.java @@ -18,10 +18,7 @@ public class ArrayListTest { @Before public void setUp() { - List list = LongStream.range(0, 16) - .boxed() - .map(Long::toHexString) - .collect(toCollection(ArrayList::new)); + List list = LongStream.range(0, 16).boxed().map(Long::toHexString).collect(toCollection(ArrayList::new)); stringsToSearch = new ArrayList<>(list); stringsToSearch.addAll(list); } @@ -34,8 +31,7 @@ public class ArrayListTest { @Test public void givenCollection_whenProvideItToArrayListCtor_thenArrayListIsPopulatedWithItsElements() { - Collection numbers = - IntStream.range(0, 10).boxed().collect(toSet()); + Collection numbers = IntStream.range(0, 10).boxed().collect(toSet()); List list = new ArrayList<>(numbers); assertEquals(10, list.size()); @@ -56,8 +52,7 @@ public class ArrayListTest { @Test public void givenCollection_whenAddToArrayList_thenIsAdded() { List list = new ArrayList<>(Arrays.asList(1L, 2L, 3L)); - LongStream.range(4, 10).boxed() - .collect(collectingAndThen(toCollection(ArrayList::new), ys -> list.addAll(0, ys))); + LongStream.range(4, 10).boxed().collect(collectingAndThen(toCollection(ArrayList::new), ys -> list.addAll(0, ys))); assertThat(Arrays.asList(4L, 5L, 6L, 7L, 8L, 9L, 1L, 2L, 3L), equalTo(list)); } @@ -88,10 +83,7 @@ public class ArrayListTest { public void givenPredicate_whenIterateArrayList_thenFindAllElementsSatisfyingPredicate() { Set matchingStrings = new HashSet<>(Arrays.asList("a", "c", "9")); - List result = stringsToSearch - .stream() - .filter(matchingStrings::contains) - .collect(toCollection(ArrayList::new)); + List result = stringsToSearch.stream().filter(matchingStrings::contains).collect(toCollection(ArrayList::new)); assertEquals(6, result.size()); } @@ -131,8 +123,7 @@ public class ArrayListTest { @Test public void givenCondition_whenIterateArrayList_thenRemoveAllElementsSatisfyingCondition() { - Set matchingStrings - = Sets.newHashSet("a", "b", "c", "d", "e", "f"); + Set matchingStrings = Sets.newHashSet("a", "b", "c", "d", "e", "f"); Iterator it = stringsToSearch.iterator(); while (it.hasNext()) { diff --git a/core-java/src/test/java/org/baeldung/java/enums/PizzaTest.java b/core-java/src/test/java/org/baeldung/java/enums/PizzaUnitTest.java similarity index 60% rename from core-java/src/test/java/org/baeldung/java/enums/PizzaTest.java rename to core-java/src/test/java/org/baeldung/java/enums/PizzaUnitTest.java index a6814ee600..cc042eeca9 100644 --- a/core-java/src/test/java/org/baeldung/java/enums/PizzaTest.java +++ b/core-java/src/test/java/org/baeldung/java/enums/PizzaUnitTest.java @@ -1,21 +1,21 @@ package org.baeldung.java.enums; - -import com.baeldung.enums.Pizza; -import org.junit.Test; +import static junit.framework.TestCase.assertTrue; import java.util.ArrayList; import java.util.EnumMap; import java.util.List; -import static junit.framework.TestCase.assertTrue; +import org.junit.Test; +import com.baeldung.enums.Pizza; + +public class PizzaUnitTest { -public class PizzaTest { @Test public void givenPizaOrder_whenReady_thenDeliverable() { Pizza testPz = new Pizza(); - testPz.setStatus(Pizza.PizzaStatus.READY); + testPz.setStatus(Pizza.PizzaStatusEnum.READY); assertTrue(testPz.isDeliverable()); } @@ -23,16 +23,16 @@ public class PizzaTest { public void givenPizaOrders_whenRetrievingUnDeliveredPzs_thenCorrectlyRetrieved() { List pzList = new ArrayList<>(); Pizza pz1 = new Pizza(); - pz1.setStatus(Pizza.PizzaStatus.DELIVERED); + pz1.setStatus(Pizza.PizzaStatusEnum.DELIVERED); Pizza pz2 = new Pizza(); - pz2.setStatus(Pizza.PizzaStatus.ORDERED); + pz2.setStatus(Pizza.PizzaStatusEnum.ORDERED); Pizza pz3 = new Pizza(); - pz3.setStatus(Pizza.PizzaStatus.ORDERED); + pz3.setStatus(Pizza.PizzaStatusEnum.ORDERED); Pizza pz4 = new Pizza(); - pz4.setStatus(Pizza.PizzaStatus.READY); + pz4.setStatus(Pizza.PizzaStatusEnum.READY); pzList.add(pz1); pzList.add(pz2); @@ -48,33 +48,34 @@ public class PizzaTest { List pzList = new ArrayList<>(); Pizza pz1 = new Pizza(); - pz1.setStatus(Pizza.PizzaStatus.DELIVERED); + pz1.setStatus(Pizza.PizzaStatusEnum.DELIVERED); Pizza pz2 = new Pizza(); - pz2.setStatus(Pizza.PizzaStatus.ORDERED); + pz2.setStatus(Pizza.PizzaStatusEnum.ORDERED); Pizza pz3 = new Pizza(); - pz3.setStatus(Pizza.PizzaStatus.ORDERED); + pz3.setStatus(Pizza.PizzaStatusEnum.ORDERED); Pizza pz4 = new Pizza(); - pz4.setStatus(Pizza.PizzaStatus.READY); + pz4.setStatus(Pizza.PizzaStatusEnum.READY); pzList.add(pz1); pzList.add(pz2); pzList.add(pz3); pzList.add(pz4); - EnumMap> map = Pizza.groupPizzaByStatus(pzList); - assertTrue(map.get(Pizza.PizzaStatus.DELIVERED).size() == 1); - assertTrue(map.get(Pizza.PizzaStatus.ORDERED).size() == 2); - assertTrue(map.get(Pizza.PizzaStatus.READY).size() == 1); + EnumMap> map = Pizza.groupPizzaByStatus(pzList); + assertTrue(map.get(Pizza.PizzaStatusEnum.DELIVERED).size() == 1); + assertTrue(map.get(Pizza.PizzaStatusEnum.ORDERED).size() == 2); + assertTrue(map.get(Pizza.PizzaStatusEnum.READY).size() == 1); } @Test public void givenPizaOrder_whenDelivered_thenPizzaGetsDeliveredAndStatusChanges() { Pizza pz = new Pizza(); - pz.setStatus(Pizza.PizzaStatus.READY); + pz.setStatus(Pizza.PizzaStatusEnum.READY); pz.deliver(); - assertTrue(pz.getStatus() == Pizza.PizzaStatus.DELIVERED); + assertTrue(pz.getStatus() == Pizza.PizzaStatusEnum.DELIVERED); } + } diff --git a/core-java/src/test/java/org/baeldung/java/io/JavaReadFromFileTest.java b/core-java/src/test/java/org/baeldung/java/io/JavaReadFromFileIntegrationTest.java similarity index 98% rename from core-java/src/test/java/org/baeldung/java/io/JavaReadFromFileTest.java rename to core-java/src/test/java/org/baeldung/java/io/JavaReadFromFileIntegrationTest.java index e679b82d3f..b87f6e606f 100644 --- a/core-java/src/test/java/org/baeldung/java/io/JavaReadFromFileTest.java +++ b/core-java/src/test/java/org/baeldung/java/io/JavaReadFromFileIntegrationTest.java @@ -23,7 +23,7 @@ import java.util.Scanner; import org.junit.Test; -public class JavaReadFromFileTest { +public class JavaReadFromFileIntegrationTest { @Test public void whenReadWithBufferedReader_thenCorrect() throws IOException { @@ -111,7 +111,7 @@ public class JavaReadFromFileTest { @Test public void whenReadUTFEncodedFile_thenCorrect() throws IOException { - final String expected_value = "é’空"; + final String expected_value = "é?’空"; final BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream("src/test/resources/test_read7.in"), "UTF-8")); final String currentLine = reader.readLine(); reader.close(); diff --git a/core-java/src/test/java/org/baeldung/java/io/JavaScannerTest.java b/core-java/src/test/java/org/baeldung/java/io/JavaScannerIntegrationTest.java similarity index 99% rename from core-java/src/test/java/org/baeldung/java/io/JavaScannerTest.java rename to core-java/src/test/java/org/baeldung/java/io/JavaScannerIntegrationTest.java index 61f0f52316..89a84d9d7d 100644 --- a/core-java/src/test/java/org/baeldung/java/io/JavaScannerTest.java +++ b/core-java/src/test/java/org/baeldung/java/io/JavaScannerIntegrationTest.java @@ -15,7 +15,7 @@ import java.util.Scanner; import org.junit.Test; -public class JavaScannerTest { +public class JavaScannerIntegrationTest { @Test public void whenReadFileWithScanner_thenCorrect() throws IOException { diff --git a/core-java/src/test/java/org/baeldung/java/io/JavaWriteToFileTest.java b/core-java/src/test/java/org/baeldung/java/io/JavaWriteToFileIntegrationTest.java similarity index 99% rename from core-java/src/test/java/org/baeldung/java/io/JavaWriteToFileTest.java rename to core-java/src/test/java/org/baeldung/java/io/JavaWriteToFileIntegrationTest.java index 93cfffa39d..54b40a070c 100644 --- a/core-java/src/test/java/org/baeldung/java/io/JavaWriteToFileTest.java +++ b/core-java/src/test/java/org/baeldung/java/io/JavaWriteToFileIntegrationTest.java @@ -26,7 +26,7 @@ import java.nio.file.Paths; import org.junit.Test; -public class JavaWriteToFileTest { +public class JavaWriteToFileIntegrationTest { private String fileName = "src/test/resources/test_write.txt"; private String fileName1 = "src/test/resources/test_write_1.txt"; diff --git a/core-java/src/test/java/org/baeldung/java/lists/ListAssertJTest.java b/core-java/src/test/java/org/baeldung/java/lists/ListAssertJUnitTest.java similarity index 83% rename from core-java/src/test/java/org/baeldung/java/lists/ListAssertJTest.java rename to core-java/src/test/java/org/baeldung/java/lists/ListAssertJUnitTest.java index b8926946a9..c609f5badb 100644 --- a/core-java/src/test/java/org/baeldung/java/lists/ListAssertJTest.java +++ b/core-java/src/test/java/org/baeldung/java/lists/ListAssertJUnitTest.java @@ -7,7 +7,7 @@ import java.util.List; import static org.assertj.core.api.Assertions.assertThat; -public class ListAssertJTest { +public class ListAssertJUnitTest { private final List list1 = Arrays.asList("1", "2", "3", "4"); private final List list2 = Arrays.asList("1", "2", "3", "4"); @@ -15,9 +15,7 @@ public class ListAssertJTest { @Test public void whenTestingForEquality_ShouldBeEqual() throws Exception { - assertThat(list1) - .isEqualTo(list2) - .isNotEqualTo(list3); + assertThat(list1).isEqualTo(list2).isNotEqualTo(list3); assertThat(list1.equals(list2)).isTrue(); assertThat(list1.equals(list3)).isFalse(); diff --git a/core-java/src/test/java/org/baeldung/java/lists/ListTestNGTest.java b/core-java/src/test/java/org/baeldung/java/lists/ListTestNgUnitTest.java similarity index 94% rename from core-java/src/test/java/org/baeldung/java/lists/ListTestNGTest.java rename to core-java/src/test/java/org/baeldung/java/lists/ListTestNgUnitTest.java index fa80d0e224..b7c2bd7272 100644 --- a/core-java/src/test/java/org/baeldung/java/lists/ListTestNGTest.java +++ b/core-java/src/test/java/org/baeldung/java/lists/ListTestNgUnitTest.java @@ -6,7 +6,7 @@ import org.testng.annotations.Test; import java.util.Arrays; import java.util.List; -public class ListTestNGTest { +public class ListTestNgUnitTest { private final List list1 = Arrays.asList("1", "2", "3", "4"); private final List list2 = Arrays.asList("1", "2", "3", "4"); diff --git a/core-java/src/test/java/org/baeldung/java/md5/JavaMD5Test.java b/core-java/src/test/java/org/baeldung/java/md5/JavaMD5UnitTest.java similarity index 77% rename from core-java/src/test/java/org/baeldung/java/md5/JavaMD5Test.java rename to core-java/src/test/java/org/baeldung/java/md5/JavaMD5UnitTest.java index 83f1fb33b6..55e71470c8 100644 --- a/core-java/src/test/java/org/baeldung/java/md5/JavaMD5Test.java +++ b/core-java/src/test/java/org/baeldung/java/md5/JavaMD5UnitTest.java @@ -1,9 +1,10 @@ package org.baeldung.java.md5; -import static org.junit.Assert.*; +import static org.assertj.core.api.Assertions.assertThat; +import java.io.File; +import java.io.IOException; import java.nio.file.Files; -import java.nio.file.Path; import java.nio.file.Paths; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; @@ -11,80 +12,64 @@ import java.security.NoSuchAlgorithmException; import javax.xml.bind.DatatypeConverter; import org.apache.commons.codec.digest.DigestUtils; -import org.junit.Before; import org.junit.Test; import com.google.common.hash.HashCode; import com.google.common.hash.Hashing; -import java.io.File; -import java.io.IOException; -import java.nio.*; -import static org.assertj.core.api.Assertions.assertThat; +public class JavaMD5UnitTest { - -public class JavaMD5Test { - - String filename = "src/test/resources/test_md5.txt"; String checksum = "5EB63BBBE01EEED093CB22BB8F5ACDC3"; - + String hash = "35454B055CC325EA1AF2126E27707052"; String password = "ILoveJava"; - - - + @Test public void givenPassword_whenHashing_thenVerifying() throws NoSuchAlgorithmException { String hash = "35454B055CC325EA1AF2126E27707052"; String password = "ILoveJava"; - + MessageDigest md = MessageDigest.getInstance("MD5"); md.update(password.getBytes()); byte[] digest = md.digest(); String myHash = DatatypeConverter.printHexBinary(digest).toUpperCase(); - + assertThat(myHash.equals(hash)).isTrue(); } - + @Test public void givenFile_generatingChecksum_thenVerifying() throws NoSuchAlgorithmException, IOException { String filename = "src/test/resources/test_md5.txt"; String checksum = "5EB63BBBE01EEED093CB22BB8F5ACDC3"; - + MessageDigest md = MessageDigest.getInstance("MD5"); md.update(Files.readAllBytes(Paths.get(filename))); byte[] digest = md.digest(); - String myChecksum = DatatypeConverter - .printHexBinary(digest).toUpperCase(); - + String myChecksum = DatatypeConverter.printHexBinary(digest).toUpperCase(); + assertThat(myChecksum.equals(checksum)).isTrue(); } - + @Test - public void givenPassword_whenHashingUsingCommons_thenVerifying() { + public void givenPassword_whenHashingUsingCommons_thenVerifying() { String hash = "35454B055CC325EA1AF2126E27707052"; String password = "ILoveJava"; - String md5Hex = DigestUtils - .md5Hex(password).toUpperCase(); - + String md5Hex = DigestUtils.md5Hex(password).toUpperCase(); + assertThat(md5Hex.equals(hash)).isTrue(); } - - + @Test public void givenFile_whenChecksumUsingGuava_thenVerifying() throws IOException { String filename = "src/test/resources/test_md5.txt"; String checksum = "5EB63BBBE01EEED093CB22BB8F5ACDC3"; - - HashCode hash = com.google.common.io.Files - .hash(new File(filename), Hashing.md5()); - String myChecksum = hash.toString() - .toUpperCase(); - + + HashCode hash = com.google.common.io.Files.hash(new File(filename), Hashing.md5()); + String myChecksum = hash.toString().toUpperCase(); + assertThat(myChecksum.equals(checksum)).isTrue(); } - } diff --git a/core-java/src/test/java/org/baeldung/java/sandbox/SandboxJavaTest.java b/core-java/src/test/java/org/baeldung/java/sandbox/SandboxJavaUnitTest.java similarity index 98% rename from core-java/src/test/java/org/baeldung/java/sandbox/SandboxJavaTest.java rename to core-java/src/test/java/org/baeldung/java/sandbox/SandboxJavaUnitTest.java index 5127ccb10c..6bd29982dc 100644 --- a/core-java/src/test/java/org/baeldung/java/sandbox/SandboxJavaTest.java +++ b/core-java/src/test/java/org/baeldung/java/sandbox/SandboxJavaUnitTest.java @@ -6,7 +6,7 @@ import java.util.TimerTask; import org.junit.Test; -public class SandboxJavaTest { +public class SandboxJavaUnitTest { @Test public void givenUsingTimer_whenSchedulingTimerTaskOnce_thenCorrect() throws InterruptedException { From 5e676c855e96d52d6efc4a2a52fa74d99b50dcbd Mon Sep 17 00:00:00 2001 From: eugenp Date: Tue, 25 Oct 2016 11:15:13 +0300 Subject: [PATCH 103/215] testing work --- core-java/pom.xml | 2 + ...CompletableFutureLongRunningUnitTest.java} | 42 ++++--------------- ...tegrationTest.java => JavaIoUnitTest.java} | 2 +- ...java => JavaTimerLongRunningUnitTest.java} | 2 +- ...grationTest.java => JavaFileUnitTest.java} | 2 +- ...est.java => JavaReadFromFileUnitTest.java} | 2 +- ...tionTest.java => JavaScannerUnitTest.java} | 2 +- ...Test.java => JavaWriteToFileUnitTest.java} | 2 +- ...itTest.java => SandboxJavaManualTest.java} | 2 +- 9 files changed, 18 insertions(+), 40 deletions(-) rename core-java/src/test/java/com/baeldung/completablefuture/{CompletableFutureTest.java => CompletableFutureLongRunningUnitTest.java} (96%) rename core-java/src/test/java/org/baeldung/java/{JavaIoIntegrationTest.java => JavaIoUnitTest.java} (98%) rename core-java/src/test/java/org/baeldung/java/{JavaTimerUnitTest.java => JavaTimerLongRunningUnitTest.java} (98%) rename core-java/src/test/java/org/baeldung/java/io/{JavaFileIntegrationTest.java => JavaFileUnitTest.java} (99%) rename core-java/src/test/java/org/baeldung/java/io/{JavaReadFromFileIntegrationTest.java => JavaReadFromFileUnitTest.java} (99%) rename core-java/src/test/java/org/baeldung/java/io/{JavaScannerIntegrationTest.java => JavaScannerUnitTest.java} (99%) rename core-java/src/test/java/org/baeldung/java/io/{JavaWriteToFileIntegrationTest.java => JavaWriteToFileUnitTest.java} (99%) rename core-java/src/test/java/org/baeldung/java/sandbox/{SandboxJavaUnitTest.java => SandboxJavaManualTest.java} (98%) diff --git a/core-java/pom.xml b/core-java/pom.xml index 75608b59ba..b39e356977 100644 --- a/core-java/pom.xml +++ b/core-java/pom.xml @@ -162,6 +162,8 @@ **/*IntegrationTest.java + **/*LongRunningUnitTest.java + **/*ManualTest.java diff --git a/core-java/src/test/java/com/baeldung/completablefuture/CompletableFutureTest.java b/core-java/src/test/java/com/baeldung/completablefuture/CompletableFutureLongRunningUnitTest.java similarity index 96% rename from core-java/src/test/java/com/baeldung/completablefuture/CompletableFutureTest.java rename to core-java/src/test/java/com/baeldung/completablefuture/CompletableFutureLongRunningUnitTest.java index d337382934..2500bf590a 100644 --- a/core-java/src/test/java/com/baeldung/completablefuture/CompletableFutureTest.java +++ b/core-java/src/test/java/com/baeldung/completablefuture/CompletableFutureLongRunningUnitTest.java @@ -1,24 +1,26 @@ package com.baeldung.completablefuture; -import java.util.concurrent.*; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import java.util.concurrent.CancellationException; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.Executors; +import java.util.concurrent.Future; import java.util.stream.Collectors; import java.util.stream.Stream; import org.junit.Test; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; - -public class CompletableFutureTest { +public class CompletableFutureLongRunningUnitTest { @Test public void whenRunningCompletableFutureAsynchronously_thenGetMethodWaitsForResult() throws InterruptedException, ExecutionException { - Future completableFuture = calculateAsync(); String result = completableFuture.get(); assertEquals("Hello", result); - } public Future calculateAsync() throws InterruptedException { @@ -35,12 +37,10 @@ public class CompletableFutureTest { @Test public void whenRunningCompletableFutureWithResult_thenGetMethodReturnsImmediately() throws InterruptedException, ExecutionException { - Future completableFuture = CompletableFuture.completedFuture("Hello"); String result = completableFuture.get(); assertEquals("Hello", result); - } public Future calculateAsyncWithCancellation() throws InterruptedException { @@ -57,82 +57,65 @@ public class CompletableFutureTest { @Test(expected = CancellationException.class) public void whenCancelingTheFuture_thenThrowsCancellationException() throws ExecutionException, InterruptedException { - Future future = calculateAsyncWithCancellation(); future.get(); - } @Test public void whenCreatingCompletableFutureWithSupplyAsync_thenFutureReturnsValue() throws ExecutionException, InterruptedException { - CompletableFuture future = CompletableFuture.supplyAsync(() -> "Hello"); assertEquals("Hello", future.get()); - } @Test public void whenAddingThenAcceptToFuture_thenFunctionExecutesAfterComputationIsFinished() throws ExecutionException, InterruptedException { - CompletableFuture completableFuture = CompletableFuture.supplyAsync(() -> "Hello"); CompletableFuture future = completableFuture.thenAccept(s -> System.out.println("Computation returned: " + s)); future.get(); - } @Test public void whenAddingThenRunToFuture_thenFunctionExecutesAfterComputationIsFinished() throws ExecutionException, InterruptedException { - CompletableFuture completableFuture = CompletableFuture.supplyAsync(() -> "Hello"); CompletableFuture future = completableFuture.thenRun(() -> System.out.println("Computation finished.")); future.get(); - } @Test public void whenAddingThenApplyToFuture_thenFunctionExecutesAfterComputationIsFinished() throws ExecutionException, InterruptedException { - CompletableFuture completableFuture = CompletableFuture.supplyAsync(() -> "Hello"); CompletableFuture future = completableFuture.thenApply(s -> s + " World"); assertEquals("Hello World", future.get()); - } @Test public void whenUsingThenCompose_thenFuturesExecuteSequentially() throws ExecutionException, InterruptedException { - CompletableFuture completableFuture = CompletableFuture.supplyAsync(() -> "Hello").thenCompose(s -> CompletableFuture.supplyAsync(() -> s + " World")); assertEquals("Hello World", completableFuture.get()); - } @Test public void whenUsingThenCombine_thenWaitForExecutionOfBothFutures() throws ExecutionException, InterruptedException { - CompletableFuture completableFuture = CompletableFuture.supplyAsync(() -> "Hello").thenCombine(CompletableFuture.supplyAsync(() -> " World"), (s1, s2) -> s1 + s2); assertEquals("Hello World", completableFuture.get()); - } @Test public void whenUsingThenAcceptBoth_thenWaitForExecutionOfBothFutures() throws ExecutionException, InterruptedException { - CompletableFuture.supplyAsync(() -> "Hello").thenAcceptBoth(CompletableFuture.supplyAsync(() -> " World"), (s1, s2) -> System.out.println(s1 + s2)); - } @Test public void whenFutureCombinedWithAllOfCompletes_thenAllFuturesAreDone() throws ExecutionException, InterruptedException { - CompletableFuture future1 = CompletableFuture.supplyAsync(() -> "Hello"); CompletableFuture future2 = CompletableFuture.supplyAsync(() -> "Beautiful"); CompletableFuture future3 = CompletableFuture.supplyAsync(() -> "World"); @@ -150,12 +133,10 @@ public class CompletableFutureTest { String combined = Stream.of(future1, future2, future3).map(CompletableFuture::join).collect(Collectors.joining(" ")); assertEquals("Hello Beautiful World", combined); - } @Test public void whenFutureThrows_thenHandleMethodReceivesException() throws ExecutionException, InterruptedException { - String name = null; // ... @@ -168,12 +149,10 @@ public class CompletableFutureTest { }).handle((s, t) -> s != null ? s : "Hello, Stranger!"); assertEquals("Hello, Stranger!", completableFuture.get()); - } @Test(expected = ExecutionException.class) public void whenCompletingFutureExceptionally_thenGetMethodThrows() throws ExecutionException, InterruptedException { - CompletableFuture completableFuture = new CompletableFuture<>(); // ... @@ -183,18 +162,15 @@ public class CompletableFutureTest { // ... completableFuture.get(); - } @Test public void whenAddingThenApplyAsyncToFuture_thenFunctionExecutesAfterComputationIsFinished() throws ExecutionException, InterruptedException { - CompletableFuture completableFuture = CompletableFuture.supplyAsync(() -> "Hello"); CompletableFuture future = completableFuture.thenApplyAsync(s -> s + " World"); assertEquals("Hello World", future.get()); - } } \ No newline at end of file diff --git a/core-java/src/test/java/org/baeldung/java/JavaIoIntegrationTest.java b/core-java/src/test/java/org/baeldung/java/JavaIoUnitTest.java similarity index 98% rename from core-java/src/test/java/org/baeldung/java/JavaIoIntegrationTest.java rename to core-java/src/test/java/org/baeldung/java/JavaIoUnitTest.java index ff92410bc4..501f2ffca0 100644 --- a/core-java/src/test/java/org/baeldung/java/JavaIoIntegrationTest.java +++ b/core-java/src/test/java/org/baeldung/java/JavaIoUnitTest.java @@ -14,7 +14,7 @@ import org.slf4j.LoggerFactory; import com.google.common.base.Charsets; import com.google.common.io.Files; -public class JavaIoIntegrationTest { +public class JavaIoUnitTest { protected final Logger logger = LoggerFactory.getLogger(getClass()); // tests - iterate lines in a file diff --git a/core-java/src/test/java/org/baeldung/java/JavaTimerUnitTest.java b/core-java/src/test/java/org/baeldung/java/JavaTimerLongRunningUnitTest.java similarity index 98% rename from core-java/src/test/java/org/baeldung/java/JavaTimerUnitTest.java rename to core-java/src/test/java/org/baeldung/java/JavaTimerLongRunningUnitTest.java index fcc74dbe64..da316aa885 100644 --- a/core-java/src/test/java/org/baeldung/java/JavaTimerUnitTest.java +++ b/core-java/src/test/java/org/baeldung/java/JavaTimerLongRunningUnitTest.java @@ -9,7 +9,7 @@ import java.util.concurrent.TimeUnit; import org.junit.Test; -public class JavaTimerUnitTest { +public class JavaTimerLongRunningUnitTest { // tests diff --git a/core-java/src/test/java/org/baeldung/java/io/JavaFileIntegrationTest.java b/core-java/src/test/java/org/baeldung/java/io/JavaFileUnitTest.java similarity index 99% rename from core-java/src/test/java/org/baeldung/java/io/JavaFileIntegrationTest.java rename to core-java/src/test/java/org/baeldung/java/io/JavaFileUnitTest.java index 24213ba869..f39ba80c08 100644 --- a/core-java/src/test/java/org/baeldung/java/io/JavaFileIntegrationTest.java +++ b/core-java/src/test/java/org/baeldung/java/io/JavaFileUnitTest.java @@ -13,7 +13,7 @@ import java.nio.file.Paths; import org.apache.commons.io.FileUtils; import org.junit.Test; -public class JavaFileIntegrationTest { +public class JavaFileUnitTest { // create a file diff --git a/core-java/src/test/java/org/baeldung/java/io/JavaReadFromFileIntegrationTest.java b/core-java/src/test/java/org/baeldung/java/io/JavaReadFromFileUnitTest.java similarity index 99% rename from core-java/src/test/java/org/baeldung/java/io/JavaReadFromFileIntegrationTest.java rename to core-java/src/test/java/org/baeldung/java/io/JavaReadFromFileUnitTest.java index b87f6e606f..2aa3b366ba 100644 --- a/core-java/src/test/java/org/baeldung/java/io/JavaReadFromFileIntegrationTest.java +++ b/core-java/src/test/java/org/baeldung/java/io/JavaReadFromFileUnitTest.java @@ -23,7 +23,7 @@ import java.util.Scanner; import org.junit.Test; -public class JavaReadFromFileIntegrationTest { +public class JavaReadFromFileUnitTest { @Test public void whenReadWithBufferedReader_thenCorrect() throws IOException { diff --git a/core-java/src/test/java/org/baeldung/java/io/JavaScannerIntegrationTest.java b/core-java/src/test/java/org/baeldung/java/io/JavaScannerUnitTest.java similarity index 99% rename from core-java/src/test/java/org/baeldung/java/io/JavaScannerIntegrationTest.java rename to core-java/src/test/java/org/baeldung/java/io/JavaScannerUnitTest.java index 89a84d9d7d..5af286dbca 100644 --- a/core-java/src/test/java/org/baeldung/java/io/JavaScannerIntegrationTest.java +++ b/core-java/src/test/java/org/baeldung/java/io/JavaScannerUnitTest.java @@ -15,7 +15,7 @@ import java.util.Scanner; import org.junit.Test; -public class JavaScannerIntegrationTest { +public class JavaScannerUnitTest { @Test public void whenReadFileWithScanner_thenCorrect() throws IOException { diff --git a/core-java/src/test/java/org/baeldung/java/io/JavaWriteToFileIntegrationTest.java b/core-java/src/test/java/org/baeldung/java/io/JavaWriteToFileUnitTest.java similarity index 99% rename from core-java/src/test/java/org/baeldung/java/io/JavaWriteToFileIntegrationTest.java rename to core-java/src/test/java/org/baeldung/java/io/JavaWriteToFileUnitTest.java index 54b40a070c..9ff95c4e16 100644 --- a/core-java/src/test/java/org/baeldung/java/io/JavaWriteToFileIntegrationTest.java +++ b/core-java/src/test/java/org/baeldung/java/io/JavaWriteToFileUnitTest.java @@ -26,7 +26,7 @@ import java.nio.file.Paths; import org.junit.Test; -public class JavaWriteToFileIntegrationTest { +public class JavaWriteToFileUnitTest { private String fileName = "src/test/resources/test_write.txt"; private String fileName1 = "src/test/resources/test_write_1.txt"; diff --git a/core-java/src/test/java/org/baeldung/java/sandbox/SandboxJavaUnitTest.java b/core-java/src/test/java/org/baeldung/java/sandbox/SandboxJavaManualTest.java similarity index 98% rename from core-java/src/test/java/org/baeldung/java/sandbox/SandboxJavaUnitTest.java rename to core-java/src/test/java/org/baeldung/java/sandbox/SandboxJavaManualTest.java index 6bd29982dc..bb849d6a13 100644 --- a/core-java/src/test/java/org/baeldung/java/sandbox/SandboxJavaUnitTest.java +++ b/core-java/src/test/java/org/baeldung/java/sandbox/SandboxJavaManualTest.java @@ -6,7 +6,7 @@ import java.util.TimerTask; import org.junit.Test; -public class SandboxJavaUnitTest { +public class SandboxJavaManualTest { @Test public void givenUsingTimer_whenSchedulingTimerTaskOnce_thenCorrect() throws InterruptedException { From 62ca74121fc5294c143c19ead2dfbb9eff82b150 Mon Sep 17 00:00:00 2001 From: eugenp Date: Tue, 25 Oct 2016 11:18:24 +0300 Subject: [PATCH 104/215] tuning tests --- ...eLongRunningUnitTest.java => CompletableFutureUnitTest.java} | 2 +- .../{ScreenshotUnitTest.java => ScreenshotIntegrationTest.java} | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) rename core-java/src/test/java/com/baeldung/completablefuture/{CompletableFutureLongRunningUnitTest.java => CompletableFutureUnitTest.java} (99%) rename core-java/src/test/java/com/baeldung/printscreen/{ScreenshotUnitTest.java => ScreenshotIntegrationTest.java} (92%) diff --git a/core-java/src/test/java/com/baeldung/completablefuture/CompletableFutureLongRunningUnitTest.java b/core-java/src/test/java/com/baeldung/completablefuture/CompletableFutureUnitTest.java similarity index 99% rename from core-java/src/test/java/com/baeldung/completablefuture/CompletableFutureLongRunningUnitTest.java rename to core-java/src/test/java/com/baeldung/completablefuture/CompletableFutureUnitTest.java index 2500bf590a..df12c3d79e 100644 --- a/core-java/src/test/java/com/baeldung/completablefuture/CompletableFutureLongRunningUnitTest.java +++ b/core-java/src/test/java/com/baeldung/completablefuture/CompletableFutureUnitTest.java @@ -13,7 +13,7 @@ import java.util.stream.Stream; import org.junit.Test; -public class CompletableFutureLongRunningUnitTest { +public class CompletableFutureUnitTest { @Test public void whenRunningCompletableFutureAsynchronously_thenGetMethodWaitsForResult() throws InterruptedException, ExecutionException { diff --git a/core-java/src/test/java/com/baeldung/printscreen/ScreenshotUnitTest.java b/core-java/src/test/java/com/baeldung/printscreen/ScreenshotIntegrationTest.java similarity index 92% rename from core-java/src/test/java/com/baeldung/printscreen/ScreenshotUnitTest.java rename to core-java/src/test/java/com/baeldung/printscreen/ScreenshotIntegrationTest.java index 650abc301a..13609b6977 100644 --- a/core-java/src/test/java/com/baeldung/printscreen/ScreenshotUnitTest.java +++ b/core-java/src/test/java/com/baeldung/printscreen/ScreenshotIntegrationTest.java @@ -7,7 +7,7 @@ import java.io.File; import static org.junit.Assert.assertTrue; -public class ScreenshotUnitTest { +public class ScreenshotIntegrationTest { private Screenshot screenshot = new Screenshot("Screenshot.jpg"); private File file = new File("Screenshot.jpg"); From 672b6fe3365189cf1e63e4c89ffd6942736e9835 Mon Sep 17 00:00:00 2001 From: DOHA Date: Tue, 25 Oct 2016 13:51:51 +0200 Subject: [PATCH 105/215] configure integration test --- jpa-storedprocedure/pom.xml | 11 +++++++++++ ...eTest.java => StoredProcedureIntegrationTest.java} | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) rename jpa-storedprocedure/src/test/java/com/baeldung/jpa/storedprocedure/{StoredProcedureTest.java => StoredProcedureIntegrationTest.java} (98%) diff --git a/jpa-storedprocedure/pom.xml b/jpa-storedprocedure/pom.xml index b2ebaa32e2..b5a2e8693c 100644 --- a/jpa-storedprocedure/pom.xml +++ b/jpa-storedprocedure/pom.xml @@ -11,6 +11,7 @@ 7.0 5.1.0.Final 5.1.38 + 2.19.1 @@ -33,6 +34,16 @@ + + org.apache.maven.plugins + maven-surefire-plugin + ${maven-surefire-plugin.version} + + + **/*IntegrationTest.java + + + diff --git a/jpa-storedprocedure/src/test/java/com/baeldung/jpa/storedprocedure/StoredProcedureTest.java b/jpa-storedprocedure/src/test/java/com/baeldung/jpa/storedprocedure/StoredProcedureIntegrationTest.java similarity index 98% rename from jpa-storedprocedure/src/test/java/com/baeldung/jpa/storedprocedure/StoredProcedureTest.java rename to jpa-storedprocedure/src/test/java/com/baeldung/jpa/storedprocedure/StoredProcedureIntegrationTest.java index 69351d9683..c93d59fe30 100644 --- a/jpa-storedprocedure/src/test/java/com/baeldung/jpa/storedprocedure/StoredProcedureTest.java +++ b/jpa-storedprocedure/src/test/java/com/baeldung/jpa/storedprocedure/StoredProcedureIntegrationTest.java @@ -15,7 +15,7 @@ import org.junit.Test; import com.baeldung.jpa.model.Car; -public class StoredProcedureTest { +public class StoredProcedureIntegrationTest { private static EntityManagerFactory factory = null; private static EntityManager entityManager = null; From 48f3f0b8340112a2b2e7fe8e6df9096e05469792 Mon Sep 17 00:00:00 2001 From: DOHA Date: Tue, 25 Oct 2016 14:11:22 +0200 Subject: [PATCH 106/215] add live test profile --- resteasy/pom.xml | 92 +++++++++++++++++ ...tTest.java => RestEasyClientLiveTest.java} | 99 +++++++++---------- 2 files changed, 141 insertions(+), 50 deletions(-) rename resteasy/src/test/java/com/baeldung/server/{RestEasyClientTest.java => RestEasyClientLiveTest.java} (61%) diff --git a/resteasy/pom.xml b/resteasy/pom.xml index ec9e87b0d1..04e8576e1f 100644 --- a/resteasy/pom.xml +++ b/resteasy/pom.xml @@ -10,6 +10,8 @@ 3.0.14.Final + 2.19.1 + 1.6.0 @@ -23,6 +25,35 @@ 1.8 + + org.apache.maven.plugins + maven-surefire-plugin + ${maven-surefire-plugin.version} + + + **/*IntegrationTest.java + **/*LiveTest.java + + + + + + org.codehaus.cargo + cargo-maven2-plugin + ${cargo-maven2-plugin.version} + + true + + jetty8x + embedded + + + + 8082 + + + + @@ -73,5 +104,66 @@ + + + live + + + + + org.apache.maven.plugins + maven-surefire-plugin + + + integration-test + + test + + + + **/*IntegrationTest.java + + + **/*LiveTest.java + + + + + + + json + + + + + org.codehaus.cargo + cargo-maven2-plugin + ${cargo-maven2-plugin.version} + + false + + + + start-server + pre-integration-test + + start + + + + stop-server + post-integration-test + + stop + + + + + + + + + + \ No newline at end of file diff --git a/resteasy/src/test/java/com/baeldung/server/RestEasyClientTest.java b/resteasy/src/test/java/com/baeldung/server/RestEasyClientLiveTest.java similarity index 61% rename from resteasy/src/test/java/com/baeldung/server/RestEasyClientTest.java rename to resteasy/src/test/java/com/baeldung/server/RestEasyClientLiveTest.java index ef18b0f23f..7e709edb96 100644 --- a/resteasy/src/test/java/com/baeldung/server/RestEasyClientTest.java +++ b/resteasy/src/test/java/com/baeldung/server/RestEasyClientLiveTest.java @@ -1,7 +1,15 @@ package com.baeldung.server; -import com.baeldung.client.ServicesInterface; -import com.baeldung.model.Movie; +import java.io.InputStream; +import java.nio.charset.StandardCharsets; +import java.text.SimpleDateFormat; +import java.util.List; +import java.util.Locale; + +import javax.naming.NamingException; +import javax.ws.rs.core.Response; +import javax.ws.rs.core.UriBuilder; + import org.apache.commons.io.IOUtils; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; @@ -14,18 +22,13 @@ import org.jboss.resteasy.client.jaxrs.ResteasyWebTarget; import org.jboss.resteasy.client.jaxrs.engines.ApacheHttpClient4Engine; import org.junit.Before; import org.junit.Test; -import javax.naming.NamingException; -import javax.ws.rs.core.Response; -import javax.ws.rs.core.UriBuilder; -import java.io.InputStream; -import java.nio.charset.StandardCharsets; -import java.text.SimpleDateFormat; -import java.util.List; -import java.util.Locale; -public class RestEasyClientTest { +import com.baeldung.client.ServicesInterface; +import com.baeldung.model.Movie; - public static final UriBuilder FULL_PATH = UriBuilder.fromPath("http://127.0.0.1:8080/RestEasyTutorial/rest"); +public class RestEasyClientLiveTest { + + public static final UriBuilder FULL_PATH = UriBuilder.fromPath("http://127.0.0.1:8082/RestEasyTutorial/rest"); Movie transformerMovie = null; Movie batmanMovie = null; ObjectMapper jsonMapper = null; @@ -35,22 +38,22 @@ public class RestEasyClientTest { jsonMapper = new ObjectMapper().configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false); jsonMapper.configure(DeserializationConfig.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true); - SimpleDateFormat sdf = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss zzz", Locale.ENGLISH); + final SimpleDateFormat sdf = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss zzz", Locale.ENGLISH); jsonMapper.setDateFormat(sdf); - try (InputStream inputStream = new RestEasyClientTest().getClass().getResourceAsStream("./movies/transformer.json")) { - String transformerMovieAsString = String.format(IOUtils.toString(inputStream, StandardCharsets.UTF_8)); + try (InputStream inputStream = new RestEasyClientLiveTest().getClass().getResourceAsStream("./movies/transformer.json")) { + final String transformerMovieAsString = String.format(IOUtils.toString(inputStream, StandardCharsets.UTF_8)); transformerMovie = jsonMapper.readValue(transformerMovieAsString, Movie.class); - } catch (Exception e) { + } catch (final Exception e) { e.printStackTrace(); throw new RuntimeException("Test is going to die ...", e); } - try (InputStream inputStream = new RestEasyClientTest().getClass().getResourceAsStream("./movies/batman.json")) { - String batmanMovieAsString = String.format(IOUtils.toString(inputStream, StandardCharsets.UTF_8)); + try (InputStream inputStream = new RestEasyClientLiveTest().getClass().getResourceAsStream("./movies/batman.json")) { + final String batmanMovieAsString = String.format(IOUtils.toString(inputStream, StandardCharsets.UTF_8)); batmanMovie = jsonMapper.readValue(batmanMovieAsString, Movie.class); - } catch (Exception e) { + } catch (final Exception e) { throw new RuntimeException("Test is going to die ...", e); } } @@ -58,41 +61,41 @@ public class RestEasyClientTest { @Test public void testListAllMovies() { - ResteasyClient client = new ResteasyClientBuilder().build(); - ResteasyWebTarget target = client.target(FULL_PATH); - ServicesInterface proxy = target.proxy(ServicesInterface.class); + final ResteasyClient client = new ResteasyClientBuilder().build(); + final ResteasyWebTarget target = client.target(FULL_PATH); + final ServicesInterface proxy = target.proxy(ServicesInterface.class); Response moviesResponse = proxy.addMovie(transformerMovie); moviesResponse.close(); moviesResponse = proxy.addMovie(batmanMovie); moviesResponse.close(); - List movies = proxy.listMovies(); + final List movies = proxy.listMovies(); System.out.println(movies); } @Test public void testMovieByImdbId() { - String transformerImdbId = "tt0418279"; + final String transformerImdbId = "tt0418279"; - ResteasyClient client = new ResteasyClientBuilder().build(); - ResteasyWebTarget target = client.target(FULL_PATH); - ServicesInterface proxy = target.proxy(ServicesInterface.class); + final ResteasyClient client = new ResteasyClientBuilder().build(); + final ResteasyWebTarget target = client.target(FULL_PATH); + final ServicesInterface proxy = target.proxy(ServicesInterface.class); - Response moviesResponse = proxy.addMovie(transformerMovie); + final Response moviesResponse = proxy.addMovie(transformerMovie); moviesResponse.close(); - Movie movies = proxy.movieByImdbId(transformerImdbId); + final Movie movies = proxy.movieByImdbId(transformerImdbId); System.out.println(movies); } @Test public void testAddMovie() { - ResteasyClient client = new ResteasyClientBuilder().build(); - ResteasyWebTarget target = client.target(FULL_PATH); - ServicesInterface proxy = target.proxy(ServicesInterface.class); + final ResteasyClient client = new ResteasyClientBuilder().build(); + final ResteasyWebTarget target = client.target(FULL_PATH); + final ServicesInterface proxy = target.proxy(ServicesInterface.class); Response moviesResponse = proxy.addMovie(batmanMovie); moviesResponse.close(); @@ -109,17 +112,15 @@ public class RestEasyClientTest { @Test public void testAddMovieMultiConnection() { - PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager(); - CloseableHttpClient httpClient = HttpClients.custom() - .setConnectionManager(cm) - .build(); - ApacheHttpClient4Engine engine = new ApacheHttpClient4Engine(httpClient); - ResteasyClient client = new ResteasyClientBuilder().httpEngine(engine).build(); - ResteasyWebTarget target = client.target(FULL_PATH); - ServicesInterface proxy = target.proxy(ServicesInterface.class); + final PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager(); + final CloseableHttpClient httpClient = HttpClients.custom().setConnectionManager(cm).build(); + final ApacheHttpClient4Engine engine = new ApacheHttpClient4Engine(httpClient); + final ResteasyClient client = new ResteasyClientBuilder().httpEngine(engine).build(); + final ResteasyWebTarget target = client.target(FULL_PATH); + final ServicesInterface proxy = target.proxy(ServicesInterface.class); - Response batmanResponse = proxy.addMovie(batmanMovie); - Response transformerResponse = proxy.addMovie(transformerMovie); + final Response batmanResponse = proxy.addMovie(batmanMovie); + final Response transformerResponse = proxy.addMovie(transformerMovie); if (batmanResponse.getStatus() != Response.Status.CREATED.getStatusCode()) { System.out.println("Batman Movie creation Failed : HTTP error code : " + batmanResponse.getStatus()); @@ -132,16 +133,14 @@ public class RestEasyClientTest { transformerResponse.close(); cm.close(); - - } @Test public void testDeleteMovie() { - ResteasyClient client = new ResteasyClientBuilder().build(); - ResteasyWebTarget target = client.target(FULL_PATH); - ServicesInterface proxy = target.proxy(ServicesInterface.class); + final ResteasyClient client = new ResteasyClientBuilder().build(); + final ResteasyWebTarget target = client.target(FULL_PATH); + final ServicesInterface proxy = target.proxy(ServicesInterface.class); Response moviesResponse = proxy.addMovie(batmanMovie); moviesResponse.close(); @@ -159,9 +158,9 @@ public class RestEasyClientTest { @Test public void testUpdateMovie() { - ResteasyClient client = new ResteasyClientBuilder().build(); - ResteasyWebTarget target = client.target(FULL_PATH); - ServicesInterface proxy = target.proxy(ServicesInterface.class); + final ResteasyClient client = new ResteasyClientBuilder().build(); + final ResteasyWebTarget target = client.target(FULL_PATH); + final ServicesInterface proxy = target.proxy(ServicesInterface.class); Response moviesResponse = proxy.addMovie(batmanMovie); moviesResponse.close(); From 4bae45370d2725fe487d0483192d36fef60fa2a1 Mon Sep 17 00:00:00 2001 From: DOHA Date: Tue, 25 Oct 2016 14:11:39 +0200 Subject: [PATCH 107/215] rename test --- .../persistence/PersistenceTestSuite.java | 16 ++++++++-------- ...java => JPACriteriaQueryIntegrationTest.java} | 2 +- ...Test.java => JPAQuerydslIntegrationTest.java} | 2 +- ...java => JPASpecificationIntegrationTest.java} | 2 +- .../{RsqlTest.java => RsqlIntegrationTest.java} | 2 +- ...ava => LoggerInterceptorIntegrationTest.java} | 2 +- ... SessionTimerInterceptorIntegrationTest.java} | 2 +- ....java => UserInterceptorIntegrationTest.java} | 2 +- 8 files changed, 15 insertions(+), 15 deletions(-) rename spring-security-rest-full/src/test/java/org/baeldung/persistence/query/{JPACriteriaQueryTest.java => JPACriteriaQueryIntegrationTest.java} (98%) rename spring-security-rest-full/src/test/java/org/baeldung/persistence/query/{JPAQuerydslTest.java => JPAQuerydslIntegrationTest.java} (98%) rename spring-security-rest-full/src/test/java/org/baeldung/persistence/query/{JPASpecificationTest.java => JPASpecificationIntegrationTest.java} (99%) rename spring-security-rest-full/src/test/java/org/baeldung/persistence/query/{RsqlTest.java => RsqlIntegrationTest.java} (99%) rename spring-security-rest-full/src/test/java/org/baeldung/web/interceptor/{LoggerInterceptorTest.java => LoggerInterceptorIntegrationTest.java} (97%) rename spring-security-rest-full/src/test/java/org/baeldung/web/interceptor/{SessionTimerInterceptorTest.java => SessionTimerInterceptorIntegrationTest.java} (97%) rename spring-security-rest-full/src/test/java/org/baeldung/web/interceptor/{UserInterceptorTest.java => UserInterceptorIntegrationTest.java} (97%) diff --git a/spring-security-rest-full/src/test/java/org/baeldung/persistence/PersistenceTestSuite.java b/spring-security-rest-full/src/test/java/org/baeldung/persistence/PersistenceTestSuite.java index 0ce8c0300b..fda7b01c7a 100644 --- a/spring-security-rest-full/src/test/java/org/baeldung/persistence/PersistenceTestSuite.java +++ b/spring-security-rest-full/src/test/java/org/baeldung/persistence/PersistenceTestSuite.java @@ -1,9 +1,9 @@ package org.baeldung.persistence; -import org.baeldung.persistence.query.JPACriteriaQueryTest; -import org.baeldung.persistence.query.JPAQuerydslTest; -import org.baeldung.persistence.query.JPASpecificationTest; -import org.baeldung.persistence.query.RsqlTest; +import org.baeldung.persistence.query.JPACriteriaQueryIntegrationTest; +import org.baeldung.persistence.query.JPAQuerydslIntegrationTest; +import org.baeldung.persistence.query.JPASpecificationIntegrationTest; +import org.baeldung.persistence.query.RsqlIntegrationTest; import org.baeldung.persistence.service.FooServicePersistenceIntegrationTest; import org.junit.runner.RunWith; import org.junit.runners.Suite; @@ -11,11 +11,11 @@ import org.junit.runners.Suite; @RunWith(Suite.class) @Suite.SuiteClasses({ // @formatter:off - RsqlTest.class - ,JPASpecificationTest.class + RsqlIntegrationTest.class + ,JPASpecificationIntegrationTest.class ,FooServicePersistenceIntegrationTest.class - ,JPAQuerydslTest.class - ,JPACriteriaQueryTest.class + ,JPAQuerydslIntegrationTest.class + ,JPACriteriaQueryIntegrationTest.class }) // public class PersistenceTestSuite { diff --git a/spring-security-rest-full/src/test/java/org/baeldung/persistence/query/JPACriteriaQueryTest.java b/spring-security-rest-full/src/test/java/org/baeldung/persistence/query/JPACriteriaQueryIntegrationTest.java similarity index 98% rename from spring-security-rest-full/src/test/java/org/baeldung/persistence/query/JPACriteriaQueryTest.java rename to spring-security-rest-full/src/test/java/org/baeldung/persistence/query/JPACriteriaQueryIntegrationTest.java index 1d0826e6ba..e8e98074c6 100644 --- a/spring-security-rest-full/src/test/java/org/baeldung/persistence/query/JPACriteriaQueryTest.java +++ b/spring-security-rest-full/src/test/java/org/baeldung/persistence/query/JPACriteriaQueryIntegrationTest.java @@ -24,7 +24,7 @@ import org.springframework.transaction.annotation.Transactional; @ContextConfiguration(classes = { PersistenceConfig.class }) @Transactional @Rollback -public class JPACriteriaQueryTest { +public class JPACriteriaQueryIntegrationTest { @Autowired private IUserDAO userApi; diff --git a/spring-security-rest-full/src/test/java/org/baeldung/persistence/query/JPAQuerydslTest.java b/spring-security-rest-full/src/test/java/org/baeldung/persistence/query/JPAQuerydslIntegrationTest.java similarity index 98% rename from spring-security-rest-full/src/test/java/org/baeldung/persistence/query/JPAQuerydslTest.java rename to spring-security-rest-full/src/test/java/org/baeldung/persistence/query/JPAQuerydslIntegrationTest.java index d5fbc819fd..d397c3aac4 100644 --- a/spring-security-rest-full/src/test/java/org/baeldung/persistence/query/JPAQuerydslTest.java +++ b/spring-security-rest-full/src/test/java/org/baeldung/persistence/query/JPAQuerydslIntegrationTest.java @@ -23,7 +23,7 @@ import org.springframework.transaction.annotation.Transactional; @ContextConfiguration(classes = { PersistenceConfig.class }) @Transactional @Rollback -public class JPAQuerydslTest { +public class JPAQuerydslIntegrationTest { @Autowired private MyUserRepository repo; diff --git a/spring-security-rest-full/src/test/java/org/baeldung/persistence/query/JPASpecificationTest.java b/spring-security-rest-full/src/test/java/org/baeldung/persistence/query/JPASpecificationIntegrationTest.java similarity index 99% rename from spring-security-rest-full/src/test/java/org/baeldung/persistence/query/JPASpecificationTest.java rename to spring-security-rest-full/src/test/java/org/baeldung/persistence/query/JPASpecificationIntegrationTest.java index 0d8773dd61..8bd4857e85 100644 --- a/spring-security-rest-full/src/test/java/org/baeldung/persistence/query/JPASpecificationTest.java +++ b/spring-security-rest-full/src/test/java/org/baeldung/persistence/query/JPASpecificationIntegrationTest.java @@ -26,7 +26,7 @@ import org.springframework.transaction.annotation.Transactional; @ContextConfiguration(classes = { PersistenceConfig.class }) @Transactional @Rollback -public class JPASpecificationTest { +public class JPASpecificationIntegrationTest { @Autowired private UserRepository repository; diff --git a/spring-security-rest-full/src/test/java/org/baeldung/persistence/query/RsqlTest.java b/spring-security-rest-full/src/test/java/org/baeldung/persistence/query/RsqlIntegrationTest.java similarity index 99% rename from spring-security-rest-full/src/test/java/org/baeldung/persistence/query/RsqlTest.java rename to spring-security-rest-full/src/test/java/org/baeldung/persistence/query/RsqlIntegrationTest.java index e0deb8d4ec..16dfa8a12f 100644 --- a/spring-security-rest-full/src/test/java/org/baeldung/persistence/query/RsqlTest.java +++ b/spring-security-rest-full/src/test/java/org/baeldung/persistence/query/RsqlIntegrationTest.java @@ -27,7 +27,7 @@ import cz.jirutka.rsql.parser.ast.Node; @ContextConfiguration(classes = { PersistenceConfig.class }) @Transactional @Rollback -public class RsqlTest { +public class RsqlIntegrationTest { @Autowired private UserRepository repository; diff --git a/spring-security-rest-full/src/test/java/org/baeldung/web/interceptor/LoggerInterceptorTest.java b/spring-security-rest-full/src/test/java/org/baeldung/web/interceptor/LoggerInterceptorIntegrationTest.java similarity index 97% rename from spring-security-rest-full/src/test/java/org/baeldung/web/interceptor/LoggerInterceptorTest.java rename to spring-security-rest-full/src/test/java/org/baeldung/web/interceptor/LoggerInterceptorIntegrationTest.java index 930ab20262..99b391eda1 100644 --- a/spring-security-rest-full/src/test/java/org/baeldung/web/interceptor/LoggerInterceptorTest.java +++ b/spring-security-rest-full/src/test/java/org/baeldung/web/interceptor/LoggerInterceptorIntegrationTest.java @@ -23,7 +23,7 @@ import org.springframework.web.context.WebApplicationContext; @WebAppConfiguration @Transactional @ContextConfiguration(classes = { SecurityWithoutCsrfConfig.class, PersistenceConfig.class, WebConfig.class }) -public class LoggerInterceptorTest { +public class LoggerInterceptorIntegrationTest { @Autowired WebApplicationContext wac; diff --git a/spring-security-rest-full/src/test/java/org/baeldung/web/interceptor/SessionTimerInterceptorTest.java b/spring-security-rest-full/src/test/java/org/baeldung/web/interceptor/SessionTimerInterceptorIntegrationTest.java similarity index 97% rename from spring-security-rest-full/src/test/java/org/baeldung/web/interceptor/SessionTimerInterceptorTest.java rename to spring-security-rest-full/src/test/java/org/baeldung/web/interceptor/SessionTimerInterceptorIntegrationTest.java index 916a849c63..662fc997f9 100644 --- a/spring-security-rest-full/src/test/java/org/baeldung/web/interceptor/SessionTimerInterceptorTest.java +++ b/spring-security-rest-full/src/test/java/org/baeldung/web/interceptor/SessionTimerInterceptorIntegrationTest.java @@ -28,7 +28,7 @@ import org.springframework.web.context.WebApplicationContext; @Transactional @ContextConfiguration(classes = { SecurityWithoutCsrfConfig.class, PersistenceConfig.class, WebConfig.class }) @WithMockUser(username = "admin", roles = { "USER", "ADMIN" }) -public class SessionTimerInterceptorTest { +public class SessionTimerInterceptorIntegrationTest { @Autowired WebApplicationContext wac; diff --git a/spring-security-rest-full/src/test/java/org/baeldung/web/interceptor/UserInterceptorTest.java b/spring-security-rest-full/src/test/java/org/baeldung/web/interceptor/UserInterceptorIntegrationTest.java similarity index 97% rename from spring-security-rest-full/src/test/java/org/baeldung/web/interceptor/UserInterceptorTest.java rename to spring-security-rest-full/src/test/java/org/baeldung/web/interceptor/UserInterceptorIntegrationTest.java index ff40c86906..0e8f7c98ed 100644 --- a/spring-security-rest-full/src/test/java/org/baeldung/web/interceptor/UserInterceptorTest.java +++ b/spring-security-rest-full/src/test/java/org/baeldung/web/interceptor/UserInterceptorIntegrationTest.java @@ -25,7 +25,7 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers. @Transactional @ContextConfiguration(classes = { SecurityWithoutCsrfConfig.class, PersistenceConfig.class, WebConfig.class }) @WithMockUser(username = "admin", roles = { "USER", "ADMIN" }) -public class UserInterceptorTest { +public class UserInterceptorIntegrationTest { @Autowired WebApplicationContext wac; From 89b50437be1b92045af37fd458c96727f5fd2736 Mon Sep 17 00:00:00 2001 From: Egima profile Date: Tue, 25 Oct 2016 17:42:03 +0300 Subject: [PATCH 108/215] Java low level networking project (#770) * made changes to java reflection * removed redundant method makeSound in Animal abstract class * added project for play-framework article * added project for regex * changed regex project from own model to core-java * added project for routing in play * made changes to regex project * refactored code for REST API with Play project * refactored student store indexing to zero base * added unit tests, removed bad names * added NIO Selector project under core-java module * requested changes made --- .../cookies/PersistentCookieStore.java | 56 ++++++ .../cookies/ProxyAcceptCookiePolicy.java | 26 +++ .../java/networking/udp/EchoClient.java | 42 +++++ .../java/networking/udp/EchoServer.java | 42 +++++ .../baeldung/java/networking/udp/UDPTest.java | 33 ++++ .../java/nio/selector/EchoServer.java | 17 +- .../baeldung/java/networking/url/UrlTest.java | 104 +++++++++++ .../baeldung/java/nio/selector/EchoTest.java | 1 + .../student-api/test/ApplicationTest.java | 172 ++++++++++++++++++ 9 files changed, 485 insertions(+), 8 deletions(-) create mode 100644 core-java/src/main/java/com/baeldung/java/networking/cookies/PersistentCookieStore.java create mode 100644 core-java/src/main/java/com/baeldung/java/networking/cookies/ProxyAcceptCookiePolicy.java create mode 100644 core-java/src/main/java/com/baeldung/java/networking/udp/EchoClient.java create mode 100644 core-java/src/main/java/com/baeldung/java/networking/udp/EchoServer.java create mode 100644 core-java/src/main/java/com/baeldung/java/networking/udp/UDPTest.java create mode 100644 core-java/src/test/java/com/baeldung/java/networking/url/UrlTest.java create mode 100644 play-framework/student-api/test/ApplicationTest.java diff --git a/core-java/src/main/java/com/baeldung/java/networking/cookies/PersistentCookieStore.java b/core-java/src/main/java/com/baeldung/java/networking/cookies/PersistentCookieStore.java new file mode 100644 index 0000000000..0d66406ac2 --- /dev/null +++ b/core-java/src/main/java/com/baeldung/java/networking/cookies/PersistentCookieStore.java @@ -0,0 +1,56 @@ +package com.baeldung.java.networking.cookies; + +import java.net.*; +import java.util.List; + +public class PersistentCookieStore implements CookieStore, Runnable { + CookieStore store; + + public PersistentCookieStore() { + store = new CookieManager().getCookieStore(); + // deserialize cookies into store + Runtime.getRuntime().addShutdownHook(new Thread(this)); + } + + @Override + public void run() { + // serialize cookies to persistent storage + } + + @Override + public void add(URI uri, HttpCookie cookie) { + store.add(uri, cookie); + + } + + @Override + public List get(URI uri) { + // TODO Auto-generated method stub + return null; + } + + @Override + public List getCookies() { + // TODO Auto-generated method stub + return null; + } + + @Override + public List getURIs() { + // TODO Auto-generated method stub + return null; + } + + @Override + public boolean remove(URI uri, HttpCookie cookie) { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean removeAll() { + // TODO Auto-generated method stub + return false; + } + +} diff --git a/core-java/src/main/java/com/baeldung/java/networking/cookies/ProxyAcceptCookiePolicy.java b/core-java/src/main/java/com/baeldung/java/networking/cookies/ProxyAcceptCookiePolicy.java new file mode 100644 index 0000000000..6d6371bfe0 --- /dev/null +++ b/core-java/src/main/java/com/baeldung/java/networking/cookies/ProxyAcceptCookiePolicy.java @@ -0,0 +1,26 @@ +package com.baeldung.java.networking.cookies; + +import java.net.*; + +public class ProxyAcceptCookiePolicy implements CookiePolicy { + String acceptedProxy; + + public ProxyAcceptCookiePolicy(String acceptedProxy) { + this.acceptedProxy = acceptedProxy; + } + + public boolean shouldAccept(URI uri, HttpCookie cookie) { + String host; + try { + host = InetAddress.getByName(uri.getHost()).getCanonicalHostName(); + } catch (UnknownHostException e) { + host = uri.getHost(); + } + + if (!HttpCookie.domainMatches(acceptedProxy, host)) { + return false; + } + + return CookiePolicy.ACCEPT_ORIGINAL_SERVER.shouldAccept(uri, cookie); + } +} diff --git a/core-java/src/main/java/com/baeldung/java/networking/udp/EchoClient.java b/core-java/src/main/java/com/baeldung/java/networking/udp/EchoClient.java new file mode 100644 index 0000000000..1fb9af3a9d --- /dev/null +++ b/core-java/src/main/java/com/baeldung/java/networking/udp/EchoClient.java @@ -0,0 +1,42 @@ +package com.baeldung.java.networking.udp; + +import java.io.IOException; +import java.net.DatagramPacket; +import java.net.DatagramSocket; +import java.net.InetAddress; + +public class EchoClient { + private DatagramSocket socket; + private InetAddress address; + + private byte[] buf; + + public EchoClient() { + try { + socket = new DatagramSocket(); + address = InetAddress.getByName("localhost"); + } catch (IOException e) { + e.printStackTrace(); + } + + } + + public String sendEcho(String msg) { + DatagramPacket packet = null; + try { + buf=msg.getBytes(); + packet = new DatagramPacket(buf, buf.length, address, 4445); + socket.send(packet); + packet = new DatagramPacket(buf, buf.length); + socket.receive(packet); + } catch (IOException e) { + e.printStackTrace(); + } + String received = new String(packet.getData(), 0, packet.getLength()); + return received; + } + + public void close() { + socket.close(); + } +} diff --git a/core-java/src/main/java/com/baeldung/java/networking/udp/EchoServer.java b/core-java/src/main/java/com/baeldung/java/networking/udp/EchoServer.java new file mode 100644 index 0000000000..900d330786 --- /dev/null +++ b/core-java/src/main/java/com/baeldung/java/networking/udp/EchoServer.java @@ -0,0 +1,42 @@ +package com.baeldung.java.networking.udp; + +import java.io.IOException; +import java.net.DatagramPacket; +import java.net.DatagramSocket; +import java.net.InetAddress; + +public class EchoServer extends Thread { + + protected DatagramSocket socket = null; + protected boolean running; + protected byte[] buf = new byte[256]; + + public EchoServer() throws IOException { + socket = new DatagramSocket(4445); + } + + public void run() { + running = true; + + while (running) { + try { + + DatagramPacket packet = new DatagramPacket(buf, buf.length); + socket.receive(packet); + InetAddress address = packet.getAddress(); + int port = packet.getPort(); + packet = new DatagramPacket(buf, buf.length, address, port); + String received = new String(packet.getData(), 0, packet.getLength()); + if (received.equals("end")) { + running = false; + continue; + } + socket.send(packet); + } catch (IOException e) { + e.printStackTrace(); + running = false; + } + } + socket.close(); + } +} diff --git a/core-java/src/main/java/com/baeldung/java/networking/udp/UDPTest.java b/core-java/src/main/java/com/baeldung/java/networking/udp/UDPTest.java new file mode 100644 index 0000000000..ee93936230 --- /dev/null +++ b/core-java/src/main/java/com/baeldung/java/networking/udp/UDPTest.java @@ -0,0 +1,33 @@ +package com.baeldung.java.networking.udp; + +import static org.junit.Assert.*; + +import java.io.IOException; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class UDPTest { + EchoClient client = null; + + @Before + public void setup() throws IOException { + new EchoServer().start(); + client = new EchoClient(); + } + + @Test + public void whenCanSendAndReceivePacket_thenCorrect1() { + String echo = client.sendEcho("hello server"); + assertEquals("hello server", echo); + echo = client.sendEcho("server is working"); + assertFalse(echo.equals("hello server")); + } + + @After + public void tearDown() { + client.sendEcho("end"); + client.close(); + } +} diff --git a/core-java/src/main/java/com/baeldung/java/nio/selector/EchoServer.java b/core-java/src/main/java/com/baeldung/java/nio/selector/EchoServer.java index ffabad9c4d..1d4e01bbc3 100644 --- a/core-java/src/main/java/com/baeldung/java/nio/selector/EchoServer.java +++ b/core-java/src/main/java/com/baeldung/java/nio/selector/EchoServer.java @@ -1,15 +1,15 @@ package com.baeldung.java.nio.selector; -import java.io.File; -import java.io.IOException; -import java.net.InetSocketAddress; -import java.nio.ByteBuffer; -import java.nio.channels.SelectionKey; -import java.nio.channels.Selector; import java.nio.channels.ServerSocketChannel; import java.nio.channels.SocketChannel; -import java.util.Iterator; +import java.nio.channels.Selector; +import java.nio.channels.SelectionKey; +import java.nio.ByteBuffer; +import java.io.IOException; import java.util.Set; +import java.util.Iterator; +import java.net.InetSocketAddress; +import java.io.File; public class EchoServer { @@ -49,6 +49,7 @@ public class EchoServer { } } + public static Process start() throws IOException, InterruptedException { String javaHome = System.getProperty("java.home"); String javaBin = javaHome + File.separator + "bin" + File.separator + "java"; @@ -59,4 +60,4 @@ public class EchoServer { return builder.start(); } -} \ No newline at end of file +} diff --git a/core-java/src/test/java/com/baeldung/java/networking/url/UrlTest.java b/core-java/src/test/java/com/baeldung/java/networking/url/UrlTest.java new file mode 100644 index 0000000000..14444f0145 --- /dev/null +++ b/core-java/src/test/java/com/baeldung/java/networking/url/UrlTest.java @@ -0,0 +1,104 @@ +package com.baeldung.java.networking.url; + +import static org.junit.Assert.assertEquals; + +import java.net.MalformedURLException; +import java.net.URL; + +import org.junit.Test; + +public class UrlTest { + + @Test + public void givenUrl_whenCanIdentifyProtocol_thenCorrect() throws MalformedURLException { + URL url = new URL("http://baeldung.com"); + assertEquals("http", url.getProtocol()); + } + + @Test + public void givenUrl_whenCanGetHost_thenCorrect() throws MalformedURLException { + URL url = new URL("http://baeldung.com"); + assertEquals("baeldung.com", url.getHost()); + } + + @Test + public void givenUrl_whenCanGetFileName_thenCorrect2() throws MalformedURLException { + URL url = new URL("http://baeldung.com/articles?topic=java&version=8"); + assertEquals("/articles?topic=java&version=8", url.getFile()); + } + + @Test + public void givenUrl_whenCanGetFileName_thenCorrect1() throws MalformedURLException { + URL url = new URL("http://baeldung.com/guidelines.txt"); + assertEquals("/guidelines.txt", url.getFile()); + } + + @Test + public void givenUrl_whenCanGetPathParams_thenCorrect() throws MalformedURLException { + URL url = new URL("http://baeldung.com/articles?topic=java&version=8"); + assertEquals("/articles", url.getPath()); + } + + @Test + public void givenUrl_whenCanGetQueryParams_thenCorrect() throws MalformedURLException { + URL url = new URL("http://baeldung.com/articles?topic=java"); + assertEquals("topic=java", url.getQuery()); + } + + @Test + public void givenUrl_whenGetsDefaultPort_thenCorrect() throws MalformedURLException { + URL url = new URL("http://baeldung.com"); + assertEquals(-1, url.getPort()); + assertEquals(80, url.getDefaultPort()); + } + + @Test + public void givenUrl_whenGetsPort_thenCorrect() throws MalformedURLException { + URL url = new URL("http://baeldung.com:8090"); + assertEquals(8090, url.getPort()); + assertEquals(80, url.getDefaultPort()); + } + + @Test + public void givenBaseUrl_whenCreatesRelativeUrl_thenCorrect() throws MalformedURLException { + URL baseUrl = new URL("http://baeldung.com"); + URL relativeUrl = new URL(baseUrl, "a-guide-to-java-sockets"); + assertEquals("http://baeldung.com/a-guide-to-java-sockets", relativeUrl.toString()); + } + + @Test + public void givenAbsoluteUrl_whenIgnoresBaseUrl_thenCorrect() throws MalformedURLException { + URL baseUrl = new URL("http://baeldung.com"); + URL relativeUrl = new URL(baseUrl, "http://baeldung.com/a-guide-to-java-sockets"); + assertEquals("http://baeldung.com/a-guide-to-java-sockets", relativeUrl.toString()); + } + + @Test + public void givenUrlComponents_whenConstructsCompleteUrl_thenCorrect() throws MalformedURLException { + String protocol = "http"; + String host = "baeldung.com"; + String file = "/guidelines.txt"; + URL url = new URL(protocol, host, file); + assertEquals("http://baeldung.com/guidelines.txt", url.toString()); + } + + @Test + public void givenUrlComponents_whenConstructsCompleteUrl_thenCorrect2() throws MalformedURLException { + String protocol = "http"; + String host = "baeldung.com"; + String file = "/articles?topic=java&version=8"; + URL url = new URL(protocol, host, file); + assertEquals("http://baeldung.com/guidelines.txt", url.toString()); + } + + @Test + public void givenUrlComponentsWithPort_whenConstructsCompleteUrl_thenCorrect() throws MalformedURLException { + String protocol = "http"; + String host = "baeldung.com"; + int port = 9000; + String file = "/guidelines.txt"; + URL url = new URL(protocol, host, port, file); + assertEquals("http://baeldung.com:9000/guidelines.txt", url.toString()); + } + +} diff --git a/core-java/src/test/java/com/baeldung/java/nio/selector/EchoTest.java b/core-java/src/test/java/com/baeldung/java/nio/selector/EchoTest.java index d1ac6df5e4..cb7ecefc81 100644 --- a/core-java/src/test/java/com/baeldung/java/nio/selector/EchoTest.java +++ b/core-java/src/test/java/com/baeldung/java/nio/selector/EchoTest.java @@ -16,6 +16,7 @@ public class EchoTest { String resp2 = client.sendMessage("world"); assertEquals("hello", resp1); assertEquals("world", resp2); + process.destroy(); } } diff --git a/play-framework/student-api/test/ApplicationTest.java b/play-framework/student-api/test/ApplicationTest.java new file mode 100644 index 0000000000..1133978e9a --- /dev/null +++ b/play-framework/student-api/test/ApplicationTest.java @@ -0,0 +1,172 @@ + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +import java.io.BufferedReader; +import java.io.DataOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.net.HttpURLConnection; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.Arrays; + +import org.json.JSONArray; +import org.json.JSONObject; +import org.junit.Before; +import org.junit.Test; +import model.Student; +import play.test.*; +import static play.test.Helpers.*; + +public class ApplicationTest{ + private static final String BASE_URL = "http://localhost:9000"; + + @Test +public void testInServer() throws Exception { + TestServer server = testServer(3333); + running(server, () -> { + try { + WSClient ws = play.libs.ws.WS.newClient(3333); + CompletionStage completionStage = ws.url("/").get(); + WSResponse response = completionStage.toCompletableFuture().get(); + ws.close(); + assertEquals(OK, response.getStatus()); + } catch (Exception e) { + logger.error(e.getMessage(), e); + } + }); +} + @Test + public void whenCreatesRecord_thenCorrect() { + Student student = new Student("jody", "west", 50); + JSONObject obj = new JSONObject(makeRequest(BASE_URL, "POST", new JSONObject(student))); + assertTrue(obj.getBoolean("isSuccessfull")); + JSONObject body = obj.getJSONObject("body"); + assertEquals(student.getAge(), body.getInt("age")); + assertEquals(student.getFirstName(), body.getString("firstName")); + assertEquals(student.getLastName(), body.getString("lastName")); + } + + @Test + public void whenDeletesCreatedRecord_thenCorrect() { + Student student = new Student("Usain", "Bolt", 25); + JSONObject ob1 = new JSONObject(makeRequest(BASE_URL, "POST", new JSONObject(student))).getJSONObject("body"); + int id = ob1.getInt("id"); + JSONObject obj1 = new JSONObject(makeRequest(BASE_URL + "/" + id, "POST", new JSONObject())); + assertTrue(obj1.getBoolean("isSuccessfull")); + makeRequest(BASE_URL + "/" + id, "DELETE", null); + JSONObject obj2 = new JSONObject(makeRequest(BASE_URL + "/" + id, "POST", new JSONObject())); + assertFalse(obj2.getBoolean("isSuccessfull")); + } + + @Test + public void whenUpdatesCreatedRecord_thenCorrect() { + Student student = new Student("john", "doe", 50); + JSONObject body1 = new JSONObject(makeRequest(BASE_URL, "POST", new JSONObject(student))).getJSONObject("body"); + assertEquals(student.getAge(), body1.getInt("age")); + int newAge = 60; + body1.put("age", newAge); + JSONObject body2 = new JSONObject(makeRequest(BASE_URL, "PUT", body1)).getJSONObject("body"); + assertFalse(student.getAge() == body2.getInt("age")); + assertTrue(newAge == body2.getInt("age")); + } + + @Test + public void whenGetsAllRecords_thenCorrect() { + Student student1 = new Student("jane", "daisy", 50); + Student student2 = new Student("john", "daniel", 60); + Student student3 = new Student("don", "mason", 55); + Student student4 = new Student("scarlet", "ohara", 90); + + makeRequest(BASE_URL, "POST", new JSONObject(student1)); + makeRequest(BASE_URL, "POST", new JSONObject(student2)); + makeRequest(BASE_URL, "POST", new JSONObject(student3)); + makeRequest(BASE_URL, "POST", new JSONObject(student4)); + + JSONObject objects = new JSONObject(makeRequest(BASE_URL, "GET", null)); + assertTrue(objects.getBoolean("isSuccessfull")); + JSONArray array = objects.getJSONArray("body"); + assertTrue(array.length() >= 4); + } + + public static String makeRequest(String myUrl, String httpMethod, JSONObject parameters) { + + URL url = null; + try { + url = new URL(myUrl); + } catch (MalformedURLException e) { + e.printStackTrace(); + } + HttpURLConnection conn = null; + try { + + conn = (HttpURLConnection) url.openConnection(); + } catch (IOException e) { + e.printStackTrace(); + } + conn.setDoInput(true); + + conn.setReadTimeout(10000); + + conn.setRequestProperty("Content-Type", "application/json"); + DataOutputStream dos = null; + int respCode = 0; + String inputString = null; + try { + conn.setRequestMethod(httpMethod); + + if (Arrays.asList("POST", "PUT").contains(httpMethod)) { + String params = parameters.toString(); + + conn.setDoOutput(true); + + dos = new DataOutputStream(conn.getOutputStream()); + dos.writeBytes(params); + dos.flush(); + dos.close(); + } + respCode = conn.getResponseCode(); + if (respCode != 200 && respCode != 201) { + String error = inputStreamToString(conn.getErrorStream()); + return error; + } + inputString = inputStreamToString(conn.getInputStream()); + + } catch (IOException e) { + + e.printStackTrace(); + } + return inputString; + } + + public static String inputStreamToString(InputStream is) { + BufferedReader br = null; + StringBuilder sb = new StringBuilder(); + + String line; + try { + + br = new BufferedReader(new InputStreamReader(is)); + while ((line = br.readLine()) != null) { + sb.append(line); + } + + } catch (IOException e) { + e.printStackTrace(); + } finally { + if (br != null) { + try { + br.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + + return sb.toString(); + + } +} From c9f858ca32fc46348e371ad3d80302c38349ae41 Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Tue, 25 Oct 2016 17:11:25 +0200 Subject: [PATCH 109/215] Move UDPTest --- .../com/baeldung/java/networking/url}/UDPTest.java | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) rename core-java/src/{main/java/com/baeldung/java/networking/udp => test/java/com/baeldung/java/networking/url}/UDPTest.java (70%) diff --git a/core-java/src/main/java/com/baeldung/java/networking/udp/UDPTest.java b/core-java/src/test/java/com/baeldung/java/networking/url/UDPTest.java similarity index 70% rename from core-java/src/main/java/com/baeldung/java/networking/udp/UDPTest.java rename to core-java/src/test/java/com/baeldung/java/networking/url/UDPTest.java index ee93936230..91ab8063b2 100644 --- a/core-java/src/main/java/com/baeldung/java/networking/udp/UDPTest.java +++ b/core-java/src/test/java/com/baeldung/java/networking/url/UDPTest.java @@ -1,15 +1,19 @@ -package com.baeldung.java.networking.udp; +package com.baeldung.java.networking.url; -import static org.junit.Assert.*; - -import java.io.IOException; +import com.baeldung.java.networking.udp.EchoClient; +import com.baeldung.java.networking.udp.EchoServer; import org.junit.After; import org.junit.Before; import org.junit.Test; +import java.io.IOException; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; + public class UDPTest { - EchoClient client = null; + private EchoClient client; @Before public void setup() throws IOException { From 93b49176724efc6740ee7596ae70627a66b88bd2 Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Tue, 25 Oct 2016 17:12:12 +0200 Subject: [PATCH 110/215] Move UDPTest --- .../com/baeldung/java/networking/{url => udp}/UDPTest.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) rename core-java/src/test/java/com/baeldung/java/networking/{url => udp}/UDPTest.java (83%) diff --git a/core-java/src/test/java/com/baeldung/java/networking/url/UDPTest.java b/core-java/src/test/java/com/baeldung/java/networking/udp/UDPTest.java similarity index 83% rename from core-java/src/test/java/com/baeldung/java/networking/url/UDPTest.java rename to core-java/src/test/java/com/baeldung/java/networking/udp/UDPTest.java index 91ab8063b2..fb8e1eb366 100644 --- a/core-java/src/test/java/com/baeldung/java/networking/url/UDPTest.java +++ b/core-java/src/test/java/com/baeldung/java/networking/udp/UDPTest.java @@ -1,8 +1,6 @@ -package com.baeldung.java.networking.url; +package com.baeldung.java.networking.udp; -import com.baeldung.java.networking.udp.EchoClient; -import com.baeldung.java.networking.udp.EchoServer; import org.junit.After; import org.junit.Before; import org.junit.Test; From 54572b9c9d00fc4c01f1f04a71cd182394a3ea6c Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Tue, 25 Oct 2016 17:16:10 +0200 Subject: [PATCH 111/215] Rename mutation-testing -> testing --- pom.xml | 2 +- {mutation-testing => testing}/README.md | 0 {mutation-testing => testing}/pom.xml | 154 +++++++++--------- .../baeldung/testing/mutation/Palindrome.java | 30 ++-- .../mutation/test/TestPalindrome.java | 68 ++++---- 5 files changed, 127 insertions(+), 127 deletions(-) rename {mutation-testing => testing}/README.md (100%) rename {mutation-testing => testing}/pom.xml (97%) rename {mutation-testing => testing}/src/main/java/com/baeldung/testing/mutation/Palindrome.java (97%) rename {mutation-testing => testing}/src/test/java/com/baeldung/mutation/test/TestPalindrome.java (96%) diff --git a/pom.xml b/pom.xml index e97093b7f7..514d066844 100644 --- a/pom.xml +++ b/pom.xml @@ -58,7 +58,7 @@ mockito mocks - mutation-testing + testing orika diff --git a/mutation-testing/README.md b/testing/README.md similarity index 100% rename from mutation-testing/README.md rename to testing/README.md diff --git a/mutation-testing/pom.xml b/testing/pom.xml similarity index 97% rename from mutation-testing/pom.xml rename to testing/pom.xml index cdee59fcb4..aa523d95ef 100644 --- a/mutation-testing/pom.xml +++ b/testing/pom.xml @@ -1,77 +1,77 @@ - - 4.0.0 - com.baeldung - mutation-testing - 0.1-SNAPSHOT - mutation-testing - - - org.pitest - pitest-parent - 1.1.10 - pom - - - junit - junit - 4.9 - - - - - - org.pitest - pitest-maven - 1.1.10 - - - com.baeldung.testing.mutation.* - - - com.baeldung.mutation.test.* - - - - - org.jacoco - jacoco-maven-plugin - 0.7.7.201606060606 - - - - prepare-agent - - - - report - prepare-package - - report - - - - jacoco-check - - check - - - - - PACKAGE - - - LINE - COVEREDRATIO - 0.50 - - - - - - - - - - - + + 4.0.0 + com.baeldung + mutation-testing + 0.1-SNAPSHOT + mutation-testing + + + org.pitest + pitest-parent + 1.1.10 + pom + + + junit + junit + 4.9 + + + + + + org.pitest + pitest-maven + 1.1.10 + + + com.baeldung.testing.mutation.* + + + com.baeldung.mutation.test.* + + + + + org.jacoco + jacoco-maven-plugin + 0.7.7.201606060606 + + + + prepare-agent + + + + report + prepare-package + + report + + + + jacoco-check + + check + + + + + PACKAGE + + + LINE + COVEREDRATIO + 0.50 + + + + + + + + + + + diff --git a/mutation-testing/src/main/java/com/baeldung/testing/mutation/Palindrome.java b/testing/src/main/java/com/baeldung/testing/mutation/Palindrome.java similarity index 97% rename from mutation-testing/src/main/java/com/baeldung/testing/mutation/Palindrome.java rename to testing/src/main/java/com/baeldung/testing/mutation/Palindrome.java index 0b166f1557..e264a4c759 100644 --- a/mutation-testing/src/main/java/com/baeldung/testing/mutation/Palindrome.java +++ b/testing/src/main/java/com/baeldung/testing/mutation/Palindrome.java @@ -1,15 +1,15 @@ -package com.baeldung.testing.mutation; - -public class Palindrome { - - public boolean isPalindrome(String inputString) { - if (inputString.length() == 0) { - return true; - } else { - char firstChar = inputString.charAt(0); - char lastChar = inputString.charAt(inputString.length() - 1); - String mid = inputString.substring(1, inputString.length() - 1); - return (firstChar == lastChar) && isPalindrome(mid); - } - } -} +package com.baeldung.testing.mutation; + +public class Palindrome { + + public boolean isPalindrome(String inputString) { + if (inputString.length() == 0) { + return true; + } else { + char firstChar = inputString.charAt(0); + char lastChar = inputString.charAt(inputString.length() - 1); + String mid = inputString.substring(1, inputString.length() - 1); + return (firstChar == lastChar) && isPalindrome(mid); + } + } +} diff --git a/mutation-testing/src/test/java/com/baeldung/mutation/test/TestPalindrome.java b/testing/src/test/java/com/baeldung/mutation/test/TestPalindrome.java similarity index 96% rename from mutation-testing/src/test/java/com/baeldung/mutation/test/TestPalindrome.java rename to testing/src/test/java/com/baeldung/mutation/test/TestPalindrome.java index 3add6290f6..11ed966b16 100644 --- a/mutation-testing/src/test/java/com/baeldung/mutation/test/TestPalindrome.java +++ b/testing/src/test/java/com/baeldung/mutation/test/TestPalindrome.java @@ -1,34 +1,34 @@ -package com.baeldung.mutation.test; - -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; - -import org.junit.Test; - -import com.baeldung.testing.mutation.Palindrome; - -public class TestPalindrome { - @Test - public void whenEmptyString_thanAccept() { - Palindrome palindromeTester = new Palindrome(); - assertTrue(palindromeTester.isPalindrome("noon")); - } - - @Test - public void whenPalindrom_thanAccept() { - Palindrome palindromeTester = new Palindrome(); - assertTrue(palindromeTester.isPalindrome("noon")); - } - - @Test - public void whenNotPalindrom_thanReject(){ - Palindrome palindromeTester = new Palindrome(); - assertFalse(palindromeTester.isPalindrome("box")); - } - - @Test - public void whenNearPalindrom_thanReject(){ - Palindrome palindromeTester = new Palindrome(); - assertFalse(palindromeTester.isPalindrome("neon")); - } -} +package com.baeldung.mutation.test; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +import org.junit.Test; + +import com.baeldung.testing.mutation.Palindrome; + +public class TestPalindrome { + @Test + public void whenEmptyString_thanAccept() { + Palindrome palindromeTester = new Palindrome(); + assertTrue(palindromeTester.isPalindrome("noon")); + } + + @Test + public void whenPalindrom_thanAccept() { + Palindrome palindromeTester = new Palindrome(); + assertTrue(palindromeTester.isPalindrome("noon")); + } + + @Test + public void whenNotPalindrom_thanReject(){ + Palindrome palindromeTester = new Palindrome(); + assertFalse(palindromeTester.isPalindrome("box")); + } + + @Test + public void whenNearPalindrom_thanReject(){ + Palindrome palindromeTester = new Palindrome(); + assertFalse(palindromeTester.isPalindrome("neon")); + } +} From 084d772bbd457887770f59b061a7291ae35b91b5 Mon Sep 17 00:00:00 2001 From: Zeger Hendrikse Date: Tue, 25 Oct 2016 17:50:33 +0200 Subject: [PATCH 112/215] Renamed Baeldung class to CourseRepository class --- .../cxf/jaxrs/implementation/Baeldung.java | 72 ------------------- .../jaxrs/implementation/RestfulServer.java | 6 +- 2 files changed, 3 insertions(+), 75 deletions(-) delete mode 100644 apache-cxf/cxf-jaxrs-implementation/src/main/java/com/baeldung/cxf/jaxrs/implementation/Baeldung.java diff --git a/apache-cxf/cxf-jaxrs-implementation/src/main/java/com/baeldung/cxf/jaxrs/implementation/Baeldung.java b/apache-cxf/cxf-jaxrs-implementation/src/main/java/com/baeldung/cxf/jaxrs/implementation/Baeldung.java deleted file mode 100644 index 9dd63cf3ac..0000000000 --- a/apache-cxf/cxf-jaxrs-implementation/src/main/java/com/baeldung/cxf/jaxrs/implementation/Baeldung.java +++ /dev/null @@ -1,72 +0,0 @@ -package com.baeldung.cxf.jaxrs.implementation; - -import javax.ws.rs.*; -import javax.ws.rs.core.Response; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -@Path("baeldung") -@Produces("text/xml") -public class Baeldung { - private Map courses = new HashMap<>(); - - { - Student student1 = new Student(); - Student student2 = new Student(); - student1.setId(1); - student1.setName("Student A"); - student2.setId(2); - student2.setName("Student B"); - - List course1Students = new ArrayList<>(); - course1Students.add(student1); - course1Students.add(student2); - - Course course1 = new Course(); - Course course2 = new Course(); - course1.setId(1); - course1.setName("REST with Spring"); - course1.setStudents(course1Students); - course2.setId(2); - course2.setName("Learn Spring Security"); - - courses.put(1, course1); - courses.put(2, course2); - } - - @GET - @Path("courses/{courseId}") - public Course getCourse(@PathParam("courseId") int courseId) { - return findById(courseId); - } - - @PUT - @Path("courses/{courseId}") - public Response updateCourse(@PathParam("courseId") int courseId, Course course) { - Course existingCourse = findById(courseId); - if (existingCourse == null) { - return Response.status(Response.Status.NOT_FOUND).build(); - } - if (existingCourse.equals(course)) { - return Response.notModified().build(); - } - courses.put(courseId, course); - return Response.ok().build(); - } - - @Path("courses/{courseId}/students") - public Course pathToStudent(@PathParam("courseId") int courseId) { - return findById(courseId); - } - - private Course findById(int id) { - for (Map.Entry course : courses.entrySet()) { - if (course.getKey() == id) { - return course.getValue(); - } - } - return null; - } -} \ No newline at end of file diff --git a/apache-cxf/cxf-jaxrs-implementation/src/main/java/com/baeldung/cxf/jaxrs/implementation/RestfulServer.java b/apache-cxf/cxf-jaxrs-implementation/src/main/java/com/baeldung/cxf/jaxrs/implementation/RestfulServer.java index bb35bab3f8..d3ed2eb70e 100644 --- a/apache-cxf/cxf-jaxrs-implementation/src/main/java/com/baeldung/cxf/jaxrs/implementation/RestfulServer.java +++ b/apache-cxf/cxf-jaxrs-implementation/src/main/java/com/baeldung/cxf/jaxrs/implementation/RestfulServer.java @@ -7,8 +7,8 @@ import org.apache.cxf.jaxrs.lifecycle.SingletonResourceProvider; public class RestfulServer { public static void main(String args[]) throws Exception { JAXRSServerFactoryBean factoryBean = new JAXRSServerFactoryBean(); - factoryBean.setResourceClasses(Baeldung.class); - factoryBean.setResourceProvider(new SingletonResourceProvider(new Baeldung())); + factoryBean.setResourceClasses(CourseRepository.class); + factoryBean.setResourceProvider(new SingletonResourceProvider(new CourseRepository())); factoryBean.setAddress("http://localhost:8080/"); Server server = factoryBean.create(); @@ -18,4 +18,4 @@ public class RestfulServer { server.destroy(); System.exit(0); } -} \ No newline at end of file +} From 99f2ae6a32016d5061892773e075e9f3394af790 Mon Sep 17 00:00:00 2001 From: Zeger Hendrikse Date: Tue, 25 Oct 2016 17:51:03 +0200 Subject: [PATCH 113/215] Renamed Baeldung class to CourseRepository class --- .../implementation/CourseRepository.java | 72 +++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 apache-cxf/cxf-jaxrs-implementation/src/main/java/com/baeldung/cxf/jaxrs/implementation/CourseRepository.java diff --git a/apache-cxf/cxf-jaxrs-implementation/src/main/java/com/baeldung/cxf/jaxrs/implementation/CourseRepository.java b/apache-cxf/cxf-jaxrs-implementation/src/main/java/com/baeldung/cxf/jaxrs/implementation/CourseRepository.java new file mode 100644 index 0000000000..a2fd6be435 --- /dev/null +++ b/apache-cxf/cxf-jaxrs-implementation/src/main/java/com/baeldung/cxf/jaxrs/implementation/CourseRepository.java @@ -0,0 +1,72 @@ +package com.baeldung.cxf.jaxrs.implementation; + +import javax.ws.rs.*; +import javax.ws.rs.core.Response; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Path("baeldung") +@Produces("text/xml") +public class CourseRepository { + private Map courses = new HashMap<>(); + + { + Student student1 = new Student(); + Student student2 = new Student(); + student1.setId(1); + student1.setName("Student A"); + student2.setId(2); + student2.setName("Student B"); + + List course1Students = new ArrayList<>(); + course1Students.add(student1); + course1Students.add(student2); + + Course course1 = new Course(); + Course course2 = new Course(); + course1.setId(1); + course1.setName("REST with Spring"); + course1.setStudents(course1Students); + course2.setId(2); + course2.setName("Learn Spring Security"); + + courses.put(1, course1); + courses.put(2, course2); + } + + @GET + @Path("courses/{courseId}") + public Course getCourse(@PathParam("courseId") int courseId) { + return findById(courseId); + } + + @PUT + @Path("courses/{courseId}") + public Response updateCourse(@PathParam("courseId") int courseId, Course course) { + Course existingCourse = findById(courseId); + if (existingCourse == null) { + return Response.status(Response.Status.NOT_FOUND).build(); + } + if (existingCourse.equals(course)) { + return Response.notModified().build(); + } + courses.put(courseId, course); + return Response.ok().build(); + } + + @Path("courses/{courseId}/students") + public Course pathToStudent(@PathParam("courseId") int courseId) { + return findById(courseId); + } + + private Course findById(int id) { + for (Map.Entry course : courses.entrySet()) { + if (course.getKey() == id) { + return course.getValue(); + } + } + return null; + } +} From 24ee4fb35c9fd870d02d8f79d78d97f255e90dad Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Wed, 26 Oct 2016 07:09:21 +0200 Subject: [PATCH 114/215] Refactor UDPTest --- .../test/java/com/baeldung/java/networking/udp/UDPTest.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/core-java/src/test/java/com/baeldung/java/networking/udp/UDPTest.java b/core-java/src/test/java/com/baeldung/java/networking/udp/UDPTest.java index fb8e1eb366..cf35c07ab3 100644 --- a/core-java/src/test/java/com/baeldung/java/networking/udp/UDPTest.java +++ b/core-java/src/test/java/com/baeldung/java/networking/udp/UDPTest.java @@ -29,7 +29,11 @@ public class UDPTest { @After public void tearDown() { - client.sendEcho("end"); + stopEchoServer(); client.close(); } + + private void stopEchoServer() { + client.sendEcho("end"); + } } From 3bbb7c89451473ad2ca900c98fb22e8022259307 Mon Sep 17 00:00:00 2001 From: slavisa-baeldung Date: Wed, 26 Oct 2016 09:20:26 +0200 Subject: [PATCH 115/215] BAEL-80 - removing an obsolete file (cherry picked from commit 5f6912f) --- spring-integration/pom.xml | 133 ++++++++++++++++++ .../spring-integration-context.backup | 80 +++++++++++ 2 files changed, 213 insertions(+) create mode 100644 spring-integration/pom.xml create mode 100644 spring-integration/src/main/resources/META-INF/spring/integration/spring-integration-context.backup diff --git a/spring-integration/pom.xml b/spring-integration/pom.xml new file mode 100644 index 0000000000..251322295f --- /dev/null +++ b/spring-integration/pom.xml @@ -0,0 +1,133 @@ + + 4.0.0 + + com.baeldung.samples.spring.integration + baeldungSIsample + 1.0.0.BUILD-SNAPSHOT + jar + + Baeldung Spring Intro + http://www.springsource.org/spring-integration + + + 2.2.1 + + + + UTF-8 + 2.2.4.RELEASE + 1.2.17 + 4.11 + + + + + repo.springsource.org.milestone + Spring Framework Maven Milestone Repository + https://repo.springsource.org/milestone + + + + + + + maven-eclipse-plugin + 2.9 + + + org.springframework.ide.eclipse.core.springnature + + + org.springframework.ide.eclipse.core.springbuilder + + true + true + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.1 + + 1.6 + 1.6 + -Xlint:all + true + true + + + + org.codehaus.mojo + exec-maven-plugin + 1.2.1 + + com.baeldung.samples.Main + + + + + + + + + + + junit + junit + ${junit.version} + test + + + org.springframework.integration + spring-integration-core + 4.3.4.RELEASE + + + javax.activation + activation + 1.1.1 + true + + + javax.mail + mail + 1.4.7 + + + log4j + log4j + ${log4j.version} + + + org.springframework.integration + spring-integration-twitter + 4.3.4.RELEASE + + + org.springframework.integration + spring-integration-mail + 4.3.4.RELEASE + + + org.springframework.integration + spring-integration-ftp + 4.3.4.RELEASE + + + org.springframework.social + spring-social-core + 1.1.4.RELEASE + + + org.springframework.integration + spring-integration-file + 4.3.4.RELEASE + + + junit + junit + 4.12 + + + diff --git a/spring-integration/src/main/resources/META-INF/spring/integration/spring-integration-context.backup b/spring-integration/src/main/resources/META-INF/spring/integration/spring-integration-context.backup new file mode 100644 index 0000000000..5687a15f02 --- /dev/null +++ b/spring-integration/src/main/resources/META-INF/spring/integration/spring-integration-context.backup @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 4906adb2ad15c402d9a94dc35c425b3d1dfae28b Mon Sep 17 00:00:00 2001 From: DOHA Date: Wed, 26 Oct 2016 15:07:34 +0200 Subject: [PATCH 116/215] minor fix --- .../jackson/entities/ActorJackson.java | 10 +++++- .../JacksonDeserializeTest.java | 27 ++++++++-------- .../serialization/JacksonSerializeTest.java | 32 ++++++++----------- 3 files changed, 37 insertions(+), 32 deletions(-) diff --git a/jackson/src/main/java/org/baeldung/jackson/entities/ActorJackson.java b/jackson/src/main/java/org/baeldung/jackson/entities/ActorJackson.java index 68cd6117d6..375b2204ff 100644 --- a/jackson/src/main/java/org/baeldung/jackson/entities/ActorJackson.java +++ b/jackson/src/main/java/org/baeldung/jackson/entities/ActorJackson.java @@ -1,7 +1,10 @@ package org.baeldung.jackson.entities; +import java.text.DateFormat; +import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; +import java.util.TimeZone; public class ActorJackson { @@ -22,7 +25,7 @@ public class ActorJackson { @Override public String toString() { - return "ActorJackson [imdbId=" + imdbId + ", dateOfBirth=" + dateOfBirth + ", filmography=" + filmography + "]"; + return "ActorJackson [imdbId=" + imdbId + ", dateOfBirth=" + formatDateOfBirth() + ", filmography=" + filmography + "]"; } public String getImdbId() { @@ -49,4 +52,9 @@ public class ActorJackson { this.filmography = filmography; } + private String formatDateOfBirth() { + final DateFormat formatter = new SimpleDateFormat("EEE MMM dd hh:mm:ss zzz yyyy"); + formatter.setTimeZone(TimeZone.getTimeZone("GMT")); + return formatter.format(dateOfBirth); + } } diff --git a/jackson/src/test/java/org/baeldung/jackson/deserialization/JacksonDeserializeTest.java b/jackson/src/test/java/org/baeldung/jackson/deserialization/JacksonDeserializeTest.java index 71d5ad3d81..31a6ae8ef9 100644 --- a/jackson/src/test/java/org/baeldung/jackson/deserialization/JacksonDeserializeTest.java +++ b/jackson/src/test/java/org/baeldung/jackson/deserialization/JacksonDeserializeTest.java @@ -1,39 +1,40 @@ package org.baeldung.jackson.deserialization; -import com.fasterxml.jackson.databind.ObjectMapper; -import org.baeldung.jackson.entities.Movie; -import org.junit.Assert; -import org.junit.Test; - import java.io.IOException; import java.text.DateFormat; import java.text.SimpleDateFormat; +import org.baeldung.jackson.entities.Movie; +import org.junit.Assert; +import org.junit.Test; + +import com.fasterxml.jackson.databind.ObjectMapper; + public class JacksonDeserializeTest { @Test public void whenSimpleDeserialize_thenCorrect() throws IOException { - String jsonInput = "{\"imdbId\":\"tt0472043\",\"actors\":[{\"imdbId\":\"nm2199632\",\"dateOfBirth\":\"1982-09-21T12:00:00+01:00\",\"filmography\":[\"Apocalypto\",\"Beatdown\",\"Wind Walkers\"]}]}"; - ObjectMapper mapper = new ObjectMapper(); - Movie movie = mapper.readValue(jsonInput, Movie.class); + final String jsonInput = "{\"imdbId\":\"tt0472043\",\"actors\":[{\"imdbId\":\"nm2199632\",\"dateOfBirth\":\"1982-09-21T12:00:00+01:00\",\"filmography\":[\"Apocalypto\",\"Beatdown\",\"Wind Walkers\"]}]}"; + final ObjectMapper mapper = new ObjectMapper(); + final Movie movie = mapper.readValue(jsonInput, Movie.class); - String expectedOutput = "Movie [imdbId=tt0472043, director=null, actors=[ActorJackson [imdbId=nm2199632, dateOfBirth=Tue Sep 21 04:00:00 PDT 1982, filmography=[Apocalypto, Beatdown, Wind Walkers]]]]"; + final String expectedOutput = "Movie [imdbId=tt0472043, director=null, actors=[ActorJackson [imdbId=nm2199632, dateOfBirth=Tue Sep 21 11:00:00 GMT 1982, filmography=[Apocalypto, Beatdown, Wind Walkers]]]]"; Assert.assertEquals(movie.toString(), expectedOutput); } @Test public void whenCustomDeserialize_thenCorrect() throws IOException { - String jsonInput = "{\"imdbId\":\"tt0472043\",\"director\":\"Mel Gibson\",\"actors\":[{\"imdbId\":\"nm2199632\",\"dateOfBirth\":\"1982-09-21T12:00:00+01:00\",\"filmography\":[\"Apocalypto\",\"Beatdown\",\"Wind Walkers\"]}]}"; + final String jsonInput = "{\"imdbId\":\"tt0472043\",\"director\":\"Mel Gibson\",\"actors\":[{\"imdbId\":\"nm2199632\",\"dateOfBirth\":\"1982-09-21T12:00:00+01:00\",\"filmography\":[\"Apocalypto\",\"Beatdown\",\"Wind Walkers\"]}]}"; - ObjectMapper mapper = new ObjectMapper(); + final ObjectMapper mapper = new ObjectMapper(); final DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"); mapper.setDateFormat(df); - Movie movie = mapper.readValue(jsonInput, Movie.class); + final Movie movie = mapper.readValue(jsonInput, Movie.class); - String expectedOutput = "Movie [imdbId=tt0472043, director=Mel Gibson, actors=[ActorJackson [imdbId=nm2199632, dateOfBirth=Tue Sep 21 12:00:00 PDT 1982, filmography=[Apocalypto, Beatdown, Wind Walkers]]]]"; + final String expectedOutput = "Movie [imdbId=tt0472043, director=Mel Gibson, actors=[ActorJackson [imdbId=nm2199632, dateOfBirth=Tue Sep 21 09:00:00 GMT 1982, filmography=[Apocalypto, Beatdown, Wind Walkers]]]]"; Assert.assertEquals(movie.toString(), expectedOutput); } diff --git a/jackson/src/test/java/org/baeldung/jackson/serialization/JacksonSerializeTest.java b/jackson/src/test/java/org/baeldung/jackson/serialization/JacksonSerializeTest.java index 6c8aa90fae..fcf19fcfad 100644 --- a/jackson/src/test/java/org/baeldung/jackson/serialization/JacksonSerializeTest.java +++ b/jackson/src/test/java/org/baeldung/jackson/serialization/JacksonSerializeTest.java @@ -1,7 +1,6 @@ package org.baeldung.jackson.serialization; import java.io.IOException; -import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Arrays; @@ -9,14 +8,11 @@ import java.util.Arrays; import org.baeldung.jackson.entities.ActorJackson; import org.baeldung.jackson.entities.Movie; import org.baeldung.jackson.entities.MovieWithNullValue; -import org.baeldung.jackson.serialization.ActorJacksonSerializer; import org.junit.Assert; import org.junit.Test; -import com.fasterxml.jackson.core.JsonParseException; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.util.DefaultPrettyPrinter; -import com.fasterxml.jackson.databind.JsonMappingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.SerializationFeature; import com.fasterxml.jackson.databind.module.SimpleModule; @@ -26,34 +22,34 @@ public class JacksonSerializeTest { @Test public void whenSimpleSerialize_thenCorrect() throws JsonProcessingException, ParseException { - SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy"); + final SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy"); - ActorJackson rudyYoungblood = new ActorJackson("nm2199632", sdf.parse("21-09-1982"), Arrays.asList("Apocalypto", "Beatdown", "Wind Walkers")); - Movie movie = new Movie("tt0472043", "Mel Gibson", Arrays.asList(rudyYoungblood)); + final ActorJackson rudyYoungblood = new ActorJackson("nm2199632", sdf.parse("21-09-1982"), Arrays.asList("Apocalypto", "Beatdown", "Wind Walkers")); + final Movie movie = new Movie("tt0472043", "Mel Gibson", Arrays.asList(rudyYoungblood)); - ObjectMapper mapper = new ObjectMapper(); - String jsonResult = mapper.writeValueAsString(movie); + final ObjectMapper mapper = new ObjectMapper(); + final String jsonResult = mapper.writeValueAsString(movie); - String expectedOutput = "{\"imdbId\":\"tt0472043\",\"director\":\"Mel Gibson\",\"actors\":[{\"imdbId\":\"nm2199632\",\"dateOfBirth\":401439600000,\"filmography\":[\"Apocalypto\",\"Beatdown\",\"Wind Walkers\"]}]}"; + final String expectedOutput = "{\"imdbId\":\"tt0472043\",\"director\":\"Mel Gibson\",\"actors\":[{\"imdbId\":\"nm2199632\",\"dateOfBirth\":401403600000,\"filmography\":[\"Apocalypto\",\"Beatdown\",\"Wind Walkers\"]}]}"; Assert.assertEquals(jsonResult, expectedOutput); } @Test public void whenCustomSerialize_thenCorrect() throws ParseException, IOException { - SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy"); + final SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy"); - ActorJackson rudyYoungblood = new ActorJackson("nm2199632", sdf.parse("21-09-1982"), Arrays.asList("Apocalypto", "Beatdown", "Wind Walkers")); - MovieWithNullValue movieWithNullValue = new MovieWithNullValue(null, "Mel Gibson", Arrays.asList(rudyYoungblood)); + final ActorJackson rudyYoungblood = new ActorJackson("nm2199632", sdf.parse("21-09-1982"), Arrays.asList("Apocalypto", "Beatdown", "Wind Walkers")); + final MovieWithNullValue movieWithNullValue = new MovieWithNullValue(null, "Mel Gibson", Arrays.asList(rudyYoungblood)); - SimpleModule module = new SimpleModule(); + final SimpleModule module = new SimpleModule(); module.addSerializer(new ActorJacksonSerializer(ActorJackson.class)); - ObjectMapper mapper = new ObjectMapper(); + final ObjectMapper mapper = new ObjectMapper(); - String jsonResult = mapper.registerModule(module).writer(new DefaultPrettyPrinter()).writeValueAsString(movieWithNullValue); + final String jsonResult = mapper.registerModule(module).writer(new DefaultPrettyPrinter()).writeValueAsString(movieWithNullValue); - Object json = mapper.readValue("{\"actors\":[{\"imdbId\":\"nm2199632\",\"dateOfBirth\":\"21-09-1982\",\"N° Film: \":3,\"filmography\":\"Apocalypto-Beatdown-Wind Walkers\"}],\"imdbID\":null}", Object.class); - String expectedOutput = new ObjectMapper().enable(SerializationFeature.INDENT_OUTPUT).writeValueAsString(json); + final Object json = mapper.readValue("{\"actors\":[{\"imdbId\":\"nm2199632\",\"dateOfBirth\":\"21-09-1982\",\"N° Film: \":3,\"filmography\":\"Apocalypto-Beatdown-Wind Walkers\"}],\"imdbID\":null}", Object.class); + final String expectedOutput = new ObjectMapper().enable(SerializationFeature.INDENT_OUTPUT).writeValueAsString(json); Assert.assertEquals(jsonResult, expectedOutput); } From 11440cd673cfd9a9d647ed271726c2f2a4dd4fcc Mon Sep 17 00:00:00 2001 From: eugenp Date: Wed, 26 Oct 2016 21:21:51 +0300 Subject: [PATCH 117/215] example of a module with 2 boot apps --- .../baeldung/example/spring/AnotherBootApp.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 spring-security-rest-full/src/main/java/org/baeldung/example/spring/AnotherBootApp.java diff --git a/spring-security-rest-full/src/main/java/org/baeldung/example/spring/AnotherBootApp.java b/spring-security-rest-full/src/main/java/org/baeldung/example/spring/AnotherBootApp.java new file mode 100644 index 0000000000..445a70f29c --- /dev/null +++ b/spring-security-rest-full/src/main/java/org/baeldung/example/spring/AnotherBootApp.java @@ -0,0 +1,17 @@ +package org.baeldung.example.spring; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; + +@EnableScheduling +@EnableAutoConfiguration +@ComponentScan("org.baeldung") +public class AnotherBootApp extends WebMvcConfigurerAdapter { + + public static void main(final String[] args) { + SpringApplication.run(AnotherBootApp.class, args); + } +} \ No newline at end of file From 49a44be4416a9a87dce2fdd6a63df3e394ac26cc Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Wed, 26 Oct 2016 23:11:07 +0200 Subject: [PATCH 118/215] Fix pom --- pom.xml | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/pom.xml b/pom.xml index 89b377a214..514d066844 100644 --- a/pom.xml +++ b/pom.xml @@ -17,22 +17,22 @@ assertj apache-cxf - autovalue-tutorial - + autovalue + cdi core-java - core-java-8 couchbase-sdk dozer - dependency-injection deltaspike patterns - feign-client + feign + flyway + gson guava guava18 @@ -46,12 +46,12 @@ jackson javaxval jjwt - jooq-spring + jpa-storedprocedure json json-path junit5 - jee7schedule + jee7 log4j @@ -68,7 +68,6 @@ rest-assured rest-testing resteasy - okhttp spring-all spring-akka @@ -76,6 +75,7 @@ spring-autowire spring-batch spring-boot + spring-core spring-cucumber spring-data-cassandra spring-data-couchbase-2 @@ -84,13 +84,14 @@ spring-data-mongodb spring-data-redis spring-data-rest + spring-exceptions spring-freemarker spring-hibernate3 spring-hibernate4 - spring-integration - spring-jpa spring-jms + spring-jooq + spring-jpa spring-katharsis spring-mockito spring-mvc-java @@ -109,6 +110,7 @@ spring-security-basic-auth spring-security-custom-permission + spring-security-custom-voter spring-security-mvc-custom spring-security-mvc-digest-auth spring-security-mvc-ldap @@ -127,6 +129,7 @@ jsf xml + xmlunit2 lombok redis From 2b9470eed0483df88f3aa77811f3fc6b4541d437 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20R=C3=A4del?= Date: Sun, 4 Sep 2016 12:07:13 +0200 Subject: [PATCH 119/215] BAEL-325: Implemented various filter examples. --- .../intercepting-filter-pattern/pom.xml | 49 +++++++++++++++++ .../controller/FrontControllerServlet.java | 55 +++++++++++++++++++ .../controller/commands/FrontCommand.java | 43 +++++++++++++++ .../controller/commands/LoginCommand.java | 20 +++++++ .../controller/commands/SearchCommand.java | 22 ++++++++ .../controller/commands/UnknownCommand.java | 11 ++++ .../patterns/front/controller/data/Book.java | 15 +++++ .../front/controller/data/BookImpl.java | 46 ++++++++++++++++ .../front/controller/data/Bookshelf.java | 16 ++++++ .../front/controller/data/BookshelfImpl.java | 24 ++++++++ .../front/controller/filters/AuditFilter.java | 25 +++++++++ .../filters/AuthenticationFilter.java | 40 ++++++++++++++ .../front/controller/filters/BaseFilter.java | 25 +++++++++ .../controller/filters/EncodingFilter.java | 30 ++++++++++ .../controller/filters/FilterChainImpl.java | 28 ++++++++++ .../controller/filters/FilterManager.java | 21 +++++++ .../controller/filters/LoggingFilter.java | 39 +++++++++++++ .../front/controller/filters/OnIntercept.java | 5 ++ .../filters/VisitorCounterFilter.java | 23 ++++++++ .../main/webapp/WEB-INF/jsp/book-found.jsp | 13 +++++ .../main/webapp/WEB-INF/jsp/book-notfound.jsp | 11 ++++ .../src/main/webapp/WEB-INF/jsp/login.jsp | 15 +++++ .../src/main/webapp/WEB-INF/jsp/unknown.jsp | 10 ++++ .../webapp/WEB-INF/jsp/visitor-counter.jsp | 2 + 24 files changed, 588 insertions(+) create mode 100644 enterprise-patterns/intercepting-filter-pattern/pom.xml create mode 100644 enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/FrontControllerServlet.java create mode 100644 enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/commands/FrontCommand.java create mode 100644 enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/commands/LoginCommand.java create mode 100644 enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/commands/SearchCommand.java create mode 100644 enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/commands/UnknownCommand.java create mode 100644 enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/data/Book.java create mode 100644 enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/data/BookImpl.java create mode 100644 enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/data/Bookshelf.java create mode 100644 enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/data/BookshelfImpl.java create mode 100644 enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/filters/AuditFilter.java create mode 100644 enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/filters/AuthenticationFilter.java create mode 100644 enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/filters/BaseFilter.java create mode 100644 enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/filters/EncodingFilter.java create mode 100644 enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/filters/FilterChainImpl.java create mode 100644 enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/filters/FilterManager.java create mode 100644 enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/filters/LoggingFilter.java create mode 100644 enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/filters/OnIntercept.java create mode 100644 enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/filters/VisitorCounterFilter.java create mode 100644 enterprise-patterns/intercepting-filter-pattern/src/main/webapp/WEB-INF/jsp/book-found.jsp create mode 100644 enterprise-patterns/intercepting-filter-pattern/src/main/webapp/WEB-INF/jsp/book-notfound.jsp create mode 100644 enterprise-patterns/intercepting-filter-pattern/src/main/webapp/WEB-INF/jsp/login.jsp create mode 100644 enterprise-patterns/intercepting-filter-pattern/src/main/webapp/WEB-INF/jsp/unknown.jsp create mode 100644 enterprise-patterns/intercepting-filter-pattern/src/main/webapp/WEB-INF/jsp/visitor-counter.jsp diff --git a/enterprise-patterns/intercepting-filter-pattern/pom.xml b/enterprise-patterns/intercepting-filter-pattern/pom.xml new file mode 100644 index 0000000000..ffe597a813 --- /dev/null +++ b/enterprise-patterns/intercepting-filter-pattern/pom.xml @@ -0,0 +1,49 @@ + + + 4.0.0 + + intercepting-filter-pattern + war + + + enterprise-patterns-parent + com.baeldung.enterprise.patterns + 1.0.0-SNAPSHOT + + + + + javax.servlet + javax.servlet-api + 3.1.0 + provided + + + org.slf4j + slf4j-api + 1.7.21 + provided + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + + + org.eclipse.jetty + jetty-maven-plugin + 9.3.11.v20160721 + + + /intercepting-filter + + + + + + diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/FrontControllerServlet.java b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/FrontControllerServlet.java new file mode 100644 index 0000000000..728caca27e --- /dev/null +++ b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/FrontControllerServlet.java @@ -0,0 +1,55 @@ +package com.baeldung.enterprise.patterns.front.controller; + +import com.baeldung.enterprise.patterns.front.controller.commands.FrontCommand; +import com.baeldung.enterprise.patterns.front.controller.commands.UnknownCommand; + +import javax.servlet.ServletException; +import javax.servlet.annotation.WebServlet; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; + +@WebServlet(name = "front-controller", urlPatterns = "/") +public class FrontControllerServlet extends HttpServlet { + @Override + protected void doGet( + HttpServletRequest request, + HttpServletResponse response + ) throws ServletException, IOException { + doCommand(request, response); + } + + @Override + protected void doPost( + HttpServletRequest request, + HttpServletResponse response + ) throws ServletException, IOException { + doCommand(request, response); + } + + private void doCommand( + HttpServletRequest request, + HttpServletResponse response + ) throws ServletException, IOException { + FrontCommand command = getCommand(request); + command.init(request, response); + command.process(); + } + + private FrontCommand getCommand(HttpServletRequest request) { + try { + Class type = Class.forName( + String.format( + "com.baeldung.enterprise.patterns.front.controller.commands.%sCommand", + request.getParameter("command") + ) + ); + return (FrontCommand) type + .asSubclass(FrontCommand.class) + .newInstance(); + } catch (Exception e) { + return new UnknownCommand(); + } + } +} diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/commands/FrontCommand.java b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/commands/FrontCommand.java new file mode 100644 index 0000000000..370127b7f7 --- /dev/null +++ b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/commands/FrontCommand.java @@ -0,0 +1,43 @@ +package com.baeldung.enterprise.patterns.front.controller.commands; + +import com.baeldung.enterprise.patterns.front.controller.filters.FilterManager; +import com.baeldung.enterprise.patterns.front.controller.filters.OnIntercept; + +import javax.servlet.RequestDispatcher; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; + +public abstract class FrontCommand implements OnIntercept { + protected HttpServletRequest request; + protected HttpServletResponse response; + private boolean intercept; + + public FrontCommand() { + } + + public void init(HttpServletRequest request, HttpServletResponse response) { + this.request = request; + this.response = response; + } + + public void process() throws ServletException, IOException { + FilterManager.process(request, response, this); + } + + public void forward(String target) throws ServletException, IOException { + if (intercept) { + return; + } + String path = String.format("/WEB-INF/jsp/%s.jsp", target); + RequestDispatcher dispatcher = request.getServletContext() + .getRequestDispatcher(path); + dispatcher.forward(request, response); + } + + @Override + public void intercept() { + intercept = true; + } +} diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/commands/LoginCommand.java b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/commands/LoginCommand.java new file mode 100644 index 0000000000..719605108e --- /dev/null +++ b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/commands/LoginCommand.java @@ -0,0 +1,20 @@ +package com.baeldung.enterprise.patterns.front.controller.commands; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpSession; +import java.io.IOException; + +public class LoginCommand extends FrontCommand { + @Override + public void process() throws ServletException, IOException { + if (request.getMethod().equals("GET")) { + request.setAttribute("redirect", request.getRequestURL() + .append("?").append(request.getQueryString()).toString()); + forward("login"); + } else { + HttpSession session = request.getSession(true); + session.setAttribute("username", request.getParameter("username")); + response.sendRedirect(request.getParameter("redirect")); + } + } +} diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/commands/SearchCommand.java b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/commands/SearchCommand.java new file mode 100644 index 0000000000..93dac4b363 --- /dev/null +++ b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/commands/SearchCommand.java @@ -0,0 +1,22 @@ +package com.baeldung.enterprise.patterns.front.controller.commands; + +import com.baeldung.enterprise.patterns.front.controller.data.Book; +import com.baeldung.enterprise.patterns.front.controller.data.BookshelfImpl; + +import javax.servlet.ServletException; +import java.io.IOException; + +public class SearchCommand extends FrontCommand { + @Override + public void process() throws ServletException, IOException { + super.process(); + Book book = new BookshelfImpl().getInstance() + .findByTitle(request.getParameter("title")); + if (book != null) { + request.setAttribute("book", book); + forward("book-found"); + } else { + forward("book-notfound"); + } + } +} diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/commands/UnknownCommand.java b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/commands/UnknownCommand.java new file mode 100644 index 0000000000..90103c8f42 --- /dev/null +++ b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/commands/UnknownCommand.java @@ -0,0 +1,11 @@ +package com.baeldung.enterprise.patterns.front.controller.commands; + +import javax.servlet.ServletException; +import java.io.IOException; + +public class UnknownCommand extends FrontCommand { + @Override + public void process() throws ServletException, IOException { + forward("unknown"); + } +} diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/data/Book.java b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/data/Book.java new file mode 100644 index 0000000000..abadcc0d76 --- /dev/null +++ b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/data/Book.java @@ -0,0 +1,15 @@ +package com.baeldung.enterprise.patterns.front.controller.data; + +public interface Book { + String getAuthor(); + + void setAuthor(String author); + + String getTitle(); + + void setTitle(String title); + + Double getPrice(); + + void setPrice(Double price); +} diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/data/BookImpl.java b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/data/BookImpl.java new file mode 100644 index 0000000000..b270bc7985 --- /dev/null +++ b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/data/BookImpl.java @@ -0,0 +1,46 @@ +package com.baeldung.enterprise.patterns.front.controller.data; + +public class BookImpl implements Book { + private String author; + private String title; + private Double price; + + public BookImpl() { + } + + public BookImpl(String author, String title, Double price) { + this.author = author; + this.title = title; + this.price = price; + } + + @Override + public String getAuthor() { + return author; + } + + @Override + public void setAuthor(String author) { + this.author = author; + } + + @Override + public String getTitle() { + return title; + } + + @Override + public void setTitle(String title) { + this.title = title; + } + + @Override + public Double getPrice() { + return price; + } + + @Override + public void setPrice(Double price) { + this.price = price; + } +} diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/data/Bookshelf.java b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/data/Bookshelf.java new file mode 100644 index 0000000000..8def45cb69 --- /dev/null +++ b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/data/Bookshelf.java @@ -0,0 +1,16 @@ +package com.baeldung.enterprise.patterns.front.controller.data; + +public interface Bookshelf { + + default void init() { + add(new BookImpl("Wilson, Robert Anton & Shea, Robert", "Illuminati", 9.99)); + add(new BookImpl("Fowler, Martin", "Patterns of Enterprise Application Architecture", 27.88)); + add(new BookImpl("Unknown", "Something about German Umlauts (äüö) and ß", 5.49)); + } + + Bookshelf getInstance(); + + boolean add(E book); + + Book findByTitle(String title); +} diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/data/BookshelfImpl.java b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/data/BookshelfImpl.java new file mode 100644 index 0000000000..3862418857 --- /dev/null +++ b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/data/BookshelfImpl.java @@ -0,0 +1,24 @@ +package com.baeldung.enterprise.patterns.front.controller.data; + +import java.util.ArrayList; + +public class BookshelfImpl extends ArrayList implements Bookshelf { + private static Bookshelf INSTANCE; + + @Override + public Bookshelf getInstance() { + if (INSTANCE == null) { + INSTANCE = new BookshelfImpl(); + INSTANCE.init(); + } + return INSTANCE; + } + + @Override + public Book findByTitle(String title) { + return this.stream() + .filter(book -> book.getTitle().toLowerCase().contains(title.toLowerCase())) + .findFirst() + .orElse(null); + } +} diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/filters/AuditFilter.java b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/filters/AuditFilter.java new file mode 100644 index 0000000000..d24c0a94b3 --- /dev/null +++ b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/filters/AuditFilter.java @@ -0,0 +1,25 @@ +package com.baeldung.enterprise.patterns.front.controller.filters; + +import javax.servlet.FilterChain; +import javax.servlet.ServletException; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpSession; +import java.io.IOException; + +public class AuditFilter extends BaseFilter { + @Override + public void doFilter( + ServletRequest request, + ServletResponse response, + FilterChain chain + ) throws IOException, ServletException { + HttpServletRequest httpServletRequest = (HttpServletRequest) request; + HttpSession session = httpServletRequest.getSession(false); + if (session != null && session.getAttribute("username") != null) { + request.setAttribute("username", session.getAttribute("username")); + } + chain.doFilter(request, response); + } +} diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/filters/AuthenticationFilter.java b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/filters/AuthenticationFilter.java new file mode 100644 index 0000000000..66f9887980 --- /dev/null +++ b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/filters/AuthenticationFilter.java @@ -0,0 +1,40 @@ +package com.baeldung.enterprise.patterns.front.controller.filters; + +import com.baeldung.enterprise.patterns.front.controller.commands.FrontCommand; +import com.baeldung.enterprise.patterns.front.controller.commands.LoginCommand; + +import javax.servlet.FilterChain; +import javax.servlet.ServletException; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; +import java.io.IOException; + +public class AuthenticationFilter extends BaseFilter { + private OnIntercept callback; + + public AuthenticationFilter(OnIntercept callback) { + this.callback = callback; + } + + @Override + public void doFilter( + ServletRequest request, + ServletResponse response, + FilterChain chain + ) throws IOException, ServletException { + HttpServletRequest httpServletRequest = (HttpServletRequest) request; + HttpServletResponse httpServletResponse = (HttpServletResponse) response; + HttpSession session = httpServletRequest.getSession(false); + if (session == null || session.getAttribute("username") == null) { + FrontCommand command = new LoginCommand(); + command.init(httpServletRequest, httpServletResponse); + command.process(); + callback.intercept(); + } else { + chain.doFilter(request, response); + } + } +} diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/filters/BaseFilter.java b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/filters/BaseFilter.java new file mode 100644 index 0000000000..81b5027187 --- /dev/null +++ b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/filters/BaseFilter.java @@ -0,0 +1,25 @@ +package com.baeldung.enterprise.patterns.front.controller.filters; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.servlet.Filter; +import javax.servlet.FilterConfig; +import javax.servlet.ServletException; + +public abstract class BaseFilter implements Filter { + private static final Logger log = LoggerFactory.getLogger(BaseFilter.class); + + protected FilterConfig filterConfig; + + @Override + public void init(FilterConfig filterConfig) throws ServletException { + log.info("Initialize filter: {}", getClass().getSimpleName()); + this.filterConfig = filterConfig; + } + + @Override + public void destroy() { + log.info("Destroy filter: {}", getClass().getSimpleName()); + } +} diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/filters/EncodingFilter.java b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/filters/EncodingFilter.java new file mode 100644 index 0000000000..d36e204dd5 --- /dev/null +++ b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/filters/EncodingFilter.java @@ -0,0 +1,30 @@ +package com.baeldung.enterprise.patterns.front.controller.filters; + +import javax.servlet.*; +import javax.servlet.annotation.WebFilter; +import java.io.IOException; + +@WebFilter(servletNames = "front-controller") +public class EncodingFilter extends BaseFilter { + private String encoding; + + @Override + public void init(FilterConfig filterConfig) throws ServletException { + super.init(filterConfig); + this.encoding = filterConfig.getInitParameter("encoding"); + } + + @Override + public void doFilter( + ServletRequest request, + ServletResponse response, + FilterChain chain + ) throws IOException, ServletException { + String encoding = request.getParameter("encoding"); + if (encoding == null) { + encoding = this.encoding; + } + response.setCharacterEncoding(encoding); + chain.doFilter(request, response); + } +} diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/filters/FilterChainImpl.java b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/filters/FilterChainImpl.java new file mode 100644 index 0000000000..dd92759e8b --- /dev/null +++ b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/filters/FilterChainImpl.java @@ -0,0 +1,28 @@ +package com.baeldung.enterprise.patterns.front.controller.filters; + +import javax.servlet.Filter; +import javax.servlet.ServletException; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; +import java.io.IOException; +import java.util.Arrays; +import java.util.Iterator; + +public class FilterChainImpl implements javax.servlet.FilterChain { + private Iterator filters; + + public FilterChainImpl(Filter... filters) { + this.filters = Arrays.asList(filters).iterator(); + } + + @Override + public void doFilter( + ServletRequest request, + ServletResponse response + ) throws IOException, ServletException { + if (filters.hasNext()) { + Filter filter = filters.next(); + filter.doFilter(request, response, this); + } + } +} diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/filters/FilterManager.java b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/filters/FilterManager.java new file mode 100644 index 0000000000..efa8511f2a --- /dev/null +++ b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/filters/FilterManager.java @@ -0,0 +1,21 @@ +package com.baeldung.enterprise.patterns.front.controller.filters; + +import javax.servlet.FilterChain; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; + +public class FilterManager { + public static void process( + HttpServletRequest request, + HttpServletResponse response, + OnIntercept callback + ) throws ServletException, IOException { + FilterChain filterChain = new FilterChainImpl( + new AuthenticationFilter(callback), + new AuditFilter() + ); + filterChain.doFilter(request, response); + } +} diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/filters/LoggingFilter.java b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/filters/LoggingFilter.java new file mode 100644 index 0000000000..089a7807cf --- /dev/null +++ b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/filters/LoggingFilter.java @@ -0,0 +1,39 @@ +package com.baeldung.enterprise.patterns.front.controller.filters; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.servlet.FilterChain; +import javax.servlet.ServletException; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; +import javax.servlet.annotation.WebFilter; +import javax.servlet.http.HttpServletRequest; +import java.io.IOException; + +@WebFilter(servletNames = "front-controller") +public class LoggingFilter extends BaseFilter { + private static final Logger log = LoggerFactory.getLogger(LoggingFilter.class); + + @Override + public void doFilter( + ServletRequest request, + ServletResponse response, + FilterChain chain + ) throws IOException, ServletException { + chain.doFilter(request, response); + HttpServletRequest httpServletRequest = (HttpServletRequest) request; + String username = (String) httpServletRequest.getAttribute("username"); + if (username != null && username.length() > 0) { + username = username.concat("@"); + } else { + username = ""; + } + String intro = "Request"; + if (username.length() > 0) { + intro = "Authenticated request"; + } + log.info("{} from '{}{}': {}?{}", intro, username, request.getRemoteAddr(), + httpServletRequest.getRequestURI(), request.getParameterMap()); + } +} diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/filters/OnIntercept.java b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/filters/OnIntercept.java new file mode 100644 index 0000000000..54da744e78 --- /dev/null +++ b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/filters/OnIntercept.java @@ -0,0 +1,5 @@ +package com.baeldung.enterprise.patterns.front.controller.filters; + +public interface OnIntercept { + void intercept(); +} diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/filters/VisitorCounterFilter.java b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/filters/VisitorCounterFilter.java new file mode 100644 index 0000000000..0ae7cd73fd --- /dev/null +++ b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/filters/VisitorCounterFilter.java @@ -0,0 +1,23 @@ +package com.baeldung.enterprise.patterns.front.controller.filters; + +import javax.servlet.FilterChain; +import javax.servlet.ServletException; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; +import javax.servlet.annotation.WebFilter; +import java.io.IOException; + +@WebFilter(servletNames = "front-controller") +public class VisitorCounterFilter extends BaseFilter { + private int counter; + + @Override + public void doFilter( + ServletRequest request, + ServletResponse response, + FilterChain chain + ) throws IOException, ServletException { + request.setAttribute("counter", ++counter); + chain.doFilter(request, response); + } +} diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/webapp/WEB-INF/jsp/book-found.jsp b/enterprise-patterns/intercepting-filter-pattern/src/main/webapp/WEB-INF/jsp/book-found.jsp new file mode 100644 index 0000000000..36f94b0933 --- /dev/null +++ b/enterprise-patterns/intercepting-filter-pattern/src/main/webapp/WEB-INF/jsp/book-found.jsp @@ -0,0 +1,13 @@ + + + + Bookshelf: Title found + + +

Our Bookshelf contains this title:

+

${book.getTitle()}

+

Author: ${book.getAuthor()}

+ + <%@include file="visitor-counter.jsp"%> + + diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/webapp/WEB-INF/jsp/book-notfound.jsp b/enterprise-patterns/intercepting-filter-pattern/src/main/webapp/WEB-INF/jsp/book-notfound.jsp new file mode 100644 index 0000000000..02d1307e00 --- /dev/null +++ b/enterprise-patterns/intercepting-filter-pattern/src/main/webapp/WEB-INF/jsp/book-notfound.jsp @@ -0,0 +1,11 @@ + + + + Bookshelf: Title not found + + +

Our Bookshelf doesn't contains this title:

+

${param.get("title")}

+ <%@include file="visitor-counter.jsp"%> + + diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/webapp/WEB-INF/jsp/login.jsp b/enterprise-patterns/intercepting-filter-pattern/src/main/webapp/WEB-INF/jsp/login.jsp new file mode 100644 index 0000000000..a1609ecaff --- /dev/null +++ b/enterprise-patterns/intercepting-filter-pattern/src/main/webapp/WEB-INF/jsp/login.jsp @@ -0,0 +1,15 @@ + + + + Bookshelf: Login + + +

Please input a username:

+

Login

+
+ + + +
+ + diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/webapp/WEB-INF/jsp/unknown.jsp b/enterprise-patterns/intercepting-filter-pattern/src/main/webapp/WEB-INF/jsp/unknown.jsp new file mode 100644 index 0000000000..010cb7ffb4 --- /dev/null +++ b/enterprise-patterns/intercepting-filter-pattern/src/main/webapp/WEB-INF/jsp/unknown.jsp @@ -0,0 +1,10 @@ + + + + Bookshelf: Command unknown + + +

Sorry, this command is not known!

+ <%@include file="visitor-counter.jsp"%> + + diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/webapp/WEB-INF/jsp/visitor-counter.jsp b/enterprise-patterns/intercepting-filter-pattern/src/main/webapp/WEB-INF/jsp/visitor-counter.jsp new file mode 100644 index 0000000000..7dc1d78196 --- /dev/null +++ b/enterprise-patterns/intercepting-filter-pattern/src/main/webapp/WEB-INF/jsp/visitor-counter.jsp @@ -0,0 +1,2 @@ +
+

You are visitor #${counter}!

From ae3d9760c903ddf8d5c2a2f2168c7555e9c3e983 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20R=C3=A4del?= Date: Sun, 4 Sep 2016 23:12:18 +0200 Subject: [PATCH 120/215] BAEL-325: Massive extensions to the example from BAEL-305. --- .../intercepting-filter-pattern/pom.xml | 2 +- .../controller/FrontControllerServlet.java | 13 +++++- .../controller/commands/CheckoutCommand.java | 27 +++++++++++++ .../controller/commands/HomeCommand.java | 17 ++++++++ .../controller/commands/LoginCommand.java | 10 ++--- .../controller/commands/LogoutCommand.java | 16 ++++++++ .../controller/commands/OrderCommand.java | 33 +++++++++++++++ .../controller/commands/SearchCommand.java | 13 +++--- .../controller/commands/ShowCommand.java | 21 ++++++++++ .../controller/commands/UnknownCommand.java | 1 + .../patterns/front/controller/data/Book.java | 4 ++ .../front/controller/data/BookImpl.java | 14 ++++++- .../front/controller/data/Bookshelf.java | 14 ++++--- .../front/controller/data/BookshelfImpl.java | 25 ++++++------ .../patterns/front/controller/data/Order.java | 11 +++++ .../front/controller/data/OrderImpl.java | 40 +++++++++++++++++++ .../filters/AuthenticationFilter.java | 2 +- .../controller/filters/FilterManager.java | 2 +- .../controller/filters/LoggingFilter.java | 12 ++---- .../main/webapp/WEB-INF/jsp/book-found.jsp | 21 +++++++--- .../main/webapp/WEB-INF/jsp/book-notfound.jsp | 10 ++--- .../src/main/webapp/WEB-INF/jsp/home.jsp | 27 +++++++++++++ .../src/main/webapp/WEB-INF/jsp/login.jsp | 5 ++- .../webapp/WEB-INF/jsp/shopping-cart-hint.jsp | 16 ++++++++ .../main/webapp/WEB-INF/jsp/shopping-cart.jsp | 29 ++++++++++++++ .../src/main/webapp/WEB-INF/jsp/unknown.jsp | 1 - .../webapp/WEB-INF/jsp/visitor-counter.jsp | 7 +++- 27 files changed, 335 insertions(+), 58 deletions(-) create mode 100644 enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/commands/CheckoutCommand.java create mode 100644 enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/commands/HomeCommand.java create mode 100644 enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/commands/LogoutCommand.java create mode 100644 enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/commands/OrderCommand.java create mode 100644 enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/commands/ShowCommand.java create mode 100644 enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/data/Order.java create mode 100644 enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/data/OrderImpl.java create mode 100644 enterprise-patterns/intercepting-filter-pattern/src/main/webapp/WEB-INF/jsp/home.jsp create mode 100644 enterprise-patterns/intercepting-filter-pattern/src/main/webapp/WEB-INF/jsp/shopping-cart-hint.jsp create mode 100644 enterprise-patterns/intercepting-filter-pattern/src/main/webapp/WEB-INF/jsp/shopping-cart.jsp diff --git a/enterprise-patterns/intercepting-filter-pattern/pom.xml b/enterprise-patterns/intercepting-filter-pattern/pom.xml index ffe597a813..0e1008657a 100644 --- a/enterprise-patterns/intercepting-filter-pattern/pom.xml +++ b/enterprise-patterns/intercepting-filter-pattern/pom.xml @@ -37,7 +37,7 @@ org.eclipse.jetty jetty-maven-plugin - 9.3.11.v20160721 + 9.4.0.M1 /intercepting-filter diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/FrontControllerServlet.java b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/FrontControllerServlet.java index 728caca27e..67400897c4 100644 --- a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/FrontControllerServlet.java +++ b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/FrontControllerServlet.java @@ -2,7 +2,10 @@ package com.baeldung.enterprise.patterns.front.controller; import com.baeldung.enterprise.patterns.front.controller.commands.FrontCommand; import com.baeldung.enterprise.patterns.front.controller.commands.UnknownCommand; +import com.baeldung.enterprise.patterns.front.controller.data.Bookshelf; +import com.baeldung.enterprise.patterns.front.controller.data.BookshelfImpl; +import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; @@ -10,8 +13,16 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; -@WebServlet(name = "front-controller", urlPatterns = "/") +@WebServlet(name = "front-controller", urlPatterns = "/index") public class FrontControllerServlet extends HttpServlet { + @Override + public void init(ServletConfig config) throws ServletException { + super.init(config); + Bookshelf bookshelf = new BookshelfImpl(); + bookshelf.init(); + getServletContext().setAttribute("bookshelf", bookshelf); + } + @Override protected void doGet( HttpServletRequest request, diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/commands/CheckoutCommand.java b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/commands/CheckoutCommand.java new file mode 100644 index 0000000000..876e439139 --- /dev/null +++ b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/commands/CheckoutCommand.java @@ -0,0 +1,27 @@ +package com.baeldung.enterprise.patterns.front.controller.commands; + +import com.baeldung.enterprise.patterns.front.controller.data.Order; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpSession; +import java.io.IOException; + +public class CheckoutCommand extends FrontCommand { + @Override + public void process() throws ServletException, IOException { + super.process(); + HttpSession session = request.getSession(false); + if (request.getMethod().equals("POST")) { + session.removeAttribute("order"); + response.sendRedirect("index?command=Home&message=Thank you for buying!"); + } else { + Order order = (Order) session.getAttribute("order"); + Double total = order.getItems().entrySet().stream() + .map(entry -> entry.getKey().getPrice() * entry.getValue()) + .reduce((p1, p2) -> p1 + p2) + .orElse(0.00); + request.setAttribute("total", total); + forward("shopping-cart"); + } + } +} diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/commands/HomeCommand.java b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/commands/HomeCommand.java new file mode 100644 index 0000000000..49b62a29bd --- /dev/null +++ b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/commands/HomeCommand.java @@ -0,0 +1,17 @@ +package com.baeldung.enterprise.patterns.front.controller.commands; + +import com.baeldung.enterprise.patterns.front.controller.data.Bookshelf; + +import javax.servlet.ServletException; +import java.io.IOException; + +public class HomeCommand extends FrontCommand { + @Override + public void process() throws ServletException, IOException { + super.process(); + Bookshelf bookshelf = (Bookshelf) request.getServletContext() + .getAttribute("bookshelf"); + request.setAttribute("books", bookshelf); + forward("home"); + } +} diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/commands/LoginCommand.java b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/commands/LoginCommand.java index 719605108e..beef42d269 100644 --- a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/commands/LoginCommand.java +++ b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/commands/LoginCommand.java @@ -7,14 +7,14 @@ import java.io.IOException; public class LoginCommand extends FrontCommand { @Override public void process() throws ServletException, IOException { - if (request.getMethod().equals("GET")) { - request.setAttribute("redirect", request.getRequestURL() - .append("?").append(request.getQueryString()).toString()); - forward("login"); - } else { + if (request.getMethod().equals("POST")) { HttpSession session = request.getSession(true); session.setAttribute("username", request.getParameter("username")); response.sendRedirect(request.getParameter("redirect")); + } else { + request.setAttribute("redirect", request.getRequestURL() + .append("?").append(request.getQueryString()).toString()); + forward("login"); } } } diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/commands/LogoutCommand.java b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/commands/LogoutCommand.java new file mode 100644 index 0000000000..b502112558 --- /dev/null +++ b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/commands/LogoutCommand.java @@ -0,0 +1,16 @@ +package com.baeldung.enterprise.patterns.front.controller.commands; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpSession; +import java.io.IOException; + +public class LogoutCommand extends FrontCommand { + @Override + public void process() throws ServletException, IOException { + super.process(); + HttpSession session = request.getSession(false); + session.removeAttribute("username"); + session.removeAttribute("order"); + response.sendRedirect("index?command=Home"); + } +} diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/commands/OrderCommand.java b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/commands/OrderCommand.java new file mode 100644 index 0000000000..91ed909a77 --- /dev/null +++ b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/commands/OrderCommand.java @@ -0,0 +1,33 @@ +package com.baeldung.enterprise.patterns.front.controller.commands; + +import com.baeldung.enterprise.patterns.front.controller.data.Book; +import com.baeldung.enterprise.patterns.front.controller.data.Bookshelf; +import com.baeldung.enterprise.patterns.front.controller.data.Order; +import com.baeldung.enterprise.patterns.front.controller.data.OrderImpl; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpSession; +import java.io.IOException; + +public class OrderCommand extends FrontCommand { + @Override + public void process() throws ServletException, IOException { + super.process(); + if (request.getMethod().equals("POST")) { + HttpSession session = request.getSession(false); + Order order = (Order) session.getAttribute("order"); + if (order == null) { + String username = (String) session.getAttribute("username"); + order = new OrderImpl(username); + } + Bookshelf bookshelf = (Bookshelf) request.getServletContext() + .getAttribute("bookshelf"); + String isbn = request.getParameter("isbn"); + Integer quantity = Integer.parseInt(request.getParameter("quantity")); + Book book = bookshelf.get(isbn); + order.add(book, quantity); + session.setAttribute("order", order); + response.sendRedirect(String.format("index?command=Show&isbn=%s", isbn)); + } + } +} diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/commands/SearchCommand.java b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/commands/SearchCommand.java index 93dac4b363..517092508a 100644 --- a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/commands/SearchCommand.java +++ b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/commands/SearchCommand.java @@ -1,19 +1,22 @@ package com.baeldung.enterprise.patterns.front.controller.commands; import com.baeldung.enterprise.patterns.front.controller.data.Book; -import com.baeldung.enterprise.patterns.front.controller.data.BookshelfImpl; +import com.baeldung.enterprise.patterns.front.controller.data.Bookshelf; import javax.servlet.ServletException; import java.io.IOException; +import java.util.List; public class SearchCommand extends FrontCommand { @Override public void process() throws ServletException, IOException { super.process(); - Book book = new BookshelfImpl().getInstance() - .findByTitle(request.getParameter("title")); - if (book != null) { - request.setAttribute("book", book); + Bookshelf bookshelf = (Bookshelf) request.getServletContext() + .getAttribute("bookshelf"); + String q = request.getParameter("q"); + List books = bookshelf.find(q); + if (books.size() > 0) { + request.setAttribute("books", books); forward("book-found"); } else { forward("book-notfound"); diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/commands/ShowCommand.java b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/commands/ShowCommand.java new file mode 100644 index 0000000000..eb615f075d --- /dev/null +++ b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/commands/ShowCommand.java @@ -0,0 +1,21 @@ +package com.baeldung.enterprise.patterns.front.controller.commands; + +import com.baeldung.enterprise.patterns.front.controller.data.Book; +import com.baeldung.enterprise.patterns.front.controller.data.Bookshelf; + +import javax.servlet.ServletException; +import java.io.IOException; +import java.util.Collections; + +public class ShowCommand extends FrontCommand { + @Override + public void process() throws ServletException, IOException { + super.process(); + Bookshelf bookshelf = (Bookshelf) request.getServletContext() + .getAttribute("bookshelf"); + String title = request.getParameter("isbn"); + Book book = bookshelf.get(title); + request.setAttribute("books", Collections.singletonList(book)); + forward("book-found"); + } +} diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/commands/UnknownCommand.java b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/commands/UnknownCommand.java index 90103c8f42..439ae0c8da 100644 --- a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/commands/UnknownCommand.java +++ b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/commands/UnknownCommand.java @@ -6,6 +6,7 @@ import java.io.IOException; public class UnknownCommand extends FrontCommand { @Override public void process() throws ServletException, IOException { + super.process(); forward("unknown"); } } diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/data/Book.java b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/data/Book.java index abadcc0d76..472ba4c2fa 100644 --- a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/data/Book.java +++ b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/data/Book.java @@ -1,6 +1,10 @@ package com.baeldung.enterprise.patterns.front.controller.data; public interface Book { + String getIsbn(); + + void setIsbn(String isbn); + String getAuthor(); void setAuthor(String author); diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/data/BookImpl.java b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/data/BookImpl.java index b270bc7985..c633607f41 100644 --- a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/data/BookImpl.java +++ b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/data/BookImpl.java @@ -1,6 +1,7 @@ package com.baeldung.enterprise.patterns.front.controller.data; public class BookImpl implements Book { + private String isbn; private String author; private String title; private Double price; @@ -8,12 +9,23 @@ public class BookImpl implements Book { public BookImpl() { } - public BookImpl(String author, String title, Double price) { + public BookImpl(String isbn, String author, String title, Double price) { + this.isbn = isbn; this.author = author; this.title = title; this.price = price; } + @Override + public String getIsbn() { + return isbn; + } + + @Override + public void setIsbn(String isbn) { + this.isbn = isbn; + } + @Override public String getAuthor() { return author; diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/data/Bookshelf.java b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/data/Bookshelf.java index 8def45cb69..e479d27d0e 100644 --- a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/data/Bookshelf.java +++ b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/data/Bookshelf.java @@ -1,16 +1,18 @@ package com.baeldung.enterprise.patterns.front.controller.data; +import java.util.List; + public interface Bookshelf { default void init() { - add(new BookImpl("Wilson, Robert Anton & Shea, Robert", "Illuminati", 9.99)); - add(new BookImpl("Fowler, Martin", "Patterns of Enterprise Application Architecture", 27.88)); - add(new BookImpl("Unknown", "Something about German Umlauts (äüö) and ß", 5.49)); + add(new BookImpl("001", "Wilson, Robert Anton & Shea, Robert", "Illuminati", 9.99)); + add(new BookImpl("002", "Fowler, Martin", "Patterns of Enterprise Application Architecture", 27.88)); + add(new BookImpl("003", "Unknown", "Something about German Umlauts (äüö) and ß", 5.49)); } - Bookshelf getInstance(); - boolean add(E book); - Book findByTitle(String title); + Book get(String isbn); + + List find(String q); } diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/data/BookshelfImpl.java b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/data/BookshelfImpl.java index 3862418857..26090acf74 100644 --- a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/data/BookshelfImpl.java +++ b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/data/BookshelfImpl.java @@ -1,24 +1,23 @@ package com.baeldung.enterprise.patterns.front.controller.data; import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; public class BookshelfImpl extends ArrayList implements Bookshelf { - private static Bookshelf INSTANCE; - @Override - public Bookshelf getInstance() { - if (INSTANCE == null) { - INSTANCE = new BookshelfImpl(); - INSTANCE.init(); - } - return INSTANCE; - } - - @Override - public Book findByTitle(String title) { + public Book get(String isbn) { return this.stream() - .filter(book -> book.getTitle().toLowerCase().contains(title.toLowerCase())) + .filter(book -> book.getIsbn().equals(isbn)) .findFirst() .orElse(null); } + + @Override + public List find(String q) { + return this.stream() + .filter(book -> book.getTitle().toLowerCase().contains(q.toLowerCase()) + || book.getAuthor().toLowerCase().contains(q.toLowerCase())) + .collect(Collectors.toList()); + } } diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/data/Order.java b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/data/Order.java new file mode 100644 index 0000000000..2b6b36568a --- /dev/null +++ b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/data/Order.java @@ -0,0 +1,11 @@ +package com.baeldung.enterprise.patterns.front.controller.data; + +import java.util.Map; + +public interface Order { + String getUsername(); + + Map getItems(); + + void add(Book item, Integer quantity); +} diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/data/OrderImpl.java b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/data/OrderImpl.java new file mode 100644 index 0000000000..eb4a6674cc --- /dev/null +++ b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/data/OrderImpl.java @@ -0,0 +1,40 @@ +package com.baeldung.enterprise.patterns.front.controller.data; + +import java.util.HashMap; +import java.util.Map; + +public class OrderImpl implements Order { + private String username; + private Map items = new HashMap<>(); + + public OrderImpl(String username) { + this.username = username; + } + + @Override + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + @Override + public Map getItems() { + return items; + } + + public void setItems(Map items) { + this.items = items; + } + + @Override + public void add(Book item, Integer quantity) { + Integer q = 0; + if (this.items.containsKey(item)) { + q = this.items.get(item); + } + this.items.put(item, quantity + q); + } +} diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/filters/AuthenticationFilter.java b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/filters/AuthenticationFilter.java index 66f9887980..2d43116faa 100644 --- a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/filters/AuthenticationFilter.java +++ b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/filters/AuthenticationFilter.java @@ -29,10 +29,10 @@ public class AuthenticationFilter extends BaseFilter { HttpServletResponse httpServletResponse = (HttpServletResponse) response; HttpSession session = httpServletRequest.getSession(false); if (session == null || session.getAttribute("username") == null) { + callback.intercept(); FrontCommand command = new LoginCommand(); command.init(httpServletRequest, httpServletResponse); command.process(); - callback.intercept(); } else { chain.doFilter(request, response); } diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/filters/FilterManager.java b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/filters/FilterManager.java index efa8511f2a..e374b241c4 100644 --- a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/filters/FilterManager.java +++ b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/filters/FilterManager.java @@ -14,7 +14,7 @@ public class FilterManager { ) throws ServletException, IOException { FilterChain filterChain = new FilterChainImpl( new AuthenticationFilter(callback), - new AuditFilter() + new VisitorCounterFilter() ); filterChain.doFilter(request, response); } diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/filters/LoggingFilter.java b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/filters/LoggingFilter.java index 089a7807cf..8617fba581 100644 --- a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/filters/LoggingFilter.java +++ b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/filters/LoggingFilter.java @@ -24,16 +24,10 @@ public class LoggingFilter extends BaseFilter { chain.doFilter(request, response); HttpServletRequest httpServletRequest = (HttpServletRequest) request; String username = (String) httpServletRequest.getAttribute("username"); - if (username != null && username.length() > 0) { - username = username.concat("@"); - } else { - username = ""; + if (username == null) { + username = "guest"; } - String intro = "Request"; - if (username.length() > 0) { - intro = "Authenticated request"; - } - log.info("{} from '{}{}': {}?{}", intro, username, request.getRemoteAddr(), + log.info("Request from '{}@{}': {}?{}", username, request.getRemoteAddr(), httpServletRequest.getRequestURI(), request.getParameterMap()); } } diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/webapp/WEB-INF/jsp/book-found.jsp b/enterprise-patterns/intercepting-filter-pattern/src/main/webapp/WEB-INF/jsp/book-found.jsp index 36f94b0933..5a03fe92ad 100644 --- a/enterprise-patterns/intercepting-filter-pattern/src/main/webapp/WEB-INF/jsp/book-found.jsp +++ b/enterprise-patterns/intercepting-filter-pattern/src/main/webapp/WEB-INF/jsp/book-found.jsp @@ -1,13 +1,24 @@ +<%@ page import="com.baeldung.enterprise.patterns.front.controller.data.Book" %> +<%@ page import="java.util.List" %> Bookshelf: Title found -

Our Bookshelf contains this title:

-

${book.getTitle()}

-

Author: ${book.getAuthor()}

- - <%@include file="visitor-counter.jsp"%> +

Our Bookshelf contains following titles:

+ <% for (Book book : (List) request.getAttribute("books")) { %> +

<%= book.getTitle() %>

+

Author: <%= book.getAuthor() %>

+
+ <% } %> + <%@ include file="shopping-cart-hint.jsp"%> + <%@ include file="visitor-counter.jsp"%> diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/webapp/WEB-INF/jsp/book-notfound.jsp b/enterprise-patterns/intercepting-filter-pattern/src/main/webapp/WEB-INF/jsp/book-notfound.jsp index 02d1307e00..284b1e4759 100644 --- a/enterprise-patterns/intercepting-filter-pattern/src/main/webapp/WEB-INF/jsp/book-notfound.jsp +++ b/enterprise-patterns/intercepting-filter-pattern/src/main/webapp/WEB-INF/jsp/book-notfound.jsp @@ -1,11 +1,11 @@ - - Bookshelf: Title not found - + + Bookshelf: Title not found +

Our Bookshelf doesn't contains this title:

-

${param.get("title")}

- <%@include file="visitor-counter.jsp"%> +

<%= request.getParameter("q") %>

+ <%@ include file="visitor-counter.jsp"%> diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/webapp/WEB-INF/jsp/home.jsp b/enterprise-patterns/intercepting-filter-pattern/src/main/webapp/WEB-INF/jsp/home.jsp new file mode 100644 index 0000000000..f892738c63 --- /dev/null +++ b/enterprise-patterns/intercepting-filter-pattern/src/main/webapp/WEB-INF/jsp/home.jsp @@ -0,0 +1,27 @@ +<%@ page import="com.baeldung.enterprise.patterns.front.controller.data.Book" %> +<%@ page import="java.util.List" %> + + + + Bookshelf: Home + + +
+ + +
+ <% if (request.getParameter("message") != null) { %> +

<%= request.getParameter("message") %>

+ <% } else { %> +

Welcome to the Bookshelf!

+ <% } %> + <% for (Book book : (List) request.getAttribute("books")) { %> +
+

<%= book.getAuthor() %>:

+

<%= book.getTitle() %>

+ More... + <% } %> + <%@ include file="shopping-cart-hint.jsp"%> + <%@ include file="visitor-counter.jsp"%> + + diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/webapp/WEB-INF/jsp/login.jsp b/enterprise-patterns/intercepting-filter-pattern/src/main/webapp/WEB-INF/jsp/login.jsp index a1609ecaff..6983fba949 100644 --- a/enterprise-patterns/intercepting-filter-pattern/src/main/webapp/WEB-INF/jsp/login.jsp +++ b/enterprise-patterns/intercepting-filter-pattern/src/main/webapp/WEB-INF/jsp/login.jsp @@ -6,10 +6,11 @@

Please input a username:

Login

-
+ - + ">
+ <%@ include file="visitor-counter.jsp" %> diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/webapp/WEB-INF/jsp/shopping-cart-hint.jsp b/enterprise-patterns/intercepting-filter-pattern/src/main/webapp/WEB-INF/jsp/shopping-cart-hint.jsp new file mode 100644 index 0000000000..5b7c1d9849 --- /dev/null +++ b/enterprise-patterns/intercepting-filter-pattern/src/main/webapp/WEB-INF/jsp/shopping-cart-hint.jsp @@ -0,0 +1,16 @@ +<%@ page import="com.baeldung.enterprise.patterns.front.controller.data.Order" %> +<% if (session != null && session.getAttribute("order") != null) { %> + <% Order order = ((Order) session.getAttribute("order")); %> + <% if (order != null && order.getItems().size() > 0) { %> +
+

+ Your shopping cart is holding + <% if (order.getItems().size() == 1) { %> + 1 item. + <% } else { %> + <%= (order.getItems().size()) %> items. + <% } %> + Checkout +

+ <% } %> +<% } %> diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/webapp/WEB-INF/jsp/shopping-cart.jsp b/enterprise-patterns/intercepting-filter-pattern/src/main/webapp/WEB-INF/jsp/shopping-cart.jsp new file mode 100644 index 0000000000..31b25968ee --- /dev/null +++ b/enterprise-patterns/intercepting-filter-pattern/src/main/webapp/WEB-INF/jsp/shopping-cart.jsp @@ -0,0 +1,29 @@ +<%@ page import="com.baeldung.enterprise.patterns.front.controller.data.Book" %> +<%@ page import="com.baeldung.enterprise.patterns.front.controller.data.Order" %> +<%@ page import="java.util.Map" %> + + + + Bookshelf: Checkout + + +

You are about to buy the following books:

+

Shopping Cart

+ <% Order order = (Order) session.getAttribute("order"); %> +
    + <% for (Map.Entry entry : order.getItems().entrySet()) { %> +
  • + <%= entry.getValue() %> x <%= entry.getKey().getPrice() %> +

    <%= entry.getKey().getTitle() %>

    + by <%= entry.getKey().getAuthor()%> +
  • + <% } %> +
+

+ Total: <%= request.getAttribute("total") %> +

+
+ +
+ + diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/webapp/WEB-INF/jsp/unknown.jsp b/enterprise-patterns/intercepting-filter-pattern/src/main/webapp/WEB-INF/jsp/unknown.jsp index 010cb7ffb4..b52b2de8d5 100644 --- a/enterprise-patterns/intercepting-filter-pattern/src/main/webapp/WEB-INF/jsp/unknown.jsp +++ b/enterprise-patterns/intercepting-filter-pattern/src/main/webapp/WEB-INF/jsp/unknown.jsp @@ -5,6 +5,5 @@

Sorry, this command is not known!

- <%@include file="visitor-counter.jsp"%> diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/webapp/WEB-INF/jsp/visitor-counter.jsp b/enterprise-patterns/intercepting-filter-pattern/src/main/webapp/WEB-INF/jsp/visitor-counter.jsp index 7dc1d78196..397364e2b3 100644 --- a/enterprise-patterns/intercepting-filter-pattern/src/main/webapp/WEB-INF/jsp/visitor-counter.jsp +++ b/enterprise-patterns/intercepting-filter-pattern/src/main/webapp/WEB-INF/jsp/visitor-counter.jsp @@ -1,2 +1,5 @@ -
-

You are visitor #${counter}!

+<% Integer counter = (Integer) request.getAttribute("counter"); %> +<% if (counter != null && counter > 0) { %> +
+

You are visitor #<%= counter %>. Logout

+<% } %> From dcc1889909506442a064a578405da4fe55ba5144 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20R=C3=A4del?= Date: Sat, 1 Oct 2016 04:29:36 +0200 Subject: [PATCH 121/215] BAEL-325: Added intercepting filters. --- .../FrontControllerServlet.java | 0 .../commands/CheckoutCommand.java | 0 .../commands/FrontCommand.java | 0 .../commands/HomeCommand.java | 0 .../commands/LoginCommand.java | 0 .../commands/LogoutCommand.java | 0 .../commands/OrderCommand.java | 0 .../commands/SearchCommand.java | 0 .../commands/ShowCommand.java | 0 .../commands/UnknownCommand.java | 0 .../controller => patterns}/data/Book.java | 0 .../data/BookImpl.java | 0 .../data/Bookshelf.java | 0 .../data/BookshelfImpl.java | 0 .../controller => patterns}/data/Order.java | 0 .../data/OrderImpl.java | 0 .../filters/AuthenticationFilter.java | 0 .../filters/BaseFilter.java | 0 .../filters/EncodingFilter.java | 0 .../filters/FilterChainImpl.java | 0 .../filters/FilterManager.java | 0 .../filters/LoggingFilter.java | 0 .../filters/OnIntercept.java | 0 patterns/pom.xml | 32 ++++++--- .../controller/FrontControllerServlet.java | 38 ----------- .../controller/commands/FrontCommand.java | 32 --------- .../controller/commands/SearchCommand.java | 21 ------ .../front/controller/data/Bookshelf.java | 15 ----- .../front/controller/data/BookshelfImpl.java | 24 ------- .../patterns/FrontControllerServlet.java | 66 +++++++++++++++++++ .../patterns/commands/CheckoutCommand.java | 27 ++++++++ .../patterns/commands/FrontCommand.java | 43 ++++++++++++ .../patterns/commands/HomeCommand.java | 17 +++++ .../patterns/commands/LoginCommand.java | 24 +++++++ .../patterns/commands/LogoutCommand.java | 16 +++++ .../patterns/commands/OrderCommand.java | 33 ++++++++++ .../patterns/commands/SearchCommand.java | 25 +++++++ .../patterns/commands/ShowCommand.java | 21 ++++++ .../commands/UnknownCommand.java | 3 +- .../java/com/baeldung/patterns/data/Book.java | 19 ++++++ .../Book.java => patterns/data/BookImpl.java} | 26 ++++++-- .../com/baeldung/patterns/data/Bookshelf.java | 18 +++++ .../baeldung/patterns/data/BookshelfImpl.java | 23 +++++++ .../com/baeldung/patterns/data/Order.java | 11 ++++ .../com/baeldung/patterns/data/OrderImpl.java | 40 +++++++++++ .../filters/AuthenticationFilter.java | 40 +++++++++++ .../baeldung/patterns/filters/BaseFilter.java | 25 +++++++ .../patterns/filters/EncodingFilter.java | 30 +++++++++ .../patterns/filters/FilterChainImpl.java | 28 ++++++++ .../patterns/filters/FilterManager.java | 21 ++++++ .../patterns/filters/LoggingFilter.java | 33 ++++++++++ .../patterns/filters/OnIntercept.java | 5 ++ .../filters/VisitorCounterFilter.java | 30 +++++++++ .../main/webapp/WEB-INF/jsp/book-found.jsp | 20 ++++-- .../main/webapp/WEB-INF/jsp/book-notfound.jsp | 9 +-- patterns/src/main/webapp/WEB-INF/jsp/home.jsp | 27 ++++++++ .../src/main/webapp/WEB-INF/jsp/login.jsp | 16 +++++ .../webapp/WEB-INF/jsp/shopping-cart-hint.jsp | 16 +++++ .../main/webapp/WEB-INF/jsp/shopping-cart.jsp | 29 ++++++++ .../webapp/WEB-INF/jsp/visitor-counter.jsp | 5 ++ patterns/src/main/webapp/WEB-INF/web.xml | 15 ----- 61 files changed, 756 insertions(+), 167 deletions(-) rename enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/{enterprise/patterns/front/controller => patterns}/FrontControllerServlet.java (100%) rename enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/{enterprise/patterns/front/controller => patterns}/commands/CheckoutCommand.java (100%) rename enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/{enterprise/patterns/front/controller => patterns}/commands/FrontCommand.java (100%) rename enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/{enterprise/patterns/front/controller => patterns}/commands/HomeCommand.java (100%) rename enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/{enterprise/patterns/front/controller => patterns}/commands/LoginCommand.java (100%) rename enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/{enterprise/patterns/front/controller => patterns}/commands/LogoutCommand.java (100%) rename enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/{enterprise/patterns/front/controller => patterns}/commands/OrderCommand.java (100%) rename enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/{enterprise/patterns/front/controller => patterns}/commands/SearchCommand.java (100%) rename enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/{enterprise/patterns/front/controller => patterns}/commands/ShowCommand.java (100%) rename enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/{enterprise/patterns/front/controller => patterns}/commands/UnknownCommand.java (100%) rename enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/{enterprise/patterns/front/controller => patterns}/data/Book.java (100%) rename enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/{enterprise/patterns/front/controller => patterns}/data/BookImpl.java (100%) rename enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/{enterprise/patterns/front/controller => patterns}/data/Bookshelf.java (100%) rename enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/{enterprise/patterns/front/controller => patterns}/data/BookshelfImpl.java (100%) rename enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/{enterprise/patterns/front/controller => patterns}/data/Order.java (100%) rename enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/{enterprise/patterns/front/controller => patterns}/data/OrderImpl.java (100%) rename enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/{enterprise/patterns/front/controller => patterns}/filters/AuthenticationFilter.java (100%) rename enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/{enterprise/patterns/front/controller => patterns}/filters/BaseFilter.java (100%) rename enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/{enterprise/patterns/front/controller => patterns}/filters/EncodingFilter.java (100%) rename enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/{enterprise/patterns/front/controller => patterns}/filters/FilterChainImpl.java (100%) rename enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/{enterprise/patterns/front/controller => patterns}/filters/FilterManager.java (100%) rename enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/{enterprise/patterns/front/controller => patterns}/filters/LoggingFilter.java (100%) rename enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/{enterprise/patterns/front/controller => patterns}/filters/OnIntercept.java (100%) delete mode 100644 patterns/src/main/java/com/baeldung/enterprise/patterns/front/controller/FrontControllerServlet.java delete mode 100644 patterns/src/main/java/com/baeldung/enterprise/patterns/front/controller/commands/FrontCommand.java delete mode 100644 patterns/src/main/java/com/baeldung/enterprise/patterns/front/controller/commands/SearchCommand.java delete mode 100644 patterns/src/main/java/com/baeldung/enterprise/patterns/front/controller/data/Bookshelf.java delete mode 100644 patterns/src/main/java/com/baeldung/enterprise/patterns/front/controller/data/BookshelfImpl.java create mode 100644 patterns/src/main/java/com/baeldung/patterns/FrontControllerServlet.java create mode 100644 patterns/src/main/java/com/baeldung/patterns/commands/CheckoutCommand.java create mode 100644 patterns/src/main/java/com/baeldung/patterns/commands/FrontCommand.java create mode 100644 patterns/src/main/java/com/baeldung/patterns/commands/HomeCommand.java create mode 100644 patterns/src/main/java/com/baeldung/patterns/commands/LoginCommand.java create mode 100644 patterns/src/main/java/com/baeldung/patterns/commands/LogoutCommand.java create mode 100644 patterns/src/main/java/com/baeldung/patterns/commands/OrderCommand.java create mode 100644 patterns/src/main/java/com/baeldung/patterns/commands/SearchCommand.java create mode 100644 patterns/src/main/java/com/baeldung/patterns/commands/ShowCommand.java rename patterns/src/main/java/com/baeldung/{enterprise/patterns/front/controller => patterns}/commands/UnknownCommand.java (77%) create mode 100644 patterns/src/main/java/com/baeldung/patterns/data/Book.java rename patterns/src/main/java/com/baeldung/{enterprise/patterns/front/controller/data/Book.java => patterns/data/BookImpl.java} (55%) create mode 100644 patterns/src/main/java/com/baeldung/patterns/data/Bookshelf.java create mode 100644 patterns/src/main/java/com/baeldung/patterns/data/BookshelfImpl.java create mode 100644 patterns/src/main/java/com/baeldung/patterns/data/Order.java create mode 100644 patterns/src/main/java/com/baeldung/patterns/data/OrderImpl.java create mode 100644 patterns/src/main/java/com/baeldung/patterns/filters/AuthenticationFilter.java create mode 100644 patterns/src/main/java/com/baeldung/patterns/filters/BaseFilter.java create mode 100644 patterns/src/main/java/com/baeldung/patterns/filters/EncodingFilter.java create mode 100644 patterns/src/main/java/com/baeldung/patterns/filters/FilterChainImpl.java create mode 100644 patterns/src/main/java/com/baeldung/patterns/filters/FilterManager.java create mode 100644 patterns/src/main/java/com/baeldung/patterns/filters/LoggingFilter.java create mode 100644 patterns/src/main/java/com/baeldung/patterns/filters/OnIntercept.java create mode 100644 patterns/src/main/java/com/baeldung/patterns/filters/VisitorCounterFilter.java create mode 100644 patterns/src/main/webapp/WEB-INF/jsp/home.jsp create mode 100644 patterns/src/main/webapp/WEB-INF/jsp/login.jsp create mode 100644 patterns/src/main/webapp/WEB-INF/jsp/shopping-cart-hint.jsp create mode 100644 patterns/src/main/webapp/WEB-INF/jsp/shopping-cart.jsp create mode 100644 patterns/src/main/webapp/WEB-INF/jsp/visitor-counter.jsp delete mode 100644 patterns/src/main/webapp/WEB-INF/web.xml diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/FrontControllerServlet.java b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/FrontControllerServlet.java similarity index 100% rename from enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/FrontControllerServlet.java rename to enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/FrontControllerServlet.java diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/commands/CheckoutCommand.java b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/commands/CheckoutCommand.java similarity index 100% rename from enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/commands/CheckoutCommand.java rename to enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/commands/CheckoutCommand.java diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/commands/FrontCommand.java b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/commands/FrontCommand.java similarity index 100% rename from enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/commands/FrontCommand.java rename to enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/commands/FrontCommand.java diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/commands/HomeCommand.java b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/commands/HomeCommand.java similarity index 100% rename from enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/commands/HomeCommand.java rename to enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/commands/HomeCommand.java diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/commands/LoginCommand.java b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/commands/LoginCommand.java similarity index 100% rename from enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/commands/LoginCommand.java rename to enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/commands/LoginCommand.java diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/commands/LogoutCommand.java b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/commands/LogoutCommand.java similarity index 100% rename from enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/commands/LogoutCommand.java rename to enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/commands/LogoutCommand.java diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/commands/OrderCommand.java b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/commands/OrderCommand.java similarity index 100% rename from enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/commands/OrderCommand.java rename to enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/commands/OrderCommand.java diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/commands/SearchCommand.java b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/commands/SearchCommand.java similarity index 100% rename from enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/commands/SearchCommand.java rename to enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/commands/SearchCommand.java diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/commands/ShowCommand.java b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/commands/ShowCommand.java similarity index 100% rename from enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/commands/ShowCommand.java rename to enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/commands/ShowCommand.java diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/commands/UnknownCommand.java b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/commands/UnknownCommand.java similarity index 100% rename from enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/commands/UnknownCommand.java rename to enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/commands/UnknownCommand.java diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/data/Book.java b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/data/Book.java similarity index 100% rename from enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/data/Book.java rename to enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/data/Book.java diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/data/BookImpl.java b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/data/BookImpl.java similarity index 100% rename from enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/data/BookImpl.java rename to enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/data/BookImpl.java diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/data/Bookshelf.java b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/data/Bookshelf.java similarity index 100% rename from enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/data/Bookshelf.java rename to enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/data/Bookshelf.java diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/data/BookshelfImpl.java b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/data/BookshelfImpl.java similarity index 100% rename from enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/data/BookshelfImpl.java rename to enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/data/BookshelfImpl.java diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/data/Order.java b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/data/Order.java similarity index 100% rename from enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/data/Order.java rename to enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/data/Order.java diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/data/OrderImpl.java b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/data/OrderImpl.java similarity index 100% rename from enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/data/OrderImpl.java rename to enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/data/OrderImpl.java diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/filters/AuthenticationFilter.java b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/filters/AuthenticationFilter.java similarity index 100% rename from enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/filters/AuthenticationFilter.java rename to enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/filters/AuthenticationFilter.java diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/filters/BaseFilter.java b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/filters/BaseFilter.java similarity index 100% rename from enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/filters/BaseFilter.java rename to enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/filters/BaseFilter.java diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/filters/EncodingFilter.java b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/filters/EncodingFilter.java similarity index 100% rename from enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/filters/EncodingFilter.java rename to enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/filters/EncodingFilter.java diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/filters/FilterChainImpl.java b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/filters/FilterChainImpl.java similarity index 100% rename from enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/filters/FilterChainImpl.java rename to enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/filters/FilterChainImpl.java diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/filters/FilterManager.java b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/filters/FilterManager.java similarity index 100% rename from enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/filters/FilterManager.java rename to enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/filters/FilterManager.java diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/filters/LoggingFilter.java b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/filters/LoggingFilter.java similarity index 100% rename from enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/filters/LoggingFilter.java rename to enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/filters/LoggingFilter.java diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/filters/OnIntercept.java b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/filters/OnIntercept.java similarity index 100% rename from enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/filters/OnIntercept.java rename to enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/filters/OnIntercept.java diff --git a/patterns/pom.xml b/patterns/pom.xml index 7c23b6f55d..1b7340304b 100644 --- a/patterns/pom.xml +++ b/patterns/pom.xml @@ -4,7 +4,13 @@ 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.enterprise.patterns + + com.baeldung + parent-modules + 1.0.0-SNAPSHOT + + + com.baeldung.patterns patterns war @@ -15,14 +21,14 @@ 3.1.0 provided + + org.slf4j + slf4j-api + 1.7.21 + provided + - - com.baeldung - parent-modules - 1.0.0-SNAPSHOT - - @@ -34,13 +40,21 @@ 1.8 + + org.apache.maven.plugins + maven-war-plugin + 3.0.0 + + false + + org.eclipse.jetty jetty-maven-plugin - 9.4.0.M1 + 9.3.11.v20160721 - /front-controller + / diff --git a/patterns/src/main/java/com/baeldung/enterprise/patterns/front/controller/FrontControllerServlet.java b/patterns/src/main/java/com/baeldung/enterprise/patterns/front/controller/FrontControllerServlet.java deleted file mode 100644 index a8962f5108..0000000000 --- a/patterns/src/main/java/com/baeldung/enterprise/patterns/front/controller/FrontControllerServlet.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.baeldung.enterprise.patterns.front.controller; - -import com.baeldung.enterprise.patterns.front.controller.commands.FrontCommand; -import com.baeldung.enterprise.patterns.front.controller.commands.UnknownCommand; - -import javax.servlet.ServletException; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; - -public class FrontControllerServlet extends HttpServlet { - @Override - protected void doGet( - HttpServletRequest request, - HttpServletResponse response - ) throws ServletException, IOException { - FrontCommand command = getCommand(request); - command.init(getServletContext(), request, response); - command.process(); - } - - private FrontCommand getCommand(HttpServletRequest request) { - try { - Class type = Class.forName( - String.format( - "com.baeldung.enterprise.patterns.front.controller.commands.%sCommand", - request.getParameter("command") - ) - ); - return (FrontCommand) type - .asSubclass(FrontCommand.class) - .newInstance(); - } catch (Exception e) { - return new UnknownCommand(); - } - } -} diff --git a/patterns/src/main/java/com/baeldung/enterprise/patterns/front/controller/commands/FrontCommand.java b/patterns/src/main/java/com/baeldung/enterprise/patterns/front/controller/commands/FrontCommand.java deleted file mode 100644 index 12a008faeb..0000000000 --- a/patterns/src/main/java/com/baeldung/enterprise/patterns/front/controller/commands/FrontCommand.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.baeldung.enterprise.patterns.front.controller.commands; - -import javax.servlet.RequestDispatcher; -import javax.servlet.ServletContext; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; - -public abstract class FrontCommand { - protected ServletContext context; - protected HttpServletRequest request; - protected HttpServletResponse response; - - public void init( - ServletContext servletContext, - HttpServletRequest servletRequest, - HttpServletResponse servletResponse - ) { - this.context = servletContext; - this.request = servletRequest; - this.response = servletResponse; - } - - public abstract void process() throws ServletException, IOException; - - protected void forward(String target) throws ServletException, IOException { - target = String.format("/WEB-INF/jsp/%s.jsp", target); - RequestDispatcher dispatcher = context.getRequestDispatcher(target); - dispatcher.forward(request, response); - } -} diff --git a/patterns/src/main/java/com/baeldung/enterprise/patterns/front/controller/commands/SearchCommand.java b/patterns/src/main/java/com/baeldung/enterprise/patterns/front/controller/commands/SearchCommand.java deleted file mode 100644 index 0c5bd64bbc..0000000000 --- a/patterns/src/main/java/com/baeldung/enterprise/patterns/front/controller/commands/SearchCommand.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.baeldung.enterprise.patterns.front.controller.commands; - -import com.baeldung.enterprise.patterns.front.controller.data.Book; -import com.baeldung.enterprise.patterns.front.controller.data.BookshelfImpl; - -import javax.servlet.ServletException; -import java.io.IOException; - -public class SearchCommand extends FrontCommand { - @Override - public void process() throws ServletException, IOException { - Book book = new BookshelfImpl().getInstance() - .findByTitle(request.getParameter("title")); - if (book != null) { - request.setAttribute("book", book); - forward("book-found"); - } else { - forward("book-notfound"); - } - } -} diff --git a/patterns/src/main/java/com/baeldung/enterprise/patterns/front/controller/data/Bookshelf.java b/patterns/src/main/java/com/baeldung/enterprise/patterns/front/controller/data/Bookshelf.java deleted file mode 100644 index 524e000bd9..0000000000 --- a/patterns/src/main/java/com/baeldung/enterprise/patterns/front/controller/data/Bookshelf.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.baeldung.enterprise.patterns.front.controller.data; - -public interface Bookshelf { - - default void init() { - add(new Book("Wilson, Robert Anton & Shea, Robert", "Illuminati", 9.99)); - add(new Book("Fowler, Martin", "Patterns of Enterprise Application Architecture", 27.88)); - } - - Bookshelf getInstance(); - - boolean add(E book); - - Book findByTitle(String title); -} diff --git a/patterns/src/main/java/com/baeldung/enterprise/patterns/front/controller/data/BookshelfImpl.java b/patterns/src/main/java/com/baeldung/enterprise/patterns/front/controller/data/BookshelfImpl.java deleted file mode 100644 index 3862418857..0000000000 --- a/patterns/src/main/java/com/baeldung/enterprise/patterns/front/controller/data/BookshelfImpl.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.baeldung.enterprise.patterns.front.controller.data; - -import java.util.ArrayList; - -public class BookshelfImpl extends ArrayList implements Bookshelf { - private static Bookshelf INSTANCE; - - @Override - public Bookshelf getInstance() { - if (INSTANCE == null) { - INSTANCE = new BookshelfImpl(); - INSTANCE.init(); - } - return INSTANCE; - } - - @Override - public Book findByTitle(String title) { - return this.stream() - .filter(book -> book.getTitle().toLowerCase().contains(title.toLowerCase())) - .findFirst() - .orElse(null); - } -} diff --git a/patterns/src/main/java/com/baeldung/patterns/FrontControllerServlet.java b/patterns/src/main/java/com/baeldung/patterns/FrontControllerServlet.java new file mode 100644 index 0000000000..beba1d66e5 --- /dev/null +++ b/patterns/src/main/java/com/baeldung/patterns/FrontControllerServlet.java @@ -0,0 +1,66 @@ +package com.baeldung.patterns; + +import com.baeldung.patterns.commands.FrontCommand; +import com.baeldung.patterns.commands.UnknownCommand; +import com.baeldung.patterns.data.Bookshelf; +import com.baeldung.patterns.data.BookshelfImpl; + +import javax.servlet.ServletConfig; +import javax.servlet.ServletException; +import javax.servlet.annotation.WebServlet; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; + +@WebServlet(name = "front-controller", urlPatterns = "/index") +public class FrontControllerServlet extends HttpServlet { + @Override + public void init(ServletConfig config) throws ServletException { + super.init(config); + Bookshelf bookshelf = new BookshelfImpl(); + bookshelf.init(); + getServletContext().setAttribute("bookshelf", bookshelf); + } + + @Override + protected void doGet( + HttpServletRequest request, + HttpServletResponse response + ) throws ServletException, IOException { + doCommand(request, response); + } + + @Override + protected void doPost( + HttpServletRequest request, + HttpServletResponse response + ) throws ServletException, IOException { + doCommand(request, response); + } + + private void doCommand( + HttpServletRequest request, + HttpServletResponse response + ) throws ServletException, IOException { + FrontCommand command = getCommand(request); + command.init(request, response); + command.process(); + } + + private FrontCommand getCommand(HttpServletRequest request) { + try { + Class type = Class.forName( + String.format( + "com.baeldung.patterns.commands.%sCommand", + request.getParameter("command") + ) + ); + return (FrontCommand) type + .asSubclass(FrontCommand.class) + .newInstance(); + } catch (Exception e) { + return new UnknownCommand(); + } + } +} diff --git a/patterns/src/main/java/com/baeldung/patterns/commands/CheckoutCommand.java b/patterns/src/main/java/com/baeldung/patterns/commands/CheckoutCommand.java new file mode 100644 index 0000000000..be6dbe84bd --- /dev/null +++ b/patterns/src/main/java/com/baeldung/patterns/commands/CheckoutCommand.java @@ -0,0 +1,27 @@ +package com.baeldung.patterns.commands; + +import com.baeldung.patterns.data.Order; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpSession; +import java.io.IOException; + +public class CheckoutCommand extends FrontCommand { + @Override + public void process() throws ServletException, IOException { + super.process(); + HttpSession session = request.getSession(false); + if (request.getMethod().equals("POST")) { + session.removeAttribute("order"); + response.sendRedirect("index?command=Home&message=Thank you for buying!"); + } else { + Order order = (Order) session.getAttribute("order"); + Double total = order.getItems().entrySet().stream() + .map(entry -> entry.getKey().getPrice() * entry.getValue()) + .reduce((p1, p2) -> p1 + p2) + .orElse(0.00); + request.setAttribute("total", total); + forward("shopping-cart"); + } + } +} diff --git a/patterns/src/main/java/com/baeldung/patterns/commands/FrontCommand.java b/patterns/src/main/java/com/baeldung/patterns/commands/FrontCommand.java new file mode 100644 index 0000000000..efc0ee4612 --- /dev/null +++ b/patterns/src/main/java/com/baeldung/patterns/commands/FrontCommand.java @@ -0,0 +1,43 @@ +package com.baeldung.patterns.commands; + +import com.baeldung.patterns.filters.FilterManager; +import com.baeldung.patterns.filters.OnIntercept; + +import javax.servlet.RequestDispatcher; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; + +public abstract class FrontCommand implements OnIntercept { + protected HttpServletRequest request; + protected HttpServletResponse response; + private boolean intercept; + + public FrontCommand() { + } + + public void init(HttpServletRequest request, HttpServletResponse response) { + this.request = request; + this.response = response; + } + + public void process() throws ServletException, IOException { + FilterManager.process(request, response, this); + } + + public void forward(String target) throws ServletException, IOException { + if (intercept) { + return; + } + String path = String.format("/WEB-INF/jsp/%s.jsp", target); + RequestDispatcher dispatcher = request.getServletContext() + .getRequestDispatcher(path); + dispatcher.forward(request, response); + } + + @Override + public void intercept() { + intercept = true; + } +} diff --git a/patterns/src/main/java/com/baeldung/patterns/commands/HomeCommand.java b/patterns/src/main/java/com/baeldung/patterns/commands/HomeCommand.java new file mode 100644 index 0000000000..f2358400b9 --- /dev/null +++ b/patterns/src/main/java/com/baeldung/patterns/commands/HomeCommand.java @@ -0,0 +1,17 @@ +package com.baeldung.patterns.commands; + +import com.baeldung.patterns.data.Bookshelf; + +import javax.servlet.ServletException; +import java.io.IOException; + +public class HomeCommand extends FrontCommand { + @Override + public void process() throws ServletException, IOException { + super.process(); + Bookshelf bookshelf = (Bookshelf) request.getServletContext() + .getAttribute("bookshelf"); + request.setAttribute("books", bookshelf); + forward("home"); + } +} diff --git a/patterns/src/main/java/com/baeldung/patterns/commands/LoginCommand.java b/patterns/src/main/java/com/baeldung/patterns/commands/LoginCommand.java new file mode 100644 index 0000000000..1a7795eb3c --- /dev/null +++ b/patterns/src/main/java/com/baeldung/patterns/commands/LoginCommand.java @@ -0,0 +1,24 @@ +package com.baeldung.patterns.commands; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpSession; +import java.io.IOException; + +public class LoginCommand extends FrontCommand { + @Override + public void process() throws ServletException, IOException { + if (request.getMethod().equals("POST")) { + HttpSession session = request.getSession(true); + session.setAttribute("username", request.getParameter("username")); + response.sendRedirect(request.getParameter("redirect")); + } else { + String queryString = request.getQueryString(); + if (queryString == null) { + queryString = "command=Home"; + } + request.setAttribute("redirect", request.getRequestURL() + .append("?").append(queryString).toString()); + forward("login"); + } + } +} diff --git a/patterns/src/main/java/com/baeldung/patterns/commands/LogoutCommand.java b/patterns/src/main/java/com/baeldung/patterns/commands/LogoutCommand.java new file mode 100644 index 0000000000..82f4e753c9 --- /dev/null +++ b/patterns/src/main/java/com/baeldung/patterns/commands/LogoutCommand.java @@ -0,0 +1,16 @@ +package com.baeldung.patterns.commands; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpSession; +import java.io.IOException; + +public class LogoutCommand extends FrontCommand { + @Override + public void process() throws ServletException, IOException { + super.process(); + HttpSession session = request.getSession(false); + session.removeAttribute("username"); + session.removeAttribute("order"); + response.sendRedirect("index?command=Home"); + } +} diff --git a/patterns/src/main/java/com/baeldung/patterns/commands/OrderCommand.java b/patterns/src/main/java/com/baeldung/patterns/commands/OrderCommand.java new file mode 100644 index 0000000000..5926dfddb5 --- /dev/null +++ b/patterns/src/main/java/com/baeldung/patterns/commands/OrderCommand.java @@ -0,0 +1,33 @@ +package com.baeldung.patterns.commands; + +import com.baeldung.patterns.data.Book; +import com.baeldung.patterns.data.Bookshelf; +import com.baeldung.patterns.data.Order; +import com.baeldung.patterns.data.OrderImpl; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpSession; +import java.io.IOException; + +public class OrderCommand extends FrontCommand { + @Override + public void process() throws ServletException, IOException { + super.process(); + if (request.getMethod().equals("POST")) { + HttpSession session = request.getSession(false); + Order order = (Order) session.getAttribute("order"); + if (order == null) { + String username = (String) session.getAttribute("username"); + order = new OrderImpl(username); + } + Bookshelf bookshelf = (Bookshelf) request.getServletContext() + .getAttribute("bookshelf"); + String isbn = request.getParameter("isbn"); + Integer quantity = Integer.parseInt(request.getParameter("quantity")); + Book book = bookshelf.get(isbn); + order.add(book, quantity); + session.setAttribute("order", order); + response.sendRedirect(String.format("index?command=Show&isbn=%s", isbn)); + } + } +} diff --git a/patterns/src/main/java/com/baeldung/patterns/commands/SearchCommand.java b/patterns/src/main/java/com/baeldung/patterns/commands/SearchCommand.java new file mode 100644 index 0000000000..30e401e83a --- /dev/null +++ b/patterns/src/main/java/com/baeldung/patterns/commands/SearchCommand.java @@ -0,0 +1,25 @@ +package com.baeldung.patterns.commands; + +import com.baeldung.patterns.data.Book; +import com.baeldung.patterns.data.Bookshelf; + +import javax.servlet.ServletException; +import java.io.IOException; +import java.util.List; + +public class SearchCommand extends FrontCommand { + @Override + public void process() throws ServletException, IOException { + super.process(); + Bookshelf bookshelf = (Bookshelf) request.getServletContext() + .getAttribute("bookshelf"); + String q = request.getParameter("q"); + List books = bookshelf.find(q); + if (books.size() > 0) { + request.setAttribute("books", books); + forward("book-found"); + } else { + forward("book-notfound"); + } + } +} diff --git a/patterns/src/main/java/com/baeldung/patterns/commands/ShowCommand.java b/patterns/src/main/java/com/baeldung/patterns/commands/ShowCommand.java new file mode 100644 index 0000000000..3226d9969f --- /dev/null +++ b/patterns/src/main/java/com/baeldung/patterns/commands/ShowCommand.java @@ -0,0 +1,21 @@ +package com.baeldung.patterns.commands; + +import com.baeldung.patterns.data.Book; +import com.baeldung.patterns.data.Bookshelf; + +import javax.servlet.ServletException; +import java.io.IOException; +import java.util.Collections; + +public class ShowCommand extends FrontCommand { + @Override + public void process() throws ServletException, IOException { + super.process(); + Bookshelf bookshelf = (Bookshelf) request.getServletContext() + .getAttribute("bookshelf"); + String title = request.getParameter("isbn"); + Book book = bookshelf.get(title); + request.setAttribute("books", Collections.singletonList(book)); + forward("book-found"); + } +} diff --git a/patterns/src/main/java/com/baeldung/enterprise/patterns/front/controller/commands/UnknownCommand.java b/patterns/src/main/java/com/baeldung/patterns/commands/UnknownCommand.java similarity index 77% rename from patterns/src/main/java/com/baeldung/enterprise/patterns/front/controller/commands/UnknownCommand.java rename to patterns/src/main/java/com/baeldung/patterns/commands/UnknownCommand.java index 90103c8f42..71634e5263 100644 --- a/patterns/src/main/java/com/baeldung/enterprise/patterns/front/controller/commands/UnknownCommand.java +++ b/patterns/src/main/java/com/baeldung/patterns/commands/UnknownCommand.java @@ -1,4 +1,4 @@ -package com.baeldung.enterprise.patterns.front.controller.commands; +package com.baeldung.patterns.commands; import javax.servlet.ServletException; import java.io.IOException; @@ -6,6 +6,7 @@ import java.io.IOException; public class UnknownCommand extends FrontCommand { @Override public void process() throws ServletException, IOException { + super.process(); forward("unknown"); } } diff --git a/patterns/src/main/java/com/baeldung/patterns/data/Book.java b/patterns/src/main/java/com/baeldung/patterns/data/Book.java new file mode 100644 index 0000000000..ab417aa93b --- /dev/null +++ b/patterns/src/main/java/com/baeldung/patterns/data/Book.java @@ -0,0 +1,19 @@ +package com.baeldung.patterns.data; + +public interface Book { + String getIsbn(); + + void setIsbn(String isbn); + + String getAuthor(); + + void setAuthor(String author); + + String getTitle(); + + void setTitle(String title); + + Double getPrice(); + + void setPrice(Double price); +} diff --git a/patterns/src/main/java/com/baeldung/enterprise/patterns/front/controller/data/Book.java b/patterns/src/main/java/com/baeldung/patterns/data/BookImpl.java similarity index 55% rename from patterns/src/main/java/com/baeldung/enterprise/patterns/front/controller/data/Book.java rename to patterns/src/main/java/com/baeldung/patterns/data/BookImpl.java index 634e05c3a0..adecfd1d3a 100644 --- a/patterns/src/main/java/com/baeldung/enterprise/patterns/front/controller/data/Book.java +++ b/patterns/src/main/java/com/baeldung/patterns/data/BookImpl.java @@ -1,39 +1,57 @@ -package com.baeldung.enterprise.patterns.front.controller.data; +package com.baeldung.patterns.data; -public class Book { +public class BookImpl implements Book { + private String isbn; private String author; private String title; private Double price; - public Book() { + public BookImpl() { } - public Book(String author, String title, Double price) { + public BookImpl(String isbn, String author, String title, Double price) { + this.isbn = isbn; this.author = author; this.title = title; this.price = price; } + @Override + public String getIsbn() { + return isbn; + } + + @Override + public void setIsbn(String isbn) { + this.isbn = isbn; + } + + @Override public String getAuthor() { return author; } + @Override public void setAuthor(String author) { this.author = author; } + @Override public String getTitle() { return title; } + @Override public void setTitle(String title) { this.title = title; } + @Override public Double getPrice() { return price; } + @Override public void setPrice(Double price) { this.price = price; } diff --git a/patterns/src/main/java/com/baeldung/patterns/data/Bookshelf.java b/patterns/src/main/java/com/baeldung/patterns/data/Bookshelf.java new file mode 100644 index 0000000000..66a1da9272 --- /dev/null +++ b/patterns/src/main/java/com/baeldung/patterns/data/Bookshelf.java @@ -0,0 +1,18 @@ +package com.baeldung.patterns.data; + +import java.util.List; + +public interface Bookshelf { + + default void init() { + add(new BookImpl("001", "Wilson, Robert Anton & Shea, Robert", "Illuminati", 9.99)); + add(new BookImpl("002", "Fowler, Martin", "Patterns of Enterprise Application Architecture", 27.88)); + add(new BookImpl("003", "Unknown", "Something about German Umlauts (äüö) and ß", 5.49)); + } + + boolean add(E book); + + Book get(String isbn); + + List find(String q); +} diff --git a/patterns/src/main/java/com/baeldung/patterns/data/BookshelfImpl.java b/patterns/src/main/java/com/baeldung/patterns/data/BookshelfImpl.java new file mode 100644 index 0000000000..a7cbda140d --- /dev/null +++ b/patterns/src/main/java/com/baeldung/patterns/data/BookshelfImpl.java @@ -0,0 +1,23 @@ +package com.baeldung.patterns.data; + +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +public class BookshelfImpl extends ArrayList implements Bookshelf { + @Override + public Book get(String isbn) { + return this.stream() + .filter(book -> book.getIsbn().equals(isbn)) + .findFirst() + .orElse(null); + } + + @Override + public List find(String q) { + return this.stream() + .filter(book -> book.getTitle().toLowerCase().contains(q.toLowerCase()) + || book.getAuthor().toLowerCase().contains(q.toLowerCase())) + .collect(Collectors.toList()); + } +} diff --git a/patterns/src/main/java/com/baeldung/patterns/data/Order.java b/patterns/src/main/java/com/baeldung/patterns/data/Order.java new file mode 100644 index 0000000000..6dc67e4e58 --- /dev/null +++ b/patterns/src/main/java/com/baeldung/patterns/data/Order.java @@ -0,0 +1,11 @@ +package com.baeldung.patterns.data; + +import java.util.Map; + +public interface Order { + String getUsername(); + + Map getItems(); + + void add(Book item, Integer quantity); +} diff --git a/patterns/src/main/java/com/baeldung/patterns/data/OrderImpl.java b/patterns/src/main/java/com/baeldung/patterns/data/OrderImpl.java new file mode 100644 index 0000000000..73232ab11c --- /dev/null +++ b/patterns/src/main/java/com/baeldung/patterns/data/OrderImpl.java @@ -0,0 +1,40 @@ +package com.baeldung.patterns.data; + +import java.util.HashMap; +import java.util.Map; + +public class OrderImpl implements Order { + private String username; + private Map items = new HashMap<>(); + + public OrderImpl(String username) { + this.username = username; + } + + @Override + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + @Override + public Map getItems() { + return items; + } + + public void setItems(Map items) { + this.items = items; + } + + @Override + public void add(Book item, Integer quantity) { + Integer q = 0; + if (this.items.containsKey(item)) { + q = this.items.get(item); + } + this.items.put(item, quantity + q); + } +} diff --git a/patterns/src/main/java/com/baeldung/patterns/filters/AuthenticationFilter.java b/patterns/src/main/java/com/baeldung/patterns/filters/AuthenticationFilter.java new file mode 100644 index 0000000000..fa7655434e --- /dev/null +++ b/patterns/src/main/java/com/baeldung/patterns/filters/AuthenticationFilter.java @@ -0,0 +1,40 @@ +package com.baeldung.patterns.filters; + +import com.baeldung.patterns.commands.FrontCommand; +import com.baeldung.patterns.commands.LoginCommand; + +import javax.servlet.FilterChain; +import javax.servlet.ServletException; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; +import java.io.IOException; + +public class AuthenticationFilter extends BaseFilter { + private OnIntercept callback; + + public AuthenticationFilter(OnIntercept callback) { + this.callback = callback; + } + + @Override + public void doFilter( + ServletRequest request, + ServletResponse response, + FilterChain chain + ) throws IOException, ServletException { + HttpServletRequest httpServletRequest = (HttpServletRequest) request; + HttpServletResponse httpServletResponse = (HttpServletResponse) response; + HttpSession session = httpServletRequest.getSession(false); + if (session == null || session.getAttribute("username") == null) { + callback.intercept(); + FrontCommand command = new LoginCommand(); + command.init(httpServletRequest, httpServletResponse); + command.process(); + } else { + chain.doFilter(request, response); + } + } +} diff --git a/patterns/src/main/java/com/baeldung/patterns/filters/BaseFilter.java b/patterns/src/main/java/com/baeldung/patterns/filters/BaseFilter.java new file mode 100644 index 0000000000..670039a62c --- /dev/null +++ b/patterns/src/main/java/com/baeldung/patterns/filters/BaseFilter.java @@ -0,0 +1,25 @@ +package com.baeldung.patterns.filters; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.servlet.Filter; +import javax.servlet.FilterConfig; +import javax.servlet.ServletException; + +public abstract class BaseFilter implements Filter { + private static final Logger log = LoggerFactory.getLogger(BaseFilter.class); + + protected FilterConfig filterConfig; + + @Override + public void init(FilterConfig filterConfig) throws ServletException { + log.info("Initialize filter: {}", getClass().getSimpleName()); + this.filterConfig = filterConfig; + } + + @Override + public void destroy() { + log.info("Destroy filter: {}", getClass().getSimpleName()); + } +} diff --git a/patterns/src/main/java/com/baeldung/patterns/filters/EncodingFilter.java b/patterns/src/main/java/com/baeldung/patterns/filters/EncodingFilter.java new file mode 100644 index 0000000000..1277ca726d --- /dev/null +++ b/patterns/src/main/java/com/baeldung/patterns/filters/EncodingFilter.java @@ -0,0 +1,30 @@ +package com.baeldung.patterns.filters; + +import javax.servlet.*; +import javax.servlet.annotation.WebFilter; +import java.io.IOException; + +@WebFilter(servletNames = "front-controller") +public class EncodingFilter extends BaseFilter { + private String encoding; + + @Override + public void init(FilterConfig filterConfig) throws ServletException { + super.init(filterConfig); + this.encoding = filterConfig.getInitParameter("encoding"); + } + + @Override + public void doFilter( + ServletRequest request, + ServletResponse response, + FilterChain chain + ) throws IOException, ServletException { + String encoding = request.getParameter("encoding"); + if (encoding == null) { + encoding = this.encoding; + } + response.setCharacterEncoding(encoding); + chain.doFilter(request, response); + } +} diff --git a/patterns/src/main/java/com/baeldung/patterns/filters/FilterChainImpl.java b/patterns/src/main/java/com/baeldung/patterns/filters/FilterChainImpl.java new file mode 100644 index 0000000000..d2b64c7d06 --- /dev/null +++ b/patterns/src/main/java/com/baeldung/patterns/filters/FilterChainImpl.java @@ -0,0 +1,28 @@ +package com.baeldung.patterns.filters; + +import javax.servlet.Filter; +import javax.servlet.ServletException; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; +import java.io.IOException; +import java.util.Arrays; +import java.util.Iterator; + +public class FilterChainImpl implements javax.servlet.FilterChain { + private Iterator filters; + + public FilterChainImpl(Filter... filters) { + this.filters = Arrays.asList(filters).iterator(); + } + + @Override + public void doFilter( + ServletRequest request, + ServletResponse response + ) throws IOException, ServletException { + if (filters.hasNext()) { + Filter filter = filters.next(); + filter.doFilter(request, response, this); + } + } +} diff --git a/patterns/src/main/java/com/baeldung/patterns/filters/FilterManager.java b/patterns/src/main/java/com/baeldung/patterns/filters/FilterManager.java new file mode 100644 index 0000000000..ae945107fd --- /dev/null +++ b/patterns/src/main/java/com/baeldung/patterns/filters/FilterManager.java @@ -0,0 +1,21 @@ +package com.baeldung.patterns.filters; + +import javax.servlet.FilterChain; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; + +public class FilterManager { + public static void process( + HttpServletRequest request, + HttpServletResponse response, + OnIntercept callback + ) throws ServletException, IOException { + FilterChain filterChain = new FilterChainImpl( + new AuthenticationFilter(callback), + new VisitorCounterFilter() + ); + filterChain.doFilter(request, response); + } +} diff --git a/patterns/src/main/java/com/baeldung/patterns/filters/LoggingFilter.java b/patterns/src/main/java/com/baeldung/patterns/filters/LoggingFilter.java new file mode 100644 index 0000000000..f6ffc20585 --- /dev/null +++ b/patterns/src/main/java/com/baeldung/patterns/filters/LoggingFilter.java @@ -0,0 +1,33 @@ +package com.baeldung.patterns.filters; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.servlet.FilterChain; +import javax.servlet.ServletException; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; +import javax.servlet.annotation.WebFilter; +import javax.servlet.http.HttpServletRequest; +import java.io.IOException; + +@WebFilter(servletNames = "front-controller") +public class LoggingFilter extends BaseFilter { + private static final Logger log = LoggerFactory.getLogger(LoggingFilter.class); + + @Override + public void doFilter( + ServletRequest request, + ServletResponse response, + FilterChain chain + ) throws IOException, ServletException { + chain.doFilter(request, response); + HttpServletRequest httpServletRequest = (HttpServletRequest) request; + String username = (String) httpServletRequest.getAttribute("username"); + if (username == null) { + username = "guest"; + } + log.info("Request from '{}@{}': {}?{}", username, request.getRemoteAddr(), + httpServletRequest.getRequestURI(), request.getParameterMap()); + } +} diff --git a/patterns/src/main/java/com/baeldung/patterns/filters/OnIntercept.java b/patterns/src/main/java/com/baeldung/patterns/filters/OnIntercept.java new file mode 100644 index 0000000000..73be3509f0 --- /dev/null +++ b/patterns/src/main/java/com/baeldung/patterns/filters/OnIntercept.java @@ -0,0 +1,5 @@ +package com.baeldung.patterns.filters; + +public interface OnIntercept { + void intercept(); +} diff --git a/patterns/src/main/java/com/baeldung/patterns/filters/VisitorCounterFilter.java b/patterns/src/main/java/com/baeldung/patterns/filters/VisitorCounterFilter.java new file mode 100644 index 0000000000..0abfac7cd6 --- /dev/null +++ b/patterns/src/main/java/com/baeldung/patterns/filters/VisitorCounterFilter.java @@ -0,0 +1,30 @@ +package com.baeldung.patterns.filters; + +import javax.servlet.FilterChain; +import javax.servlet.ServletException; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpSession; +import java.io.IOException; +import java.util.HashSet; +import java.util.Set; + +public class VisitorCounterFilter extends BaseFilter { + private static Set users = new HashSet<>(); + + @Override + public void doFilter( + ServletRequest request, + ServletResponse response, + FilterChain chain + ) throws IOException, ServletException { + HttpSession session = ((HttpServletRequest) request).getSession(false); + String username = (String) session.getAttribute("username"); + if (!users.contains(username)) { + users.add(username); + } + request.setAttribute("counter", users.size()); + chain.doFilter(request, response); + } +} diff --git a/patterns/src/main/webapp/WEB-INF/jsp/book-found.jsp b/patterns/src/main/webapp/WEB-INF/jsp/book-found.jsp index 42e08b4a46..95a74b9e2e 100644 --- a/patterns/src/main/webapp/WEB-INF/jsp/book-found.jsp +++ b/patterns/src/main/webapp/WEB-INF/jsp/book-found.jsp @@ -1,12 +1,24 @@ +<%@ page import="com.baeldung.patterns.data.Book" %> +<%@ page import="java.util.List" %> Bookshelf: Title found -

Our Bookshelf contains this title:

-

${book.getTitle()}

-

Author: ${book.getAuthor()}

- +

Our Bookshelf contains following titles:

+ <% for (Book book : (List) request.getAttribute("books")) { %> +

<%= book.getTitle() %>

+

Author: <%= book.getAuthor() %>

+
+ + + + + Go back... +
+ <% } %> + <%@ include file="shopping-cart-hint.jsp"%> + <%@ include file="visitor-counter.jsp"%> diff --git a/patterns/src/main/webapp/WEB-INF/jsp/book-notfound.jsp b/patterns/src/main/webapp/WEB-INF/jsp/book-notfound.jsp index 2f8ac01755..284b1e4759 100644 --- a/patterns/src/main/webapp/WEB-INF/jsp/book-notfound.jsp +++ b/patterns/src/main/webapp/WEB-INF/jsp/book-notfound.jsp @@ -1,10 +1,11 @@ - - Bookshelf: Title not found - + + Bookshelf: Title not found +

Our Bookshelf doesn't contains this title:

-

${param.get("title")}

+

<%= request.getParameter("q") %>

+ <%@ include file="visitor-counter.jsp"%> diff --git a/patterns/src/main/webapp/WEB-INF/jsp/home.jsp b/patterns/src/main/webapp/WEB-INF/jsp/home.jsp new file mode 100644 index 0000000000..e7bf1562ea --- /dev/null +++ b/patterns/src/main/webapp/WEB-INF/jsp/home.jsp @@ -0,0 +1,27 @@ +<%@ page import="com.baeldung.patterns.data.Book" %> +<%@ page import="java.util.List" %> + + + + Bookshelf: Home + + +
+ + +
+ <% if (request.getParameter("message") != null) { %> +

<%= request.getParameter("message") %>

+ <% } else { %> +

Welcome to the Bookshelf!

+ <% } %> + <% for (Book book : (List) request.getAttribute("books")) { %> +
+

<%= book.getAuthor() %>:

+

<%= book.getTitle() %>

+ More... + <% } %> + <%@ include file="shopping-cart-hint.jsp"%> + <%@ include file="visitor-counter.jsp"%> + + diff --git a/patterns/src/main/webapp/WEB-INF/jsp/login.jsp b/patterns/src/main/webapp/WEB-INF/jsp/login.jsp new file mode 100644 index 0000000000..6983fba949 --- /dev/null +++ b/patterns/src/main/webapp/WEB-INF/jsp/login.jsp @@ -0,0 +1,16 @@ + + + + Bookshelf: Login + + +

Please input a username:

+

Login

+
+ + "> + +
+ <%@ include file="visitor-counter.jsp" %> + + diff --git a/patterns/src/main/webapp/WEB-INF/jsp/shopping-cart-hint.jsp b/patterns/src/main/webapp/WEB-INF/jsp/shopping-cart-hint.jsp new file mode 100644 index 0000000000..9173c35711 --- /dev/null +++ b/patterns/src/main/webapp/WEB-INF/jsp/shopping-cart-hint.jsp @@ -0,0 +1,16 @@ +<%@ page import="com.baeldung.patterns.data.Order" %> +<% if (session != null && session.getAttribute("order") != null) { %> + <% Order order = ((Order) session.getAttribute("order")); %> + <% if (order != null && order.getItems().size() > 0) { %> +
+

+ Your shopping cart is holding + <% if (order.getItems().size() == 1) { %> + 1 item. + <% } else { %> + <%= (order.getItems().size()) %> items. + <% } %> + Checkout +

+ <% } %> +<% } %> diff --git a/patterns/src/main/webapp/WEB-INF/jsp/shopping-cart.jsp b/patterns/src/main/webapp/WEB-INF/jsp/shopping-cart.jsp new file mode 100644 index 0000000000..024a3bac3e --- /dev/null +++ b/patterns/src/main/webapp/WEB-INF/jsp/shopping-cart.jsp @@ -0,0 +1,29 @@ +<%@ page import="com.baeldung.patterns.data.Book" %> +<%@ page import="com.baeldung.patterns.data.Order" %> +<%@ page import="java.util.Map" %> + + + + Bookshelf: Checkout + + +

You are about to buy the following books:

+

Shopping Cart

+ <% Order order = (Order) session.getAttribute("order"); %> +
    + <% for (Map.Entry entry : order.getItems().entrySet()) { %> +
  • + <%= entry.getValue() %> x <%= entry.getKey().getPrice() %> +

    <%= entry.getKey().getTitle() %>

    + by <%= entry.getKey().getAuthor()%> +
  • + <% } %> +
+

+ Total: <%= request.getAttribute("total") %> +

+
+ +
+ + diff --git a/patterns/src/main/webapp/WEB-INF/jsp/visitor-counter.jsp b/patterns/src/main/webapp/WEB-INF/jsp/visitor-counter.jsp new file mode 100644 index 0000000000..397364e2b3 --- /dev/null +++ b/patterns/src/main/webapp/WEB-INF/jsp/visitor-counter.jsp @@ -0,0 +1,5 @@ +<% Integer counter = (Integer) request.getAttribute("counter"); %> +<% if (counter != null && counter > 0) { %> +
+

You are visitor #<%= counter %>. Logout

+<% } %> diff --git a/patterns/src/main/webapp/WEB-INF/web.xml b/patterns/src/main/webapp/WEB-INF/web.xml deleted file mode 100644 index 77113db09b..0000000000 --- a/patterns/src/main/webapp/WEB-INF/web.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - front-controller - com.baeldung.enterprise.patterns.front.controller.FrontControllerServlet - - - front-controller - / - - From 67e4090b578770b80113ee6ab3b83f43f3043dc0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20R=C3=A4del?= Date: Sat, 1 Oct 2016 04:37:07 +0200 Subject: [PATCH 122/215] BAEL-325: Removed old project folder. --- .../intercepting-filter-pattern/pom.xml | 49 -------------- .../patterns/FrontControllerServlet.java | 66 ------------------- .../patterns/commands/CheckoutCommand.java | 27 -------- .../patterns/commands/FrontCommand.java | 43 ------------ .../patterns/commands/HomeCommand.java | 17 ----- .../patterns/commands/LoginCommand.java | 20 ------ .../patterns/commands/LogoutCommand.java | 16 ----- .../patterns/commands/OrderCommand.java | 33 ---------- .../patterns/commands/SearchCommand.java | 25 ------- .../patterns/commands/ShowCommand.java | 21 ------ .../patterns/commands/UnknownCommand.java | 12 ---- .../java/com/baeldung/patterns/data/Book.java | 19 ------ .../com/baeldung/patterns/data/BookImpl.java | 58 ---------------- .../com/baeldung/patterns/data/Bookshelf.java | 18 ----- .../baeldung/patterns/data/BookshelfImpl.java | 23 ------- .../com/baeldung/patterns/data/Order.java | 11 ---- .../com/baeldung/patterns/data/OrderImpl.java | 40 ----------- .../filters/AuthenticationFilter.java | 40 ----------- .../baeldung/patterns/filters/BaseFilter.java | 25 ------- .../patterns/filters/EncodingFilter.java | 30 --------- .../patterns/filters/FilterChainImpl.java | 28 -------- .../patterns/filters/FilterManager.java | 21 ------ .../patterns/filters/LoggingFilter.java | 33 ---------- .../patterns/filters/OnIntercept.java | 5 -- .../main/webapp/WEB-INF/jsp/book-found.jsp | 24 ------- .../main/webapp/WEB-INF/jsp/book-notfound.jsp | 11 ---- .../src/main/webapp/WEB-INF/jsp/home.jsp | 27 -------- .../src/main/webapp/WEB-INF/jsp/login.jsp | 16 ----- .../webapp/WEB-INF/jsp/shopping-cart-hint.jsp | 16 ----- .../main/webapp/WEB-INF/jsp/shopping-cart.jsp | 29 -------- .../src/main/webapp/WEB-INF/jsp/unknown.jsp | 9 --- .../webapp/WEB-INF/jsp/visitor-counter.jsp | 5 -- 32 files changed, 817 deletions(-) delete mode 100644 enterprise-patterns/intercepting-filter-pattern/pom.xml delete mode 100644 enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/FrontControllerServlet.java delete mode 100644 enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/commands/CheckoutCommand.java delete mode 100644 enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/commands/FrontCommand.java delete mode 100644 enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/commands/HomeCommand.java delete mode 100644 enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/commands/LoginCommand.java delete mode 100644 enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/commands/LogoutCommand.java delete mode 100644 enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/commands/OrderCommand.java delete mode 100644 enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/commands/SearchCommand.java delete mode 100644 enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/commands/ShowCommand.java delete mode 100644 enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/commands/UnknownCommand.java delete mode 100644 enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/data/Book.java delete mode 100644 enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/data/BookImpl.java delete mode 100644 enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/data/Bookshelf.java delete mode 100644 enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/data/BookshelfImpl.java delete mode 100644 enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/data/Order.java delete mode 100644 enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/data/OrderImpl.java delete mode 100644 enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/filters/AuthenticationFilter.java delete mode 100644 enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/filters/BaseFilter.java delete mode 100644 enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/filters/EncodingFilter.java delete mode 100644 enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/filters/FilterChainImpl.java delete mode 100644 enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/filters/FilterManager.java delete mode 100644 enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/filters/LoggingFilter.java delete mode 100644 enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/filters/OnIntercept.java delete mode 100644 enterprise-patterns/intercepting-filter-pattern/src/main/webapp/WEB-INF/jsp/book-found.jsp delete mode 100644 enterprise-patterns/intercepting-filter-pattern/src/main/webapp/WEB-INF/jsp/book-notfound.jsp delete mode 100644 enterprise-patterns/intercepting-filter-pattern/src/main/webapp/WEB-INF/jsp/home.jsp delete mode 100644 enterprise-patterns/intercepting-filter-pattern/src/main/webapp/WEB-INF/jsp/login.jsp delete mode 100644 enterprise-patterns/intercepting-filter-pattern/src/main/webapp/WEB-INF/jsp/shopping-cart-hint.jsp delete mode 100644 enterprise-patterns/intercepting-filter-pattern/src/main/webapp/WEB-INF/jsp/shopping-cart.jsp delete mode 100644 enterprise-patterns/intercepting-filter-pattern/src/main/webapp/WEB-INF/jsp/unknown.jsp delete mode 100644 enterprise-patterns/intercepting-filter-pattern/src/main/webapp/WEB-INF/jsp/visitor-counter.jsp diff --git a/enterprise-patterns/intercepting-filter-pattern/pom.xml b/enterprise-patterns/intercepting-filter-pattern/pom.xml deleted file mode 100644 index 0e1008657a..0000000000 --- a/enterprise-patterns/intercepting-filter-pattern/pom.xml +++ /dev/null @@ -1,49 +0,0 @@ - - - 4.0.0 - - intercepting-filter-pattern - war - - - enterprise-patterns-parent - com.baeldung.enterprise.patterns - 1.0.0-SNAPSHOT - - - - - javax.servlet - javax.servlet-api - 3.1.0 - provided - - - org.slf4j - slf4j-api - 1.7.21 - provided - - - - - - - org.apache.maven.plugins - maven-compiler-plugin - - - org.eclipse.jetty - jetty-maven-plugin - 9.4.0.M1 - - - /intercepting-filter - - - - - - diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/FrontControllerServlet.java b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/FrontControllerServlet.java deleted file mode 100644 index 67400897c4..0000000000 --- a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/FrontControllerServlet.java +++ /dev/null @@ -1,66 +0,0 @@ -package com.baeldung.enterprise.patterns.front.controller; - -import com.baeldung.enterprise.patterns.front.controller.commands.FrontCommand; -import com.baeldung.enterprise.patterns.front.controller.commands.UnknownCommand; -import com.baeldung.enterprise.patterns.front.controller.data.Bookshelf; -import com.baeldung.enterprise.patterns.front.controller.data.BookshelfImpl; - -import javax.servlet.ServletConfig; -import javax.servlet.ServletException; -import javax.servlet.annotation.WebServlet; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; - -@WebServlet(name = "front-controller", urlPatterns = "/index") -public class FrontControllerServlet extends HttpServlet { - @Override - public void init(ServletConfig config) throws ServletException { - super.init(config); - Bookshelf bookshelf = new BookshelfImpl(); - bookshelf.init(); - getServletContext().setAttribute("bookshelf", bookshelf); - } - - @Override - protected void doGet( - HttpServletRequest request, - HttpServletResponse response - ) throws ServletException, IOException { - doCommand(request, response); - } - - @Override - protected void doPost( - HttpServletRequest request, - HttpServletResponse response - ) throws ServletException, IOException { - doCommand(request, response); - } - - private void doCommand( - HttpServletRequest request, - HttpServletResponse response - ) throws ServletException, IOException { - FrontCommand command = getCommand(request); - command.init(request, response); - command.process(); - } - - private FrontCommand getCommand(HttpServletRequest request) { - try { - Class type = Class.forName( - String.format( - "com.baeldung.enterprise.patterns.front.controller.commands.%sCommand", - request.getParameter("command") - ) - ); - return (FrontCommand) type - .asSubclass(FrontCommand.class) - .newInstance(); - } catch (Exception e) { - return new UnknownCommand(); - } - } -} diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/commands/CheckoutCommand.java b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/commands/CheckoutCommand.java deleted file mode 100644 index 876e439139..0000000000 --- a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/commands/CheckoutCommand.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.baeldung.enterprise.patterns.front.controller.commands; - -import com.baeldung.enterprise.patterns.front.controller.data.Order; - -import javax.servlet.ServletException; -import javax.servlet.http.HttpSession; -import java.io.IOException; - -public class CheckoutCommand extends FrontCommand { - @Override - public void process() throws ServletException, IOException { - super.process(); - HttpSession session = request.getSession(false); - if (request.getMethod().equals("POST")) { - session.removeAttribute("order"); - response.sendRedirect("index?command=Home&message=Thank you for buying!"); - } else { - Order order = (Order) session.getAttribute("order"); - Double total = order.getItems().entrySet().stream() - .map(entry -> entry.getKey().getPrice() * entry.getValue()) - .reduce((p1, p2) -> p1 + p2) - .orElse(0.00); - request.setAttribute("total", total); - forward("shopping-cart"); - } - } -} diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/commands/FrontCommand.java b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/commands/FrontCommand.java deleted file mode 100644 index 370127b7f7..0000000000 --- a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/commands/FrontCommand.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.baeldung.enterprise.patterns.front.controller.commands; - -import com.baeldung.enterprise.patterns.front.controller.filters.FilterManager; -import com.baeldung.enterprise.patterns.front.controller.filters.OnIntercept; - -import javax.servlet.RequestDispatcher; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; - -public abstract class FrontCommand implements OnIntercept { - protected HttpServletRequest request; - protected HttpServletResponse response; - private boolean intercept; - - public FrontCommand() { - } - - public void init(HttpServletRequest request, HttpServletResponse response) { - this.request = request; - this.response = response; - } - - public void process() throws ServletException, IOException { - FilterManager.process(request, response, this); - } - - public void forward(String target) throws ServletException, IOException { - if (intercept) { - return; - } - String path = String.format("/WEB-INF/jsp/%s.jsp", target); - RequestDispatcher dispatcher = request.getServletContext() - .getRequestDispatcher(path); - dispatcher.forward(request, response); - } - - @Override - public void intercept() { - intercept = true; - } -} diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/commands/HomeCommand.java b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/commands/HomeCommand.java deleted file mode 100644 index 49b62a29bd..0000000000 --- a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/commands/HomeCommand.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.baeldung.enterprise.patterns.front.controller.commands; - -import com.baeldung.enterprise.patterns.front.controller.data.Bookshelf; - -import javax.servlet.ServletException; -import java.io.IOException; - -public class HomeCommand extends FrontCommand { - @Override - public void process() throws ServletException, IOException { - super.process(); - Bookshelf bookshelf = (Bookshelf) request.getServletContext() - .getAttribute("bookshelf"); - request.setAttribute("books", bookshelf); - forward("home"); - } -} diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/commands/LoginCommand.java b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/commands/LoginCommand.java deleted file mode 100644 index beef42d269..0000000000 --- a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/commands/LoginCommand.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.baeldung.enterprise.patterns.front.controller.commands; - -import javax.servlet.ServletException; -import javax.servlet.http.HttpSession; -import java.io.IOException; - -public class LoginCommand extends FrontCommand { - @Override - public void process() throws ServletException, IOException { - if (request.getMethod().equals("POST")) { - HttpSession session = request.getSession(true); - session.setAttribute("username", request.getParameter("username")); - response.sendRedirect(request.getParameter("redirect")); - } else { - request.setAttribute("redirect", request.getRequestURL() - .append("?").append(request.getQueryString()).toString()); - forward("login"); - } - } -} diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/commands/LogoutCommand.java b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/commands/LogoutCommand.java deleted file mode 100644 index b502112558..0000000000 --- a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/commands/LogoutCommand.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.baeldung.enterprise.patterns.front.controller.commands; - -import javax.servlet.ServletException; -import javax.servlet.http.HttpSession; -import java.io.IOException; - -public class LogoutCommand extends FrontCommand { - @Override - public void process() throws ServletException, IOException { - super.process(); - HttpSession session = request.getSession(false); - session.removeAttribute("username"); - session.removeAttribute("order"); - response.sendRedirect("index?command=Home"); - } -} diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/commands/OrderCommand.java b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/commands/OrderCommand.java deleted file mode 100644 index 91ed909a77..0000000000 --- a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/commands/OrderCommand.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.baeldung.enterprise.patterns.front.controller.commands; - -import com.baeldung.enterprise.patterns.front.controller.data.Book; -import com.baeldung.enterprise.patterns.front.controller.data.Bookshelf; -import com.baeldung.enterprise.patterns.front.controller.data.Order; -import com.baeldung.enterprise.patterns.front.controller.data.OrderImpl; - -import javax.servlet.ServletException; -import javax.servlet.http.HttpSession; -import java.io.IOException; - -public class OrderCommand extends FrontCommand { - @Override - public void process() throws ServletException, IOException { - super.process(); - if (request.getMethod().equals("POST")) { - HttpSession session = request.getSession(false); - Order order = (Order) session.getAttribute("order"); - if (order == null) { - String username = (String) session.getAttribute("username"); - order = new OrderImpl(username); - } - Bookshelf bookshelf = (Bookshelf) request.getServletContext() - .getAttribute("bookshelf"); - String isbn = request.getParameter("isbn"); - Integer quantity = Integer.parseInt(request.getParameter("quantity")); - Book book = bookshelf.get(isbn); - order.add(book, quantity); - session.setAttribute("order", order); - response.sendRedirect(String.format("index?command=Show&isbn=%s", isbn)); - } - } -} diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/commands/SearchCommand.java b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/commands/SearchCommand.java deleted file mode 100644 index 517092508a..0000000000 --- a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/commands/SearchCommand.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.baeldung.enterprise.patterns.front.controller.commands; - -import com.baeldung.enterprise.patterns.front.controller.data.Book; -import com.baeldung.enterprise.patterns.front.controller.data.Bookshelf; - -import javax.servlet.ServletException; -import java.io.IOException; -import java.util.List; - -public class SearchCommand extends FrontCommand { - @Override - public void process() throws ServletException, IOException { - super.process(); - Bookshelf bookshelf = (Bookshelf) request.getServletContext() - .getAttribute("bookshelf"); - String q = request.getParameter("q"); - List books = bookshelf.find(q); - if (books.size() > 0) { - request.setAttribute("books", books); - forward("book-found"); - } else { - forward("book-notfound"); - } - } -} diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/commands/ShowCommand.java b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/commands/ShowCommand.java deleted file mode 100644 index eb615f075d..0000000000 --- a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/commands/ShowCommand.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.baeldung.enterprise.patterns.front.controller.commands; - -import com.baeldung.enterprise.patterns.front.controller.data.Book; -import com.baeldung.enterprise.patterns.front.controller.data.Bookshelf; - -import javax.servlet.ServletException; -import java.io.IOException; -import java.util.Collections; - -public class ShowCommand extends FrontCommand { - @Override - public void process() throws ServletException, IOException { - super.process(); - Bookshelf bookshelf = (Bookshelf) request.getServletContext() - .getAttribute("bookshelf"); - String title = request.getParameter("isbn"); - Book book = bookshelf.get(title); - request.setAttribute("books", Collections.singletonList(book)); - forward("book-found"); - } -} diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/commands/UnknownCommand.java b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/commands/UnknownCommand.java deleted file mode 100644 index 439ae0c8da..0000000000 --- a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/commands/UnknownCommand.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.baeldung.enterprise.patterns.front.controller.commands; - -import javax.servlet.ServletException; -import java.io.IOException; - -public class UnknownCommand extends FrontCommand { - @Override - public void process() throws ServletException, IOException { - super.process(); - forward("unknown"); - } -} diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/data/Book.java b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/data/Book.java deleted file mode 100644 index 472ba4c2fa..0000000000 --- a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/data/Book.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.baeldung.enterprise.patterns.front.controller.data; - -public interface Book { - String getIsbn(); - - void setIsbn(String isbn); - - String getAuthor(); - - void setAuthor(String author); - - String getTitle(); - - void setTitle(String title); - - Double getPrice(); - - void setPrice(Double price); -} diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/data/BookImpl.java b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/data/BookImpl.java deleted file mode 100644 index c633607f41..0000000000 --- a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/data/BookImpl.java +++ /dev/null @@ -1,58 +0,0 @@ -package com.baeldung.enterprise.patterns.front.controller.data; - -public class BookImpl implements Book { - private String isbn; - private String author; - private String title; - private Double price; - - public BookImpl() { - } - - public BookImpl(String isbn, String author, String title, Double price) { - this.isbn = isbn; - this.author = author; - this.title = title; - this.price = price; - } - - @Override - public String getIsbn() { - return isbn; - } - - @Override - public void setIsbn(String isbn) { - this.isbn = isbn; - } - - @Override - public String getAuthor() { - return author; - } - - @Override - public void setAuthor(String author) { - this.author = author; - } - - @Override - public String getTitle() { - return title; - } - - @Override - public void setTitle(String title) { - this.title = title; - } - - @Override - public Double getPrice() { - return price; - } - - @Override - public void setPrice(Double price) { - this.price = price; - } -} diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/data/Bookshelf.java b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/data/Bookshelf.java deleted file mode 100644 index e479d27d0e..0000000000 --- a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/data/Bookshelf.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.baeldung.enterprise.patterns.front.controller.data; - -import java.util.List; - -public interface Bookshelf { - - default void init() { - add(new BookImpl("001", "Wilson, Robert Anton & Shea, Robert", "Illuminati", 9.99)); - add(new BookImpl("002", "Fowler, Martin", "Patterns of Enterprise Application Architecture", 27.88)); - add(new BookImpl("003", "Unknown", "Something about German Umlauts (äüö) and ß", 5.49)); - } - - boolean add(E book); - - Book get(String isbn); - - List find(String q); -} diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/data/BookshelfImpl.java b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/data/BookshelfImpl.java deleted file mode 100644 index 26090acf74..0000000000 --- a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/data/BookshelfImpl.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.baeldung.enterprise.patterns.front.controller.data; - -import java.util.ArrayList; -import java.util.List; -import java.util.stream.Collectors; - -public class BookshelfImpl extends ArrayList implements Bookshelf { - @Override - public Book get(String isbn) { - return this.stream() - .filter(book -> book.getIsbn().equals(isbn)) - .findFirst() - .orElse(null); - } - - @Override - public List find(String q) { - return this.stream() - .filter(book -> book.getTitle().toLowerCase().contains(q.toLowerCase()) - || book.getAuthor().toLowerCase().contains(q.toLowerCase())) - .collect(Collectors.toList()); - } -} diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/data/Order.java b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/data/Order.java deleted file mode 100644 index 2b6b36568a..0000000000 --- a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/data/Order.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.baeldung.enterprise.patterns.front.controller.data; - -import java.util.Map; - -public interface Order { - String getUsername(); - - Map getItems(); - - void add(Book item, Integer quantity); -} diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/data/OrderImpl.java b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/data/OrderImpl.java deleted file mode 100644 index eb4a6674cc..0000000000 --- a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/data/OrderImpl.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.baeldung.enterprise.patterns.front.controller.data; - -import java.util.HashMap; -import java.util.Map; - -public class OrderImpl implements Order { - private String username; - private Map items = new HashMap<>(); - - public OrderImpl(String username) { - this.username = username; - } - - @Override - public String getUsername() { - return username; - } - - public void setUsername(String username) { - this.username = username; - } - - @Override - public Map getItems() { - return items; - } - - public void setItems(Map items) { - this.items = items; - } - - @Override - public void add(Book item, Integer quantity) { - Integer q = 0; - if (this.items.containsKey(item)) { - q = this.items.get(item); - } - this.items.put(item, quantity + q); - } -} diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/filters/AuthenticationFilter.java b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/filters/AuthenticationFilter.java deleted file mode 100644 index 2d43116faa..0000000000 --- a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/filters/AuthenticationFilter.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.baeldung.enterprise.patterns.front.controller.filters; - -import com.baeldung.enterprise.patterns.front.controller.commands.FrontCommand; -import com.baeldung.enterprise.patterns.front.controller.commands.LoginCommand; - -import javax.servlet.FilterChain; -import javax.servlet.ServletException; -import javax.servlet.ServletRequest; -import javax.servlet.ServletResponse; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.servlet.http.HttpSession; -import java.io.IOException; - -public class AuthenticationFilter extends BaseFilter { - private OnIntercept callback; - - public AuthenticationFilter(OnIntercept callback) { - this.callback = callback; - } - - @Override - public void doFilter( - ServletRequest request, - ServletResponse response, - FilterChain chain - ) throws IOException, ServletException { - HttpServletRequest httpServletRequest = (HttpServletRequest) request; - HttpServletResponse httpServletResponse = (HttpServletResponse) response; - HttpSession session = httpServletRequest.getSession(false); - if (session == null || session.getAttribute("username") == null) { - callback.intercept(); - FrontCommand command = new LoginCommand(); - command.init(httpServletRequest, httpServletResponse); - command.process(); - } else { - chain.doFilter(request, response); - } - } -} diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/filters/BaseFilter.java b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/filters/BaseFilter.java deleted file mode 100644 index 81b5027187..0000000000 --- a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/filters/BaseFilter.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.baeldung.enterprise.patterns.front.controller.filters; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import javax.servlet.Filter; -import javax.servlet.FilterConfig; -import javax.servlet.ServletException; - -public abstract class BaseFilter implements Filter { - private static final Logger log = LoggerFactory.getLogger(BaseFilter.class); - - protected FilterConfig filterConfig; - - @Override - public void init(FilterConfig filterConfig) throws ServletException { - log.info("Initialize filter: {}", getClass().getSimpleName()); - this.filterConfig = filterConfig; - } - - @Override - public void destroy() { - log.info("Destroy filter: {}", getClass().getSimpleName()); - } -} diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/filters/EncodingFilter.java b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/filters/EncodingFilter.java deleted file mode 100644 index d36e204dd5..0000000000 --- a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/filters/EncodingFilter.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.baeldung.enterprise.patterns.front.controller.filters; - -import javax.servlet.*; -import javax.servlet.annotation.WebFilter; -import java.io.IOException; - -@WebFilter(servletNames = "front-controller") -public class EncodingFilter extends BaseFilter { - private String encoding; - - @Override - public void init(FilterConfig filterConfig) throws ServletException { - super.init(filterConfig); - this.encoding = filterConfig.getInitParameter("encoding"); - } - - @Override - public void doFilter( - ServletRequest request, - ServletResponse response, - FilterChain chain - ) throws IOException, ServletException { - String encoding = request.getParameter("encoding"); - if (encoding == null) { - encoding = this.encoding; - } - response.setCharacterEncoding(encoding); - chain.doFilter(request, response); - } -} diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/filters/FilterChainImpl.java b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/filters/FilterChainImpl.java deleted file mode 100644 index dd92759e8b..0000000000 --- a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/filters/FilterChainImpl.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.baeldung.enterprise.patterns.front.controller.filters; - -import javax.servlet.Filter; -import javax.servlet.ServletException; -import javax.servlet.ServletRequest; -import javax.servlet.ServletResponse; -import java.io.IOException; -import java.util.Arrays; -import java.util.Iterator; - -public class FilterChainImpl implements javax.servlet.FilterChain { - private Iterator filters; - - public FilterChainImpl(Filter... filters) { - this.filters = Arrays.asList(filters).iterator(); - } - - @Override - public void doFilter( - ServletRequest request, - ServletResponse response - ) throws IOException, ServletException { - if (filters.hasNext()) { - Filter filter = filters.next(); - filter.doFilter(request, response, this); - } - } -} diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/filters/FilterManager.java b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/filters/FilterManager.java deleted file mode 100644 index e374b241c4..0000000000 --- a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/filters/FilterManager.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.baeldung.enterprise.patterns.front.controller.filters; - -import javax.servlet.FilterChain; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; - -public class FilterManager { - public static void process( - HttpServletRequest request, - HttpServletResponse response, - OnIntercept callback - ) throws ServletException, IOException { - FilterChain filterChain = new FilterChainImpl( - new AuthenticationFilter(callback), - new VisitorCounterFilter() - ); - filterChain.doFilter(request, response); - } -} diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/filters/LoggingFilter.java b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/filters/LoggingFilter.java deleted file mode 100644 index 8617fba581..0000000000 --- a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/filters/LoggingFilter.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.baeldung.enterprise.patterns.front.controller.filters; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import javax.servlet.FilterChain; -import javax.servlet.ServletException; -import javax.servlet.ServletRequest; -import javax.servlet.ServletResponse; -import javax.servlet.annotation.WebFilter; -import javax.servlet.http.HttpServletRequest; -import java.io.IOException; - -@WebFilter(servletNames = "front-controller") -public class LoggingFilter extends BaseFilter { - private static final Logger log = LoggerFactory.getLogger(LoggingFilter.class); - - @Override - public void doFilter( - ServletRequest request, - ServletResponse response, - FilterChain chain - ) throws IOException, ServletException { - chain.doFilter(request, response); - HttpServletRequest httpServletRequest = (HttpServletRequest) request; - String username = (String) httpServletRequest.getAttribute("username"); - if (username == null) { - username = "guest"; - } - log.info("Request from '{}@{}': {}?{}", username, request.getRemoteAddr(), - httpServletRequest.getRequestURI(), request.getParameterMap()); - } -} diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/filters/OnIntercept.java b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/filters/OnIntercept.java deleted file mode 100644 index 54da744e78..0000000000 --- a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/patterns/filters/OnIntercept.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.baeldung.enterprise.patterns.front.controller.filters; - -public interface OnIntercept { - void intercept(); -} diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/webapp/WEB-INF/jsp/book-found.jsp b/enterprise-patterns/intercepting-filter-pattern/src/main/webapp/WEB-INF/jsp/book-found.jsp deleted file mode 100644 index 5a03fe92ad..0000000000 --- a/enterprise-patterns/intercepting-filter-pattern/src/main/webapp/WEB-INF/jsp/book-found.jsp +++ /dev/null @@ -1,24 +0,0 @@ -<%@ page import="com.baeldung.enterprise.patterns.front.controller.data.Book" %> -<%@ page import="java.util.List" %> - - - - Bookshelf: Title found - - -

Our Bookshelf contains following titles:

- <% for (Book book : (List) request.getAttribute("books")) { %> -

<%= book.getTitle() %>

-

Author: <%= book.getAuthor() %>

-
- - - - - Go back... -
- <% } %> - <%@ include file="shopping-cart-hint.jsp"%> - <%@ include file="visitor-counter.jsp"%> - - diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/webapp/WEB-INF/jsp/book-notfound.jsp b/enterprise-patterns/intercepting-filter-pattern/src/main/webapp/WEB-INF/jsp/book-notfound.jsp deleted file mode 100644 index 284b1e4759..0000000000 --- a/enterprise-patterns/intercepting-filter-pattern/src/main/webapp/WEB-INF/jsp/book-notfound.jsp +++ /dev/null @@ -1,11 +0,0 @@ - - - - Bookshelf: Title not found - - -

Our Bookshelf doesn't contains this title:

-

<%= request.getParameter("q") %>

- <%@ include file="visitor-counter.jsp"%> - - diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/webapp/WEB-INF/jsp/home.jsp b/enterprise-patterns/intercepting-filter-pattern/src/main/webapp/WEB-INF/jsp/home.jsp deleted file mode 100644 index f892738c63..0000000000 --- a/enterprise-patterns/intercepting-filter-pattern/src/main/webapp/WEB-INF/jsp/home.jsp +++ /dev/null @@ -1,27 +0,0 @@ -<%@ page import="com.baeldung.enterprise.patterns.front.controller.data.Book" %> -<%@ page import="java.util.List" %> - - - - Bookshelf: Home - - -
- - -
- <% if (request.getParameter("message") != null) { %> -

<%= request.getParameter("message") %>

- <% } else { %> -

Welcome to the Bookshelf!

- <% } %> - <% for (Book book : (List) request.getAttribute("books")) { %> -
-

<%= book.getAuthor() %>:

-

<%= book.getTitle() %>

- More... - <% } %> - <%@ include file="shopping-cart-hint.jsp"%> - <%@ include file="visitor-counter.jsp"%> - - diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/webapp/WEB-INF/jsp/login.jsp b/enterprise-patterns/intercepting-filter-pattern/src/main/webapp/WEB-INF/jsp/login.jsp deleted file mode 100644 index 6983fba949..0000000000 --- a/enterprise-patterns/intercepting-filter-pattern/src/main/webapp/WEB-INF/jsp/login.jsp +++ /dev/null @@ -1,16 +0,0 @@ - - - - Bookshelf: Login - - -

Please input a username:

-

Login

-
- - "> - -
- <%@ include file="visitor-counter.jsp" %> - - diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/webapp/WEB-INF/jsp/shopping-cart-hint.jsp b/enterprise-patterns/intercepting-filter-pattern/src/main/webapp/WEB-INF/jsp/shopping-cart-hint.jsp deleted file mode 100644 index 5b7c1d9849..0000000000 --- a/enterprise-patterns/intercepting-filter-pattern/src/main/webapp/WEB-INF/jsp/shopping-cart-hint.jsp +++ /dev/null @@ -1,16 +0,0 @@ -<%@ page import="com.baeldung.enterprise.patterns.front.controller.data.Order" %> -<% if (session != null && session.getAttribute("order") != null) { %> - <% Order order = ((Order) session.getAttribute("order")); %> - <% if (order != null && order.getItems().size() > 0) { %> -
-

- Your shopping cart is holding - <% if (order.getItems().size() == 1) { %> - 1 item. - <% } else { %> - <%= (order.getItems().size()) %> items. - <% } %> - Checkout -

- <% } %> -<% } %> diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/webapp/WEB-INF/jsp/shopping-cart.jsp b/enterprise-patterns/intercepting-filter-pattern/src/main/webapp/WEB-INF/jsp/shopping-cart.jsp deleted file mode 100644 index 31b25968ee..0000000000 --- a/enterprise-patterns/intercepting-filter-pattern/src/main/webapp/WEB-INF/jsp/shopping-cart.jsp +++ /dev/null @@ -1,29 +0,0 @@ -<%@ page import="com.baeldung.enterprise.patterns.front.controller.data.Book" %> -<%@ page import="com.baeldung.enterprise.patterns.front.controller.data.Order" %> -<%@ page import="java.util.Map" %> - - - - Bookshelf: Checkout - - -

You are about to buy the following books:

-

Shopping Cart

- <% Order order = (Order) session.getAttribute("order"); %> -
    - <% for (Map.Entry entry : order.getItems().entrySet()) { %> -
  • - <%= entry.getValue() %> x <%= entry.getKey().getPrice() %> -

    <%= entry.getKey().getTitle() %>

    - by <%= entry.getKey().getAuthor()%> -
  • - <% } %> -
-

- Total: <%= request.getAttribute("total") %> -

-
- -
- - diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/webapp/WEB-INF/jsp/unknown.jsp b/enterprise-patterns/intercepting-filter-pattern/src/main/webapp/WEB-INF/jsp/unknown.jsp deleted file mode 100644 index b52b2de8d5..0000000000 --- a/enterprise-patterns/intercepting-filter-pattern/src/main/webapp/WEB-INF/jsp/unknown.jsp +++ /dev/null @@ -1,9 +0,0 @@ - - - - Bookshelf: Command unknown - - -

Sorry, this command is not known!

- - diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/webapp/WEB-INF/jsp/visitor-counter.jsp b/enterprise-patterns/intercepting-filter-pattern/src/main/webapp/WEB-INF/jsp/visitor-counter.jsp deleted file mode 100644 index 397364e2b3..0000000000 --- a/enterprise-patterns/intercepting-filter-pattern/src/main/webapp/WEB-INF/jsp/visitor-counter.jsp +++ /dev/null @@ -1,5 +0,0 @@ -<% Integer counter = (Integer) request.getAttribute("counter"); %> -<% if (counter != null && counter > 0) { %> -
-

You are visitor #<%= counter %>. Logout

-<% } %> From 2d678d6b3255ad9ff9c7fa013ba39f5124ff5279 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20R=C3=A4del?= Date: Sun, 2 Oct 2016 10:53:24 +0200 Subject: [PATCH 123/215] BAEL-325: Added UML sources. Applied some small improvements. --- .../filters/AuthenticationFilter.java | 15 +++++--- .../patterns/filters/EncodingFilter.java | 6 ++- .../patterns/filters/FilterChainImpl.java | 7 +--- .../patterns/filters/TemplateFilter.java | 35 ++++++++++++++++++ .../filters/VisitorCounterFilter.java | 19 ++++++---- ...nt controller.png => front_controller.png} | Bin ... controller.puml => front_controller.puml} | 0 .../main/resources/intercepting_filter.png | Bin 0 -> 17297 bytes .../main/resources/intercepting_filter.puml | 17 +++++++++ 9 files changed, 80 insertions(+), 19 deletions(-) create mode 100644 patterns/src/main/java/com/baeldung/patterns/filters/TemplateFilter.java rename patterns/src/main/resources/{front controller.png => front_controller.png} (100%) rename patterns/src/main/resources/{front controller.puml => front_controller.puml} (100%) create mode 100644 patterns/src/main/resources/intercepting_filter.png create mode 100644 patterns/src/main/resources/intercepting_filter.puml diff --git a/patterns/src/main/java/com/baeldung/patterns/filters/AuthenticationFilter.java b/patterns/src/main/java/com/baeldung/patterns/filters/AuthenticationFilter.java index fa7655434e..f5e03878ca 100644 --- a/patterns/src/main/java/com/baeldung/patterns/filters/AuthenticationFilter.java +++ b/patterns/src/main/java/com/baeldung/patterns/filters/AuthenticationFilter.java @@ -3,22 +3,23 @@ package com.baeldung.patterns.filters; import com.baeldung.patterns.commands.FrontCommand; import com.baeldung.patterns.commands.LoginCommand; -import javax.servlet.FilterChain; -import javax.servlet.ServletException; -import javax.servlet.ServletRequest; -import javax.servlet.ServletResponse; +import javax.servlet.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import java.io.IOException; -public class AuthenticationFilter extends BaseFilter { +public class AuthenticationFilter implements Filter { private OnIntercept callback; public AuthenticationFilter(OnIntercept callback) { this.callback = callback; } + @Override + public void init(FilterConfig filterConfig) throws ServletException { + } + @Override public void doFilter( ServletRequest request, @@ -37,4 +38,8 @@ public class AuthenticationFilter extends BaseFilter { chain.doFilter(request, response); } } + + @Override + public void destroy() { + } } diff --git a/patterns/src/main/java/com/baeldung/patterns/filters/EncodingFilter.java b/patterns/src/main/java/com/baeldung/patterns/filters/EncodingFilter.java index 1277ca726d..2856bb1112 100644 --- a/patterns/src/main/java/com/baeldung/patterns/filters/EncodingFilter.java +++ b/patterns/src/main/java/com/baeldung/patterns/filters/EncodingFilter.java @@ -2,9 +2,13 @@ package com.baeldung.patterns.filters; import javax.servlet.*; import javax.servlet.annotation.WebFilter; +import javax.servlet.annotation.WebInitParam; import java.io.IOException; -@WebFilter(servletNames = "front-controller") +@WebFilter( + servletNames = {"front-controller"}, + initParams = {@WebInitParam(name = "encoding", value = "UTF-8")} +) public class EncodingFilter extends BaseFilter { private String encoding; diff --git a/patterns/src/main/java/com/baeldung/patterns/filters/FilterChainImpl.java b/patterns/src/main/java/com/baeldung/patterns/filters/FilterChainImpl.java index d2b64c7d06..789fc003a0 100644 --- a/patterns/src/main/java/com/baeldung/patterns/filters/FilterChainImpl.java +++ b/patterns/src/main/java/com/baeldung/patterns/filters/FilterChainImpl.java @@ -1,14 +1,11 @@ package com.baeldung.patterns.filters; -import javax.servlet.Filter; -import javax.servlet.ServletException; -import javax.servlet.ServletRequest; -import javax.servlet.ServletResponse; +import javax.servlet.*; import java.io.IOException; import java.util.Arrays; import java.util.Iterator; -public class FilterChainImpl implements javax.servlet.FilterChain { +public class FilterChainImpl implements FilterChain { private Iterator filters; public FilterChainImpl(Filter... filters) { diff --git a/patterns/src/main/java/com/baeldung/patterns/filters/TemplateFilter.java b/patterns/src/main/java/com/baeldung/patterns/filters/TemplateFilter.java new file mode 100644 index 0000000000..939d9ad84d --- /dev/null +++ b/patterns/src/main/java/com/baeldung/patterns/filters/TemplateFilter.java @@ -0,0 +1,35 @@ +package com.baeldung.patterns.filters; + +import javax.servlet.FilterChain; +import javax.servlet.ServletException; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; + +public abstract class TemplateFilter extends BaseFilter { + + protected abstract void preFilter( + HttpServletRequest request, + HttpServletResponse response + ) throws IOException, ServletException; + + protected abstract void postFilter( + HttpServletRequest request, + HttpServletResponse response + ) throws IOException, ServletException; + + @Override + public void doFilter( + ServletRequest request, + ServletResponse response, + FilterChain chain + ) throws IOException, ServletException { + HttpServletRequest httpServletRequest = (HttpServletRequest) request; + HttpServletResponse httpServletResponse = (HttpServletResponse) response; + preFilter(httpServletRequest, httpServletResponse); + chain.doFilter(request, response); + postFilter(httpServletRequest, httpServletResponse); + } +} diff --git a/patterns/src/main/java/com/baeldung/patterns/filters/VisitorCounterFilter.java b/patterns/src/main/java/com/baeldung/patterns/filters/VisitorCounterFilter.java index 0abfac7cd6..5c2358686b 100644 --- a/patterns/src/main/java/com/baeldung/patterns/filters/VisitorCounterFilter.java +++ b/patterns/src/main/java/com/baeldung/patterns/filters/VisitorCounterFilter.java @@ -1,18 +1,19 @@ package com.baeldung.patterns.filters; -import javax.servlet.FilterChain; -import javax.servlet.ServletException; -import javax.servlet.ServletRequest; -import javax.servlet.ServletResponse; +import javax.servlet.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import java.io.IOException; import java.util.HashSet; import java.util.Set; -public class VisitorCounterFilter extends BaseFilter { +public class VisitorCounterFilter implements Filter { private static Set users = new HashSet<>(); + @Override + public void init(FilterConfig filterConfig) throws ServletException { + } + @Override public void doFilter( ServletRequest request, @@ -21,10 +22,12 @@ public class VisitorCounterFilter extends BaseFilter { ) throws IOException, ServletException { HttpSession session = ((HttpServletRequest) request).getSession(false); String username = (String) session.getAttribute("username"); - if (!users.contains(username)) { - users.add(username); - } + users.add(username); request.setAttribute("counter", users.size()); chain.doFilter(request, response); } + + @Override + public void destroy() { + } } diff --git a/patterns/src/main/resources/front controller.png b/patterns/src/main/resources/front_controller.png similarity index 100% rename from patterns/src/main/resources/front controller.png rename to patterns/src/main/resources/front_controller.png diff --git a/patterns/src/main/resources/front controller.puml b/patterns/src/main/resources/front_controller.puml similarity index 100% rename from patterns/src/main/resources/front controller.puml rename to patterns/src/main/resources/front_controller.puml diff --git a/patterns/src/main/resources/intercepting_filter.png b/patterns/src/main/resources/intercepting_filter.png new file mode 100644 index 0000000000000000000000000000000000000000..9ccacc80812c9d857475472fbf82751aafc6b01e GIT binary patch literal 17297 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 Date: Mon, 24 Oct 2016 03:45:07 +0200 Subject: [PATCH 124/215] BAEL-325: Refactored to use multi-module structure. --- patterns/front-controller/pom.xml | 45 +++++++++ .../controller/FrontControllerServlet.java | 38 ++++++++ .../controller/commands/FrontCommand.java | 32 +++++++ .../controller/commands/SearchCommand.java | 21 +++++ .../controller/commands/UnknownCommand.java | 11 +++ .../patterns/front/controller/data/Book.java | 15 +++ .../front/controller/data/BookImpl.java | 46 +++++++++ .../front/controller/data/Bookshelf.java | 15 +++ .../front/controller/data/BookshelfImpl.java | 24 +++++ .../src/main/resources/front controller.png | Bin 0 -> 9492 bytes .../src/main/resources/front controller.puml | 22 +++++ .../main/webapp/WEB-INF/jsp/book-found.jsp | 12 +++ .../main/webapp/WEB-INF/jsp/book-notfound.jsp | 10 ++ .../src/main/webapp/WEB-INF/jsp/unknown.jsp | 9 ++ .../src/main/webapp/WEB-INF/web.xml | 15 +++ .../filter}/FrontControllerServlet.java | 14 +-- .../filter}/commands/CheckoutCommand.java | 6 +- .../filter}/commands/FrontCommand.java | 6 +- .../filter}/commands/HomeCommand.java | 4 +- .../filter}/commands/LoginCommand.java | 2 +- .../filter}/commands/LogoutCommand.java | 4 +- .../filter}/commands/OrderCommand.java | 12 +-- .../filter}/commands/SearchCommand.java | 6 +- .../filter}/commands/ShowCommand.java | 6 +- .../filter}/commands/UnknownCommand.java | 2 +- .../intercepting/filter}/data/Book.java | 2 +- .../intercepting/filter}/data/BookImpl.java | 2 +- .../intercepting/filter}/data/Bookshelf.java | 2 +- .../filter}/data/BookshelfImpl.java | 2 +- .../intercepting/filter}/data/Order.java | 2 +- .../intercepting/filter}/data/OrderImpl.java | 2 +- .../filter}/filters/AuthenticationFilter.java | 6 +- .../filter}/filters/BaseFilter.java | 2 +- .../filter}/filters/EncodingFilter.java | 4 +- .../filter}/filters/FilterChainImpl.java | 2 +- .../filter}/filters/FilterManager.java | 2 +- .../filter}/filters/LoggingFilter.java | 4 +- .../filter/filters/OnIntercept.java | 5 + .../filter}/filters/TemplateFilter.java | 2 +- .../filter}/filters/VisitorCounterFilter.java | 2 +- .../src/main/resources/front_controller.png | Bin .../src/main/resources/front_controller.puml | 0 .../main/resources/intercepting_filter.png | Bin .../main/resources/intercepting_filter.puml | 0 .../main/webapp/WEB-INF/jsp/book-found.jsp | 6 +- .../main/webapp/WEB-INF/jsp/book-notfound.jsp | 0 .../src/main/webapp/WEB-INF/jsp/home.jsp | 6 +- .../src/main/webapp/WEB-INF/jsp/login.jsp | 2 +- .../webapp/WEB-INF/jsp/shopping-cart-hint.jsp | 4 +- .../main/webapp/WEB-INF/jsp/shopping-cart.jsp | 6 +- .../src/main/webapp/WEB-INF/jsp/unknown.jsp | 9 ++ .../webapp/WEB-INF/jsp/visitor-counter.jsp | 2 +- patterns/pom.xml | 89 +++++++++--------- .../patterns/filters/OnIntercept.java | 5 - 54 files changed, 433 insertions(+), 114 deletions(-) create mode 100644 patterns/front-controller/pom.xml create mode 100644 patterns/front-controller/src/main/java/com/baeldung/patterns/front/controller/FrontControllerServlet.java create mode 100644 patterns/front-controller/src/main/java/com/baeldung/patterns/front/controller/commands/FrontCommand.java create mode 100644 patterns/front-controller/src/main/java/com/baeldung/patterns/front/controller/commands/SearchCommand.java create mode 100644 patterns/front-controller/src/main/java/com/baeldung/patterns/front/controller/commands/UnknownCommand.java create mode 100644 patterns/front-controller/src/main/java/com/baeldung/patterns/front/controller/data/Book.java create mode 100644 patterns/front-controller/src/main/java/com/baeldung/patterns/front/controller/data/BookImpl.java create mode 100644 patterns/front-controller/src/main/java/com/baeldung/patterns/front/controller/data/Bookshelf.java create mode 100644 patterns/front-controller/src/main/java/com/baeldung/patterns/front/controller/data/BookshelfImpl.java create mode 100644 patterns/front-controller/src/main/resources/front controller.png create mode 100644 patterns/front-controller/src/main/resources/front controller.puml create mode 100644 patterns/front-controller/src/main/webapp/WEB-INF/jsp/book-found.jsp create mode 100644 patterns/front-controller/src/main/webapp/WEB-INF/jsp/book-notfound.jsp create mode 100644 patterns/front-controller/src/main/webapp/WEB-INF/jsp/unknown.jsp create mode 100644 patterns/front-controller/src/main/webapp/WEB-INF/web.xml rename patterns/{src/main/java/com/baeldung/patterns => intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter}/FrontControllerServlet.java (78%) rename patterns/{src/main/java/com/baeldung/patterns => intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter}/commands/CheckoutCommand.java (80%) rename patterns/{src/main/java/com/baeldung/patterns => intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter}/commands/FrontCommand.java (84%) rename patterns/{src/main/java/com/baeldung/patterns => intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter}/commands/HomeCommand.java (76%) rename patterns/{src/main/java/com/baeldung/patterns => intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter}/commands/LoginCommand.java (93%) rename patterns/{src/main/java/com/baeldung/patterns => intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter}/commands/LogoutCommand.java (79%) rename patterns/{src/main/java/com/baeldung/patterns => intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter}/commands/OrderCommand.java (72%) rename patterns/{src/main/java/com/baeldung/patterns => intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter}/commands/SearchCommand.java (77%) rename patterns/{src/main/java/com/baeldung/patterns => intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter}/commands/ShowCommand.java (75%) rename patterns/{src/main/java/com/baeldung/patterns => intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter}/commands/UnknownCommand.java (81%) rename patterns/{src/main/java/com/baeldung/patterns => intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter}/data/Book.java (82%) rename patterns/{src/main/java/com/baeldung/patterns => intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter}/data/BookImpl.java (94%) rename patterns/{src/main/java/com/baeldung/patterns => intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter}/data/Bookshelf.java (89%) rename patterns/{src/main/java/com/baeldung/patterns => intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter}/data/BookshelfImpl.java (91%) rename patterns/{src/main/java/com/baeldung/patterns => intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter}/data/Order.java (73%) rename patterns/{src/main/java/com/baeldung/patterns => intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter}/data/OrderImpl.java (93%) rename patterns/{src/main/java/com/baeldung/patterns => intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter}/filters/AuthenticationFilter.java (86%) rename patterns/{src/main/java/com/baeldung/patterns => intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter}/filters/BaseFilter.java (91%) rename patterns/{src/main/java/com/baeldung/patterns => intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter}/filters/EncodingFilter.java (90%) rename patterns/{src/main/java/com/baeldung/patterns => intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter}/filters/FilterChainImpl.java (91%) rename patterns/{src/main/java/com/baeldung/patterns => intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter}/filters/FilterManager.java (91%) rename patterns/{src/main/java/com/baeldung/patterns => intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter}/filters/LoggingFilter.java (90%) create mode 100644 patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/filters/OnIntercept.java rename patterns/{src/main/java/com/baeldung/patterns => intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter}/filters/TemplateFilter.java (95%) rename patterns/{src/main/java/com/baeldung/patterns => intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter}/filters/VisitorCounterFilter.java (93%) rename patterns/{ => intercepting-filter}/src/main/resources/front_controller.png (100%) rename patterns/{ => intercepting-filter}/src/main/resources/front_controller.puml (100%) rename patterns/{ => intercepting-filter}/src/main/resources/intercepting_filter.png (100%) rename patterns/{ => intercepting-filter}/src/main/resources/intercepting_filter.puml (100%) rename patterns/{ => intercepting-filter}/src/main/webapp/WEB-INF/jsp/book-found.jsp (81%) rename patterns/{ => intercepting-filter}/src/main/webapp/WEB-INF/jsp/book-notfound.jsp (100%) rename patterns/{ => intercepting-filter}/src/main/webapp/WEB-INF/jsp/home.jsp (79%) rename patterns/{ => intercepting-filter}/src/main/webapp/WEB-INF/jsp/login.jsp (89%) rename patterns/{ => intercepting-filter}/src/main/webapp/WEB-INF/jsp/shopping-cart-hint.jsp (78%) rename patterns/{ => intercepting-filter}/src/main/webapp/WEB-INF/jsp/shopping-cart.jsp (80%) create mode 100644 patterns/intercepting-filter/src/main/webapp/WEB-INF/jsp/unknown.jsp rename patterns/{ => intercepting-filter}/src/main/webapp/WEB-INF/jsp/visitor-counter.jsp (60%) delete mode 100644 patterns/src/main/java/com/baeldung/patterns/filters/OnIntercept.java diff --git a/patterns/front-controller/pom.xml b/patterns/front-controller/pom.xml new file mode 100644 index 0000000000..2dabf484e1 --- /dev/null +++ b/patterns/front-controller/pom.xml @@ -0,0 +1,45 @@ + + + 4.0.0 + + front-controller + war + + + patterns-parent + com.baeldung.patterns + 1.0.0-SNAPSHOT + .. + + + + + javax.servlet + javax.servlet-api + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + + + org.apache.maven.plugins + maven-war-plugin + + + org.eclipse.jetty + jetty-maven-plugin + + + /front-controller + + + + + + diff --git a/patterns/front-controller/src/main/java/com/baeldung/patterns/front/controller/FrontControllerServlet.java b/patterns/front-controller/src/main/java/com/baeldung/patterns/front/controller/FrontControllerServlet.java new file mode 100644 index 0000000000..9fb120399c --- /dev/null +++ b/patterns/front-controller/src/main/java/com/baeldung/patterns/front/controller/FrontControllerServlet.java @@ -0,0 +1,38 @@ +package com.baeldung.patterns.front.controller; + +import com.baeldung.patterns.front.controller.commands.FrontCommand; +import com.baeldung.patterns.front.controller.commands.UnknownCommand; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; + +public class FrontControllerServlet extends HttpServlet { + @Override + protected void doGet( + HttpServletRequest request, + HttpServletResponse response + ) throws ServletException, IOException { + FrontCommand command = getCommand(request); + command.init(getServletContext(), request, response); + command.process(); + } + + private FrontCommand getCommand(HttpServletRequest request) { + try { + Class type = Class.forName( + String.format( + "com.baeldung.patterns.front.controller.commands.%sCommand", + request.getParameter("command") + ) + ); + return (FrontCommand) type + .asSubclass(FrontCommand.class) + .newInstance(); + } catch (Exception e) { + return new UnknownCommand(); + } + } +} diff --git a/patterns/front-controller/src/main/java/com/baeldung/patterns/front/controller/commands/FrontCommand.java b/patterns/front-controller/src/main/java/com/baeldung/patterns/front/controller/commands/FrontCommand.java new file mode 100644 index 0000000000..cc92731050 --- /dev/null +++ b/patterns/front-controller/src/main/java/com/baeldung/patterns/front/controller/commands/FrontCommand.java @@ -0,0 +1,32 @@ +package com.baeldung.patterns.front.controller.commands; + +import javax.servlet.RequestDispatcher; +import javax.servlet.ServletContext; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; + +public abstract class FrontCommand { + protected ServletContext context; + protected HttpServletRequest request; + protected HttpServletResponse response; + + public void init( + ServletContext servletContext, + HttpServletRequest servletRequest, + HttpServletResponse servletResponse + ) { + this.context = servletContext; + this.request = servletRequest; + this.response = servletResponse; + } + + public abstract void process() throws ServletException, IOException; + + protected void forward(String target) throws ServletException, IOException { + target = String.format("/WEB-INF/jsp/%s.jsp", target); + RequestDispatcher dispatcher = context.getRequestDispatcher(target); + dispatcher.forward(request, response); + } +} diff --git a/patterns/front-controller/src/main/java/com/baeldung/patterns/front/controller/commands/SearchCommand.java b/patterns/front-controller/src/main/java/com/baeldung/patterns/front/controller/commands/SearchCommand.java new file mode 100644 index 0000000000..21028b07f0 --- /dev/null +++ b/patterns/front-controller/src/main/java/com/baeldung/patterns/front/controller/commands/SearchCommand.java @@ -0,0 +1,21 @@ +package com.baeldung.patterns.front.controller.commands; + +import com.baeldung.patterns.front.controller.data.Book; +import com.baeldung.patterns.front.controller.data.BookshelfImpl; + +import javax.servlet.ServletException; +import java.io.IOException; + +public class SearchCommand extends FrontCommand { + @Override + public void process() throws ServletException, IOException { + Book book = new BookshelfImpl().getInstance() + .findByTitle(request.getParameter("title")); + if (book != null) { + request.setAttribute("book", book); + forward("book-found"); + } else { + forward("book-notfound"); + } + } +} diff --git a/patterns/front-controller/src/main/java/com/baeldung/patterns/front/controller/commands/UnknownCommand.java b/patterns/front-controller/src/main/java/com/baeldung/patterns/front/controller/commands/UnknownCommand.java new file mode 100644 index 0000000000..9f24746598 --- /dev/null +++ b/patterns/front-controller/src/main/java/com/baeldung/patterns/front/controller/commands/UnknownCommand.java @@ -0,0 +1,11 @@ +package com.baeldung.patterns.front.controller.commands; + +import javax.servlet.ServletException; +import java.io.IOException; + +public class UnknownCommand extends FrontCommand { + @Override + public void process() throws ServletException, IOException { + forward("unknown"); + } +} diff --git a/patterns/front-controller/src/main/java/com/baeldung/patterns/front/controller/data/Book.java b/patterns/front-controller/src/main/java/com/baeldung/patterns/front/controller/data/Book.java new file mode 100644 index 0000000000..5a15df92c4 --- /dev/null +++ b/patterns/front-controller/src/main/java/com/baeldung/patterns/front/controller/data/Book.java @@ -0,0 +1,15 @@ +package com.baeldung.patterns.front.controller.data; + +public interface Book { + String getAuthor(); + + void setAuthor(String author); + + String getTitle(); + + void setTitle(String title); + + Double getPrice(); + + void setPrice(Double price); +} diff --git a/patterns/front-controller/src/main/java/com/baeldung/patterns/front/controller/data/BookImpl.java b/patterns/front-controller/src/main/java/com/baeldung/patterns/front/controller/data/BookImpl.java new file mode 100644 index 0000000000..0421ff5623 --- /dev/null +++ b/patterns/front-controller/src/main/java/com/baeldung/patterns/front/controller/data/BookImpl.java @@ -0,0 +1,46 @@ +package com.baeldung.patterns.front.controller.data; + +public class BookImpl implements Book { + private String author; + private String title; + private Double price; + + public BookImpl() { + } + + public BookImpl(String author, String title, Double price) { + this.author = author; + this.title = title; + this.price = price; + } + + @Override + public String getAuthor() { + return author; + } + + @Override + public void setAuthor(String author) { + this.author = author; + } + + @Override + public String getTitle() { + return title; + } + + @Override + public void setTitle(String title) { + this.title = title; + } + + @Override + public Double getPrice() { + return price; + } + + @Override + public void setPrice(Double price) { + this.price = price; + } +} diff --git a/patterns/front-controller/src/main/java/com/baeldung/patterns/front/controller/data/Bookshelf.java b/patterns/front-controller/src/main/java/com/baeldung/patterns/front/controller/data/Bookshelf.java new file mode 100644 index 0000000000..21e3067133 --- /dev/null +++ b/patterns/front-controller/src/main/java/com/baeldung/patterns/front/controller/data/Bookshelf.java @@ -0,0 +1,15 @@ +package com.baeldung.patterns.front.controller.data; + +public interface Bookshelf { + + default void init() { + add(new BookImpl("Wilson, Robert Anton & Shea, Robert", "Illuminati", 9.99)); + add(new BookImpl("Fowler, Martin", "Patterns of Enterprise Application Architecture", 27.88)); + } + + Bookshelf getInstance(); + + boolean add(E book); + + Book findByTitle(String title); +} diff --git a/patterns/front-controller/src/main/java/com/baeldung/patterns/front/controller/data/BookshelfImpl.java b/patterns/front-controller/src/main/java/com/baeldung/patterns/front/controller/data/BookshelfImpl.java new file mode 100644 index 0000000000..dd1fa4e523 --- /dev/null +++ b/patterns/front-controller/src/main/java/com/baeldung/patterns/front/controller/data/BookshelfImpl.java @@ -0,0 +1,24 @@ +package com.baeldung.patterns.front.controller.data; + +import java.util.ArrayList; + +public class BookshelfImpl extends ArrayList implements Bookshelf { + private static Bookshelf INSTANCE; + + @Override + public Bookshelf getInstance() { + if (INSTANCE == null) { + INSTANCE = new BookshelfImpl(); + INSTANCE.init(); + } + return INSTANCE; + } + + @Override + public Book findByTitle(String title) { + return this.stream() + .filter(book -> book.getTitle().toLowerCase().contains(title.toLowerCase())) + .findFirst() + .orElse(null); + } +} diff --git a/patterns/front-controller/src/main/resources/front controller.png b/patterns/front-controller/src/main/resources/front controller.png new file mode 100644 index 0000000000000000000000000000000000000000..bd475bf3f32a2a82cc0d5d31acc3e09344109f1f GIT binary patch literal 9492 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 AbstractCommand +AbstractCommand <|-- ConcreteCommand1 +AbstractCommand <|-- ConcreteCommand2 + +@enduml \ No newline at end of file diff --git a/patterns/front-controller/src/main/webapp/WEB-INF/jsp/book-found.jsp b/patterns/front-controller/src/main/webapp/WEB-INF/jsp/book-found.jsp new file mode 100644 index 0000000000..42e08b4a46 --- /dev/null +++ b/patterns/front-controller/src/main/webapp/WEB-INF/jsp/book-found.jsp @@ -0,0 +1,12 @@ + + + + Bookshelf: Title found + + +

Our Bookshelf contains this title:

+

${book.getTitle()}

+

Author: ${book.getAuthor()}

+ + + diff --git a/patterns/front-controller/src/main/webapp/WEB-INF/jsp/book-notfound.jsp b/patterns/front-controller/src/main/webapp/WEB-INF/jsp/book-notfound.jsp new file mode 100644 index 0000000000..2f8ac01755 --- /dev/null +++ b/patterns/front-controller/src/main/webapp/WEB-INF/jsp/book-notfound.jsp @@ -0,0 +1,10 @@ + + + + Bookshelf: Title not found + + +

Our Bookshelf doesn't contains this title:

+

${param.get("title")}

+ + diff --git a/patterns/front-controller/src/main/webapp/WEB-INF/jsp/unknown.jsp b/patterns/front-controller/src/main/webapp/WEB-INF/jsp/unknown.jsp new file mode 100644 index 0000000000..b52b2de8d5 --- /dev/null +++ b/patterns/front-controller/src/main/webapp/WEB-INF/jsp/unknown.jsp @@ -0,0 +1,9 @@ + + + + Bookshelf: Command unknown + + +

Sorry, this command is not known!

+ + diff --git a/patterns/front-controller/src/main/webapp/WEB-INF/web.xml b/patterns/front-controller/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 0000000000..4abca2bb97 --- /dev/null +++ b/patterns/front-controller/src/main/webapp/WEB-INF/web.xml @@ -0,0 +1,15 @@ + + + + front-controller + com.baeldung.patterns.front.controller.FrontControllerServlet + + + front-controller + / + + diff --git a/patterns/src/main/java/com/baeldung/patterns/FrontControllerServlet.java b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/FrontControllerServlet.java similarity index 78% rename from patterns/src/main/java/com/baeldung/patterns/FrontControllerServlet.java rename to patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/FrontControllerServlet.java index beba1d66e5..9d8a004265 100644 --- a/patterns/src/main/java/com/baeldung/patterns/FrontControllerServlet.java +++ b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/FrontControllerServlet.java @@ -1,9 +1,9 @@ -package com.baeldung.patterns; +package com.baeldung.patterns.intercepting.filter; -import com.baeldung.patterns.commands.FrontCommand; -import com.baeldung.patterns.commands.UnknownCommand; -import com.baeldung.patterns.data.Bookshelf; -import com.baeldung.patterns.data.BookshelfImpl; +import com.baeldung.patterns.intercepting.filter.commands.FrontCommand; +import com.baeldung.patterns.intercepting.filter.commands.UnknownCommand; +import com.baeldung.patterns.intercepting.filter.data.Bookshelf; +import com.baeldung.patterns.intercepting.filter.data.BookshelfImpl; import javax.servlet.ServletConfig; import javax.servlet.ServletException; @@ -13,7 +13,7 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; -@WebServlet(name = "front-controller", urlPatterns = "/index") +@WebServlet(name = "intercepting-filter", urlPatterns = "/") public class FrontControllerServlet extends HttpServlet { @Override public void init(ServletConfig config) throws ServletException { @@ -52,7 +52,7 @@ public class FrontControllerServlet extends HttpServlet { try { Class type = Class.forName( String.format( - "com.baeldung.patterns.commands.%sCommand", + "com.baeldung.patterns.intercepting.filter.commands.%sCommand", request.getParameter("command") ) ); diff --git a/patterns/src/main/java/com/baeldung/patterns/commands/CheckoutCommand.java b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/commands/CheckoutCommand.java similarity index 80% rename from patterns/src/main/java/com/baeldung/patterns/commands/CheckoutCommand.java rename to patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/commands/CheckoutCommand.java index be6dbe84bd..fda88c741e 100644 --- a/patterns/src/main/java/com/baeldung/patterns/commands/CheckoutCommand.java +++ b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/commands/CheckoutCommand.java @@ -1,6 +1,6 @@ -package com.baeldung.patterns.commands; +package com.baeldung.patterns.intercepting.filter.commands; -import com.baeldung.patterns.data.Order; +import com.baeldung.patterns.intercepting.filter.data.Order; import javax.servlet.ServletException; import javax.servlet.http.HttpSession; @@ -13,7 +13,7 @@ public class CheckoutCommand extends FrontCommand { HttpSession session = request.getSession(false); if (request.getMethod().equals("POST")) { session.removeAttribute("order"); - response.sendRedirect("index?command=Home&message=Thank you for buying!"); + response.sendRedirect("/?command=Home&message=Thank you for buying!"); } else { Order order = (Order) session.getAttribute("order"); Double total = order.getItems().entrySet().stream() diff --git a/patterns/src/main/java/com/baeldung/patterns/commands/FrontCommand.java b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/commands/FrontCommand.java similarity index 84% rename from patterns/src/main/java/com/baeldung/patterns/commands/FrontCommand.java rename to patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/commands/FrontCommand.java index efc0ee4612..a3c545703b 100644 --- a/patterns/src/main/java/com/baeldung/patterns/commands/FrontCommand.java +++ b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/commands/FrontCommand.java @@ -1,7 +1,7 @@ -package com.baeldung.patterns.commands; +package com.baeldung.patterns.intercepting.filter.commands; -import com.baeldung.patterns.filters.FilterManager; -import com.baeldung.patterns.filters.OnIntercept; +import com.baeldung.patterns.intercepting.filter.filters.FilterManager; +import com.baeldung.patterns.intercepting.filter.filters.OnIntercept; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; diff --git a/patterns/src/main/java/com/baeldung/patterns/commands/HomeCommand.java b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/commands/HomeCommand.java similarity index 76% rename from patterns/src/main/java/com/baeldung/patterns/commands/HomeCommand.java rename to patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/commands/HomeCommand.java index f2358400b9..33e60b44b5 100644 --- a/patterns/src/main/java/com/baeldung/patterns/commands/HomeCommand.java +++ b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/commands/HomeCommand.java @@ -1,6 +1,6 @@ -package com.baeldung.patterns.commands; +package com.baeldung.patterns.intercepting.filter.commands; -import com.baeldung.patterns.data.Bookshelf; +import com.baeldung.patterns.intercepting.filter.data.Bookshelf; import javax.servlet.ServletException; import java.io.IOException; diff --git a/patterns/src/main/java/com/baeldung/patterns/commands/LoginCommand.java b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/commands/LoginCommand.java similarity index 93% rename from patterns/src/main/java/com/baeldung/patterns/commands/LoginCommand.java rename to patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/commands/LoginCommand.java index 1a7795eb3c..cbc8ad9498 100644 --- a/patterns/src/main/java/com/baeldung/patterns/commands/LoginCommand.java +++ b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/commands/LoginCommand.java @@ -1,4 +1,4 @@ -package com.baeldung.patterns.commands; +package com.baeldung.patterns.intercepting.filter.commands; import javax.servlet.ServletException; import javax.servlet.http.HttpSession; diff --git a/patterns/src/main/java/com/baeldung/patterns/commands/LogoutCommand.java b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/commands/LogoutCommand.java similarity index 79% rename from patterns/src/main/java/com/baeldung/patterns/commands/LogoutCommand.java rename to patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/commands/LogoutCommand.java index 82f4e753c9..3c9475d6af 100644 --- a/patterns/src/main/java/com/baeldung/patterns/commands/LogoutCommand.java +++ b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/commands/LogoutCommand.java @@ -1,4 +1,4 @@ -package com.baeldung.patterns.commands; +package com.baeldung.patterns.intercepting.filter.commands; import javax.servlet.ServletException; import javax.servlet.http.HttpSession; @@ -11,6 +11,6 @@ public class LogoutCommand extends FrontCommand { HttpSession session = request.getSession(false); session.removeAttribute("username"); session.removeAttribute("order"); - response.sendRedirect("index?command=Home"); + response.sendRedirect("/?command=Home"); } } diff --git a/patterns/src/main/java/com/baeldung/patterns/commands/OrderCommand.java b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/commands/OrderCommand.java similarity index 72% rename from patterns/src/main/java/com/baeldung/patterns/commands/OrderCommand.java rename to patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/commands/OrderCommand.java index 5926dfddb5..e53fcf78dd 100644 --- a/patterns/src/main/java/com/baeldung/patterns/commands/OrderCommand.java +++ b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/commands/OrderCommand.java @@ -1,9 +1,9 @@ -package com.baeldung.patterns.commands; +package com.baeldung.patterns.intercepting.filter.commands; -import com.baeldung.patterns.data.Book; -import com.baeldung.patterns.data.Bookshelf; -import com.baeldung.patterns.data.Order; -import com.baeldung.patterns.data.OrderImpl; +import com.baeldung.patterns.intercepting.filter.data.Book; +import com.baeldung.patterns.intercepting.filter.data.Bookshelf; +import com.baeldung.patterns.intercepting.filter.data.Order; +import com.baeldung.patterns.intercepting.filter.data.OrderImpl; import javax.servlet.ServletException; import javax.servlet.http.HttpSession; @@ -27,7 +27,7 @@ public class OrderCommand extends FrontCommand { Book book = bookshelf.get(isbn); order.add(book, quantity); session.setAttribute("order", order); - response.sendRedirect(String.format("index?command=Show&isbn=%s", isbn)); + response.sendRedirect(String.format("/?command=Show&isbn=%s", isbn)); } } } diff --git a/patterns/src/main/java/com/baeldung/patterns/commands/SearchCommand.java b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/commands/SearchCommand.java similarity index 77% rename from patterns/src/main/java/com/baeldung/patterns/commands/SearchCommand.java rename to patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/commands/SearchCommand.java index 30e401e83a..6c52f4f5a9 100644 --- a/patterns/src/main/java/com/baeldung/patterns/commands/SearchCommand.java +++ b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/commands/SearchCommand.java @@ -1,7 +1,7 @@ -package com.baeldung.patterns.commands; +package com.baeldung.patterns.intercepting.filter.commands; -import com.baeldung.patterns.data.Book; -import com.baeldung.patterns.data.Bookshelf; +import com.baeldung.patterns.intercepting.filter.data.Book; +import com.baeldung.patterns.intercepting.filter.data.Bookshelf; import javax.servlet.ServletException; import java.io.IOException; diff --git a/patterns/src/main/java/com/baeldung/patterns/commands/ShowCommand.java b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/commands/ShowCommand.java similarity index 75% rename from patterns/src/main/java/com/baeldung/patterns/commands/ShowCommand.java rename to patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/commands/ShowCommand.java index 3226d9969f..1ea5ca6edb 100644 --- a/patterns/src/main/java/com/baeldung/patterns/commands/ShowCommand.java +++ b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/commands/ShowCommand.java @@ -1,7 +1,7 @@ -package com.baeldung.patterns.commands; +package com.baeldung.patterns.intercepting.filter.commands; -import com.baeldung.patterns.data.Book; -import com.baeldung.patterns.data.Bookshelf; +import com.baeldung.patterns.intercepting.filter.data.Book; +import com.baeldung.patterns.intercepting.filter.data.Bookshelf; import javax.servlet.ServletException; import java.io.IOException; diff --git a/patterns/src/main/java/com/baeldung/patterns/commands/UnknownCommand.java b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/commands/UnknownCommand.java similarity index 81% rename from patterns/src/main/java/com/baeldung/patterns/commands/UnknownCommand.java rename to patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/commands/UnknownCommand.java index 71634e5263..427efe5aba 100644 --- a/patterns/src/main/java/com/baeldung/patterns/commands/UnknownCommand.java +++ b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/commands/UnknownCommand.java @@ -1,4 +1,4 @@ -package com.baeldung.patterns.commands; +package com.baeldung.patterns.intercepting.filter.commands; import javax.servlet.ServletException; import java.io.IOException; diff --git a/patterns/src/main/java/com/baeldung/patterns/data/Book.java b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/data/Book.java similarity index 82% rename from patterns/src/main/java/com/baeldung/patterns/data/Book.java rename to patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/data/Book.java index ab417aa93b..4e98095c2c 100644 --- a/patterns/src/main/java/com/baeldung/patterns/data/Book.java +++ b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/data/Book.java @@ -1,4 +1,4 @@ -package com.baeldung.patterns.data; +package com.baeldung.patterns.intercepting.filter.data; public interface Book { String getIsbn(); diff --git a/patterns/src/main/java/com/baeldung/patterns/data/BookImpl.java b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/data/BookImpl.java similarity index 94% rename from patterns/src/main/java/com/baeldung/patterns/data/BookImpl.java rename to patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/data/BookImpl.java index adecfd1d3a..cd0c0924e2 100644 --- a/patterns/src/main/java/com/baeldung/patterns/data/BookImpl.java +++ b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/data/BookImpl.java @@ -1,4 +1,4 @@ -package com.baeldung.patterns.data; +package com.baeldung.patterns.intercepting.filter.data; public class BookImpl implements Book { private String isbn; diff --git a/patterns/src/main/java/com/baeldung/patterns/data/Bookshelf.java b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/data/Bookshelf.java similarity index 89% rename from patterns/src/main/java/com/baeldung/patterns/data/Bookshelf.java rename to patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/data/Bookshelf.java index 66a1da9272..26541de8e0 100644 --- a/patterns/src/main/java/com/baeldung/patterns/data/Bookshelf.java +++ b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/data/Bookshelf.java @@ -1,4 +1,4 @@ -package com.baeldung.patterns.data; +package com.baeldung.patterns.intercepting.filter.data; import java.util.List; diff --git a/patterns/src/main/java/com/baeldung/patterns/data/BookshelfImpl.java b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/data/BookshelfImpl.java similarity index 91% rename from patterns/src/main/java/com/baeldung/patterns/data/BookshelfImpl.java rename to patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/data/BookshelfImpl.java index a7cbda140d..5767af8e50 100644 --- a/patterns/src/main/java/com/baeldung/patterns/data/BookshelfImpl.java +++ b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/data/BookshelfImpl.java @@ -1,4 +1,4 @@ -package com.baeldung.patterns.data; +package com.baeldung.patterns.intercepting.filter.data; import java.util.ArrayList; import java.util.List; diff --git a/patterns/src/main/java/com/baeldung/patterns/data/Order.java b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/data/Order.java similarity index 73% rename from patterns/src/main/java/com/baeldung/patterns/data/Order.java rename to patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/data/Order.java index 6dc67e4e58..f4a32002d7 100644 --- a/patterns/src/main/java/com/baeldung/patterns/data/Order.java +++ b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/data/Order.java @@ -1,4 +1,4 @@ -package com.baeldung.patterns.data; +package com.baeldung.patterns.intercepting.filter.data; import java.util.Map; diff --git a/patterns/src/main/java/com/baeldung/patterns/data/OrderImpl.java b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/data/OrderImpl.java similarity index 93% rename from patterns/src/main/java/com/baeldung/patterns/data/OrderImpl.java rename to patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/data/OrderImpl.java index 73232ab11c..9f50e45082 100644 --- a/patterns/src/main/java/com/baeldung/patterns/data/OrderImpl.java +++ b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/data/OrderImpl.java @@ -1,4 +1,4 @@ -package com.baeldung.patterns.data; +package com.baeldung.patterns.intercepting.filter.data; import java.util.HashMap; import java.util.Map; diff --git a/patterns/src/main/java/com/baeldung/patterns/filters/AuthenticationFilter.java b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/filters/AuthenticationFilter.java similarity index 86% rename from patterns/src/main/java/com/baeldung/patterns/filters/AuthenticationFilter.java rename to patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/filters/AuthenticationFilter.java index f5e03878ca..a2cac9d84c 100644 --- a/patterns/src/main/java/com/baeldung/patterns/filters/AuthenticationFilter.java +++ b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/filters/AuthenticationFilter.java @@ -1,7 +1,7 @@ -package com.baeldung.patterns.filters; +package com.baeldung.patterns.intercepting.filter.filters; -import com.baeldung.patterns.commands.FrontCommand; -import com.baeldung.patterns.commands.LoginCommand; +import com.baeldung.patterns.intercepting.filter.commands.FrontCommand; +import com.baeldung.patterns.intercepting.filter.commands.LoginCommand; import javax.servlet.*; import javax.servlet.http.HttpServletRequest; diff --git a/patterns/src/main/java/com/baeldung/patterns/filters/BaseFilter.java b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/filters/BaseFilter.java similarity index 91% rename from patterns/src/main/java/com/baeldung/patterns/filters/BaseFilter.java rename to patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/filters/BaseFilter.java index 670039a62c..90d13a6eda 100644 --- a/patterns/src/main/java/com/baeldung/patterns/filters/BaseFilter.java +++ b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/filters/BaseFilter.java @@ -1,4 +1,4 @@ -package com.baeldung.patterns.filters; +package com.baeldung.patterns.intercepting.filter.filters; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/patterns/src/main/java/com/baeldung/patterns/filters/EncodingFilter.java b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/filters/EncodingFilter.java similarity index 90% rename from patterns/src/main/java/com/baeldung/patterns/filters/EncodingFilter.java rename to patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/filters/EncodingFilter.java index 2856bb1112..ef3f95382e 100644 --- a/patterns/src/main/java/com/baeldung/patterns/filters/EncodingFilter.java +++ b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/filters/EncodingFilter.java @@ -1,4 +1,4 @@ -package com.baeldung.patterns.filters; +package com.baeldung.patterns.intercepting.filter.filters; import javax.servlet.*; import javax.servlet.annotation.WebFilter; @@ -6,7 +6,7 @@ import javax.servlet.annotation.WebInitParam; import java.io.IOException; @WebFilter( - servletNames = {"front-controller"}, + servletNames = {"intercepting-filter"}, initParams = {@WebInitParam(name = "encoding", value = "UTF-8")} ) public class EncodingFilter extends BaseFilter { diff --git a/patterns/src/main/java/com/baeldung/patterns/filters/FilterChainImpl.java b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/filters/FilterChainImpl.java similarity index 91% rename from patterns/src/main/java/com/baeldung/patterns/filters/FilterChainImpl.java rename to patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/filters/FilterChainImpl.java index 789fc003a0..80ddef785c 100644 --- a/patterns/src/main/java/com/baeldung/patterns/filters/FilterChainImpl.java +++ b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/filters/FilterChainImpl.java @@ -1,4 +1,4 @@ -package com.baeldung.patterns.filters; +package com.baeldung.patterns.intercepting.filter.filters; import javax.servlet.*; import java.io.IOException; diff --git a/patterns/src/main/java/com/baeldung/patterns/filters/FilterManager.java b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/filters/FilterManager.java similarity index 91% rename from patterns/src/main/java/com/baeldung/patterns/filters/FilterManager.java rename to patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/filters/FilterManager.java index ae945107fd..2f7b7ac703 100644 --- a/patterns/src/main/java/com/baeldung/patterns/filters/FilterManager.java +++ b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/filters/FilterManager.java @@ -1,4 +1,4 @@ -package com.baeldung.patterns.filters; +package com.baeldung.patterns.intercepting.filter.filters; import javax.servlet.FilterChain; import javax.servlet.ServletException; diff --git a/patterns/src/main/java/com/baeldung/patterns/filters/LoggingFilter.java b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/filters/LoggingFilter.java similarity index 90% rename from patterns/src/main/java/com/baeldung/patterns/filters/LoggingFilter.java rename to patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/filters/LoggingFilter.java index f6ffc20585..0ebb397938 100644 --- a/patterns/src/main/java/com/baeldung/patterns/filters/LoggingFilter.java +++ b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/filters/LoggingFilter.java @@ -1,4 +1,4 @@ -package com.baeldung.patterns.filters; +package com.baeldung.patterns.intercepting.filter.filters; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -11,7 +11,7 @@ import javax.servlet.annotation.WebFilter; import javax.servlet.http.HttpServletRequest; import java.io.IOException; -@WebFilter(servletNames = "front-controller") +@WebFilter(servletNames = "intercepting-filter") public class LoggingFilter extends BaseFilter { private static final Logger log = LoggerFactory.getLogger(LoggingFilter.class); diff --git a/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/filters/OnIntercept.java b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/filters/OnIntercept.java new file mode 100644 index 0000000000..1a138f1e1c --- /dev/null +++ b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/filters/OnIntercept.java @@ -0,0 +1,5 @@ +package com.baeldung.patterns.intercepting.filter.filters; + +public interface OnIntercept { + void intercept(); +} diff --git a/patterns/src/main/java/com/baeldung/patterns/filters/TemplateFilter.java b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/filters/TemplateFilter.java similarity index 95% rename from patterns/src/main/java/com/baeldung/patterns/filters/TemplateFilter.java rename to patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/filters/TemplateFilter.java index 939d9ad84d..69c613fffe 100644 --- a/patterns/src/main/java/com/baeldung/patterns/filters/TemplateFilter.java +++ b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/filters/TemplateFilter.java @@ -1,4 +1,4 @@ -package com.baeldung.patterns.filters; +package com.baeldung.patterns.intercepting.filter.filters; import javax.servlet.FilterChain; import javax.servlet.ServletException; diff --git a/patterns/src/main/java/com/baeldung/patterns/filters/VisitorCounterFilter.java b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/filters/VisitorCounterFilter.java similarity index 93% rename from patterns/src/main/java/com/baeldung/patterns/filters/VisitorCounterFilter.java rename to patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/filters/VisitorCounterFilter.java index 5c2358686b..5521b9faee 100644 --- a/patterns/src/main/java/com/baeldung/patterns/filters/VisitorCounterFilter.java +++ b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/filters/VisitorCounterFilter.java @@ -1,4 +1,4 @@ -package com.baeldung.patterns.filters; +package com.baeldung.patterns.intercepting.filter.filters; import javax.servlet.*; import javax.servlet.http.HttpServletRequest; diff --git a/patterns/src/main/resources/front_controller.png b/patterns/intercepting-filter/src/main/resources/front_controller.png similarity index 100% rename from patterns/src/main/resources/front_controller.png rename to patterns/intercepting-filter/src/main/resources/front_controller.png diff --git a/patterns/src/main/resources/front_controller.puml b/patterns/intercepting-filter/src/main/resources/front_controller.puml similarity index 100% rename from patterns/src/main/resources/front_controller.puml rename to patterns/intercepting-filter/src/main/resources/front_controller.puml diff --git a/patterns/src/main/resources/intercepting_filter.png b/patterns/intercepting-filter/src/main/resources/intercepting_filter.png similarity index 100% rename from patterns/src/main/resources/intercepting_filter.png rename to patterns/intercepting-filter/src/main/resources/intercepting_filter.png diff --git a/patterns/src/main/resources/intercepting_filter.puml b/patterns/intercepting-filter/src/main/resources/intercepting_filter.puml similarity index 100% rename from patterns/src/main/resources/intercepting_filter.puml rename to patterns/intercepting-filter/src/main/resources/intercepting_filter.puml diff --git a/patterns/src/main/webapp/WEB-INF/jsp/book-found.jsp b/patterns/intercepting-filter/src/main/webapp/WEB-INF/jsp/book-found.jsp similarity index 81% rename from patterns/src/main/webapp/WEB-INF/jsp/book-found.jsp rename to patterns/intercepting-filter/src/main/webapp/WEB-INF/jsp/book-found.jsp index 95a74b9e2e..4de1d3ca23 100644 --- a/patterns/src/main/webapp/WEB-INF/jsp/book-found.jsp +++ b/patterns/intercepting-filter/src/main/webapp/WEB-INF/jsp/book-found.jsp @@ -1,4 +1,4 @@ -<%@ page import="com.baeldung.patterns.data.Book" %> +<%@ page import="com.baeldung.patterns.intercepting.filter.data.Book" %> <%@ page import="java.util.List" %> @@ -10,12 +10,12 @@ <% for (Book book : (List) request.getAttribute("books")) { %>

<%= book.getTitle() %>

Author: <%= book.getAuthor() %>

-
+ - Go back... + Go back...
<% } %> <%@ include file="shopping-cart-hint.jsp"%> diff --git a/patterns/src/main/webapp/WEB-INF/jsp/book-notfound.jsp b/patterns/intercepting-filter/src/main/webapp/WEB-INF/jsp/book-notfound.jsp similarity index 100% rename from patterns/src/main/webapp/WEB-INF/jsp/book-notfound.jsp rename to patterns/intercepting-filter/src/main/webapp/WEB-INF/jsp/book-notfound.jsp diff --git a/patterns/src/main/webapp/WEB-INF/jsp/home.jsp b/patterns/intercepting-filter/src/main/webapp/WEB-INF/jsp/home.jsp similarity index 79% rename from patterns/src/main/webapp/WEB-INF/jsp/home.jsp rename to patterns/intercepting-filter/src/main/webapp/WEB-INF/jsp/home.jsp index e7bf1562ea..2c2d7c2f22 100644 --- a/patterns/src/main/webapp/WEB-INF/jsp/home.jsp +++ b/patterns/intercepting-filter/src/main/webapp/WEB-INF/jsp/home.jsp @@ -1,4 +1,4 @@ -<%@ page import="com.baeldung.patterns.data.Book" %> +<%@ page import="com.baeldung.patterns.intercepting.filter.data.Book" %> <%@ page import="java.util.List" %> @@ -6,7 +6,7 @@ Bookshelf: Home -
+
@@ -19,7 +19,7 @@

<%= book.getAuthor() %>:

<%= book.getTitle() %>

- More... + More... <% } %> <%@ include file="shopping-cart-hint.jsp"%> <%@ include file="visitor-counter.jsp"%> diff --git a/patterns/src/main/webapp/WEB-INF/jsp/login.jsp b/patterns/intercepting-filter/src/main/webapp/WEB-INF/jsp/login.jsp similarity index 89% rename from patterns/src/main/webapp/WEB-INF/jsp/login.jsp rename to patterns/intercepting-filter/src/main/webapp/WEB-INF/jsp/login.jsp index 6983fba949..619068bcae 100644 --- a/patterns/src/main/webapp/WEB-INF/jsp/login.jsp +++ b/patterns/intercepting-filter/src/main/webapp/WEB-INF/jsp/login.jsp @@ -6,7 +6,7 @@

Please input a username:

Login

-
+ "> diff --git a/patterns/src/main/webapp/WEB-INF/jsp/shopping-cart-hint.jsp b/patterns/intercepting-filter/src/main/webapp/WEB-INF/jsp/shopping-cart-hint.jsp similarity index 78% rename from patterns/src/main/webapp/WEB-INF/jsp/shopping-cart-hint.jsp rename to patterns/intercepting-filter/src/main/webapp/WEB-INF/jsp/shopping-cart-hint.jsp index 9173c35711..7e0c051540 100644 --- a/patterns/src/main/webapp/WEB-INF/jsp/shopping-cart-hint.jsp +++ b/patterns/intercepting-filter/src/main/webapp/WEB-INF/jsp/shopping-cart-hint.jsp @@ -1,4 +1,4 @@ -<%@ page import="com.baeldung.patterns.data.Order" %> +<%@ page import="com.baeldung.patterns.intercepting.filter.data.Order" %> <% if (session != null && session.getAttribute("order") != null) { %> <% Order order = ((Order) session.getAttribute("order")); %> <% if (order != null && order.getItems().size() > 0) { %> @@ -10,7 +10,7 @@ <% } else { %> <%= (order.getItems().size()) %> items. <% } %> - Checkout + Checkout

<% } %> <% } %> diff --git a/patterns/src/main/webapp/WEB-INF/jsp/shopping-cart.jsp b/patterns/intercepting-filter/src/main/webapp/WEB-INF/jsp/shopping-cart.jsp similarity index 80% rename from patterns/src/main/webapp/WEB-INF/jsp/shopping-cart.jsp rename to patterns/intercepting-filter/src/main/webapp/WEB-INF/jsp/shopping-cart.jsp index 024a3bac3e..5f71d2e54e 100644 --- a/patterns/src/main/webapp/WEB-INF/jsp/shopping-cart.jsp +++ b/patterns/intercepting-filter/src/main/webapp/WEB-INF/jsp/shopping-cart.jsp @@ -1,5 +1,5 @@ -<%@ page import="com.baeldung.patterns.data.Book" %> -<%@ page import="com.baeldung.patterns.data.Order" %> +<%@ page import="com.baeldung.patterns.intercepting.filter.data.Book" %> +<%@ page import="com.baeldung.patterns.intercepting.filter.data.Order" %> <%@ page import="java.util.Map" %> @@ -22,7 +22,7 @@

Total: <%= request.getAttribute("total") %>

- +
diff --git a/patterns/intercepting-filter/src/main/webapp/WEB-INF/jsp/unknown.jsp b/patterns/intercepting-filter/src/main/webapp/WEB-INF/jsp/unknown.jsp new file mode 100644 index 0000000000..b52b2de8d5 --- /dev/null +++ b/patterns/intercepting-filter/src/main/webapp/WEB-INF/jsp/unknown.jsp @@ -0,0 +1,9 @@ + + + + Bookshelf: Command unknown + + +

Sorry, this command is not known!

+ + diff --git a/patterns/src/main/webapp/WEB-INF/jsp/visitor-counter.jsp b/patterns/intercepting-filter/src/main/webapp/WEB-INF/jsp/visitor-counter.jsp similarity index 60% rename from patterns/src/main/webapp/WEB-INF/jsp/visitor-counter.jsp rename to patterns/intercepting-filter/src/main/webapp/WEB-INF/jsp/visitor-counter.jsp index 397364e2b3..de1c741fb1 100644 --- a/patterns/src/main/webapp/WEB-INF/jsp/visitor-counter.jsp +++ b/patterns/intercepting-filter/src/main/webapp/WEB-INF/jsp/visitor-counter.jsp @@ -1,5 +1,5 @@ <% Integer counter = (Integer) request.getAttribute("counter"); %> <% if (counter != null && counter > 0) { %>
-

You are visitor #<%= counter %>. Logout

+

You are visitor #<%= counter %>. Logout

<% } %> diff --git a/patterns/pom.xml b/patterns/pom.xml index 1b7340304b..6797891353 100644 --- a/patterns/pom.xml +++ b/patterns/pom.xml @@ -4,60 +4,55 @@ 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.patterns + patterns-parent + pom + + front-controller + intercepting-filter + + com.baeldung parent-modules 1.0.0-SNAPSHOT + .. - com.baeldung.patterns - patterns - war - - - - javax.servlet - javax.servlet-api - 3.1.0 - provided - - - org.slf4j - slf4j-api - 1.7.21 - provided - - + + + + javax.servlet + javax.servlet-api + 3.1.0 + provided + + + - - - org.apache.maven.plugins - maven-compiler-plugin - 3.5.1 - - 1.8 - 1.8 - - - - org.apache.maven.plugins - maven-war-plugin - 3.0.0 - - false - - - - org.eclipse.jetty - jetty-maven-plugin - 9.3.11.v20160721 - - - / - - - - + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.5.1 + + 1.8 + 1.8 + + + + org.apache.maven.plugins + maven-war-plugin + 3.0.0 + + + org.eclipse.jetty + jetty-maven-plugin + 9.3.12.v20160915 + + + diff --git a/patterns/src/main/java/com/baeldung/patterns/filters/OnIntercept.java b/patterns/src/main/java/com/baeldung/patterns/filters/OnIntercept.java deleted file mode 100644 index 73be3509f0..0000000000 --- a/patterns/src/main/java/com/baeldung/patterns/filters/OnIntercept.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.baeldung.patterns.filters; - -public interface OnIntercept { - void intercept(); -} From 669ba5ef094cbf4f17871608e01a35c3b5fe361a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20R=C3=A4del?= Date: Mon, 24 Oct 2016 03:47:40 +0200 Subject: [PATCH 125/215] BAEL-325: Something forgotten. --- patterns/src/main/webapp/WEB-INF/jsp/unknown.jsp | 9 --------- 1 file changed, 9 deletions(-) delete mode 100644 patterns/src/main/webapp/WEB-INF/jsp/unknown.jsp diff --git a/patterns/src/main/webapp/WEB-INF/jsp/unknown.jsp b/patterns/src/main/webapp/WEB-INF/jsp/unknown.jsp deleted file mode 100644 index b52b2de8d5..0000000000 --- a/patterns/src/main/webapp/WEB-INF/jsp/unknown.jsp +++ /dev/null @@ -1,9 +0,0 @@ - - - - Bookshelf: Command unknown - - -

Sorry, this command is not known!

- - From 5e5b0c9ce3142dbe7ef121f860f9288307afe82f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20R=C3=A4del?= Date: Mon, 24 Oct 2016 15:38:31 +0200 Subject: [PATCH 126/215] BAEL-325: Added UML diagrams reflecting the different filter strategies. --- .../filter/filters/TemplateFilter.java | 1 - .../intercepting_filter-custom_strategy.png | Bin 0 -> 26613 bytes .../intercepting_filter-custom_strategy.puml | 29 ++++++++++++++++++ .../intercepting_filter-standard_strategy.png | Bin 0 -> 25680 bytes ...intercepting_filter-standard_strategy.puml | 26 ++++++++++++++++ .../intercepting_filter-template_strategy.png | Bin 0 -> 25981 bytes ...intercepting_filter-template_strategy.puml | 25 +++++++++++++++ 7 files changed, 80 insertions(+), 1 deletion(-) create mode 100644 patterns/intercepting-filter/src/main/resources/intercepting_filter-custom_strategy.png create mode 100644 patterns/intercepting-filter/src/main/resources/intercepting_filter-custom_strategy.puml create mode 100644 patterns/intercepting-filter/src/main/resources/intercepting_filter-standard_strategy.png create mode 100644 patterns/intercepting-filter/src/main/resources/intercepting_filter-standard_strategy.puml create mode 100644 patterns/intercepting-filter/src/main/resources/intercepting_filter-template_strategy.png create mode 100644 patterns/intercepting-filter/src/main/resources/intercepting_filter-template_strategy.puml diff --git a/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/filters/TemplateFilter.java b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/filters/TemplateFilter.java index 69c613fffe..64396ef931 100644 --- a/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/filters/TemplateFilter.java +++ b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/filters/TemplateFilter.java @@ -9,7 +9,6 @@ import javax.servlet.http.HttpServletResponse; import java.io.IOException; public abstract class TemplateFilter extends BaseFilter { - protected abstract void preFilter( HttpServletRequest request, HttpServletResponse response diff --git a/patterns/intercepting-filter/src/main/resources/intercepting_filter-custom_strategy.png b/patterns/intercepting-filter/src/main/resources/intercepting_filter-custom_strategy.png new file mode 100644 index 0000000000000000000000000000000000000000..2f025fad5e2dfcd47253b39c7c50ddcbf47afc33 GIT binary patch literal 26613 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 literal 0 HcmV?d00001 diff --git a/patterns/intercepting-filter/src/main/resources/intercepting_filter-custom_strategy.puml b/patterns/intercepting-filter/src/main/resources/intercepting_filter-custom_strategy.puml new file mode 100644 index 0000000000..4090085d85 --- /dev/null +++ b/patterns/intercepting-filter/src/main/resources/intercepting_filter-custom_strategy.puml @@ -0,0 +1,29 @@ +@startuml +scale 1.5 + +class FrontControllerServlet { + void doGet() + void doPost() +} +class FilterManager { + {static} void process() +} +class FilterChainImpl { + void doFilter() +} +class AuthenticationFilter { + void doFilter() +} +class VisitorCounterFilter { + void doFilter() +} +class FrontCommand { + void process() +} + +FrontControllerServlet -- FrontCommand +FrontCommand .right.-- FilterManager +FilterManager -- FilterChainImpl +FilterChainImpl .right.-- AuthenticationFilter +AuthenticationFilter .right.-- VisitorCounterFilter +@enduml diff --git a/patterns/intercepting-filter/src/main/resources/intercepting_filter-standard_strategy.png b/patterns/intercepting-filter/src/main/resources/intercepting_filter-standard_strategy.png new file mode 100644 index 0000000000000000000000000000000000000000..0d8db711a7f22026db8313c9a1c16ce77b797dee GIT binary patch literal 25680 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 Ur7w>JuL!|`sp_g!D%pnpA1S+;3jhEB literal 0 HcmV?d00001 diff --git a/patterns/intercepting-filter/src/main/resources/intercepting_filter-standard_strategy.puml b/patterns/intercepting-filter/src/main/resources/intercepting_filter-standard_strategy.puml new file mode 100644 index 0000000000..1261d9ee4b --- /dev/null +++ b/patterns/intercepting-filter/src/main/resources/intercepting_filter-standard_strategy.puml @@ -0,0 +1,26 @@ +@startuml +scale 1.5 + +class FrontControllerServlet { + void doGet() + void doPost() +} +abstract class BaseFilter { + void init() + void destroy() +} +class LoggingFilter { + void doFilter() +} +class EncodingFilter { + void doFilter() +} +class FrontCommand { + void process() +} + +FrontControllerServlet .right.-- FrontCommand +FrontControllerServlet -- BaseFilter +BaseFilter <|-- LoggingFilter +BaseFilter <|-- EncodingFilter +@enduml diff --git a/patterns/intercepting-filter/src/main/resources/intercepting_filter-template_strategy.png b/patterns/intercepting-filter/src/main/resources/intercepting_filter-template_strategy.png new file mode 100644 index 0000000000000000000000000000000000000000..5c37aa2937914acce20739d697117c6cc5eb233c GIT binary patch literal 25981 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 Date: Thu, 27 Oct 2016 00:09:16 +0200 Subject: [PATCH 127/215] BAEL-325: Adding missing pom --- patterns/intercepting-filter/pom.xml | 54 ++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 patterns/intercepting-filter/pom.xml diff --git a/patterns/intercepting-filter/pom.xml b/patterns/intercepting-filter/pom.xml new file mode 100644 index 0000000000..2cf89246f9 --- /dev/null +++ b/patterns/intercepting-filter/pom.xml @@ -0,0 +1,54 @@ + + + 4.0.0 + + intercepting-filter + war + + + com.baeldung.patterns + patterns-parent + 1.0.0-SNAPSHOT + .. + + + + + javax.servlet + javax.servlet-api + + + org.slf4j + slf4j-api + 1.7.21 + provided + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + + + org.apache.maven.plugins + maven-war-plugin + + false + + + + org.eclipse.jetty + jetty-maven-plugin + + + / + + + + + + From 8dd8cab6643dde3c713e4d8e3c1acb3c3269dab3 Mon Sep 17 00:00:00 2001 From: Chris Anatalio Date: Wed, 26 Oct 2016 17:18:23 -0700 Subject: [PATCH 128/215] BAEL-223: Updated package name and project directory --- .../.gitignore | 0 .../README.MD | 0 {spring-boot-data-dynamodb => spring-data-dynamodb}/pom.xml | 0 .../src/main/java/com/baeldung/Application.java | 0 .../spring/data/dynamodb}/config/DynamoDBConfig.java | 4 ++-- .../baeldung/spring/data/dynamodb}/model/ProductInfo.java | 2 +- .../data/dynamodb}/repositories/ProductInfoRepository.java | 4 ++-- .../src/main/resources/application.properties | 0 .../src/main/resources/demo.properties | 0 .../src/main/resources/logback.xml | 0 .../src/main/resources/templates/index.html | 0 .../repository/ProductInfoRepositoryIntegrationTest.java | 6 +++--- .../src/test/resources/application.properties | 0 .../src/test/resources/exception-hibernate.properties | 0 .../src/test/resources/exception.properties | 0 15 files changed, 8 insertions(+), 8 deletions(-) rename {spring-boot-data-dynamodb => spring-data-dynamodb}/.gitignore (100%) rename {spring-boot-data-dynamodb => spring-data-dynamodb}/README.MD (100%) rename {spring-boot-data-dynamodb => spring-data-dynamodb}/pom.xml (100%) rename {spring-boot-data-dynamodb => spring-data-dynamodb}/src/main/java/com/baeldung/Application.java (100%) rename {spring-boot-data-dynamodb/src/main/java/com/baeldung/spring/data/es => spring-data-dynamodb/src/main/java/com/baeldung/spring/data/dynamodb}/config/DynamoDBConfig.java (94%) rename {spring-boot-data-dynamodb/src/main/java/com/baeldung/spring/data/es => spring-data-dynamodb/src/main/java/com/baeldung/spring/data/dynamodb}/model/ProductInfo.java (95%) rename {spring-boot-data-dynamodb/src/main/java/com/baeldung/spring/data/es => spring-data-dynamodb/src/main/java/com/baeldung/spring/data/dynamodb}/repositories/ProductInfoRepository.java (71%) rename {spring-boot-data-dynamodb => spring-data-dynamodb}/src/main/resources/application.properties (100%) rename {spring-boot-data-dynamodb => spring-data-dynamodb}/src/main/resources/demo.properties (100%) rename {spring-boot-data-dynamodb => spring-data-dynamodb}/src/main/resources/logback.xml (100%) rename {spring-boot-data-dynamodb => spring-data-dynamodb}/src/main/resources/templates/index.html (100%) rename {spring-boot-data-dynamodb/src/test/java/com/baeldung/spring/data/es => spring-data-dynamodb/src/test/java/com/baeldung/spring/data/dynamodb}/repository/ProductInfoRepositoryIntegrationTest.java (93%) rename {spring-boot-data-dynamodb => spring-data-dynamodb}/src/test/resources/application.properties (100%) rename {spring-boot-data-dynamodb => spring-data-dynamodb}/src/test/resources/exception-hibernate.properties (100%) rename {spring-boot-data-dynamodb => spring-data-dynamodb}/src/test/resources/exception.properties (100%) diff --git a/spring-boot-data-dynamodb/.gitignore b/spring-data-dynamodb/.gitignore similarity index 100% rename from spring-boot-data-dynamodb/.gitignore rename to spring-data-dynamodb/.gitignore diff --git a/spring-boot-data-dynamodb/README.MD b/spring-data-dynamodb/README.MD similarity index 100% rename from spring-boot-data-dynamodb/README.MD rename to spring-data-dynamodb/README.MD diff --git a/spring-boot-data-dynamodb/pom.xml b/spring-data-dynamodb/pom.xml similarity index 100% rename from spring-boot-data-dynamodb/pom.xml rename to spring-data-dynamodb/pom.xml diff --git a/spring-boot-data-dynamodb/src/main/java/com/baeldung/Application.java b/spring-data-dynamodb/src/main/java/com/baeldung/Application.java similarity index 100% rename from spring-boot-data-dynamodb/src/main/java/com/baeldung/Application.java rename to spring-data-dynamodb/src/main/java/com/baeldung/Application.java diff --git a/spring-boot-data-dynamodb/src/main/java/com/baeldung/spring/data/es/config/DynamoDBConfig.java b/spring-data-dynamodb/src/main/java/com/baeldung/spring/data/dynamodb/config/DynamoDBConfig.java similarity index 94% rename from spring-boot-data-dynamodb/src/main/java/com/baeldung/spring/data/es/config/DynamoDBConfig.java rename to spring-data-dynamodb/src/main/java/com/baeldung/spring/data/dynamodb/config/DynamoDBConfig.java index 4bc8a128bc..271c1e29ab 100644 --- a/spring-boot-data-dynamodb/src/main/java/com/baeldung/spring/data/es/config/DynamoDBConfig.java +++ b/spring-data-dynamodb/src/main/java/com/baeldung/spring/data/dynamodb/config/DynamoDBConfig.java @@ -1,4 +1,4 @@ -package com.baeldung.spring.data.es.config; +package com.baeldung.spring.data.dynamodb.config; import com.amazonaws.auth.AWSCredentials; import com.amazonaws.auth.BasicAWSCredentials; @@ -11,7 +11,7 @@ import org.springframework.context.annotation.Configuration; import org.springframework.util.StringUtils; @Configuration -@EnableDynamoDBRepositories(basePackages = "com.baeldung.spring.data.es.repositories") +@EnableDynamoDBRepositories(basePackages = "com.baeldung.spring.data.dynamodb.repositories") public class DynamoDBConfig { @Value("${amazon.dynamodb.endpoint}") diff --git a/spring-boot-data-dynamodb/src/main/java/com/baeldung/spring/data/es/model/ProductInfo.java b/spring-data-dynamodb/src/main/java/com/baeldung/spring/data/dynamodb/model/ProductInfo.java similarity index 95% rename from spring-boot-data-dynamodb/src/main/java/com/baeldung/spring/data/es/model/ProductInfo.java rename to spring-data-dynamodb/src/main/java/com/baeldung/spring/data/dynamodb/model/ProductInfo.java index 3e75c9e6f2..3b9b0628dd 100644 --- a/spring-boot-data-dynamodb/src/main/java/com/baeldung/spring/data/es/model/ProductInfo.java +++ b/spring-data-dynamodb/src/main/java/com/baeldung/spring/data/dynamodb/model/ProductInfo.java @@ -1,4 +1,4 @@ -package com.baeldung.spring.data.es.model; +package com.baeldung.spring.data.dynamodb.model; import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBAttribute; import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBAutoGeneratedKey; diff --git a/spring-boot-data-dynamodb/src/main/java/com/baeldung/spring/data/es/repositories/ProductInfoRepository.java b/spring-data-dynamodb/src/main/java/com/baeldung/spring/data/dynamodb/repositories/ProductInfoRepository.java similarity index 71% rename from spring-boot-data-dynamodb/src/main/java/com/baeldung/spring/data/es/repositories/ProductInfoRepository.java rename to spring-data-dynamodb/src/main/java/com/baeldung/spring/data/dynamodb/repositories/ProductInfoRepository.java index c5eee49634..da47f033b6 100644 --- a/spring-boot-data-dynamodb/src/main/java/com/baeldung/spring/data/es/repositories/ProductInfoRepository.java +++ b/spring-data-dynamodb/src/main/java/com/baeldung/spring/data/dynamodb/repositories/ProductInfoRepository.java @@ -1,6 +1,6 @@ -package com.baeldung.spring.data.es.repositories; +package com.baeldung.spring.data.dynamodb.repositories; -import com.baeldung.spring.data.es.model.ProductInfo; +import com.baeldung.spring.data.dynamodb.model.ProductInfo; import org.socialsignin.spring.data.dynamodb.repository.EnableScan; import org.springframework.data.repository.CrudRepository; diff --git a/spring-boot-data-dynamodb/src/main/resources/application.properties b/spring-data-dynamodb/src/main/resources/application.properties similarity index 100% rename from spring-boot-data-dynamodb/src/main/resources/application.properties rename to spring-data-dynamodb/src/main/resources/application.properties diff --git a/spring-boot-data-dynamodb/src/main/resources/demo.properties b/spring-data-dynamodb/src/main/resources/demo.properties similarity index 100% rename from spring-boot-data-dynamodb/src/main/resources/demo.properties rename to spring-data-dynamodb/src/main/resources/demo.properties diff --git a/spring-boot-data-dynamodb/src/main/resources/logback.xml b/spring-data-dynamodb/src/main/resources/logback.xml similarity index 100% rename from spring-boot-data-dynamodb/src/main/resources/logback.xml rename to spring-data-dynamodb/src/main/resources/logback.xml diff --git a/spring-boot-data-dynamodb/src/main/resources/templates/index.html b/spring-data-dynamodb/src/main/resources/templates/index.html similarity index 100% rename from spring-boot-data-dynamodb/src/main/resources/templates/index.html rename to spring-data-dynamodb/src/main/resources/templates/index.html diff --git a/spring-boot-data-dynamodb/src/test/java/com/baeldung/spring/data/es/repository/ProductInfoRepositoryIntegrationTest.java b/spring-data-dynamodb/src/test/java/com/baeldung/spring/data/dynamodb/repository/ProductInfoRepositoryIntegrationTest.java similarity index 93% rename from spring-boot-data-dynamodb/src/test/java/com/baeldung/spring/data/es/repository/ProductInfoRepositoryIntegrationTest.java rename to spring-data-dynamodb/src/test/java/com/baeldung/spring/data/dynamodb/repository/ProductInfoRepositoryIntegrationTest.java index df727cf727..e384f7dff4 100644 --- a/spring-boot-data-dynamodb/src/test/java/com/baeldung/spring/data/es/repository/ProductInfoRepositoryIntegrationTest.java +++ b/spring-data-dynamodb/src/test/java/com/baeldung/spring/data/dynamodb/repository/ProductInfoRepositoryIntegrationTest.java @@ -1,4 +1,4 @@ -package com.baeldung.spring.data.es.repository; +package com.baeldung.spring.data.dynamodb.repository; import com.amazonaws.services.dynamodbv2.AmazonDynamoDB; import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapper; @@ -6,8 +6,8 @@ import com.amazonaws.services.dynamodbv2.model.CreateTableRequest; import com.amazonaws.services.dynamodbv2.model.ProvisionedThroughput; import com.amazonaws.services.dynamodbv2.model.ResourceInUseException; import com.baeldung.Application; -import com.baeldung.spring.data.es.model.ProductInfo; -import com.baeldung.spring.data.es.repositories.ProductInfoRepository; +import com.baeldung.spring.data.dynamodb.model.ProductInfo; +import com.baeldung.spring.data.dynamodb.repositories.ProductInfoRepository; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; diff --git a/spring-boot-data-dynamodb/src/test/resources/application.properties b/spring-data-dynamodb/src/test/resources/application.properties similarity index 100% rename from spring-boot-data-dynamodb/src/test/resources/application.properties rename to spring-data-dynamodb/src/test/resources/application.properties diff --git a/spring-boot-data-dynamodb/src/test/resources/exception-hibernate.properties b/spring-data-dynamodb/src/test/resources/exception-hibernate.properties similarity index 100% rename from spring-boot-data-dynamodb/src/test/resources/exception-hibernate.properties rename to spring-data-dynamodb/src/test/resources/exception-hibernate.properties diff --git a/spring-boot-data-dynamodb/src/test/resources/exception.properties b/spring-data-dynamodb/src/test/resources/exception.properties similarity index 100% rename from spring-boot-data-dynamodb/src/test/resources/exception.properties rename to spring-data-dynamodb/src/test/resources/exception.properties From 9d735eb663f5f687bdb2ace39795ec74ffc9790f Mon Sep 17 00:00:00 2001 From: Chris Anatalio Date: Wed, 26 Oct 2016 17:33:36 -0700 Subject: [PATCH 129/215] BAEL-223: Add Ignore annotation to tests since there is not local dynamoDB instance in cloud environment --- .../repository/ProductInfoRepositoryIntegrationTest.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/spring-data-dynamodb/src/test/java/com/baeldung/spring/data/dynamodb/repository/ProductInfoRepositoryIntegrationTest.java b/spring-data-dynamodb/src/test/java/com/baeldung/spring/data/dynamodb/repository/ProductInfoRepositoryIntegrationTest.java index e384f7dff4..8fe3e96940 100644 --- a/spring-data-dynamodb/src/test/java/com/baeldung/spring/data/dynamodb/repository/ProductInfoRepositoryIntegrationTest.java +++ b/spring-data-dynamodb/src/test/java/com/baeldung/spring/data/dynamodb/repository/ProductInfoRepositoryIntegrationTest.java @@ -9,6 +9,7 @@ import com.baeldung.Application; import com.baeldung.spring.data.dynamodb.model.ProductInfo; import com.baeldung.spring.data.dynamodb.repositories.ProductInfoRepository; import org.junit.Before; +import org.junit.Ignore; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; @@ -43,6 +44,7 @@ public class ProductInfoRepositoryIntegrationTest { private static final String EXPECTED_PRICE = "50"; @Before + @Ignore //TODO Remove Ignore annotations when running locally with Local DynamoDB instance public void setup() throws Exception { try { @@ -62,6 +64,7 @@ public class ProductInfoRepositoryIntegrationTest { } @Test + @Ignore //TODO Remove Ignore annotations when running locally with Local DynamoDB instance public void givenItemWithExpectedCost_whenRunFindAll_thenItemIsFound() { ProductInfo productInfo = new ProductInfo(EXPECTED_COST, EXPECTED_PRICE); From b2800b7e8ef9426bb22c1fcf2f8b297cba077a40 Mon Sep 17 00:00:00 2001 From: eugenp Date: Thu, 27 Oct 2016 09:42:00 +0300 Subject: [PATCH 130/215] small testign work --- .../{TestInterceptor.java => InterceptorIntegrationTest.java} | 2 +- .../com/baeldung/test/SpringInterceptorIntegrationTest.java | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) rename cdi/src/test/java/com/baeldung/test/{TestInterceptor.java => InterceptorIntegrationTest.java} (95%) diff --git a/cdi/src/test/java/com/baeldung/test/TestInterceptor.java b/cdi/src/test/java/com/baeldung/test/InterceptorIntegrationTest.java similarity index 95% rename from cdi/src/test/java/com/baeldung/test/TestInterceptor.java rename to cdi/src/test/java/com/baeldung/test/InterceptorIntegrationTest.java index 3529a796d2..cca8cb7495 100644 --- a/cdi/src/test/java/com/baeldung/test/TestInterceptor.java +++ b/cdi/src/test/java/com/baeldung/test/InterceptorIntegrationTest.java @@ -10,7 +10,7 @@ import org.junit.Test; import com.baeldung.interceptor.AuditedInterceptor; import com.baeldung.service.SuperService; -public class TestInterceptor { +public class InterceptorIntegrationTest { Weld weld; WeldContainer container; diff --git a/cdi/src/test/java/com/baeldung/test/SpringInterceptorIntegrationTest.java b/cdi/src/test/java/com/baeldung/test/SpringInterceptorIntegrationTest.java index cffa2256ca..f711b0c8ce 100644 --- a/cdi/src/test/java/com/baeldung/test/SpringInterceptorIntegrationTest.java +++ b/cdi/src/test/java/com/baeldung/test/SpringInterceptorIntegrationTest.java @@ -23,12 +23,16 @@ public class SpringInterceptorIntegrationTest { @Autowired private List accumulator; + // + @Test public void givenService_whenServiceAndAspectExecuted_thenOk() { String code = "123456"; String result = springSuperService.getInfoFromService(code); + Assert.assertThat(accumulator.size(), is(2)); Assert.assertThat(accumulator.get(0), is("Call to getInfoFromService")); Assert.assertThat(accumulator.get(1), is("Method called successfully: getInfoFromService")); } + } From 8260747f5016c24d0c5f3837a9d33bc1ba2dabca Mon Sep 17 00:00:00 2001 From: Ambrus Adrian-Zoltan Date: Thu, 27 Oct 2016 12:21:50 +0300 Subject: [PATCH 131/215] Removed the spring-security-custom-voter module altogether. Integrated the custom voter example into the spring-security-custom-permission module. --- spring-security-custom-permission/pom.xml | 4 + .../main/java/org/baeldung/Application.java | 11 ++- .../org/baeldung/voter}/MinuteBasedVoter.java | 2 +- .../org/baeldung/voter/VoterApplication.java | 17 ++++ .../org/baeldung/voter/VoterMvcConfig.java | 4 +- .../baeldung/voter}/WebSecurityConfig.java | 6 +- .../baeldung/voter}/XmlSecurityConfig.java | 4 +- .../src/main/resources/spring-security.xml | 6 +- .../src/main/resources/templates/private.html | 0 spring-security-custom-voter/pom.xml | 96 ------------------- .../main/java/org/baeldung/Application.java | 12 --- .../src/main/webapp/WEB-INF/web.xml | 47 --------- .../test/java/org/baeldung/web/LiveTest.java | 42 -------- 13 files changed, 40 insertions(+), 211 deletions(-) rename {spring-security-custom-voter/src/main/java/org/baeldung/security => spring-security-custom-permission/src/main/java/org/baeldung/voter}/MinuteBasedVoter.java (97%) create mode 100644 spring-security-custom-permission/src/main/java/org/baeldung/voter/VoterApplication.java rename spring-security-custom-voter/src/main/java/org/baeldung/web/MvcConfig.java => spring-security-custom-permission/src/main/java/org/baeldung/voter/VoterMvcConfig.java (85%) rename {spring-security-custom-voter/src/main/java/org/baeldung/security => spring-security-custom-permission/src/main/java/org/baeldung/voter}/WebSecurityConfig.java (97%) rename {spring-security-custom-voter/src/main/java/org/baeldung/security => spring-security-custom-permission/src/main/java/org/baeldung/voter}/XmlSecurityConfig.java (77%) rename {spring-security-custom-voter => spring-security-custom-permission}/src/main/resources/spring-security.xml (91%) rename {spring-security-custom-voter => spring-security-custom-permission}/src/main/resources/templates/private.html (100%) delete mode 100644 spring-security-custom-voter/pom.xml delete mode 100644 spring-security-custom-voter/src/main/java/org/baeldung/Application.java delete mode 100644 spring-security-custom-voter/src/main/webapp/WEB-INF/web.xml delete mode 100644 spring-security-custom-voter/src/test/java/org/baeldung/web/LiveTest.java diff --git a/spring-security-custom-permission/pom.xml b/spring-security-custom-permission/pom.xml index 94f6006dc8..288cc3d6ba 100644 --- a/spring-security-custom-permission/pom.xml +++ b/spring-security-custom-permission/pom.xml @@ -128,6 +128,7 @@ spring-security-taglibs 4.1.3.RELEASE + javax.servlet.jsp.jstl jstl-api @@ -239,6 +240,9 @@ + org.baeldung.Application + + UTF-8 1.8 2.4.0 diff --git a/spring-security-custom-permission/src/main/java/org/baeldung/Application.java b/spring-security-custom-permission/src/main/java/org/baeldung/Application.java index b4e8d04b49..2d59fab6be 100644 --- a/spring-security-custom-permission/src/main/java/org/baeldung/Application.java +++ b/spring-security-custom-permission/src/main/java/org/baeldung/Application.java @@ -1,12 +1,17 @@ package org.baeldung; import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.context.web.SpringBootServletInitializer; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.FilterType; -@SpringBootApplication +@Configuration +@EnableAutoConfiguration +@ComponentScan(excludeFilters = + @ComponentScan.Filter(type = FilterType.REGEX, pattern = "org.baeldung.voter.*")) public class Application extends SpringBootServletInitializer { - public static void main(String[] args) { SpringApplication.run(Application.class, args); } diff --git a/spring-security-custom-voter/src/main/java/org/baeldung/security/MinuteBasedVoter.java b/spring-security-custom-permission/src/main/java/org/baeldung/voter/MinuteBasedVoter.java similarity index 97% rename from spring-security-custom-voter/src/main/java/org/baeldung/security/MinuteBasedVoter.java rename to spring-security-custom-permission/src/main/java/org/baeldung/voter/MinuteBasedVoter.java index a08079fcff..ca9072bcac 100644 --- a/spring-security-custom-voter/src/main/java/org/baeldung/security/MinuteBasedVoter.java +++ b/spring-security-custom-permission/src/main/java/org/baeldung/voter/MinuteBasedVoter.java @@ -1,4 +1,4 @@ -package org.baeldung.security; +package org.baeldung.voter; import java.time.LocalDateTime; import java.util.Collection; diff --git a/spring-security-custom-permission/src/main/java/org/baeldung/voter/VoterApplication.java b/spring-security-custom-permission/src/main/java/org/baeldung/voter/VoterApplication.java new file mode 100644 index 0000000000..046eca9be7 --- /dev/null +++ b/spring-security-custom-permission/src/main/java/org/baeldung/voter/VoterApplication.java @@ -0,0 +1,17 @@ +package org.baeldung.voter; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.FilterType; + +@Configuration +@EnableAutoConfiguration +@ComponentScan(basePackages = {"org.baeldung.voter"}) +public class VoterApplication { + + public static void main(String[] args) { + SpringApplication.run(VoterApplication.class, args); + } +} diff --git a/spring-security-custom-voter/src/main/java/org/baeldung/web/MvcConfig.java b/spring-security-custom-permission/src/main/java/org/baeldung/voter/VoterMvcConfig.java similarity index 85% rename from spring-security-custom-voter/src/main/java/org/baeldung/web/MvcConfig.java rename to spring-security-custom-permission/src/main/java/org/baeldung/voter/VoterMvcConfig.java index 5d38dca1ff..e282c794d0 100644 --- a/spring-security-custom-voter/src/main/java/org/baeldung/web/MvcConfig.java +++ b/spring-security-custom-permission/src/main/java/org/baeldung/voter/VoterMvcConfig.java @@ -1,4 +1,4 @@ -package org.baeldung.web; +package org.baeldung.voter; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; @@ -10,7 +10,7 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter */ @Configuration -public class MvcConfig extends WebMvcConfigurerAdapter { +public class VoterMvcConfig extends WebMvcConfigurerAdapter { @Override public void addViewControllers(ViewControllerRegistry registry) { registry.addViewController("/").setViewName("private"); diff --git a/spring-security-custom-voter/src/main/java/org/baeldung/security/WebSecurityConfig.java b/spring-security-custom-permission/src/main/java/org/baeldung/voter/WebSecurityConfig.java similarity index 97% rename from spring-security-custom-voter/src/main/java/org/baeldung/security/WebSecurityConfig.java rename to spring-security-custom-permission/src/main/java/org/baeldung/voter/WebSecurityConfig.java index b3fb196424..3330fda7ec 100644 --- a/spring-security-custom-voter/src/main/java/org/baeldung/security/WebSecurityConfig.java +++ b/spring-security-custom-permission/src/main/java/org/baeldung/voter/WebSecurityConfig.java @@ -1,4 +1,4 @@ -package org.baeldung.security; +package org.baeldung.voter; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; @@ -18,8 +18,8 @@ import org.springframework.security.web.util.matcher.AntPathRequestMatcher; import java.util.Arrays; import java.util.List; -@Configuration -@EnableWebSecurity +//@Configuration +//@EnableWebSecurity public class WebSecurityConfig extends WebSecurityConfigurerAdapter { @Autowired public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception { diff --git a/spring-security-custom-voter/src/main/java/org/baeldung/security/XmlSecurityConfig.java b/spring-security-custom-permission/src/main/java/org/baeldung/voter/XmlSecurityConfig.java similarity index 77% rename from spring-security-custom-voter/src/main/java/org/baeldung/security/XmlSecurityConfig.java rename to spring-security-custom-permission/src/main/java/org/baeldung/voter/XmlSecurityConfig.java index 45e095c66e..c206df7d1f 100644 --- a/spring-security-custom-voter/src/main/java/org/baeldung/security/XmlSecurityConfig.java +++ b/spring-security-custom-permission/src/main/java/org/baeldung/voter/XmlSecurityConfig.java @@ -1,4 +1,4 @@ -package org.baeldung.security; +package org.baeldung.voter; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.ImportResource; @@ -7,7 +7,7 @@ import org.springframework.context.annotation.ImportResource; * Created by ambrusadrianz on 09/10/2016. */ @Configuration -//@ImportResource({"classpath:spring-security.xml"}) +@ImportResource({"classpath:spring-security.xml"}) public class XmlSecurityConfig { public XmlSecurityConfig() { super(); diff --git a/spring-security-custom-voter/src/main/resources/spring-security.xml b/spring-security-custom-permission/src/main/resources/spring-security.xml similarity index 91% rename from spring-security-custom-voter/src/main/resources/spring-security.xml rename to spring-security-custom-permission/src/main/resources/spring-security.xml index 117638289e..382dbf5dff 100644 --- a/spring-security-custom-voter/src/main/resources/spring-security.xml +++ b/spring-security-custom-permission/src/main/resources/spring-security.xml @@ -4,7 +4,7 @@ xmlns:beans="http://www.springframework.org/schema/beans" xsi:schemaLocation=" http://www.springframework.org/schema/security - http://www.springframework.org/schema/security/spring-security-4.1.xsd + http://www.springframework.org/schema/security/spring-security-4.0.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> @@ -22,12 +22,12 @@ - + - + diff --git a/spring-security-custom-voter/src/main/resources/templates/private.html b/spring-security-custom-permission/src/main/resources/templates/private.html similarity index 100% rename from spring-security-custom-voter/src/main/resources/templates/private.html rename to spring-security-custom-permission/src/main/resources/templates/private.html diff --git a/spring-security-custom-voter/pom.xml b/spring-security-custom-voter/pom.xml deleted file mode 100644 index 727efa48ab..0000000000 --- a/spring-security-custom-voter/pom.xml +++ /dev/null @@ -1,96 +0,0 @@ - - - 4.0.0 - - org.baeldung - spring-security-custom-voter - 0.0.1-SNAPSHOT - war - - spring-security-custom-voter - Custom AccessDecisionVoter with Spring Security - - - org.springframework.boot - spring-boot-starter-parent - 1.4.1.RELEASE - - - - - UTF-8 - UTF-8 - 3.0.1 - 1.8 - - - - - org.springframework.boot - spring-boot-starter-security - - - org.springframework.boot - spring-boot-starter-thymeleaf - - - org.springframework.boot - spring-boot-starter-web - - - - org.springframework.boot - spring-boot-starter-test - test - - - - - - junit - junit - test - - - - org.hamcrest - hamcrest-core - test - - - - org.hamcrest - hamcrest-library - test - - - - org.springframework - spring-test - 4.3.3.RELEASE - - - - org.springframework.security - spring-security-test - 4.1.3.RELEASE - test - - - - org.springframework.security - spring-security-web - 4.1.3.RELEASE - - - - - - - org.springframework.boot - spring-boot-maven-plugin - - - - diff --git a/spring-security-custom-voter/src/main/java/org/baeldung/Application.java b/spring-security-custom-voter/src/main/java/org/baeldung/Application.java deleted file mode 100644 index a9d6f3b8b1..0000000000 --- a/spring-security-custom-voter/src/main/java/org/baeldung/Application.java +++ /dev/null @@ -1,12 +0,0 @@ -package org.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/spring-security-custom-voter/src/main/webapp/WEB-INF/web.xml b/spring-security-custom-voter/src/main/webapp/WEB-INF/web.xml deleted file mode 100644 index d69bce35ae..0000000000 --- a/spring-security-custom-voter/src/main/webapp/WEB-INF/web.xml +++ /dev/null @@ -1,47 +0,0 @@ - - - - Spring Secured Application - - - - mvc - org.springframework.web.servlet.DispatcherServlet - 1 - - - mvc - / - - - - contextClass - - org.springframework.web.context.support.AnnotationConfigWebApplicationContext - - - - contextConfigLocation - org.baeldung.spring.web.config - - - - org.springframework.web.context.ContextLoaderListener - - - - - - springSecurityFilterChain - org.springframework.web.filter.DelegatingFilterProxy - - - springSecurityFilterChain - /* - - - \ No newline at end of file diff --git a/spring-security-custom-voter/src/test/java/org/baeldung/web/LiveTest.java b/spring-security-custom-voter/src/test/java/org/baeldung/web/LiveTest.java deleted file mode 100644 index 3ddeab5920..0000000000 --- a/spring-security-custom-voter/src/test/java/org/baeldung/web/LiveTest.java +++ /dev/null @@ -1,42 +0,0 @@ -package org.baeldung.web; - -import org.junit.Before; -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.ContextConfiguration; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import org.springframework.test.context.web.WebAppConfiguration; -import org.springframework.test.web.servlet.MockMvc; -import org.springframework.test.web.servlet.setup.MockMvcBuilders; -import org.springframework.web.context.WebApplicationContext; - -import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestBuilders.formLogin; -import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.user; -import static org.springframework.security.test.web.servlet.response.SecurityMockMvcResultMatchers.authenticated; -import static org.springframework.security.test.web.servlet.setup.SecurityMockMvcConfigurers.springSecurity; -import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; -import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; - -@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration @WebAppConfiguration @SpringBootTest public class LiveTest { - @Autowired private WebApplicationContext context; - - private MockMvc mvc; - - @Before public void setup() { - mvc = MockMvcBuilders.webAppContextSetup(context).apply(springSecurity()).build(); - } - - @Test public void givenUnauthenticatedUser_whenAccessingMainPage_thenRedirect() throws Exception { - mvc.perform(get("/")).andExpect(status().is3xxRedirection()); - } - - @Test public void givenValidUsernameAndPassword_whenLogin_thenOK() throws Exception { - mvc.perform(formLogin("/login").user("user").password("pass")).andExpect(authenticated()); - } - - @Test public void givenAuthenticatedAdmin_whenAccessingMainPage_thenOK() throws Exception { - mvc.perform(get("/").with(user("admin").password("pass").roles("ADMIN"))).andExpect(status().isOk()); - } -} From 71e23506173ea243039ce813d98874e79af63daa Mon Sep 17 00:00:00 2001 From: DOHA Date: Thu, 27 Oct 2016 14:05:19 +0200 Subject: [PATCH 132/215] minor fix --- .../jackson/deserialization/JacksonDeserializeTest.java | 4 ++-- .../baeldung/jackson/serialization/JacksonSerializeTest.java | 4 +++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/jackson/src/test/java/org/baeldung/jackson/deserialization/JacksonDeserializeTest.java b/jackson/src/test/java/org/baeldung/jackson/deserialization/JacksonDeserializeTest.java index 31a6ae8ef9..503b6eb99b 100644 --- a/jackson/src/test/java/org/baeldung/jackson/deserialization/JacksonDeserializeTest.java +++ b/jackson/src/test/java/org/baeldung/jackson/deserialization/JacksonDeserializeTest.java @@ -29,12 +29,12 @@ public class JacksonDeserializeTest { final String jsonInput = "{\"imdbId\":\"tt0472043\",\"director\":\"Mel Gibson\",\"actors\":[{\"imdbId\":\"nm2199632\",\"dateOfBirth\":\"1982-09-21T12:00:00+01:00\",\"filmography\":[\"Apocalypto\",\"Beatdown\",\"Wind Walkers\"]}]}"; final ObjectMapper mapper = new ObjectMapper(); - final DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"); + final DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX"); mapper.setDateFormat(df); final Movie movie = mapper.readValue(jsonInput, Movie.class); - final String expectedOutput = "Movie [imdbId=tt0472043, director=Mel Gibson, actors=[ActorJackson [imdbId=nm2199632, dateOfBirth=Tue Sep 21 09:00:00 GMT 1982, filmography=[Apocalypto, Beatdown, Wind Walkers]]]]"; + final String expectedOutput = "Movie [imdbId=tt0472043, director=Mel Gibson, actors=[ActorJackson [imdbId=nm2199632, dateOfBirth=Tue Sep 21 11:00:00 GMT 1982, filmography=[Apocalypto, Beatdown, Wind Walkers]]]]"; Assert.assertEquals(movie.toString(), expectedOutput); } diff --git a/jackson/src/test/java/org/baeldung/jackson/serialization/JacksonSerializeTest.java b/jackson/src/test/java/org/baeldung/jackson/serialization/JacksonSerializeTest.java index fcf19fcfad..6d9e378025 100644 --- a/jackson/src/test/java/org/baeldung/jackson/serialization/JacksonSerializeTest.java +++ b/jackson/src/test/java/org/baeldung/jackson/serialization/JacksonSerializeTest.java @@ -4,6 +4,7 @@ import java.io.IOException; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Arrays; +import java.util.TimeZone; import org.baeldung.jackson.entities.ActorJackson; import org.baeldung.jackson.entities.Movie; @@ -23,6 +24,7 @@ public class JacksonSerializeTest { public void whenSimpleSerialize_thenCorrect() throws JsonProcessingException, ParseException { final SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy"); + sdf.setTimeZone(TimeZone.getTimeZone("GMT")); final ActorJackson rudyYoungblood = new ActorJackson("nm2199632", sdf.parse("21-09-1982"), Arrays.asList("Apocalypto", "Beatdown", "Wind Walkers")); final Movie movie = new Movie("tt0472043", "Mel Gibson", Arrays.asList(rudyYoungblood)); @@ -30,7 +32,7 @@ public class JacksonSerializeTest { final ObjectMapper mapper = new ObjectMapper(); final String jsonResult = mapper.writeValueAsString(movie); - final String expectedOutput = "{\"imdbId\":\"tt0472043\",\"director\":\"Mel Gibson\",\"actors\":[{\"imdbId\":\"nm2199632\",\"dateOfBirth\":401403600000,\"filmography\":[\"Apocalypto\",\"Beatdown\",\"Wind Walkers\"]}]}"; + final String expectedOutput = "{\"imdbId\":\"tt0472043\",\"director\":\"Mel Gibson\",\"actors\":[{\"imdbId\":\"nm2199632\",\"dateOfBirth\":401414400000,\"filmography\":[\"Apocalypto\",\"Beatdown\",\"Wind Walkers\"]}]}"; Assert.assertEquals(jsonResult, expectedOutput); } From 02dda9995c7bceacfe4249479704934ccfb48f49 Mon Sep 17 00:00:00 2001 From: eugenp Date: Thu, 27 Oct 2016 20:34:47 +0300 Subject: [PATCH 133/215] fixing the extra module in the parent pom --- pom.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/pom.xml b/pom.xml index 514d066844..95182ab63c 100644 --- a/pom.xml +++ b/pom.xml @@ -110,7 +110,6 @@ spring-security-basic-auth spring-security-custom-permission - spring-security-custom-voter spring-security-mvc-custom spring-security-mvc-digest-auth spring-security-mvc-ldap From 4362aab2e1d3b92171423528e0a42b972dd4c15a Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Fri, 28 Oct 2016 07:29:07 +0200 Subject: [PATCH 134/215] Add missing files --- core-java/src/main/resources/targetFile.tmp | 2 + .../baeldung/datetime/UseLocalDateTest.java | 54 ++++ .../datetime/UseLocalDateTimeTest.java | 19 ++ .../baeldung/datetime/UseLocalTimeTest.java | 36 +++ .../com/baeldung/datetime/UsePeriodTest.java | 26 ++ .../datetime/UseZonedDateTimeTest.java | 20 ++ .../doublecolon/TestComputerUtils.java | 91 ++++++ .../encoderdecoder/EncoderDecoder.java | 84 ++++++ .../java/com/baeldung/enums/PizzaTest.java | 80 ++++++ .../com/baeldung/file/FileOperationsTest.java | 121 ++++++++ .../java8/Java8CollectionCleanupUnitTest.java | 48 ++++ ...Java8DefaultStaticIntefaceMethodsTest.java | 27 ++ .../java8/Java8ExecutorServiceTest.java | 156 +++++++++++ .../com/baeldung/java8/Java8ForkJoinTest.java | 100 +++++++ .../Java8FunctionalInteracesLambdasTest.java | 94 +++++++ .../java8/Java8MethodReferenceTest.java | 67 +++++ .../com/baeldung/java8/Java8OptionalTest.java | 118 ++++++++ .../com/baeldung/java8/Java8SortUnitTest.java | 115 ++++++++ .../baeldung/java8/Java8StreamApiTest.java | 263 ++++++++++++++++++ .../com/baeldung/java8/Java8StreamsTest.java | 113 ++++++++ .../baeldung/java8/JavaFolderSizeTest.java | 115 ++++++++ .../java8/JavaTryWithResourcesTest.java | 86 ++++++ .../base64/ApacheCommonsEncodeDecodeTest.java | 56 ++++ .../java8/base64/Java8EncodeDecodeTest.java | 109 ++++++++ .../java/com/baeldung/java8/entity/Human.java | 89 ++++++ .../threadpool/CoreThreadPoolTest.java | 146 ++++++++++ .../threadpool/GuavaThreadPoolTest.java | 56 ++++ .../baeldung/util/CurrentDateTimeTest.java | 41 +++ 28 files changed, 2332 insertions(+) create mode 100644 core-java/src/main/resources/targetFile.tmp create mode 100644 core-java/src/test/java/com/baeldung/datetime/UseLocalDateTest.java create mode 100644 core-java/src/test/java/com/baeldung/datetime/UseLocalDateTimeTest.java create mode 100644 core-java/src/test/java/com/baeldung/datetime/UseLocalTimeTest.java create mode 100644 core-java/src/test/java/com/baeldung/datetime/UsePeriodTest.java create mode 100644 core-java/src/test/java/com/baeldung/datetime/UseZonedDateTimeTest.java create mode 100644 core-java/src/test/java/com/baeldung/doublecolon/TestComputerUtils.java create mode 100644 core-java/src/test/java/com/baeldung/encoderdecoder/EncoderDecoder.java create mode 100644 core-java/src/test/java/com/baeldung/enums/PizzaTest.java create mode 100644 core-java/src/test/java/com/baeldung/file/FileOperationsTest.java create mode 100644 core-java/src/test/java/com/baeldung/java8/Java8CollectionCleanupUnitTest.java create mode 100644 core-java/src/test/java/com/baeldung/java8/Java8DefaultStaticIntefaceMethodsTest.java create mode 100644 core-java/src/test/java/com/baeldung/java8/Java8ExecutorServiceTest.java create mode 100644 core-java/src/test/java/com/baeldung/java8/Java8ForkJoinTest.java create mode 100644 core-java/src/test/java/com/baeldung/java8/Java8FunctionalInteracesLambdasTest.java create mode 100644 core-java/src/test/java/com/baeldung/java8/Java8MethodReferenceTest.java create mode 100644 core-java/src/test/java/com/baeldung/java8/Java8OptionalTest.java create mode 100644 core-java/src/test/java/com/baeldung/java8/Java8SortUnitTest.java create mode 100644 core-java/src/test/java/com/baeldung/java8/Java8StreamApiTest.java create mode 100644 core-java/src/test/java/com/baeldung/java8/Java8StreamsTest.java create mode 100644 core-java/src/test/java/com/baeldung/java8/JavaFolderSizeTest.java create mode 100644 core-java/src/test/java/com/baeldung/java8/JavaTryWithResourcesTest.java create mode 100644 core-java/src/test/java/com/baeldung/java8/base64/ApacheCommonsEncodeDecodeTest.java create mode 100644 core-java/src/test/java/com/baeldung/java8/base64/Java8EncodeDecodeTest.java create mode 100644 core-java/src/test/java/com/baeldung/java8/entity/Human.java create mode 100644 core-java/src/test/java/com/baeldung/threadpool/CoreThreadPoolTest.java create mode 100644 core-java/src/test/java/com/baeldung/threadpool/GuavaThreadPoolTest.java create mode 100644 core-java/src/test/java/com/baeldung/util/CurrentDateTimeTest.java diff --git a/core-java/src/main/resources/targetFile.tmp b/core-java/src/main/resources/targetFile.tmp new file mode 100644 index 0000000000..20f137b416 --- /dev/null +++ b/core-java/src/main/resources/targetFile.tmp @@ -0,0 +1,2 @@ +line 1 +a second line \ No newline at end of file diff --git a/core-java/src/test/java/com/baeldung/datetime/UseLocalDateTest.java b/core-java/src/test/java/com/baeldung/datetime/UseLocalDateTest.java new file mode 100644 index 0000000000..0537832586 --- /dev/null +++ b/core-java/src/test/java/com/baeldung/datetime/UseLocalDateTest.java @@ -0,0 +1,54 @@ +package com.baeldung.datetime; + +import java.time.DayOfWeek; +import java.time.LocalDate; +import java.time.LocalDateTime; + +import org.junit.Assert; +import org.junit.Test; + +public class UseLocalDateTest { + + UseLocalDate useLocalDate = new UseLocalDate(); + + @Test + public void givenValues_whenUsingFactoryOf_thenLocalDate(){ + Assert.assertEquals("2016-05-10",useLocalDate.getLocalDateUsingFactoryOfMethod(2016,5,10).toString()); + } + + @Test + public void givenString_whenUsingParse_thenLocalDate(){ + Assert.assertEquals("2016-05-10",useLocalDate.getLocalDateUsingParseMethod("2016-05-10").toString()); + } + + @Test + public void whenUsingClock_thenLocalDate(){ + Assert.assertEquals(LocalDate.now(),useLocalDate.getLocalDateFromClock()); + } + + @Test + public void givenDate_whenUsingPlus_thenNextDay(){ + Assert.assertEquals(LocalDate.now().plusDays(1),useLocalDate.getNextDay(LocalDate.now())); + } + + @Test + public void givenDate_whenUsingMinus_thenPreviousDay(){ + Assert.assertEquals(LocalDate.now().minusDays(1),useLocalDate.getPreviousDay(LocalDate.now())); + } + + @Test + public void givenToday_whenUsingGetDayOfWeek_thenDayOfWeek(){ + Assert.assertEquals(DayOfWeek.SUNDAY,useLocalDate.getDayOfWeek(LocalDate.parse("2016-05-22"))); + } + + @Test + public void givenToday_whenUsingWithTemporalAdjuster_thenFirstDayOfMonth(){ + Assert.assertEquals(1,useLocalDate.getFirstDayOfMonth().getDayOfMonth()); + } + + @Test + public void givenLocalDate_whenUsingAtStartOfDay_thenReturnMidnight(){ + Assert.assertEquals(LocalDateTime.parse("2016-05-22T00:00:00"),useLocalDate.getStartOfDay(LocalDate.parse("2016-05-22"))); + } + +} diff --git a/core-java/src/test/java/com/baeldung/datetime/UseLocalDateTimeTest.java b/core-java/src/test/java/com/baeldung/datetime/UseLocalDateTimeTest.java new file mode 100644 index 0000000000..69a289fd02 --- /dev/null +++ b/core-java/src/test/java/com/baeldung/datetime/UseLocalDateTimeTest.java @@ -0,0 +1,19 @@ +package com.baeldung.datetime; + +import java.time.LocalDate; +import java.time.LocalTime; +import java.time.Month; + +import org.junit.Assert; +import org.junit.Test; + +public class UseLocalDateTimeTest { + + UseLocalDateTime useLocalDateTime = new UseLocalDateTime(); + + @Test + public void givenString_whenUsingParse_thenLocalDateTime(){ + Assert.assertEquals(LocalDate.of(2016, Month.MAY, 10),useLocalDateTime.getLocalDateTimeUsingParseMethod("2016-05-10T06:30").toLocalDate()); + Assert.assertEquals(LocalTime.of(6,30),useLocalDateTime.getLocalDateTimeUsingParseMethod("2016-05-10T06:30").toLocalTime()); + } +} diff --git a/core-java/src/test/java/com/baeldung/datetime/UseLocalTimeTest.java b/core-java/src/test/java/com/baeldung/datetime/UseLocalTimeTest.java new file mode 100644 index 0000000000..7776fad363 --- /dev/null +++ b/core-java/src/test/java/com/baeldung/datetime/UseLocalTimeTest.java @@ -0,0 +1,36 @@ +package com.baeldung.datetime; + +import java.time.LocalTime; + +import org.junit.Assert; +import org.junit.Test; + +public class UseLocalTimeTest { + + UseLocalTime useLocalTime = new UseLocalTime(); + + @Test + public void givenValues_whenUsingFactoryOf_thenLocalTime(){ + Assert.assertEquals("07:07:07",useLocalTime.getLocalTimeUsingFactoryOfMethod(7,7,7).toString()); + } + + @Test + public void givenString_whenUsingParse_thenLocalTime(){ + 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()); + } + + @Test + public void getHourFromLocalTime(){ + Assert.assertEquals(1, useLocalTime.getHourFromLocalTime(LocalTime.of(1,1))); + } + + @Test + public void getLocalTimeWithMinuteSetToValue(){ + Assert.assertEquals(LocalTime.of(10, 20), useLocalTime.getLocalTimeWithMinuteSetToValue(LocalTime.of(10,10), 20)); + } +} diff --git a/core-java/src/test/java/com/baeldung/datetime/UsePeriodTest.java b/core-java/src/test/java/com/baeldung/datetime/UsePeriodTest.java new file mode 100644 index 0000000000..5237270096 --- /dev/null +++ b/core-java/src/test/java/com/baeldung/datetime/UsePeriodTest.java @@ -0,0 +1,26 @@ +package com.baeldung.datetime; + +import java.time.LocalDate; +import java.time.Period; + +import org.junit.Assert; +import org.junit.Test; + +public class UsePeriodTest { + UsePeriod usingPeriod=new UsePeriod(); + + @Test + public void givenPeriodAndLocalDate_thenCalculateModifiedDate(){ + Period period = Period.ofDays(1); + LocalDate localDate = LocalDate.parse("2007-05-10"); + Assert.assertEquals(localDate.plusDays(1),usingPeriod.modifyDates(localDate, period)); + } + + @Test + public void givenDates_thenGetPeriod(){ + LocalDate localDate1 = LocalDate.parse("2007-05-10"); + LocalDate localDate2 = LocalDate.parse("2007-05-15"); + + Assert.assertEquals(Period.ofDays(5), usingPeriod.getDifferenceBetweenDates(localDate1, localDate2)); + } +} diff --git a/core-java/src/test/java/com/baeldung/datetime/UseZonedDateTimeTest.java b/core-java/src/test/java/com/baeldung/datetime/UseZonedDateTimeTest.java new file mode 100644 index 0000000000..5af01ad678 --- /dev/null +++ b/core-java/src/test/java/com/baeldung/datetime/UseZonedDateTimeTest.java @@ -0,0 +1,20 @@ +package com.baeldung.datetime; + +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.time.ZonedDateTime; + +import org.junit.Assert; +import org.junit.Test; + +public class UseZonedDateTimeTest { + + UseZonedDateTime zonedDateTime=new UseZonedDateTime(); + + @Test + public void givenZoneId_thenZonedDateTime(){ + ZoneId zoneId=ZoneId.of("Europe/Paris"); + ZonedDateTime zonedDatetime=zonedDateTime.getZonedDateTime(LocalDateTime.parse("2016-05-20T06:30"), zoneId); + Assert.assertEquals(zoneId,ZoneId.from(zonedDatetime)); + } +} diff --git a/core-java/src/test/java/com/baeldung/doublecolon/TestComputerUtils.java b/core-java/src/test/java/com/baeldung/doublecolon/TestComputerUtils.java new file mode 100644 index 0000000000..85194f5aa6 --- /dev/null +++ b/core-java/src/test/java/com/baeldung/doublecolon/TestComputerUtils.java @@ -0,0 +1,91 @@ +package com.baeldung.doublecolon; + +import com.baeldung.doublecolon.function.TriFunction; +import org.junit.After; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +import java.util.Arrays; +import java.util.Comparator; +import java.util.List; +import java.util.function.BiFunction; + +import static com.baeldung.doublecolon.ComputerUtils.*; + +public class TestComputerUtils { + + @Before + public void setup() { + } + + @After + public void tearDown() { + } + + @Test + public void testConstructorReference() { + + Computer c1 = new Computer(2015, "white"); + Computer c2 = new Computer(2009, "black"); + Computer c3 = new Computer(2014, "black"); + + BiFunction c4Function = Computer::new; + Computer c4 = c4Function.apply(2013, "white"); + BiFunction c5Function = Computer::new; + Computer c5 = c5Function.apply(2010, "black"); + BiFunction c6Function = Computer::new; + Computer c6 = c6Function.apply(2008, "black"); + + List inventory = Arrays.asList(c1, c2, c3, c4, c5, c6); + + List blackComputer = filter(inventory, blackPredicate); + Assert.assertEquals("The black Computers are: ", blackComputer.size(), 4); + + List after2010Computer = filter(inventory, after2010Predicate); + Assert.assertEquals("The Computer bought after 2010 are: ", after2010Computer.size(), 3); + + List before2011Computer = filter(inventory, c -> c.getAge() < 2011); + Assert.assertEquals("The Computer bought before 2011 are: ", before2011Computer.size(), 3); + + inventory.sort(Comparator.comparing(Computer::getAge)); + + Assert.assertEquals("Oldest Computer in inventory", c6, inventory.get(0)); + + } + + @Test + public void testStaticMethodReference() { + + Computer c1 = new Computer(2015, "white", 35); + Computer c2 = new Computer(2009, "black", 65); + TriFunction c6Function = Computer::new; + Computer c3 = c6Function.apply(2008, "black", 90); + + List inventory = Arrays.asList(c1, c2, c3); + inventory.forEach(ComputerUtils::repair); + + Assert.assertEquals("Computer repaired", new Integer(100), c1.getHealty()); + } + + @Test + public void testInstanceMethodArbitraryObjectParticularType() { + + Computer c1 = new Computer(2015, "white", 35); + Computer c2 = new MacbookPro(2009, "black", 65); + List inventory = Arrays.asList(c1, c2); + inventory.forEach(Computer::turnOnPc); + + } + + @Test + public void testSuperMethodReference() { + + final TriFunction integerStringIntegerObjectTriFunction = MacbookPro::new; + final MacbookPro macbookPro = integerStringIntegerObjectTriFunction.apply(2010, "black", 100); + Double initialValue = new Double(999.99); + final Double actualValue = macbookPro.calculateValue(initialValue); + Assert.assertEquals(766.659, actualValue, 0.0); + } + +} diff --git a/core-java/src/test/java/com/baeldung/encoderdecoder/EncoderDecoder.java b/core-java/src/test/java/com/baeldung/encoderdecoder/EncoderDecoder.java new file mode 100644 index 0000000000..208a23eb91 --- /dev/null +++ b/core-java/src/test/java/com/baeldung/encoderdecoder/EncoderDecoder.java @@ -0,0 +1,84 @@ +package com.baeldung.encoderdecoder; + +import org.hamcrest.CoreMatchers; +import org.junit.Assert; +import org.junit.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.UnsupportedEncodingException; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLDecoder; +import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; +import java.util.Arrays; +import java.util.HashMap; +import java.util.Map; +import java.util.function.Function; +import java.util.stream.Collectors; + +public class EncoderDecoder { + + private static final String URL = "http://www.baeldung.com?key1=value+1&key2=value%40%21%242&key3=value%253"; + private static final Logger LOGGER = LoggerFactory.getLogger(EncoderDecoder.class); + + private String encodeValue(String value) { + String encoded = null; + try { + encoded = URLEncoder.encode(value, StandardCharsets.UTF_8.toString()); + } catch (UnsupportedEncodingException e) { + LOGGER.error("Error encoding parameter {}", e.getMessage(), e); + } + return encoded; + } + + + private String decode(String value) { + String decoded = null; + try { + decoded = URLDecoder.decode(value, StandardCharsets.UTF_8.toString()); + } catch (UnsupportedEncodingException e) { + LOGGER.error("Error encoding parameter {}", e.getMessage(), e); + } + return decoded; + } + + @Test + public void givenURL_whenAnalyze_thenCorrect() throws Exception { + URL url = new URL(URL); + + Assert.assertThat(url.getProtocol(), CoreMatchers.is("http")); + Assert.assertThat(url.getHost(), CoreMatchers.is("www.baeldung.com")); + Assert.assertThat(url.getQuery(), CoreMatchers.is("key1=value+1&key2=value%40%21%242&key3=value%253")); + } + + @Test + public void givenRequestParam_whenUTF8Scheme_thenEncode() throws Exception { + Map requestParams = new HashMap<>(); + requestParams.put("key1", "value 1"); + requestParams.put("key2", "value@!$2"); + requestParams.put("key3", "value%3"); + + String encodedQuery = requestParams.keySet().stream() + .map(key -> key + "=" + encodeValue(requestParams.get(key))) + .collect(Collectors.joining("&")); + String encodedURL = "http://www.baeldung.com?" + encodedQuery; + + Assert.assertThat(URL, CoreMatchers.is(encodedURL)); + } + + @Test + public void givenRequestParam_whenUTF8Scheme_thenDecodeRequestParams() throws Exception { + URL url = new URL(URL); + String query = url.getQuery(); + + String decodedQuery = Arrays.stream(query.split("&")) + .map(param -> param.split("=")[0] + "=" + decode(param.split("=")[1])) + .collect(Collectors.joining("&")); + + Assert.assertEquals( + "http://www.baeldung.com?key1=value 1&key2=value@!$2&key3=value%3", url.getProtocol() + "://" + url.getHost() + "?" + decodedQuery); + } + +} diff --git a/core-java/src/test/java/com/baeldung/enums/PizzaTest.java b/core-java/src/test/java/com/baeldung/enums/PizzaTest.java new file mode 100644 index 0000000000..deeebaa240 --- /dev/null +++ b/core-java/src/test/java/com/baeldung/enums/PizzaTest.java @@ -0,0 +1,80 @@ +package com.baeldung.enums; + + +import org.junit.Test; + +import java.util.ArrayList; +import java.util.EnumMap; +import java.util.List; + +import static junit.framework.TestCase.assertTrue; + +public class PizzaTest { + + @Test + public void givenPizaOrder_whenReady_thenDeliverable() { + Pizza testPz = new Pizza(); + testPz.setStatus(Pizza.PizzaStatusEnum.READY); + assertTrue(testPz.isDeliverable()); + } + + @Test + public void givenPizaOrders_whenRetrievingUnDeliveredPzs_thenCorrectlyRetrieved() { + List pzList = new ArrayList<>(); + Pizza pz1 = new Pizza(); + pz1.setStatus(Pizza.PizzaStatusEnum.DELIVERED); + + Pizza pz2 = new Pizza(); + pz2.setStatus(Pizza.PizzaStatusEnum.ORDERED); + + Pizza pz3 = new Pizza(); + pz3.setStatus(Pizza.PizzaStatusEnum.ORDERED); + + Pizza pz4 = new Pizza(); + pz4.setStatus(Pizza.PizzaStatusEnum.READY); + + pzList.add(pz1); + pzList.add(pz2); + pzList.add(pz3); + pzList.add(pz4); + + List undeliveredPzs = Pizza.getAllUndeliveredPizzas(pzList); + assertTrue(undeliveredPzs.size() == 3); + } + + @Test + public void givenPizaOrders_whenGroupByStatusCalled_thenCorrectlyGrouped() { + + List pzList = new ArrayList<>(); + Pizza pz1 = new Pizza(); + pz1.setStatus(Pizza.PizzaStatusEnum.DELIVERED); + + Pizza pz2 = new Pizza(); + pz2.setStatus(Pizza.PizzaStatusEnum.ORDERED); + + Pizza pz3 = new Pizza(); + pz3.setStatus(Pizza.PizzaStatusEnum.ORDERED); + + Pizza pz4 = new Pizza(); + pz4.setStatus(Pizza.PizzaStatusEnum.READY); + + pzList.add(pz1); + pzList.add(pz2); + pzList.add(pz3); + pzList.add(pz4); + + EnumMap> map = Pizza.groupPizzaByStatus(pzList); + assertTrue(map.get(Pizza.PizzaStatusEnum.DELIVERED).size() == 1); + assertTrue(map.get(Pizza.PizzaStatusEnum.ORDERED).size() == 2); + assertTrue(map.get(Pizza.PizzaStatusEnum.READY).size() == 1); + } + + @Test + public void givenPizaOrder_whenDelivered_thenPizzaGetsDeliveredAndStatusChanges() { + Pizza pz = new Pizza(); + pz.setStatus(Pizza.PizzaStatusEnum.READY); + pz.deliver(); + assertTrue(pz.getStatus() == Pizza.PizzaStatusEnum.DELIVERED); + } + +} diff --git a/core-java/src/test/java/com/baeldung/file/FileOperationsTest.java b/core-java/src/test/java/com/baeldung/file/FileOperationsTest.java new file mode 100644 index 0000000000..e21af9552a --- /dev/null +++ b/core-java/src/test/java/com/baeldung/file/FileOperationsTest.java @@ -0,0 +1,121 @@ +package com.baeldung.file; + +import org.apache.commons.io.FileUtils; +import org.hamcrest.CoreMatchers; +import org.hamcrest.Matchers; +import org.junit.Assert; +import org.junit.Test; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.net.URISyntaxException; +import java.net.URL; +import java.net.URLConnection; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.stream.Stream; + +public class FileOperationsTest { + + @Test + public void givenFileName_whenUsingClassloader_thenFileData() throws IOException { + String expectedData = "Hello World from fileTest.txt!!!"; + + ClassLoader classLoader = getClass().getClassLoader(); + File file = new File(classLoader.getResource("fileTest.txt").getFile()); + InputStream inputStream = new FileInputStream(file); + String data = readFromInputStream(inputStream); + + Assert.assertEquals(expectedData, data.trim()); + } + + @Test + public void givenFileNameAsAbsolutePath_whenUsingClasspath_thenFileData() throws IOException { + String expectedData = "Hello World from fileTest.txt!!!"; + + Class clazz = FileOperationsTest.class; + InputStream inputStream = clazz.getResourceAsStream("/fileTest.txt"); + String data = readFromInputStream(inputStream); + + Assert.assertEquals(expectedData, data.trim()); + } + + @Test + public void givenFileName_whenUsingJarFile_thenFileData() throws IOException { + String expectedData = "BSD License"; + + Class clazz = Matchers.class; + InputStream inputStream = clazz.getResourceAsStream("/LICENSE.txt"); + String data = readFromInputStream(inputStream); + + Assert.assertThat(data.trim(), CoreMatchers.containsString(expectedData)); + } + + @Test + public void givenURLName_whenUsingURL_thenFileData() throws IOException { + String expectedData = "Baeldung"; + + URL urlObject = new URL("http://www.baeldung.com/"); + + URLConnection urlConnection = urlObject.openConnection(); + + InputStream inputStream = urlConnection.getInputStream(); + String data = readFromInputStream(inputStream); + + Assert.assertThat(data.trim(), CoreMatchers.containsString(expectedData)); + } + + @Test + public void givenFileName_whenUsingFileUtils_thenFileData() throws IOException { + String expectedData = "Hello World from fileTest.txt!!!"; + + ClassLoader classLoader = getClass().getClassLoader(); + File file = new File(classLoader.getResource("fileTest.txt").getFile()); + String data = FileUtils.readFileToString(file); + + Assert.assertEquals(expectedData, data.trim()); + } + + @Test + public void givenFilePath_whenUsingFilesReadAllBytes_thenFileData() throws IOException, URISyntaxException { + String expectedData = "Hello World from fileTest.txt!!!"; + + Path path = Paths.get(getClass().getClassLoader().getResource("fileTest.txt").toURI()); + + byte[] fileBytes = Files.readAllBytes(path); + String data = new String(fileBytes); + + Assert.assertEquals(expectedData, data.trim()); + } + + @Test + public void givenFilePath_whenUsingFilesLines_thenFileData() throws IOException, URISyntaxException { + String expectedData = "Hello World from fileTest.txt!!!"; + + Path path = Paths.get(getClass().getClassLoader().getResource("fileTest.txt").toURI()); + + StringBuilder data = new StringBuilder(); + Stream lines = Files.lines(path); + lines.forEach(line -> data.append(line).append("\n")); + lines.close(); + + Assert.assertEquals(expectedData, data.toString().trim()); + } + + private String readFromInputStream(InputStream inputStream) throws IOException { + StringBuilder resultStringBuilder = new StringBuilder(); + try (BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream))) { + String line; + while ((line = bufferedReader.readLine()) != null) { + resultStringBuilder.append(line).append("\n"); + } + } + + return resultStringBuilder.toString(); + } +} \ No newline at end of file diff --git a/core-java/src/test/java/com/baeldung/java8/Java8CollectionCleanupUnitTest.java b/core-java/src/test/java/com/baeldung/java8/Java8CollectionCleanupUnitTest.java new file mode 100644 index 0000000000..ef4b80c6e8 --- /dev/null +++ b/core-java/src/test/java/com/baeldung/java8/Java8CollectionCleanupUnitTest.java @@ -0,0 +1,48 @@ +package com.baeldung.java8; + +import com.google.common.collect.Lists; +import org.junit.Test; + +import java.util.List; +import java.util.stream.Collectors; + +import static org.hamcrest.Matchers.hasSize; +import static org.junit.Assert.assertThat; + +public class Java8CollectionCleanupUnitTest { + + // tests - + + @Test + public void givenListContainsNulls_whenFilteringParallel_thenCorrect() { + final List list = Lists.newArrayList(null, 1, 2, null, 3, null); + final List listWithoutNulls = list.parallelStream().filter(i -> i != null).collect(Collectors.toList()); + + assertThat(listWithoutNulls, hasSize(3)); + } + + @Test + public void givenListContainsNulls_whenFilteringSerial_thenCorrect() { + final List list = Lists.newArrayList(null, 1, 2, null, 3, null); + final List listWithoutNulls = list.stream().filter(i -> i != null).collect(Collectors.toList()); + + assertThat(listWithoutNulls, hasSize(3)); + } + + @Test + public void givenListContainsNulls_whenRemovingNullsWithRemoveIf_thenCorrect() { + final List listWithoutNulls = Lists.newArrayList(null, 1, 2, null, 3, null); + listWithoutNulls.removeIf(p -> p == null); + + assertThat(listWithoutNulls, hasSize(3)); + } + + @Test + public void givenListContainsDuplicates_whenRemovingDuplicatesWithJava8_thenCorrect() { + final List listWithDuplicates = Lists.newArrayList(1, 1, 2, 2, 3, 3); + final List listWithoutDuplicates = listWithDuplicates.parallelStream().distinct().collect(Collectors.toList()); + + assertThat(listWithoutDuplicates, hasSize(3)); + } + +} diff --git a/core-java/src/test/java/com/baeldung/java8/Java8DefaultStaticIntefaceMethodsTest.java b/core-java/src/test/java/com/baeldung/java8/Java8DefaultStaticIntefaceMethodsTest.java new file mode 100644 index 0000000000..21a5e34b9b --- /dev/null +++ b/core-java/src/test/java/com/baeldung/java8/Java8DefaultStaticIntefaceMethodsTest.java @@ -0,0 +1,27 @@ +package com.baeldung.java8; + +import com.baeldung.java_8_features.Vehicle; +import com.baeldung.java_8_features.VehicleImpl; +import org.junit.Test; + +import static org.junit.Assert.assertEquals; + +public class Java8DefaultStaticIntefaceMethodsTest { + + @Test + public void callStaticInterfaceMethdosMethods_whenExpectedResults_thenCorrect() { + Vehicle vehicle = new VehicleImpl(); + String overview = vehicle.getOverview(); + long[] startPosition = vehicle.startPosition(); + + assertEquals(overview, "ATV made by N&F Vehicles"); + assertEquals(startPosition[0], 23); + assertEquals(startPosition[1], 15); + } + + @Test + public void callDefaultInterfaceMethods_whenExpectedResults_thenCorrect() { + String producer = Vehicle.producer(); + assertEquals(producer, "N&F Vehicles"); + } +} diff --git a/core-java/src/test/java/com/baeldung/java8/Java8ExecutorServiceTest.java b/core-java/src/test/java/com/baeldung/java8/Java8ExecutorServiceTest.java new file mode 100644 index 0000000000..581ccec182 --- /dev/null +++ b/core-java/src/test/java/com/baeldung/java8/Java8ExecutorServiceTest.java @@ -0,0 +1,156 @@ +package com.baeldung.java8; + + +import org.junit.Before; +import org.junit.Test; + +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.*; + +import static org.junit.Assert.*; + + +public class Java8ExecutorServiceTest { + + private Runnable runnableTask; + private Callable callableTask; + private List> callableTasks; + + @Before + public void init() { + + runnableTask = () -> { + try { + TimeUnit.MILLISECONDS.sleep(300); + } catch (InterruptedException e) { + e.printStackTrace(); + } + }; + + callableTask = () -> { + TimeUnit.MILLISECONDS.sleep(300); + return "Task's execution"; + }; + + callableTasks = new ArrayList<>(); + callableTasks.add(callableTask); + callableTasks.add(callableTask); + callableTasks.add(callableTask); + } + + @Test + public void creationSubmittingTaskShuttingDown_whenShutDown_thenCorrect() { + + ExecutorService executorService = Executors.newFixedThreadPool(10); + executorService.submit(runnableTask); + executorService.submit(callableTask); + executorService.shutdown(); + + assertTrue(executorService.isShutdown()); + } + + @Test + public void creationSubmittingTasksShuttingDownNow_whenShutDownAfterAwating_thenCorrect() { + + ExecutorService threadPoolExecutor = + new ThreadPoolExecutor(1, 1, 0L, TimeUnit.MILLISECONDS, + new LinkedBlockingQueue<>()); + + for (int i = 0; i < 100; i++) { + threadPoolExecutor.submit(callableTask); + } + + List notExecutedTasks = smartShutdown(threadPoolExecutor); + + assertTrue(threadPoolExecutor.isShutdown()); + assertFalse(notExecutedTasks.isEmpty()); + assertTrue(notExecutedTasks.size() > 0 && notExecutedTasks.size() < 98); + } + + private List smartShutdown(ExecutorService executorService) { + + List notExecutedTasks = new ArrayList<>(); + executorService.shutdown(); + try { + if (!executorService.awaitTermination(800, TimeUnit.MILLISECONDS)) { + notExecutedTasks = executorService.shutdownNow(); + } + } catch (InterruptedException e) { + notExecutedTasks = executorService.shutdownNow(); + } + return notExecutedTasks; + } + + @Test + public void submittingTasks_whenExecutedOneAndAll_thenCorrect() { + + ExecutorService executorService = Executors.newFixedThreadPool(10); + + String result = null; + List> futures = new ArrayList<>(); + try { + result = executorService.invokeAny(callableTasks); + futures = executorService.invokeAll(callableTasks); + } catch (InterruptedException | ExecutionException e) { + e.printStackTrace(); + } + + assertEquals("Task's execution", result); + assertTrue(futures.size() == 3); + } + + @Test + public void submittingTaskShuttingDown_whenGetExpectedResult_thenCorrect() { + + ExecutorService executorService = Executors.newFixedThreadPool(10); + + Future future = executorService.submit(callableTask); + String result = null; + try { + result = future.get(); + result = future.get(200, TimeUnit.MILLISECONDS); + } catch (InterruptedException | ExecutionException | TimeoutException e) { + e.printStackTrace(); + } + + executorService.shutdown(); + + assertEquals("Task's execution", result); + } + + @Test + public void submittingTask_whenCanceled_thenCorrect() { + + ExecutorService executorService = Executors.newFixedThreadPool(10); + + Future future = executorService.submit(callableTask); + + boolean canceled = future.cancel(true); + boolean isCancelled = future.isCancelled(); + + executorService.shutdown(); + + assertTrue(canceled); + assertTrue(isCancelled); + } + + @Test + public void submittingTaskScheduling_whenExecuted_thenCorrect() { + + ScheduledExecutorService executorService = Executors + .newSingleThreadScheduledExecutor(); + + Future resultFuture = executorService.schedule(callableTask, 1, TimeUnit.SECONDS); + String result = null; + try { + result = resultFuture.get(); + } catch (InterruptedException | ExecutionException e) { + e.printStackTrace(); + } + + executorService.shutdown(); + + assertEquals("Task's execution", result); + } +} diff --git a/core-java/src/test/java/com/baeldung/java8/Java8ForkJoinTest.java b/core-java/src/test/java/com/baeldung/java8/Java8ForkJoinTest.java new file mode 100644 index 0000000000..273b2d78db --- /dev/null +++ b/core-java/src/test/java/com/baeldung/java8/Java8ForkJoinTest.java @@ -0,0 +1,100 @@ +package com.baeldung.java8; + + +import com.baeldung.forkjoin.CustomRecursiveAction; +import com.baeldung.forkjoin.CustomRecursiveTask; +import com.baeldung.forkjoin.util.PoolUtil; +import org.junit.Before; +import org.junit.Test; + +import java.util.Random; +import java.util.concurrent.ForkJoinPool; + +import static org.junit.Assert.*; + +public class Java8ForkJoinTest { + + private int[] arr; + private CustomRecursiveTask customRecursiveTask; + + @Before + public void init() { + Random random = new Random(); + arr = new int[50]; + for (int i = 0; i < arr.length; i++) { + arr[i] = random.nextInt(35); + } + customRecursiveTask = new CustomRecursiveTask(arr); + } + + + @Test + public void callPoolUtil_whenExistsAndExpectedType_thenCorrect() { + + ForkJoinPool forkJoinPool = PoolUtil.forkJoinPool; + ForkJoinPool forkJoinPoolTwo = PoolUtil.forkJoinPool; + + assertNotNull(forkJoinPool); + assertEquals(2, forkJoinPool.getParallelism()); + assertEquals(forkJoinPool, forkJoinPoolTwo); + + } + + @Test + public void callCommonPool_whenExistsAndExpectedType_thenCorrect() { + + ForkJoinPool commonPool = ForkJoinPool.commonPool(); + ForkJoinPool commonPoolTwo = ForkJoinPool.commonPool(); + + assertNotNull(commonPool); + assertEquals(commonPool, commonPoolTwo); + + } + + @Test + public void executeRecursiveAction_whenExecuted_thenCorrect() { + + CustomRecursiveAction myRecursiveAction = new CustomRecursiveAction("ddddffffgggghhhh"); + ForkJoinPool.commonPool().invoke(myRecursiveAction); + + assertTrue(myRecursiveAction.isDone()); + + } + + @Test + public void executeRecursiveTask_whenExecuted_thenCorrect() { + + ForkJoinPool forkJoinPool = ForkJoinPool.commonPool(); + + forkJoinPool.execute(customRecursiveTask); + int result = customRecursiveTask.join(); + assertTrue(customRecursiveTask.isDone()); + + forkJoinPool.submit(customRecursiveTask); + int resultTwo = customRecursiveTask.join(); + assertTrue(customRecursiveTask.isDone()); + + } + + @Test + public void executeRecursiveTaskWithFJ_whenExecuted_thenCorrect() { + + CustomRecursiveTask customRecursiveTaskFirst = new CustomRecursiveTask(arr); + CustomRecursiveTask customRecursiveTaskSecond = new CustomRecursiveTask(arr); + CustomRecursiveTask customRecursiveTaskLast = new CustomRecursiveTask(arr); + + customRecursiveTaskFirst.fork(); + customRecursiveTaskSecond.fork(); + customRecursiveTaskLast.fork(); + int result = 0; + result += customRecursiveTaskLast.join(); + result += customRecursiveTaskSecond.join(); + result += customRecursiveTaskFirst.join(); + + assertTrue(customRecursiveTaskFirst.isDone()); + assertTrue(customRecursiveTaskSecond.isDone()); + assertTrue(customRecursiveTaskLast.isDone()); + assertTrue(result != 0); + + } +} diff --git a/core-java/src/test/java/com/baeldung/java8/Java8FunctionalInteracesLambdasTest.java b/core-java/src/test/java/com/baeldung/java8/Java8FunctionalInteracesLambdasTest.java new file mode 100644 index 0000000000..faaf3ae407 --- /dev/null +++ b/core-java/src/test/java/com/baeldung/java8/Java8FunctionalInteracesLambdasTest.java @@ -0,0 +1,94 @@ +package com.baeldung.java8; + +import com.baeldung.Foo; +import com.baeldung.FooExtended; +import com.baeldung.UseFoo; +import org.junit.Before; +import org.junit.Test; + +import java.util.function.Function; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotEquals; + +public class Java8FunctionalInteracesLambdasTest { + + private UseFoo useFoo; + + @Before + public void init() { + useFoo = new UseFoo(); + } + + @Test + public void functionalInterfaceInstantiation_whenReturnDefiniteString_thenCorrect() { + final Foo foo = parameter -> parameter + "from lambda"; + final String result = useFoo.add("Message ", foo); + + assertEquals("Message from lambda", result); + } + + @Test + public void standardFIParameter_whenReturnDefiniteString_thenCorrect() { + final Function fn = parameter -> parameter + "from lambda"; + final String result = useFoo.addWithStandardFI("Message ", fn); + + assertEquals("Message from lambda", result); + } + + @Test + public void defaultMethodFromExtendedInterface_whenReturnDefiniteString_thenCorrect() { + final FooExtended fooExtended = string -> string; + final String result = fooExtended.defaultMethod(); + + assertEquals("String from Bar", result); + } + + @Test + public void lambdaAndInnerClassInstantiation_whenReturnSameString_thenCorrect() { + final Foo foo = parameter -> parameter + "from Foo"; + + final Foo fooByIC = new Foo() { + @Override + public String method(final String string) { + return string + "from Foo"; + } + }; + + assertEquals(foo.method("Something "), fooByIC.method("Something ")); + } + + @Test + public void accessVariablesFromDifferentScopes_whenReturnPredefinedString_thenCorrect() { + assertEquals("Results: resultIC = Inner class value, resultLambda = Enclosing scope value", useFoo.scopeExperiment()); + } + + @Test + public void shorteningLambdas_whenReturnEqualsResults_thenCorrect() { + final Foo foo = parameter -> buildString(parameter); + + final Foo fooHuge = parameter -> { + final String result = "Something " + parameter; + // many lines of code + return result; + }; + + assertEquals(foo.method("Something"), fooHuge.method("Something")); + } + + private String buildString(final String parameter) { + final String result = "Something " + parameter; + // many lines of code + return result; + } + + @Test + public void mutatingOfEffectivelyFinalVariable_whenNotEquals_thenCorrect() { + final int[] total = new int[1]; + final Runnable r = () -> total[0]++; + r.run(); + + assertNotEquals(0, total[0]); + } + +} diff --git a/core-java/src/test/java/com/baeldung/java8/Java8MethodReferenceTest.java b/core-java/src/test/java/com/baeldung/java8/Java8MethodReferenceTest.java new file mode 100644 index 0000000000..d9d88c5052 --- /dev/null +++ b/core-java/src/test/java/com/baeldung/java8/Java8MethodReferenceTest.java @@ -0,0 +1,67 @@ +package com.baeldung.java8; + +import com.baeldung.java_8_features.User; +import org.junit.Before; +import org.junit.Test; + +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +public class Java8MethodReferenceTest { + + private List list; + + @Before + public void init() { + list = new ArrayList<>(); + list.add("One"); + list.add("OneAndOnly"); + list.add("Derek"); + list.add("Change"); + list.add("factory"); + list.add("justBefore"); + list.add("Italy"); + list.add("Italy"); + list.add("Thursday"); + list.add(""); + list.add(""); + } + + @Test + public void checkStaticMethodReferences_whenWork_thenCorrect() { + + List users = new ArrayList<>(); + users.add(new User()); + users.add(new User()); + boolean isReal = users.stream().anyMatch(u -> User.isRealUser(u)); + boolean isRealRef = users.stream().anyMatch(User::isRealUser); + assertTrue(isReal); + assertTrue(isRealRef); + } + + @Test + public void checkInstanceMethodReferences_whenWork_thenCorrect() { + User user = new User(); + boolean isLegalName = list.stream().anyMatch(user::isLegalName); + assertTrue(isLegalName); + } + + @Test + public void checkParticularTypeReferences_whenWork_thenCorrect() { + long count = list.stream().filter(String::isEmpty).count(); + assertEquals(count, 2); + } + + @Test + public void checkConstructorReferences_whenWork_thenCorrect() { + Stream stream = list.stream().map(User::new); + List userList = stream.collect(Collectors.toList()); + assertEquals(userList.size(), list.size()); + assertTrue(userList.get(0) instanceof User); + } +} diff --git a/core-java/src/test/java/com/baeldung/java8/Java8OptionalTest.java b/core-java/src/test/java/com/baeldung/java8/Java8OptionalTest.java new file mode 100644 index 0000000000..26de39bc0e --- /dev/null +++ b/core-java/src/test/java/com/baeldung/java8/Java8OptionalTest.java @@ -0,0 +1,118 @@ +package com.baeldung.java8; + +import com.baeldung.java_8_features.*; +import org.junit.Before; +import org.junit.Test; + +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; + +import static org.junit.Assert.*; + +public class Java8OptionalTest { + + private List list; + + @Before + public void init() { + list = new ArrayList<>(); + list.add("One"); + list.add("OneAndOnly"); + list.add("Derek"); + list.add("Change"); + list.add("factory"); + list.add("justBefore"); + list.add("Italy"); + list.add("Italy"); + list.add("Thursday"); + list.add(""); + list.add(""); + } + + @Test + public void checkOptional_whenAsExpected_thenCorrect() { + + Optional optionalEmpty = Optional.empty(); + assertFalse(optionalEmpty.isPresent()); + + String str = "value"; + Optional optional = Optional.of(str); + assertEquals(optional.get(), "value"); + + Optional optionalNullable = Optional.ofNullable(str); + Optional optionalNull = Optional.ofNullable(null); + assertEquals(optionalNullable.get(), "value"); + assertFalse(optionalNull.isPresent()); + + List listOpt = Optional.of(list).orElse(new ArrayList<>()); + List listNull = null; + List listOptNull = Optional.ofNullable(listNull).orElse(new ArrayList<>()); + assertTrue(listOpt == list); + assertTrue(listOptNull.isEmpty()); + + Optional user = Optional.ofNullable(getUser()); + String result = user.map(User::getAddress) + .map(Address::getStreet) + .orElse("not specified"); + assertEquals(result, "1st Avenue"); + + Optional optionalUser = Optional.ofNullable(getOptionalUser()); + String resultOpt = optionalUser.flatMap(OptionalUser::getAddress) + .flatMap(OptionalAddress::getStreet) + .orElse("not specified"); + assertEquals(resultOpt, "1st Avenue"); + + Optional userNull = Optional.ofNullable(getUserNull()); + String resultNull = userNull.map(User::getAddress) + .map(Address::getStreet) + .orElse("not specified"); + assertEquals(resultNull, "not specified"); + + Optional optionalUserNull = Optional.ofNullable(getOptionalUserNull()); + String resultOptNull = optionalUserNull.flatMap(OptionalUser::getAddress) + .flatMap(OptionalAddress::getStreet) + .orElse("not specified"); + assertEquals(resultOptNull, "not specified"); + + } + + @Test(expected = CustomException.class) + public void callMethod_whenCustomException_thenCorrect() { + User user = new User(); + String result = user.getOrThrow(); + } + + private User getUser() { + User user = new User(); + Address address = new Address(); + address.setStreet("1st Avenue"); + user.setAddress(address); + return user; + } + + private OptionalUser getOptionalUser() { + OptionalUser user = new OptionalUser(); + OptionalAddress address = new OptionalAddress(); + address.setStreet("1st Avenue"); + user.setAddress(address); + return user; + } + + private OptionalUser getOptionalUserNull() { + OptionalUser user = new OptionalUser(); + OptionalAddress address = new OptionalAddress(); + address.setStreet(null); + user.setAddress(address); + return user; + } + + private User getUserNull() { + User user = new User(); + Address address = new Address(); + address.setStreet(null); + user.setAddress(address); + return user; + } + +} diff --git a/core-java/src/test/java/com/baeldung/java8/Java8SortUnitTest.java b/core-java/src/test/java/com/baeldung/java8/Java8SortUnitTest.java new file mode 100644 index 0000000000..f371c0d7da --- /dev/null +++ b/core-java/src/test/java/com/baeldung/java8/Java8SortUnitTest.java @@ -0,0 +1,115 @@ +package com.baeldung.java8; + +import com.baeldung.java8.entity.Human; +import com.google.common.collect.Lists; +import com.google.common.primitives.Ints; +import org.junit.Assert; +import org.junit.Test; + +import java.util.Collections; +import java.util.Comparator; +import java.util.List; + +import static org.hamcrest.Matchers.equalTo; + +public class Java8SortUnitTest { + + // tests - + + @Test + public final void givenPreLambda_whenSortingEntitiesByName_thenCorrectlySorted() { + final List humans = Lists.newArrayList(new Human("Sarah", 10), new Human("Jack", 12)); + + Collections.sort(humans, new Comparator() { + @Override + public final int compare(final Human h1, final Human h2) { + return h1.getName().compareTo(h2.getName()); + } + }); + + Assert.assertThat(humans.get(0), equalTo(new Human("Jack", 12))); + } + + @Test + public final void whenSortingEntitiesByName_thenCorrectlySorted() { + final List humans = Lists.newArrayList(new Human("Sarah", 10), new Human("Jack", 12)); + + humans.sort((final Human h1, final Human h2) -> h1.getName().compareTo(h2.getName())); + + Assert.assertThat(humans.get(0), equalTo(new Human("Jack", 12))); + } + + @Test + public final void givenLambdaShortForm_whenSortingEntitiesByName_thenCorrectlySorted() { + final List humans = Lists.newArrayList(new Human("Sarah", 10), new Human("Jack", 12)); + + humans.sort((h1, h2) -> h1.getName().compareTo(h2.getName())); + + Assert.assertThat(humans.get(0), equalTo(new Human("Jack", 12))); + } + + @Test + public final void whenSortingEntitiesByNameThenAge_thenCorrectlySorted() { + final List humans = Lists.newArrayList(new Human("Sarah", 12), new Human("Sarah", 10), new Human("Zack", 12)); + humans.sort((lhs, rhs) -> { + if (lhs.getName().equals(rhs.getName())) { + return lhs.getAge() - rhs.getAge(); + } else { + return lhs.getName().compareTo(rhs.getName()); + } + }); + Assert.assertThat(humans.get(0), equalTo(new Human("Sarah", 10))); + } + + @Test + public final void givenCompositionVerbose_whenSortingEntitiesByNameThenAge_thenCorrectlySorted() { + final List humans = Lists.newArrayList(new Human("Sarah", 12), new Human("Sarah", 10), new Human("Zack", 12)); + final Comparator byName = (h1, h2) -> h1.getName().compareTo(h2.getName()); + final Comparator byAge = (h1, h2) -> Ints.compare(h1.getAge(), h2.getAge()); + + humans.sort(byName.thenComparing(byAge)); + Assert.assertThat(humans.get(0), equalTo(new Human("Sarah", 10))); + } + + @Test + public final void givenComposition_whenSortingEntitiesByNameThenAge_thenCorrectlySorted() { + final List humans = Lists.newArrayList(new Human("Sarah", 12), new Human("Sarah", 10), new Human("Zack", 12)); + + humans.sort(Comparator.comparing(Human::getName).thenComparing(Human::getAge)); + Assert.assertThat(humans.get(0), equalTo(new Human("Sarah", 10))); + } + + @Test + public final void whenSortingEntitiesByAge_thenCorrectlySorted() { + final List humans = Lists.newArrayList(new Human("Sarah", 10), new Human("Jack", 12)); + + humans.sort((h1, h2) -> Ints.compare(h1.getAge(), h2.getAge())); + Assert.assertThat(humans.get(0), equalTo(new Human("Sarah", 10))); + } + + @Test + public final void whenSortingEntitiesByNameReversed_thenCorrectlySorted() { + final List humans = Lists.newArrayList(new Human("Sarah", 10), new Human("Jack", 12)); + final Comparator comparator = (h1, h2) -> h1.getName().compareTo(h2.getName()); + + humans.sort(comparator.reversed()); + Assert.assertThat(humans.get(0), equalTo(new Human("Sarah", 10))); + } + + @Test + public final void givenMethodDefinition_whenSortingEntitiesByNameThenAge_thenCorrectlySorted() { + final List humans = Lists.newArrayList(new Human("Sarah", 10), new Human("Jack", 12)); + + humans.sort(Human::compareByNameThenAge); + Assert.assertThat(humans.get(0), equalTo(new Human("Jack", 12))); + } + + @Test + public final void givenInstanceMethod_whenSortingEntitiesByName_thenCorrectlySorted() { + final List humans = Lists.newArrayList(new Human("Sarah", 10), new Human("Jack", 12)); + + humans.sort(Comparator.comparing(Human::getName)); + Assert.assertThat(humans.get(0), equalTo(new Human("Jack", 12))); + } + +} diff --git a/core-java/src/test/java/com/baeldung/java8/Java8StreamApiTest.java b/core-java/src/test/java/com/baeldung/java8/Java8StreamApiTest.java new file mode 100644 index 0000000000..37326c6d26 --- /dev/null +++ b/core-java/src/test/java/com/baeldung/java8/Java8StreamApiTest.java @@ -0,0 +1,263 @@ +package com.baeldung.java8; + +import com.baeldung.streamApi.Product; +import org.junit.Before; +import org.junit.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.BufferedWriter; +import java.io.IOException; +import java.nio.charset.Charset; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.*; +import java.util.regex.Pattern; +import java.util.stream.*; + +import static org.junit.Assert.*; + +public class Java8StreamApiTest { + + private long counter; + + private static Logger log = LoggerFactory.getLogger(Java8StreamApiTest.class); + + private List productList; + + @Before + public void init() { + productList = Arrays.asList( + new Product(23, "potatoes"), new Product(14, "orange"), + new Product(13, "lemon"), new Product(23, "bread"), + new Product(13, "sugar")); + } + + @Test + public void checkPipeline_whenStreamOneElementShorter_thenCorrect() { + + List list = Arrays.asList("abc1", "abc2", "abc3"); + long size = list.stream().skip(1) + .map(element -> element.substring(0, 3)).count(); + assertEquals(list.size() - 1, size); + } + + @Test + public void checkOrder_whenChangeQuantityOfMethodCalls_thenCorrect() { + + List list = Arrays.asList("abc1", "abc2", "abc3"); + + counter = 0; + long sizeFirst = list.stream() + .skip(2).map(element -> { + wasCalled(); + return element.substring(0, 3); + }).count(); + assertEquals(1, counter); + + counter = 0; + long sizeSecond = list.stream().map(element -> { + wasCalled(); + return element.substring(0, 3); + }).skip(2).count(); + assertEquals(3, counter); + } + + @Test + public void createEmptyStream_whenEmpty_thenCorrect() { + + Stream streamEmpty = Stream.empty(); + assertEquals(0, streamEmpty.count()); + + List names = Collections.emptyList(); + Stream streamOf = Product.streamOf(names); + assertTrue(streamOf.count() == 0); + } + + @Test + public void createStream_whenCreated_thenCorrect() { + + Collection collection = Arrays.asList("a", "b", "c"); + Stream streamOfCollection = collection.stream(); + assertEquals(3, streamOfCollection.count()); + + Stream streamOfArray = Stream.of("a", "b", "c"); + assertEquals(3, streamOfArray.count()); + + String[] arr = new String[]{"a", "b", "c"}; + Stream streamOfArrayPart = Arrays.stream(arr, 1, 3); + assertEquals(2, streamOfArrayPart.count()); + + IntStream intStream = IntStream.range(1, 3); + LongStream longStream = LongStream.rangeClosed(1, 3); + Random random = new Random(); + DoubleStream doubleStream = random.doubles(3); + assertEquals(2, intStream.count()); + assertEquals(3, longStream.count()); + assertEquals(3, doubleStream.count()); + + IntStream streamOfChars = "abc".chars(); + IntStream str = "".chars(); + assertEquals(3, streamOfChars.count()); + + Stream streamOfString = Pattern.compile(", ").splitAsStream("a, b, c"); + assertEquals("a", streamOfString.findFirst().get()); + + Path path = getPath(); + Stream streamOfStrings = null; + try { + streamOfStrings = Files.lines(path, Charset.forName("UTF-8")); + } catch (IOException e) { + log.error("Error creating streams from paths {}", path, e.getMessage(), e); + } + assertEquals("a", streamOfStrings.findFirst().get()); + + Stream streamBuilder = Stream.builder().add("a").add("b").add("c").build(); + assertEquals(3, streamBuilder.count()); + + Stream streamGenerated = Stream.generate(() -> "element").limit(10); + assertEquals(10, streamGenerated.count()); + + Stream streamIterated = Stream.iterate(40, n -> n + 2).limit(20); + assertTrue(40 <= streamIterated.findAny().get()); + } + + @Test + public void runStreamPipeline_whenOrderIsRight_thenCorrect() { + + List list = Arrays.asList("abc1", "abc2", "abc3"); + Optional stream = list.stream() + .filter(element -> { + log.info("filter() was called"); + return element.contains("2"); + }).map(element -> { + log.info("map() was called"); + return element.toUpperCase(); + }).findFirst(); + } + + @Test + public void reduce_whenExpected_thenCorrect() { + + OptionalInt reduced = IntStream.range(1, 4).reduce((a, b) -> a + b); + assertEquals(6, reduced.getAsInt()); + + int reducedTwoParams = IntStream.range(1, 4).reduce(10, (a, b) -> a + b); + assertEquals(16, reducedTwoParams); + + int reducedThreeParams = Stream.of(1, 2, 3) + .reduce(10, (a, b) -> a + b, (a, b) -> { + log.info("combiner was called"); + return a + b; + }); + assertEquals(16, reducedThreeParams); + + int reducedThreeParamsParallel = Arrays.asList(1, 2, 3).parallelStream() + .reduce(10, (a, b) -> a + b, (a, b) -> { + log.info("combiner was called"); + return a + b; + }); + assertEquals(36, reducedThreeParamsParallel); + } + + @Test + public void collecting_whenAsExpected_thenCorrect() { + + List collectorCollection = productList.stream() + .map(Product::getName).collect(Collectors.toList()); + + assertTrue(collectorCollection instanceof List); + assertEquals(5, collectorCollection.size()); + + String listToString = productList.stream().map(Product::getName) + .collect(Collectors.joining(", ", "[", "]")); + + assertTrue(listToString.contains(",") && listToString.contains("[") && listToString.contains("]")); + + double averagePrice = productList.stream().collect(Collectors.averagingInt(Product::getPrice)); + assertTrue(17.2 == averagePrice); + + int summingPrice = productList.stream().collect(Collectors.summingInt(Product::getPrice)); + assertEquals(86, summingPrice); + + IntSummaryStatistics statistics = productList.stream() + .collect(Collectors.summarizingInt(Product::getPrice)); + assertEquals(23, statistics.getMax()); + + Map> collectorMapOfLists = productList.stream() + .collect(Collectors.groupingBy(Product::getPrice)); + assertEquals(3, collectorMapOfLists.keySet().size()); + + Map> mapPartioned = productList.stream() + .collect(Collectors.partitioningBy(element -> element.getPrice() > 15)); + assertEquals(2, mapPartioned.keySet().size()); + + } + + @Test(expected = UnsupportedOperationException.class) + public void collect_whenThrows_thenCorrect() { + Set unmodifiableSet = productList.stream() + .collect(Collectors.collectingAndThen(Collectors.toSet(), + Collections::unmodifiableSet)); + unmodifiableSet.add(new Product(4, "tea")); + } + + @Test + public void customCollector_whenResultContainsAllElementsFrSource_thenCorrect() { + Collector> toLinkedList = + Collector.of(LinkedList::new, LinkedList::add, + (first, second) -> { + first.addAll(second); + return first; + }); + + LinkedList linkedListOfPersons = productList.stream().collect(toLinkedList); + assertTrue(linkedListOfPersons.containsAll(productList)); + } + + @Test + public void parallelStream_whenWorks_thenCorrect() { + Stream streamOfCollection = productList.parallelStream(); + boolean isParallel = streamOfCollection.isParallel(); + boolean haveBigPrice = streamOfCollection.map(product -> product.getPrice() * 12) + .anyMatch(price -> price > 200); + assertTrue(isParallel && haveBigPrice); + } + + @Test + public void parallel_whenIsParallel_thenCorrect() { + IntStream intStreamParallel = + IntStream.range(1, 150).parallel().map(element -> element * 34); + boolean isParallel = intStreamParallel.isParallel(); + assertTrue(isParallel); + } + + @Test + public void parallel_whenIsSequential_thenCorrect() { + IntStream intStreamParallel = + IntStream.range(1, 150).parallel().map(element -> element * 34); + IntStream intStreamSequential = intStreamParallel.sequential(); + boolean isParallel = intStreamParallel.isParallel(); + assertFalse(isParallel); + } + + private Path getPath() { + Path path = null; + try { + path = Files.createTempFile(null, ".txt"); + } catch (IOException e) { + log.error(e.getMessage()); + } + + try (BufferedWriter writer = Files.newBufferedWriter(path)) { + writer.write("a\nb\nc"); + } catch (IOException e) { + log.error(e.getMessage()); + } + return path; + } + + private void wasCalled() { + counter++; + } +} diff --git a/core-java/src/test/java/com/baeldung/java8/Java8StreamsTest.java b/core-java/src/test/java/com/baeldung/java8/Java8StreamsTest.java new file mode 100644 index 0000000000..1f1dda49ce --- /dev/null +++ b/core-java/src/test/java/com/baeldung/java8/Java8StreamsTest.java @@ -0,0 +1,113 @@ +package com.baeldung.java8; + +import com.baeldung.java_8_features.Detail; +import org.junit.Before; +import org.junit.Test; + +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +import static org.junit.Assert.*; + +public class Java8StreamsTest { + + private List list; + + @Before + public void init() { + list = new ArrayList<>(); + list.add("One"); + list.add("OneAndOnly"); + list.add("Derek"); + list.add("Change"); + list.add("factory"); + list.add("justBefore"); + list.add("Italy"); + list.add("Italy"); + list.add("Thursday"); + list.add(""); + list.add(""); + } + + @Test + public void checkStreamCount_whenCreating_givenDifferentSources() { + String[] arr = new String[]{"a", "b", "c"}; + Stream streamArr = Arrays.stream(arr); + assertEquals(streamArr.count(), 3); + + Stream streamOf = Stream.of("a", "b", "c"); + assertEquals(streamOf.count(), 3); + + long count = list.stream().distinct().count(); + assertEquals(count, 9); + } + + + @Test + public void checkStreamCount_whenOperationFilter_thanCorrect() { + Stream streamFilter = list.stream().filter(element -> element.isEmpty()); + assertEquals(streamFilter.count(), 2); + } + + + @Test + public void checkStreamCount_whenOperationMap_thanCorrect() { + List uris = new ArrayList<>(); + uris.add("C:\\My.txt"); + Stream streamMap = uris.stream().map(uri -> Paths.get(uri)); + assertEquals(streamMap.count(), 1); + + List details = new ArrayList<>(); + details.add(new Detail()); + details.add(new Detail()); + Stream streamFlatMap = details.stream() + .flatMap(detail -> detail.getParts().stream()); + assertEquals(streamFlatMap.count(), 4); + } + + + @Test + public void checkStreamCount_whenOperationMatch_thenCorrect() { + boolean isValid = list.stream().anyMatch(element -> element.contains("h")); + boolean isValidOne = list.stream().allMatch(element -> element.contains("h")); + boolean isValidTwo = list.stream().noneMatch(element -> element.contains("h")); + assertTrue(isValid); + assertFalse(isValidOne); + assertFalse(isValidTwo); + } + + + @Test + public void checkStreamReducedValue_whenOperationReduce_thenCorrect() { + List integers = new ArrayList<>(); + integers.add(1); + integers.add(1); + integers.add(1); + Integer reduced = integers.stream().reduce(23, (a, b) -> a + b); + assertTrue(reduced == 26); + } + + @Test + public void checkStreamContains_whenOperationCollect_thenCorrect() { + List resultList = list.stream() + .map(element -> element.toUpperCase()) + .collect(Collectors.toList()); + assertEquals(resultList.size(), list.size()); + assertTrue(resultList.contains("")); + } + + + @Test + public void checkParallelStream_whenDoWork() { + list.parallelStream().forEach(element -> doWork(element)); + } + + private void doWork(String string) { + assertTrue(true); //just imitate an amount of work + } +} diff --git a/core-java/src/test/java/com/baeldung/java8/JavaFolderSizeTest.java b/core-java/src/test/java/com/baeldung/java8/JavaFolderSizeTest.java new file mode 100644 index 0000000000..f2e7452137 --- /dev/null +++ b/core-java/src/test/java/com/baeldung/java8/JavaFolderSizeTest.java @@ -0,0 +1,115 @@ +package com.baeldung.java8; + +import org.apache.commons.io.FileUtils; +import org.junit.Before; +import org.junit.Test; + +import java.io.File; +import java.io.IOException; +import java.nio.file.*; +import java.nio.file.attribute.BasicFileAttributes; +import java.text.DecimalFormat; +import java.util.concurrent.atomic.AtomicLong; +import java.util.stream.StreamSupport; + +import static org.junit.Assert.assertEquals; + +public class JavaFolderSizeTest { + + private String path; + + @Before + public void init() { + final String separator = File.separator; + path = String.format("src%stest%sresources", separator, separator); + } + + @Test + public void whenGetFolderSizeRecursive_thenCorrect() { + final long expectedSize = 136; + + final File folder = new File(path); + final long size = getFolderSize(folder); + + assertEquals(expectedSize, size); + } + + @Test + public void whenGetFolderSizeUsingJava7_thenCorrect() throws IOException { + final long expectedSize = 136; + + final AtomicLong size = new AtomicLong(0); + final Path folder = Paths.get(path); + + Files.walkFileTree(folder, new SimpleFileVisitor() { + @Override + public FileVisitResult visitFile(final Path file, final BasicFileAttributes attrs) throws IOException { + size.addAndGet(attrs.size()); + return FileVisitResult.CONTINUE; + } + }); + + assertEquals(expectedSize, size.longValue()); + } + + @Test + public void whenGetFolderSizeUsingJava8_thenCorrect() throws IOException { + final long expectedSize = 136; + + final Path folder = Paths.get(path); + final long size = Files.walk(folder).filter(p -> p.toFile().isFile()).mapToLong(p -> p.toFile().length()).sum(); + + assertEquals(expectedSize, size); + } + + @Test + public void whenGetFolderSizeUsingApacheCommonsIO_thenCorrect() { + final long expectedSize = 136; + + final File folder = new File(path); + final long size = FileUtils.sizeOfDirectory(folder); + + assertEquals(expectedSize, size); + } + + @Test + public void whenGetFolderSizeUsingGuava_thenCorrect() { + final long expectedSize = 136; + + final File folder = new File(path); + + final Iterable files = com.google.common.io.Files.fileTreeTraverser().breadthFirstTraversal(folder); + final long size = StreamSupport.stream(files.spliterator(), false) + .filter(File::isFile) + .mapToLong(File::length).sum(); + + assertEquals(expectedSize, size); + } + + @Test + public void whenGetReadableSize_thenCorrect() { + final File folder = new File(path); + final long size = getFolderSize(folder); + + final String[] units = new String[]{"B", "KB", "MB", "GB", "TB"}; + final int unitIndex = (int) (Math.log10(size) / 3); + final double unitValue = 1 << (unitIndex * 10); + + final String readableSize = new DecimalFormat("#,##0.#").format(size / unitValue) + " " + units[unitIndex]; + assertEquals("136 B", readableSize); + } + + private long getFolderSize(final File folder) { + long length = 0; + final File[] files = folder.listFiles(); + + for (File file : files) { + if (file.isFile()) { + length += file.length(); + } else { + length += getFolderSize(file); + } + } + return length; + } +} \ No newline at end of file diff --git a/core-java/src/test/java/com/baeldung/java8/JavaTryWithResourcesTest.java b/core-java/src/test/java/com/baeldung/java8/JavaTryWithResourcesTest.java new file mode 100644 index 0000000000..224c4e9d6a --- /dev/null +++ b/core-java/src/test/java/com/baeldung/java8/JavaTryWithResourcesTest.java @@ -0,0 +1,86 @@ +package com.baeldung.java8; + +import org.junit.Assert; +import org.junit.Test; + +import java.io.PrintWriter; +import java.io.StringWriter; +import java.util.Date; +import java.util.Scanner; + +public class JavaTryWithResourcesTest { + + private static final String TEST_STRING_HELLO_WORLD = "Hello World"; + private Date resource1Date, resource2Date; + + // tests + + /* Example for using Try_with_resources */ + @Test + public void whenWritingToStringWriter_thenCorrectlyWritten() { + final StringWriter sw = new StringWriter(); + try (PrintWriter pw = new PrintWriter(sw, true)) { + pw.print(TEST_STRING_HELLO_WORLD); + } + + Assert.assertEquals(sw.getBuffer().toString(), TEST_STRING_HELLO_WORLD); + } + + /* Example for using multiple resources */ + @Test + public void givenStringToScanner_whenWritingToStringWriter_thenCorrectlyWritten() { + + final StringWriter sw = new StringWriter(); + try (Scanner sc = new Scanner(TEST_STRING_HELLO_WORLD); PrintWriter pw = new PrintWriter(sw, true)) { + while (sc.hasNext()) { + pw.print(sc.nextLine()); + } + } + + Assert.assertEquals(sw.getBuffer().toString(), TEST_STRING_HELLO_WORLD); + } + + /* Example to show order in which the resources are closed */ + @Test + public void whenFirstAutoClosableResourceIsinitializedFirst_thenFirstAutoClosableResourceIsReleasedFirst() throws Exception { + try (AutoCloseableResourcesFirst af = new AutoCloseableResourcesFirst(); AutoCloseableResourcesSecond as = new AutoCloseableResourcesSecond()) { + af.doSomething(); + as.doSomething(); + } + Assert.assertTrue(resource1Date.after(resource2Date)); + } + + class AutoCloseableResourcesFirst implements AutoCloseable { + public AutoCloseableResourcesFirst() { + System.out.println("Constructor -> AutoCloseableResources_First"); + } + + public void doSomething() { + System.out.println("Something -> AutoCloseableResources_First"); + } + + @Override + public void close() throws Exception { + System.out.println("Closed AutoCloseableResources_First"); + resource1Date = new Date(); + } + } + + class AutoCloseableResourcesSecond implements AutoCloseable { + public AutoCloseableResourcesSecond() { + System.out.println("Constructor -> AutoCloseableResources_Second"); + } + + public void doSomething() { + System.out.println("Something -> AutoCloseableResources_Second"); + } + + @Override + public void close() throws Exception { + System.out.println("Closed AutoCloseableResources_Second"); + resource2Date = new Date(); + Thread.sleep(10000); + } + } + +} diff --git a/core-java/src/test/java/com/baeldung/java8/base64/ApacheCommonsEncodeDecodeTest.java b/core-java/src/test/java/com/baeldung/java8/base64/ApacheCommonsEncodeDecodeTest.java new file mode 100644 index 0000000000..164a571817 --- /dev/null +++ b/core-java/src/test/java/com/baeldung/java8/base64/ApacheCommonsEncodeDecodeTest.java @@ -0,0 +1,56 @@ +package com.baeldung.java8.base64; + +import org.apache.commons.codec.binary.Base64; +import org.junit.Test; + +import java.io.UnsupportedEncodingException; + +import static org.junit.Assert.*; + +public class ApacheCommonsEncodeDecodeTest { + + // tests + + @Test + public void whenStringIsEncoded() throws UnsupportedEncodingException { + final String originalInput = "test input"; + final Base64 base64 = new Base64(); + final String encodedString = new String(base64.encode(originalInput.getBytes())); + + assertNotNull(encodedString); + assertNotEquals(originalInput, encodedString); + } + + @Test + public void whenStringIsEncoded_thenStringCanBeDecoded() throws UnsupportedEncodingException { + final String originalInput = "test input"; + final Base64 base64 = new Base64(); + final String encodedString = new String(base64.encode(originalInput.getBytes())); + + final String decodedString = new String(base64.decode(encodedString.getBytes())); + + assertNotNull(decodedString); + assertEquals(originalInput, decodedString); + } + + @Test + public void whenStringIsEncodedUsingStaticMethod() throws UnsupportedEncodingException { + final String originalInput = "test input"; + final String encodedString = new String(Base64.encodeBase64(originalInput.getBytes())); + + assertNotNull(encodedString); + assertNotEquals(originalInput, encodedString); + } + + @Test + public void whenStringIsEncodedUsingStaticMethod_thenStringCanBeDecodedUsingStaticMethod() throws UnsupportedEncodingException { + final String originalInput = "test input"; + final String encodedString = new String(Base64.encodeBase64(originalInput.getBytes())); + + final String decodedString = new String(Base64.decodeBase64(encodedString.getBytes())); + + assertNotNull(decodedString); + assertEquals(originalInput, decodedString); + } + +} diff --git a/core-java/src/test/java/com/baeldung/java8/base64/Java8EncodeDecodeTest.java b/core-java/src/test/java/com/baeldung/java8/base64/Java8EncodeDecodeTest.java new file mode 100644 index 0000000000..18dccf71ba --- /dev/null +++ b/core-java/src/test/java/com/baeldung/java8/base64/Java8EncodeDecodeTest.java @@ -0,0 +1,109 @@ +package com.baeldung.java8.base64; + +import org.junit.Test; + +import java.io.UnsupportedEncodingException; +import java.util.Base64; +import java.util.UUID; + +import static org.junit.Assert.*; + +public class Java8EncodeDecodeTest { + + // tests + + @Test + public void whenStringIsEncoded_thenOk() throws UnsupportedEncodingException { + final String originalInput = "test input"; + final String encodedString = Base64.getEncoder().encodeToString(originalInput.getBytes()); + + assertNotNull(encodedString); + assertNotEquals(originalInput, encodedString); + } + + @Test + public void whenStringIsEncoded_thenStringCanBeDecoded() throws UnsupportedEncodingException { + final String originalInput = "test input"; + final String encodedString = Base64.getEncoder().encodeToString(originalInput.getBytes()); + + final byte[] decodedBytes = Base64.getDecoder().decode(encodedString); + final String decodedString = new String(decodedBytes); + + assertNotNull(decodedString); + assertEquals(originalInput, decodedString); + } + + @Test + public void whenStringIsEncodedWithoutPadding_thenOk() throws UnsupportedEncodingException { + final String originalInput = "test input"; + final String encodedString = Base64.getEncoder().withoutPadding().encodeToString(originalInput.getBytes()); + + assertNotNull(encodedString); + assertNotEquals(originalInput, encodedString); + } + + @Test + public void whenStringIsEncodedWithoutPadding_thenStringCanBeDecoded() throws UnsupportedEncodingException { + final String originalInput = "test input"; + final String encodedString = Base64.getEncoder().withoutPadding().encodeToString(originalInput.getBytes()); + + final byte[] decodedBytes = Base64.getDecoder().decode(encodedString); + final String decodedString = new String(decodedBytes); + + assertNotNull(decodedString); + assertEquals(originalInput, decodedString); + } + + @Test + public void whenUrlIsEncoded_thenOk() throws UnsupportedEncodingException { + final String originalUrl = "https://www.google.co.nz/?gfe_rd=cr&ei=dzbFVf&gws_rd=ssl#q=java"; + final String encodedUrl = Base64.getUrlEncoder().encodeToString(originalUrl.getBytes()); + assertNotNull(encodedUrl); + assertNotEquals(originalUrl, encodedUrl); + } + + @Test + public void whenUrlIsEncoded_thenURLCanBeDecoded() throws UnsupportedEncodingException { + final String originalUrl = "https://www.google.co.nz/?gfe_rd=cr&ei=dzbFVf&gws_rd=ssl#q=java"; + final String encodedUrl = Base64.getUrlEncoder().encodeToString(originalUrl.getBytes()); + + final byte[] decodedBytes = Base64.getUrlDecoder().decode(encodedUrl.getBytes()); + final String decodedUrl = new String(decodedBytes); + + assertNotNull(decodedUrl); + assertEquals(originalUrl, decodedUrl); + } + + @Test + public void whenMimeIsEncoded_thenOk() throws UnsupportedEncodingException { + final StringBuilder buffer = getMimeBuffer(); + + final byte[] forEncode = buffer.toString().getBytes(); + final String encodedMime = Base64.getMimeEncoder().encodeToString(forEncode); + + assertNotNull(encodedMime); + } + + @Test + public void whenMimeIsEncoded_thenItCanBeDecoded() throws UnsupportedEncodingException { + final StringBuilder buffer = getMimeBuffer(); + + final byte[] forEncode = buffer.toString().getBytes(); + final String encodedMime = Base64.getMimeEncoder().encodeToString(forEncode); + + final byte[] decodedBytes = Base64.getMimeDecoder().decode(encodedMime); + final String decodedMime = new String(decodedBytes); + assertNotNull(decodedMime); + } + + // + + private static StringBuilder getMimeBuffer() { + final StringBuilder buffer = new StringBuilder(); + for (int count = 0; count < 10; ++count) { + buffer.append(UUID.randomUUID().toString()); + } + return buffer; + } + +} diff --git a/core-java/src/test/java/com/baeldung/java8/entity/Human.java b/core-java/src/test/java/com/baeldung/java8/entity/Human.java new file mode 100644 index 0000000000..cab8546129 --- /dev/null +++ b/core-java/src/test/java/com/baeldung/java8/entity/Human.java @@ -0,0 +1,89 @@ +package com.baeldung.java8.entity; + +public class Human { + private String name; + private int age; + + public Human() { + super(); + } + + public Human(final String name, final int age) { + super(); + + this.name = name; + this.age = age; + } + + // API + + public String getName() { + return name; + } + + public void setName(final String name) { + this.name = name; + } + + public int getAge() { + return age; + } + + public void setAge(final int age) { + this.age = age; + } + + // compare + + public static int compareByNameThenAge(final Human lhs, final Human rhs) { + if (lhs.name.equals(rhs.name)) { + return lhs.age - rhs.age; + } else { + return lhs.name.compareTo(rhs.name); + } + } + + // + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + age; + result = prime * result + ((name == null) ? 0 : name.hashCode()); + return result; + } + + @Override + public boolean equals(final Object obj) { + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + if (getClass() != obj.getClass()) { + return false; + } + final Human other = (Human) obj; + if (age != other.age) { + return false; + } + if (name == null) { + if (other.name != null) { + return false; + } + } else if (!name.equals(other.name)) { + return false; + } + return true; + } + + @Override + public String toString() { + final StringBuilder builder = new StringBuilder(); + builder.append("Human [name=").append(name).append(", age=").append(age).append("]"); + return builder.toString(); + } + +} diff --git a/core-java/src/test/java/com/baeldung/threadpool/CoreThreadPoolTest.java b/core-java/src/test/java/com/baeldung/threadpool/CoreThreadPoolTest.java new file mode 100644 index 0000000000..df336f4a93 --- /dev/null +++ b/core-java/src/test/java/com/baeldung/threadpool/CoreThreadPoolTest.java @@ -0,0 +1,146 @@ +package com.baeldung.threadpool; + +import java.util.concurrent.*; +import java.util.concurrent.atomic.AtomicInteger; + +import org.junit.Test; + +import static org.junit.Assert.assertEquals; + +public class CoreThreadPoolTest { + + @Test(timeout = 1000) + public void whenCallingExecuteWithRunnable_thenRunnableIsExecuted() throws InterruptedException { + + CountDownLatch lock = new CountDownLatch(1); + + Executor executor = Executors.newSingleThreadExecutor(); + executor.execute(() -> { + System.out.println("Hello World"); + lock.countDown(); + }); + + lock.await(1000, TimeUnit.MILLISECONDS); + } + + @Test + public void whenUsingExecutorServiceAndFuture_thenCanWaitOnFutureResult() throws InterruptedException, ExecutionException { + + ExecutorService executorService = Executors.newFixedThreadPool(10); + Future future = executorService.submit(() -> "Hello World"); + String result = future.get(); + + assertEquals("Hello World", result); + + } + + @Test + public void whenUsingFixedThreadPool_thenCoreAndMaximumThreadSizeAreTheSame() { + + ThreadPoolExecutor executor = (ThreadPoolExecutor) Executors.newFixedThreadPool(2); + executor.submit(() -> { + Thread.sleep(1000); + return null; + }); + executor.submit(() -> { + Thread.sleep(1000); + return null; + }); + executor.submit(() -> { + Thread.sleep(1000); + return null; + }); + + assertEquals(2, executor.getPoolSize()); + assertEquals(1, executor.getQueue().size()); + + } + + @Test + public void whenUsingCachedThreadPool_thenPoolSizeGrowsUnbounded() { + ThreadPoolExecutor executor = (ThreadPoolExecutor) Executors.newCachedThreadPool(); + executor.submit(() -> { + Thread.sleep(1000); + return null; + }); + executor.submit(() -> { + Thread.sleep(1000); + return null; + }); + executor.submit(() -> { + Thread.sleep(1000); + return null; + }); + + assertEquals(3, executor.getPoolSize()); + assertEquals(0, executor.getQueue().size()); + + } + + @Test(timeout = 1000) + public void whenUsingSingleThreadPool_thenTasksExecuteSequentially() throws InterruptedException { + + CountDownLatch lock = new CountDownLatch(2); + AtomicInteger counter = new AtomicInteger(); + + ExecutorService executor = Executors.newSingleThreadExecutor(); + executor.submit(() -> { + counter.set(1); + lock.countDown(); + }); + executor.submit(() -> { + counter.compareAndSet(1, 2); + lock.countDown(); + }); + + lock.await(1000, TimeUnit.MILLISECONDS); + assertEquals(2, counter.get()); + + } + + @Test(timeout = 1000) + public void whenSchedulingTask_thenTaskExecutesWithinGivenPeriod() throws InterruptedException { + + CountDownLatch lock = new CountDownLatch(1); + + ScheduledExecutorService executor = Executors.newScheduledThreadPool(5); + executor.schedule(() -> { + System.out.println("Hello World"); + lock.countDown(); + }, 500, TimeUnit.MILLISECONDS); + + lock.await(1000, TimeUnit.MILLISECONDS); + + } + + @Test(timeout = 1000) + public void whenSchedulingTaskWithFixedPeriod_thenTaskExecutesMultipleTimes() throws InterruptedException { + + CountDownLatch lock = new CountDownLatch(3); + + ScheduledExecutorService executor = Executors.newScheduledThreadPool(5); + ScheduledFuture future = executor.scheduleAtFixedRate(() -> { + System.out.println("Hello World"); + lock.countDown(); + }, 500, 100, TimeUnit.MILLISECONDS); + + lock.await(); + future.cancel(true); + + } + + @Test + public void whenUsingForkJoinPool_thenSumOfTreeElementsIsCalculatedCorrectly() { + + TreeNode tree = new TreeNode(5, + new TreeNode(3), new TreeNode(2, + new TreeNode(2), new TreeNode(8))); + + ForkJoinPool forkJoinPool = ForkJoinPool.commonPool(); + int sum = forkJoinPool.invoke(new CountingTask(tree)); + + assertEquals(20, sum); + } + + +} diff --git a/core-java/src/test/java/com/baeldung/threadpool/GuavaThreadPoolTest.java b/core-java/src/test/java/com/baeldung/threadpool/GuavaThreadPoolTest.java new file mode 100644 index 0000000000..92e0f9a8cb --- /dev/null +++ b/core-java/src/test/java/com/baeldung/threadpool/GuavaThreadPoolTest.java @@ -0,0 +1,56 @@ +package com.baeldung.threadpool; + +import java.util.concurrent.ExecutionException; +import java.util.concurrent.Executor; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.atomic.AtomicBoolean; +import java.util.stream.Collectors; + +import com.google.common.util.concurrent.Futures; +import com.google.common.util.concurrent.ListenableFuture; +import com.google.common.util.concurrent.ListeningExecutorService; +import com.google.common.util.concurrent.MoreExecutors; +import org.junit.Test; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +public class GuavaThreadPoolTest { + + @Test + public void whenExecutingTaskWithDirectExecutor_thenTheTaskIsExecutedInTheCurrentThread() { + + Executor executor = MoreExecutors.directExecutor(); + + AtomicBoolean executed = new AtomicBoolean(); + + executor.execute(() -> { + try { + Thread.sleep(500); + } catch (InterruptedException e) { + e.printStackTrace(); + } + executed.set(true); + }); + + assertTrue(executed.get()); + } + + @Test + public void whenJoiningFuturesWithAllAsList_thenCombinedFutureCompletesAfterAllFuturesComplete() throws ExecutionException, InterruptedException { + + ExecutorService executorService = Executors.newCachedThreadPool(); + ListeningExecutorService listeningExecutorService = MoreExecutors.listeningDecorator(executorService); + + ListenableFuture future1 = listeningExecutorService.submit(() -> "Hello"); + ListenableFuture future2 = listeningExecutorService.submit(() -> "World"); + + String greeting = Futures.allAsList(future1, future2).get() + .stream() + .collect(Collectors.joining(" ")); + assertEquals("Hello World", greeting); + + } + +} diff --git a/core-java/src/test/java/com/baeldung/util/CurrentDateTimeTest.java b/core-java/src/test/java/com/baeldung/util/CurrentDateTimeTest.java new file mode 100644 index 0000000000..3384680d8e --- /dev/null +++ b/core-java/src/test/java/com/baeldung/util/CurrentDateTimeTest.java @@ -0,0 +1,41 @@ +package com.baeldung.util; + +import org.junit.Test; + +import java.time.*; +import java.time.temporal.ChronoField; + +import static org.junit.Assert.assertEquals; + +public class CurrentDateTimeTest { + + private static final Clock clock = Clock.fixed(Instant.parse("2016-10-09T15:10:30.00Z"), ZoneId.of("UTC")); + + @Test + public void shouldReturnCurrentDate() { + + final LocalDate now = LocalDate.now(clock); + + assertEquals(9, now.get(ChronoField.DAY_OF_MONTH)); + assertEquals(10, now.get(ChronoField.MONTH_OF_YEAR)); + assertEquals(2016, now.get(ChronoField.YEAR)); + } + + @Test + public void shouldReturnCurrentTime() { + + final LocalTime now = LocalTime.now(clock); + + assertEquals(15, now.get(ChronoField.HOUR_OF_DAY)); + assertEquals(10, now.get(ChronoField.MINUTE_OF_HOUR)); + assertEquals(30, now.get(ChronoField.SECOND_OF_MINUTE)); + } + + @Test + public void shouldReturnCurrentTimestamp() { + + final Instant now = Instant.now(clock); + + assertEquals(clock.instant().getEpochSecond(), now.getEpochSecond()); + } +} From fe2359144ea094f8accc222045fa915a5d8e2dbd Mon Sep 17 00:00:00 2001 From: DOHA Date: Fri, 28 Oct 2016 13:41:59 +0200 Subject: [PATCH 135/215] fix timezone --- .../org/baeldung/gson/entities/ActorGson.java | 10 ++++++- .../serialization/ActorGsonDeserializer.java | 26 ++++++++++++------- .../deserialization/GsonDeserializeTest.java | 24 +++++++++-------- 3 files changed, 38 insertions(+), 22 deletions(-) diff --git a/gson/src/main/java/org/baeldung/gson/entities/ActorGson.java b/gson/src/main/java/org/baeldung/gson/entities/ActorGson.java index 5bbf776705..92468683bf 100644 --- a/gson/src/main/java/org/baeldung/gson/entities/ActorGson.java +++ b/gson/src/main/java/org/baeldung/gson/entities/ActorGson.java @@ -1,7 +1,10 @@ package org.baeldung.gson.entities; +import java.text.DateFormat; +import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; +import java.util.TimeZone; public class ActorGson { @@ -18,7 +21,7 @@ public class ActorGson { @Override public String toString() { - return "ActorGson [imdbId=" + imdbId + ", dateOfBirth=" + dateOfBirth + ", filmography=" + filmography + "]"; + return "ActorGson [imdbId=" + imdbId + ", dateOfBirth=" + formatDateOfBirth() + ", filmography=" + filmography + "]"; } public String getImdbId() { @@ -45,5 +48,10 @@ public class ActorGson { this.filmography = filmography; } + private String formatDateOfBirth() { + final DateFormat formatter = new SimpleDateFormat("EEE MMM dd hh:mm:ss zzz yyyy"); + formatter.setTimeZone(TimeZone.getTimeZone("GMT")); + return formatter.format(dateOfBirth); + } } \ No newline at end of file diff --git a/gson/src/main/java/org/baeldung/gson/serialization/ActorGsonDeserializer.java b/gson/src/main/java/org/baeldung/gson/serialization/ActorGsonDeserializer.java index 70a03500d5..016e3ba1e2 100644 --- a/gson/src/main/java/org/baeldung/gson/serialization/ActorGsonDeserializer.java +++ b/gson/src/main/java/org/baeldung/gson/serialization/ActorGsonDeserializer.java @@ -1,27 +1,33 @@ package org.baeldung.gson.serialization; -import com.google.gson.*; -import org.baeldung.gson.entities.ActorGson; - import java.lang.reflect.Type; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; +import org.baeldung.gson.entities.ActorGson; + +import com.google.gson.JsonArray; +import com.google.gson.JsonDeserializationContext; +import com.google.gson.JsonDeserializer; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParseException; + public class ActorGsonDeserializer implements JsonDeserializer { - private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"); + private final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX"); @Override public ActorGson deserialize(JsonElement json, Type type, JsonDeserializationContext jsonDeserializationContext) throws JsonParseException { - JsonObject jsonObject = json.getAsJsonObject(); + final JsonObject jsonObject = json.getAsJsonObject(); - JsonElement jsonImdbId = jsonObject.get("imdbId"); - JsonElement jsonDateOfBirth = jsonObject.get("dateOfBirth"); - JsonArray jsonFilmography = jsonObject.getAsJsonArray("filmography"); + final JsonElement jsonImdbId = jsonObject.get("imdbId"); + final JsonElement jsonDateOfBirth = jsonObject.get("dateOfBirth"); + final JsonArray jsonFilmography = jsonObject.getAsJsonArray("filmography"); - ArrayList filmList = new ArrayList(); + final ArrayList filmList = new ArrayList(); if (jsonFilmography != null) { for (int i = 0; i < jsonFilmography.size(); i++) { filmList.add(jsonFilmography.get(i).getAsString()); @@ -31,7 +37,7 @@ public class ActorGsonDeserializer implements JsonDeserializer { ActorGson actorGson = null; try { actorGson = new ActorGson(jsonImdbId.getAsString(), sdf.parse(jsonDateOfBirth.getAsString()), filmList); - } catch (ParseException e) { + } catch (final ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } diff --git a/gson/src/test/java/org/baeldung/gson/deserialization/GsonDeserializeTest.java b/gson/src/test/java/org/baeldung/gson/deserialization/GsonDeserializeTest.java index d87f0f4bd9..3844c55cd8 100644 --- a/gson/src/test/java/org/baeldung/gson/deserialization/GsonDeserializeTest.java +++ b/gson/src/test/java/org/baeldung/gson/deserialization/GsonDeserializeTest.java @@ -1,38 +1,40 @@ package org.baeldung.gson.deserialization; -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; +import java.text.ParseException; + import org.baeldung.gson.entities.ActorGson; import org.baeldung.gson.entities.Movie; import org.baeldung.gson.serialization.ActorGsonDeserializer; import org.junit.Assert; import org.junit.Test; -import java.text.ParseException; +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; public class GsonDeserializeTest { - @Test public void whenSimpleDeserialize_thenCorrect() throws ParseException { - String jsonInput = "{\"imdbId\":\"tt0472043\",\"actors\":" + "[{\"imdbId\":\"nm2199632\",\"dateOfBirth\":\"1982-09-21T12:00:00+01:00\",\"filmography\":" + "[\"Apocalypto\",\"Beatdown\",\"Wind Walkers\"]}]}"; + final String jsonInput = "{\"imdbId\":\"tt0472043\",\"actors\":" + "[{\"imdbId\":\"nm2199632\",\"dateOfBirth\":\"Tue Sep 21 11:00:00 GMT 1982\",\"filmography\":" + "[\"Apocalypto\",\"Beatdown\",\"Wind Walkers\"]}]}"; - Movie outputMovie = new Gson().fromJson(jsonInput, Movie.class); + final Gson gson = new GsonBuilder().setDateFormat("EEE MMM dd hh:mm:ss zzz yyyy").create(); - String expectedOutput = "Movie [imdbId=tt0472043, director=null, actors=[ActorGson [imdbId=nm2199632, dateOfBirth=Tue Sep 21 04:00:00 PDT 1982, filmography=[Apocalypto, Beatdown, Wind Walkers]]]]"; + final Movie outputMovie = gson.fromJson(jsonInput, Movie.class); + + final String expectedOutput = "Movie [imdbId=tt0472043, director=null, actors=[ActorGson [imdbId=nm2199632, dateOfBirth=Tue Sep 21 11:00:00 GMT 1982, filmography=[Apocalypto, Beatdown, Wind Walkers]]]]"; Assert.assertEquals(outputMovie.toString(), expectedOutput); } @Test public void whenCustomDeserialize_thenCorrect() throws ParseException { - String jsonInput = "{\"imdbId\":\"tt0472043\",\"actors\":" + "[{\"imdbId\":\"nm2199632\",\"dateOfBirth\":\"1982-09-21T12:00:00+01:00\",\"filmography\":" + "[\"Apocalypto\",\"Beatdown\",\"Wind Walkers\"]}]}"; + final String jsonInput = "{\"imdbId\":\"tt0472043\",\"actors\":" + "[{\"imdbId\":\"nm2199632\",\"dateOfBirth\":\"1982-09-21T12:00:00+01:00\",\"filmography\":" + "[\"Apocalypto\",\"Beatdown\",\"Wind Walkers\"]}]}"; - Gson gson = new GsonBuilder().registerTypeAdapter(ActorGson.class, new ActorGsonDeserializer()).create(); + final Gson gson = new GsonBuilder().registerTypeAdapter(ActorGson.class, new ActorGsonDeserializer()).create(); - Movie outputMovie = gson.fromJson(jsonInput, Movie.class); + final Movie outputMovie = gson.fromJson(jsonInput, Movie.class); - String expectedOutput = "Movie [imdbId=tt0472043, director=null, actors=[ActorGson [imdbId=nm2199632, dateOfBirth=Tue Sep 21 12:00:00 PDT 1982, filmography=[Apocalypto, Beatdown, Wind Walkers]]]]"; + final String expectedOutput = "Movie [imdbId=tt0472043, director=null, actors=[ActorGson [imdbId=nm2199632, dateOfBirth=Tue Sep 21 11:00:00 GMT 1982, filmography=[Apocalypto, Beatdown, Wind Walkers]]]]"; Assert.assertEquals(outputMovie.toString(), expectedOutput); } } From bee18d779f9386345c760408363192ce956aba49 Mon Sep 17 00:00:00 2001 From: eugenp Date: Fri, 28 Oct 2016 15:32:04 +0300 Subject: [PATCH 136/215] core java cleanup --- .../equalshashcode/entities/ComplexClass.java | 4 +- ...ingTest.java => CharToStringUnitTest.java} | 2 +- ...Test.java => Java8CollectorsUnitTest.java} | 2 +- ...sTest.java => FileOperationsUnitTest.java} | 38 +++++++++---------- ...oTest.java => NioEchoIntegrationTest.java} | 2 +- ...DefaultStaticIntefaceMethodsUnitTest.java} | 2 +- ... Java8ExecutorServiceIntegrationTest.java} | 32 +++++++++------- ...java => Java8ForkJoinIntegrationTest.java} | 28 ++++++-------- ...a8FunctionalInteracesLambdasUnitTest.java} | 2 +- ...java => Java8MethodReferenceUnitTest.java} | 2 +- ...alTest.java => Java8OptionalUnitTest.java} | 34 ++++++++--------- ...=> ApacheCommonsEncodeDecodeUnitTest.java} | 2 +- ...st.java => Java8EncodeDecodeUnitTest.java} | 2 +- ...EchoTest.java => EchoIntegrationTest.java} | 22 ++++++----- ...va => SocketEchoMultiIntegrationTest.java} | 2 +- ...ava => CoreThreadPoolIntegrationTest.java} | 23 +++++++---- ...va => GuavaThreadPoolIntegrationTest.java} | 2 +- ...Test.java => CurrentDateTimeUnitTest.java} | 20 +++++----- ...ava => FileNotFoundExceptionUnitTest.java} | 12 ++++-- ...assTest.java => ComplexClassUnitTest.java} | 8 ++-- ...ayListTest.java => ArrayListUnitTest.java} | 2 +- 21 files changed, 127 insertions(+), 116 deletions(-) rename core-java/src/test/java/com/baeldung/{CharToStringTest.java => CharToStringUnitTest.java} (97%) rename core-java/src/test/java/com/baeldung/collectors/{Java8CollectorsTest.java => Java8CollectorsUnitTest.java} (99%) rename core-java/src/test/java/com/baeldung/file/{FileOperationsTest.java => FileOperationsUnitTest.java} (96%) rename core-java/src/test/java/com/baeldung/java/nio/selector/{EchoTest.java => NioEchoIntegrationTest.java} (93%) rename core-java/src/test/java/com/baeldung/java8/{Java8DefaultStaticIntefaceMethodsTest.java => Java8DefaultStaticIntefaceMethodsUnitTest.java} (93%) rename core-java/src/test/java/com/baeldung/java8/{Java8ExecutorServiceTest.java => Java8ExecutorServiceIntegrationTest.java} (83%) rename core-java/src/test/java/com/baeldung/java8/{Java8ForkJoinTest.java => Java8ForkJoinIntegrationTest.java} (94%) rename core-java/src/test/java/com/baeldung/java8/{Java8FunctionalInteracesLambdasTest.java => Java8FunctionalInteracesLambdasUnitTest.java} (98%) rename core-java/src/test/java/com/baeldung/java8/{Java8MethodReferenceTest.java => Java8MethodReferenceUnitTest.java} (97%) rename core-java/src/test/java/com/baeldung/java8/{Java8OptionalTest.java => Java8OptionalUnitTest.java} (80%) rename core-java/src/test/java/com/baeldung/java8/base64/{ApacheCommonsEncodeDecodeTest.java => ApacheCommonsEncodeDecodeUnitTest.java} (97%) rename core-java/src/test/java/com/baeldung/java8/base64/{Java8EncodeDecodeTest.java => Java8EncodeDecodeUnitTest.java} (98%) rename core-java/src/test/java/com/baeldung/socket/{EchoTest.java => EchoIntegrationTest.java} (96%) rename core-java/src/test/java/com/baeldung/socket/{EchoMultiTest.java => SocketEchoMultiIntegrationTest.java} (97%) rename core-java/src/test/java/com/baeldung/threadpool/{CoreThreadPoolTest.java => CoreThreadPoolIntegrationTest.java} (86%) rename core-java/src/test/java/com/baeldung/threadpool/{GuavaThreadPoolTest.java => GuavaThreadPoolIntegrationTest.java} (97%) rename core-java/src/test/java/com/baeldung/util/{CurrentDateTimeTest.java => CurrentDateTimeUnitTest.java} (85%) rename core-java/src/test/java/org/baeldung/core/exceptions/{FileNotFoundExceptionTest.java => FileNotFoundExceptionUnitTest.java} (87%) rename core-java/src/test/java/org/baeldung/equalshashcode/entities/{ComplexClassTest.java => ComplexClassUnitTest.java} (83%) rename core-java/src/test/java/org/baeldung/java/collections/{ArrayListTest.java => ArrayListUnitTest.java} (99%) diff --git a/core-java/src/main/java/org/baeldung/equalshashcode/entities/ComplexClass.java b/core-java/src/main/java/org/baeldung/equalshashcode/entities/ComplexClass.java index d4a6a0f42e..6329f41252 100644 --- a/core-java/src/main/java/org/baeldung/equalshashcode/entities/ComplexClass.java +++ b/core-java/src/main/java/org/baeldung/equalshashcode/entities/ComplexClass.java @@ -1,7 +1,5 @@ package org.baeldung.equalshashcode.entities; -import java.util.ArrayList; -import java.util.HashSet; import java.util.List; import java.util.Set; @@ -10,7 +8,7 @@ public class ComplexClass { private List genericList; private Set integerSet; - public ComplexClass(ArrayList genericArrayList, HashSet integerHashSet) { + public ComplexClass(List genericArrayList, Set integerHashSet) { super(); this.genericList = genericArrayList; this.integerSet = integerHashSet; diff --git a/core-java/src/test/java/com/baeldung/CharToStringTest.java b/core-java/src/test/java/com/baeldung/CharToStringUnitTest.java similarity index 97% rename from core-java/src/test/java/com/baeldung/CharToStringTest.java rename to core-java/src/test/java/com/baeldung/CharToStringUnitTest.java index 4fd451f2ed..78742e356d 100644 --- a/core-java/src/test/java/com/baeldung/CharToStringTest.java +++ b/core-java/src/test/java/com/baeldung/CharToStringUnitTest.java @@ -4,7 +4,7 @@ import org.junit.Test; import static org.assertj.core.api.Assertions.assertThat; -public class CharToStringTest { +public class CharToStringUnitTest { @Test public void givenChar_whenCallingStringValueOf_shouldConvertToString() { diff --git a/core-java/src/test/java/com/baeldung/collectors/Java8CollectorsTest.java b/core-java/src/test/java/com/baeldung/collectors/Java8CollectorsUnitTest.java similarity index 99% rename from core-java/src/test/java/com/baeldung/collectors/Java8CollectorsTest.java rename to core-java/src/test/java/com/baeldung/collectors/Java8CollectorsUnitTest.java index ac8c666e4b..dbddbe6c54 100644 --- a/core-java/src/test/java/com/baeldung/collectors/Java8CollectorsTest.java +++ b/core-java/src/test/java/com/baeldung/collectors/Java8CollectorsUnitTest.java @@ -36,7 +36,7 @@ import static java.util.stream.Collectors.toSet; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; -public class Java8CollectorsTest { +public class Java8CollectorsUnitTest { private final List givenList = Arrays.asList("a", "bb", "ccc", "dd"); diff --git a/core-java/src/test/java/com/baeldung/file/FileOperationsTest.java b/core-java/src/test/java/com/baeldung/file/FileOperationsUnitTest.java similarity index 96% rename from core-java/src/test/java/com/baeldung/file/FileOperationsTest.java rename to core-java/src/test/java/com/baeldung/file/FileOperationsUnitTest.java index e21af9552a..3319716dc6 100644 --- a/core-java/src/test/java/com/baeldung/file/FileOperationsTest.java +++ b/core-java/src/test/java/com/baeldung/file/FileOperationsUnitTest.java @@ -1,11 +1,5 @@ package com.baeldung.file; -import org.apache.commons.io.FileUtils; -import org.hamcrest.CoreMatchers; -import org.hamcrest.Matchers; -import org.junit.Assert; -import org.junit.Test; - import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; @@ -20,7 +14,13 @@ import java.nio.file.Path; import java.nio.file.Paths; import java.util.stream.Stream; -public class FileOperationsTest { +import org.apache.commons.io.FileUtils; +import org.hamcrest.CoreMatchers; +import org.hamcrest.Matchers; +import org.junit.Assert; +import org.junit.Test; + +public class FileOperationsUnitTest { @Test public void givenFileName_whenUsingClassloader_thenFileData() throws IOException { @@ -30,15 +30,15 @@ public class FileOperationsTest { File file = new File(classLoader.getResource("fileTest.txt").getFile()); InputStream inputStream = new FileInputStream(file); String data = readFromInputStream(inputStream); - + Assert.assertEquals(expectedData, data.trim()); } @Test public void givenFileNameAsAbsolutePath_whenUsingClasspath_thenFileData() throws IOException { String expectedData = "Hello World from fileTest.txt!!!"; - - Class clazz = FileOperationsTest.class; + + Class clazz = FileOperationsUnitTest.class; InputStream inputStream = clazz.getResourceAsStream("/fileTest.txt"); String data = readFromInputStream(inputStream); @@ -69,44 +69,44 @@ public class FileOperationsTest { Assert.assertThat(data.trim(), CoreMatchers.containsString(expectedData)); } - + @Test public void givenFileName_whenUsingFileUtils_thenFileData() throws IOException { String expectedData = "Hello World from fileTest.txt!!!"; - + ClassLoader classLoader = getClass().getClassLoader(); File file = new File(classLoader.getResource("fileTest.txt").getFile()); String data = FileUtils.readFileToString(file); - + Assert.assertEquals(expectedData, data.trim()); } - + @Test public void givenFilePath_whenUsingFilesReadAllBytes_thenFileData() throws IOException, URISyntaxException { String expectedData = "Hello World from fileTest.txt!!!"; Path path = Paths.get(getClass().getClassLoader().getResource("fileTest.txt").toURI()); - + byte[] fileBytes = Files.readAllBytes(path); String data = new String(fileBytes); Assert.assertEquals(expectedData, data.trim()); } - + @Test public void givenFilePath_whenUsingFilesLines_thenFileData() throws IOException, URISyntaxException { String expectedData = "Hello World from fileTest.txt!!!"; Path path = Paths.get(getClass().getClassLoader().getResource("fileTest.txt").toURI()); - + StringBuilder data = new StringBuilder(); Stream lines = Files.lines(path); lines.forEach(line -> data.append(line).append("\n")); lines.close(); - + Assert.assertEquals(expectedData, data.toString().trim()); } - + private String readFromInputStream(InputStream inputStream) throws IOException { StringBuilder resultStringBuilder = new StringBuilder(); try (BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream))) { diff --git a/core-java/src/test/java/com/baeldung/java/nio/selector/EchoTest.java b/core-java/src/test/java/com/baeldung/java/nio/selector/NioEchoIntegrationTest.java similarity index 93% rename from core-java/src/test/java/com/baeldung/java/nio/selector/EchoTest.java rename to core-java/src/test/java/com/baeldung/java/nio/selector/NioEchoIntegrationTest.java index cb7ecefc81..748dc5b9f4 100644 --- a/core-java/src/test/java/com/baeldung/java/nio/selector/EchoTest.java +++ b/core-java/src/test/java/com/baeldung/java/nio/selector/NioEchoIntegrationTest.java @@ -6,7 +6,7 @@ import java.io.IOException; import org.junit.Test; -public class EchoTest { +public class NioEchoIntegrationTest { @Test public void givenClient_whenServerEchosMessage_thenCorrect() throws IOException, InterruptedException { diff --git a/core-java/src/test/java/com/baeldung/java8/Java8DefaultStaticIntefaceMethodsTest.java b/core-java/src/test/java/com/baeldung/java8/Java8DefaultStaticIntefaceMethodsUnitTest.java similarity index 93% rename from core-java/src/test/java/com/baeldung/java8/Java8DefaultStaticIntefaceMethodsTest.java rename to core-java/src/test/java/com/baeldung/java8/Java8DefaultStaticIntefaceMethodsUnitTest.java index 21a5e34b9b..5b07b3e3ae 100644 --- a/core-java/src/test/java/com/baeldung/java8/Java8DefaultStaticIntefaceMethodsTest.java +++ b/core-java/src/test/java/com/baeldung/java8/Java8DefaultStaticIntefaceMethodsUnitTest.java @@ -6,7 +6,7 @@ import org.junit.Test; import static org.junit.Assert.assertEquals; -public class Java8DefaultStaticIntefaceMethodsTest { +public class Java8DefaultStaticIntefaceMethodsUnitTest { @Test public void callStaticInterfaceMethdosMethods_whenExpectedResults_thenCorrect() { diff --git a/core-java/src/test/java/com/baeldung/java8/Java8ExecutorServiceTest.java b/core-java/src/test/java/com/baeldung/java8/Java8ExecutorServiceIntegrationTest.java similarity index 83% rename from core-java/src/test/java/com/baeldung/java8/Java8ExecutorServiceTest.java rename to core-java/src/test/java/com/baeldung/java8/Java8ExecutorServiceIntegrationTest.java index 581ccec182..41eb864fd9 100644 --- a/core-java/src/test/java/com/baeldung/java8/Java8ExecutorServiceTest.java +++ b/core-java/src/test/java/com/baeldung/java8/Java8ExecutorServiceIntegrationTest.java @@ -1,17 +1,26 @@ package com.baeldung.java8; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.Callable; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.Future; +import java.util.concurrent.LinkedBlockingQueue; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.ThreadPoolExecutor; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.TimeoutException; import org.junit.Before; import org.junit.Test; -import java.util.ArrayList; -import java.util.List; -import java.util.concurrent.*; - -import static org.junit.Assert.*; - - -public class Java8ExecutorServiceTest { +public class Java8ExecutorServiceIntegrationTest { private Runnable runnableTask; private Callable callableTask; @@ -53,9 +62,7 @@ public class Java8ExecutorServiceTest { @Test public void creationSubmittingTasksShuttingDownNow_whenShutDownAfterAwating_thenCorrect() { - ExecutorService threadPoolExecutor = - new ThreadPoolExecutor(1, 1, 0L, TimeUnit.MILLISECONDS, - new LinkedBlockingQueue<>()); + ExecutorService threadPoolExecutor = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<>()); for (int i = 0; i < 100; i++) { threadPoolExecutor.submit(callableTask); @@ -138,8 +145,7 @@ public class Java8ExecutorServiceTest { @Test public void submittingTaskScheduling_whenExecuted_thenCorrect() { - ScheduledExecutorService executorService = Executors - .newSingleThreadScheduledExecutor(); + ScheduledExecutorService executorService = Executors.newSingleThreadScheduledExecutor(); Future resultFuture = executorService.schedule(callableTask, 1, TimeUnit.SECONDS); String result = null; diff --git a/core-java/src/test/java/com/baeldung/java8/Java8ForkJoinTest.java b/core-java/src/test/java/com/baeldung/java8/Java8ForkJoinIntegrationTest.java similarity index 94% rename from core-java/src/test/java/com/baeldung/java8/Java8ForkJoinTest.java rename to core-java/src/test/java/com/baeldung/java8/Java8ForkJoinIntegrationTest.java index 273b2d78db..6778fd782b 100644 --- a/core-java/src/test/java/com/baeldung/java8/Java8ForkJoinTest.java +++ b/core-java/src/test/java/com/baeldung/java8/Java8ForkJoinIntegrationTest.java @@ -1,18 +1,20 @@ package com.baeldung.java8; - -import com.baeldung.forkjoin.CustomRecursiveAction; -import com.baeldung.forkjoin.CustomRecursiveTask; -import com.baeldung.forkjoin.util.PoolUtil; -import org.junit.Before; -import org.junit.Test; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; import java.util.Random; import java.util.concurrent.ForkJoinPool; -import static org.junit.Assert.*; +import org.junit.Before; +import org.junit.Test; -public class Java8ForkJoinTest { +import com.baeldung.forkjoin.CustomRecursiveAction; +import com.baeldung.forkjoin.CustomRecursiveTask; +import com.baeldung.forkjoin.util.PoolUtil; + +public class Java8ForkJoinIntegrationTest { private int[] arr; private CustomRecursiveTask customRecursiveTask; @@ -27,28 +29,23 @@ public class Java8ForkJoinTest { customRecursiveTask = new CustomRecursiveTask(arr); } - @Test public void callPoolUtil_whenExistsAndExpectedType_thenCorrect() { - ForkJoinPool forkJoinPool = PoolUtil.forkJoinPool; ForkJoinPool forkJoinPoolTwo = PoolUtil.forkJoinPool; assertNotNull(forkJoinPool); assertEquals(2, forkJoinPool.getParallelism()); assertEquals(forkJoinPool, forkJoinPoolTwo); - } @Test public void callCommonPool_whenExistsAndExpectedType_thenCorrect() { - ForkJoinPool commonPool = ForkJoinPool.commonPool(); ForkJoinPool commonPoolTwo = ForkJoinPool.commonPool(); assertNotNull(commonPool); assertEquals(commonPool, commonPoolTwo); - } @Test @@ -63,7 +60,6 @@ public class Java8ForkJoinTest { @Test public void executeRecursiveTask_whenExecuted_thenCorrect() { - ForkJoinPool forkJoinPool = ForkJoinPool.commonPool(); forkJoinPool.execute(customRecursiveTask); @@ -73,12 +69,10 @@ public class Java8ForkJoinTest { forkJoinPool.submit(customRecursiveTask); int resultTwo = customRecursiveTask.join(); assertTrue(customRecursiveTask.isDone()); - } @Test public void executeRecursiveTaskWithFJ_whenExecuted_thenCorrect() { - CustomRecursiveTask customRecursiveTaskFirst = new CustomRecursiveTask(arr); CustomRecursiveTask customRecursiveTaskSecond = new CustomRecursiveTask(arr); CustomRecursiveTask customRecursiveTaskLast = new CustomRecursiveTask(arr); @@ -95,6 +89,6 @@ public class Java8ForkJoinTest { assertTrue(customRecursiveTaskSecond.isDone()); assertTrue(customRecursiveTaskLast.isDone()); assertTrue(result != 0); - } + } diff --git a/core-java/src/test/java/com/baeldung/java8/Java8FunctionalInteracesLambdasTest.java b/core-java/src/test/java/com/baeldung/java8/Java8FunctionalInteracesLambdasUnitTest.java similarity index 98% rename from core-java/src/test/java/com/baeldung/java8/Java8FunctionalInteracesLambdasTest.java rename to core-java/src/test/java/com/baeldung/java8/Java8FunctionalInteracesLambdasUnitTest.java index faaf3ae407..13ddcc805f 100644 --- a/core-java/src/test/java/com/baeldung/java8/Java8FunctionalInteracesLambdasTest.java +++ b/core-java/src/test/java/com/baeldung/java8/Java8FunctionalInteracesLambdasUnitTest.java @@ -11,7 +11,7 @@ import java.util.function.Function; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotEquals; -public class Java8FunctionalInteracesLambdasTest { +public class Java8FunctionalInteracesLambdasUnitTest { private UseFoo useFoo; diff --git a/core-java/src/test/java/com/baeldung/java8/Java8MethodReferenceTest.java b/core-java/src/test/java/com/baeldung/java8/Java8MethodReferenceUnitTest.java similarity index 97% rename from core-java/src/test/java/com/baeldung/java8/Java8MethodReferenceTest.java rename to core-java/src/test/java/com/baeldung/java8/Java8MethodReferenceUnitTest.java index d9d88c5052..2dc1fe18e6 100644 --- a/core-java/src/test/java/com/baeldung/java8/Java8MethodReferenceTest.java +++ b/core-java/src/test/java/com/baeldung/java8/Java8MethodReferenceUnitTest.java @@ -12,7 +12,7 @@ import java.util.stream.Stream; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; -public class Java8MethodReferenceTest { +public class Java8MethodReferenceUnitTest { private List list; diff --git a/core-java/src/test/java/com/baeldung/java8/Java8OptionalTest.java b/core-java/src/test/java/com/baeldung/java8/Java8OptionalUnitTest.java similarity index 80% rename from core-java/src/test/java/com/baeldung/java8/Java8OptionalTest.java rename to core-java/src/test/java/com/baeldung/java8/Java8OptionalUnitTest.java index 26de39bc0e..c6d5836387 100644 --- a/core-java/src/test/java/com/baeldung/java8/Java8OptionalTest.java +++ b/core-java/src/test/java/com/baeldung/java8/Java8OptionalUnitTest.java @@ -1,16 +1,23 @@ package com.baeldung.java8; -import com.baeldung.java_8_features.*; -import org.junit.Before; -import org.junit.Test; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; import java.util.ArrayList; import java.util.List; import java.util.Optional; -import static org.junit.Assert.*; +import org.junit.Before; +import org.junit.Test; -public class Java8OptionalTest { +import com.baeldung.java_8_features.Address; +import com.baeldung.java_8_features.CustomException; +import com.baeldung.java_8_features.OptionalAddress; +import com.baeldung.java_8_features.OptionalUser; +import com.baeldung.java_8_features.User; + +public class Java8OptionalUnitTest { private List list; @@ -32,7 +39,6 @@ public class Java8OptionalTest { @Test public void checkOptional_whenAsExpected_thenCorrect() { - Optional optionalEmpty = Optional.empty(); assertFalse(optionalEmpty.isPresent()); @@ -52,27 +58,19 @@ public class Java8OptionalTest { assertTrue(listOptNull.isEmpty()); Optional user = Optional.ofNullable(getUser()); - String result = user.map(User::getAddress) - .map(Address::getStreet) - .orElse("not specified"); + String result = user.map(User::getAddress).map(Address::getStreet).orElse("not specified"); assertEquals(result, "1st Avenue"); Optional optionalUser = Optional.ofNullable(getOptionalUser()); - String resultOpt = optionalUser.flatMap(OptionalUser::getAddress) - .flatMap(OptionalAddress::getStreet) - .orElse("not specified"); + String resultOpt = optionalUser.flatMap(OptionalUser::getAddress).flatMap(OptionalAddress::getStreet).orElse("not specified"); assertEquals(resultOpt, "1st Avenue"); Optional userNull = Optional.ofNullable(getUserNull()); - String resultNull = userNull.map(User::getAddress) - .map(Address::getStreet) - .orElse("not specified"); + String resultNull = userNull.map(User::getAddress).map(Address::getStreet).orElse("not specified"); assertEquals(resultNull, "not specified"); Optional optionalUserNull = Optional.ofNullable(getOptionalUserNull()); - String resultOptNull = optionalUserNull.flatMap(OptionalUser::getAddress) - .flatMap(OptionalAddress::getStreet) - .orElse("not specified"); + String resultOptNull = optionalUserNull.flatMap(OptionalUser::getAddress).flatMap(OptionalAddress::getStreet).orElse("not specified"); assertEquals(resultOptNull, "not specified"); } diff --git a/core-java/src/test/java/com/baeldung/java8/base64/ApacheCommonsEncodeDecodeTest.java b/core-java/src/test/java/com/baeldung/java8/base64/ApacheCommonsEncodeDecodeUnitTest.java similarity index 97% rename from core-java/src/test/java/com/baeldung/java8/base64/ApacheCommonsEncodeDecodeTest.java rename to core-java/src/test/java/com/baeldung/java8/base64/ApacheCommonsEncodeDecodeUnitTest.java index 164a571817..7889e6ad53 100644 --- a/core-java/src/test/java/com/baeldung/java8/base64/ApacheCommonsEncodeDecodeTest.java +++ b/core-java/src/test/java/com/baeldung/java8/base64/ApacheCommonsEncodeDecodeUnitTest.java @@ -7,7 +7,7 @@ import java.io.UnsupportedEncodingException; import static org.junit.Assert.*; -public class ApacheCommonsEncodeDecodeTest { +public class ApacheCommonsEncodeDecodeUnitTest { // tests diff --git a/core-java/src/test/java/com/baeldung/java8/base64/Java8EncodeDecodeTest.java b/core-java/src/test/java/com/baeldung/java8/base64/Java8EncodeDecodeUnitTest.java similarity index 98% rename from core-java/src/test/java/com/baeldung/java8/base64/Java8EncodeDecodeTest.java rename to core-java/src/test/java/com/baeldung/java8/base64/Java8EncodeDecodeUnitTest.java index 18dccf71ba..62cfa4c0a1 100644 --- a/core-java/src/test/java/com/baeldung/java8/base64/Java8EncodeDecodeTest.java +++ b/core-java/src/test/java/com/baeldung/java8/base64/Java8EncodeDecodeUnitTest.java @@ -8,7 +8,7 @@ import java.util.UUID; import static org.junit.Assert.*; -public class Java8EncodeDecodeTest { +public class Java8EncodeDecodeUnitTest { // tests diff --git a/core-java/src/test/java/com/baeldung/socket/EchoTest.java b/core-java/src/test/java/com/baeldung/socket/EchoIntegrationTest.java similarity index 96% rename from core-java/src/test/java/com/baeldung/socket/EchoTest.java rename to core-java/src/test/java/com/baeldung/socket/EchoIntegrationTest.java index 6c93646ba6..7ac8e0a97a 100644 --- a/core-java/src/test/java/com/baeldung/socket/EchoTest.java +++ b/core-java/src/test/java/com/baeldung/socket/EchoIntegrationTest.java @@ -1,15 +1,15 @@ package com.baeldung.socket; +import static org.junit.Assert.assertEquals; + +import java.util.concurrent.Executors; + import org.junit.After; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; -import java.util.concurrent.Executors; - -import static org.junit.Assert.assertEquals; - -public class EchoTest { +public class EchoIntegrationTest { private static final Integer PORT = 4444; @BeforeClass @@ -25,9 +25,15 @@ public class EchoTest { client.startConnection("127.0.0.1", PORT); } + @After + public void tearDown() { + client.stopConnection(); + } + + // + @Test public void givenClient_whenServerEchosMessage_thenCorrect() { - String resp1 = client.sendMessage("hello"); String resp2 = client.sendMessage("world"); String resp3 = client.sendMessage("!"); @@ -38,8 +44,4 @@ public class EchoTest { assertEquals("good bye", resp4); } - @After - public void tearDown() { - client.stopConnection(); - } } diff --git a/core-java/src/test/java/com/baeldung/socket/EchoMultiTest.java b/core-java/src/test/java/com/baeldung/socket/SocketEchoMultiIntegrationTest.java similarity index 97% rename from core-java/src/test/java/com/baeldung/socket/EchoMultiTest.java rename to core-java/src/test/java/com/baeldung/socket/SocketEchoMultiIntegrationTest.java index 50af34d61a..6ebc0946c5 100644 --- a/core-java/src/test/java/com/baeldung/socket/EchoMultiTest.java +++ b/core-java/src/test/java/com/baeldung/socket/SocketEchoMultiIntegrationTest.java @@ -7,7 +7,7 @@ import java.util.concurrent.Executors; import static org.junit.Assert.assertEquals; -public class EchoMultiTest { +public class SocketEchoMultiIntegrationTest { private static final Integer PORT = 5555; diff --git a/core-java/src/test/java/com/baeldung/threadpool/CoreThreadPoolTest.java b/core-java/src/test/java/com/baeldung/threadpool/CoreThreadPoolIntegrationTest.java similarity index 86% rename from core-java/src/test/java/com/baeldung/threadpool/CoreThreadPoolTest.java rename to core-java/src/test/java/com/baeldung/threadpool/CoreThreadPoolIntegrationTest.java index df336f4a93..a62ec99043 100644 --- a/core-java/src/test/java/com/baeldung/threadpool/CoreThreadPoolTest.java +++ b/core-java/src/test/java/com/baeldung/threadpool/CoreThreadPoolIntegrationTest.java @@ -1,13 +1,23 @@ package com.baeldung.threadpool; -import java.util.concurrent.*; +import static org.junit.Assert.assertEquals; + +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.Executor; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.ForkJoinPool; +import java.util.concurrent.Future; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.ScheduledFuture; +import java.util.concurrent.ThreadPoolExecutor; +import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicInteger; import org.junit.Test; -import static org.junit.Assert.assertEquals; - -public class CoreThreadPoolTest { +public class CoreThreadPoolIntegrationTest { @Test(timeout = 1000) public void whenCallingExecuteWithRunnable_thenRunnableIsExecuted() throws InterruptedException { @@ -132,9 +142,7 @@ public class CoreThreadPoolTest { @Test public void whenUsingForkJoinPool_thenSumOfTreeElementsIsCalculatedCorrectly() { - TreeNode tree = new TreeNode(5, - new TreeNode(3), new TreeNode(2, - new TreeNode(2), new TreeNode(8))); + TreeNode tree = new TreeNode(5, new TreeNode(3), new TreeNode(2, new TreeNode(2), new TreeNode(8))); ForkJoinPool forkJoinPool = ForkJoinPool.commonPool(); int sum = forkJoinPool.invoke(new CountingTask(tree)); @@ -142,5 +150,4 @@ public class CoreThreadPoolTest { assertEquals(20, sum); } - } diff --git a/core-java/src/test/java/com/baeldung/threadpool/GuavaThreadPoolTest.java b/core-java/src/test/java/com/baeldung/threadpool/GuavaThreadPoolIntegrationTest.java similarity index 97% rename from core-java/src/test/java/com/baeldung/threadpool/GuavaThreadPoolTest.java rename to core-java/src/test/java/com/baeldung/threadpool/GuavaThreadPoolIntegrationTest.java index 92e0f9a8cb..fd13a4fd78 100644 --- a/core-java/src/test/java/com/baeldung/threadpool/GuavaThreadPoolTest.java +++ b/core-java/src/test/java/com/baeldung/threadpool/GuavaThreadPoolIntegrationTest.java @@ -16,7 +16,7 @@ import org.junit.Test; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; -public class GuavaThreadPoolTest { +public class GuavaThreadPoolIntegrationTest { @Test public void whenExecutingTaskWithDirectExecutor_thenTheTaskIsExecutedInTheCurrentThread() { diff --git a/core-java/src/test/java/com/baeldung/util/CurrentDateTimeTest.java b/core-java/src/test/java/com/baeldung/util/CurrentDateTimeUnitTest.java similarity index 85% rename from core-java/src/test/java/com/baeldung/util/CurrentDateTimeTest.java rename to core-java/src/test/java/com/baeldung/util/CurrentDateTimeUnitTest.java index 3384680d8e..3ad3deb548 100644 --- a/core-java/src/test/java/com/baeldung/util/CurrentDateTimeTest.java +++ b/core-java/src/test/java/com/baeldung/util/CurrentDateTimeUnitTest.java @@ -1,19 +1,22 @@ package com.baeldung.util; -import org.junit.Test; - -import java.time.*; -import java.time.temporal.ChronoField; - import static org.junit.Assert.assertEquals; -public class CurrentDateTimeTest { +import java.time.Clock; +import java.time.Instant; +import java.time.LocalDate; +import java.time.LocalTime; +import java.time.ZoneId; +import java.time.temporal.ChronoField; + +import org.junit.Test; + +public class CurrentDateTimeUnitTest { private static final Clock clock = Clock.fixed(Instant.parse("2016-10-09T15:10:30.00Z"), ZoneId.of("UTC")); @Test public void shouldReturnCurrentDate() { - final LocalDate now = LocalDate.now(clock); assertEquals(9, now.get(ChronoField.DAY_OF_MONTH)); @@ -23,7 +26,6 @@ public class CurrentDateTimeTest { @Test public void shouldReturnCurrentTime() { - final LocalTime now = LocalTime.now(clock); assertEquals(15, now.get(ChronoField.HOUR_OF_DAY)); @@ -33,9 +35,9 @@ public class CurrentDateTimeTest { @Test public void shouldReturnCurrentTimestamp() { - final Instant now = Instant.now(clock); assertEquals(clock.instant().getEpochSecond(), now.getEpochSecond()); } + } diff --git a/core-java/src/test/java/org/baeldung/core/exceptions/FileNotFoundExceptionTest.java b/core-java/src/test/java/org/baeldung/core/exceptions/FileNotFoundExceptionUnitTest.java similarity index 87% rename from core-java/src/test/java/org/baeldung/core/exceptions/FileNotFoundExceptionTest.java rename to core-java/src/test/java/org/baeldung/core/exceptions/FileNotFoundExceptionUnitTest.java index d701babc20..e615e6a7d1 100644 --- a/core-java/src/test/java/org/baeldung/core/exceptions/FileNotFoundExceptionTest.java +++ b/core-java/src/test/java/org/baeldung/core/exceptions/FileNotFoundExceptionUnitTest.java @@ -1,13 +1,17 @@ package org.baeldung.core.exceptions; +import java.io.BufferedReader; +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileReader; +import java.io.IOException; + import org.apache.log4j.Logger; import org.junit.Test; -import java.io.*; +public class FileNotFoundExceptionUnitTest { -public class FileNotFoundExceptionTest { - - private static final Logger LOG = Logger.getLogger(FileNotFoundExceptionTest.class); + private static final Logger LOG = Logger.getLogger(FileNotFoundExceptionUnitTest.class); private String fileName = Double.toString(Math.random()); diff --git a/core-java/src/test/java/org/baeldung/equalshashcode/entities/ComplexClassTest.java b/core-java/src/test/java/org/baeldung/equalshashcode/entities/ComplexClassUnitTest.java similarity index 83% rename from core-java/src/test/java/org/baeldung/equalshashcode/entities/ComplexClassTest.java rename to core-java/src/test/java/org/baeldung/equalshashcode/entities/ComplexClassUnitTest.java index 75d96e5989..e4866d0078 100644 --- a/core-java/src/test/java/org/baeldung/equalshashcode/entities/ComplexClassTest.java +++ b/core-java/src/test/java/org/baeldung/equalshashcode/entities/ComplexClassUnitTest.java @@ -2,22 +2,22 @@ package org.baeldung.equalshashcode.entities; import java.util.ArrayList; import java.util.HashSet; +import java.util.List; import org.junit.Assert; import org.junit.Test; -public class ComplexClassTest { +public class ComplexClassUnitTest { @Test public void testEqualsAndHashcodes() { - - ArrayList strArrayList = new ArrayList(); + List strArrayList = new ArrayList(); strArrayList.add("abc"); strArrayList.add("def"); ComplexClass aObject = new ComplexClass(strArrayList, new HashSet(45, 67)); ComplexClass bObject = new ComplexClass(strArrayList, new HashSet(45, 67)); - ArrayList strArrayListD = new ArrayList(); + List strArrayListD = new ArrayList(); strArrayListD.add("lmn"); strArrayListD.add("pqr"); ComplexClass dObject = new ComplexClass(strArrayListD, new HashSet(45, 67)); diff --git a/core-java/src/test/java/org/baeldung/java/collections/ArrayListTest.java b/core-java/src/test/java/org/baeldung/java/collections/ArrayListUnitTest.java similarity index 99% rename from core-java/src/test/java/org/baeldung/java/collections/ArrayListTest.java rename to core-java/src/test/java/org/baeldung/java/collections/ArrayListUnitTest.java index 6f291c535f..5d07628a96 100644 --- a/core-java/src/test/java/org/baeldung/java/collections/ArrayListTest.java +++ b/core-java/src/test/java/org/baeldung/java/collections/ArrayListUnitTest.java @@ -12,7 +12,7 @@ import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.core.IsNot.not; import static org.junit.Assert.*; -public class ArrayListTest { +public class ArrayListUnitTest { private List stringsToSearch; From f4d6384654700f9cb10cbad76de0fb73b3f86393 Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Fri, 28 Oct 2016 18:17:59 +0200 Subject: [PATCH 137/215] Update config server address --- .../server/src/main/resources/application.properties | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spring-cloud/spring-cloud-config/server/src/main/resources/application.properties b/spring-cloud/spring-cloud-config/server/src/main/resources/application.properties index 2131f3b249..9476887a1c 100644 --- a/spring-cloud/spring-cloud-config/server/src/main/resources/application.properties +++ b/spring-cloud/spring-cloud-config/server/src/main/resources/application.properties @@ -1,6 +1,6 @@ server.port=8888 -spring.cloud.config.server.git.uri=https://github.com/eugenp/tutorials/tree/master/spring-cloud-config/client-config -spring.cloud.config.server.git.clone-on-start=false +spring.cloud.config.server.git.uri=https://github.com/spring-cloud-samples/config-repo +spring.cloud.config.server.git.clone-on-start=true security.user.name=root security.user.password=s3cr3t encrypt.key-store.location=classpath:/config-server.jks From fe0d1c0b4a3ebd1ab36aaed305bcd2138960ad1c Mon Sep 17 00:00:00 2001 From: Marek Lewandowski Date: Fri, 28 Oct 2016 18:26:53 +0200 Subject: [PATCH 138/215] Remove Thread.sleep from how to make a screenshot example --- core-java/src/main/java/com/baeldung/printscreen/Screenshot.java | 1 - 1 file changed, 1 deletion(-) diff --git a/core-java/src/main/java/com/baeldung/printscreen/Screenshot.java b/core-java/src/main/java/com/baeldung/printscreen/Screenshot.java index 27fd84e374..7f87b47476 100644 --- a/core-java/src/main/java/com/baeldung/printscreen/Screenshot.java +++ b/core-java/src/main/java/com/baeldung/printscreen/Screenshot.java @@ -14,7 +14,6 @@ public class Screenshot { } public void getScreenshot(int timeToWait) throws Exception { - Thread.sleep(timeToWait); Rectangle rectangle = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize()); Robot robot = new Robot(); BufferedImage img = robot.createScreenCapture(rectangle); From 622da702d00281bd6cb34a59f5f9e0a299659c79 Mon Sep 17 00:00:00 2001 From: DOHA Date: Fri, 28 Oct 2016 19:55:37 +0200 Subject: [PATCH 139/215] minor fix --- core-java/.gitignore | 2 +- core-java/src/main/resources/fileTest.txt | 1 + .../baeldung/java/networking/url/UrlTest.java | 52 +++++++++---------- 3 files changed, 28 insertions(+), 27 deletions(-) create mode 100644 core-java/src/main/resources/fileTest.txt diff --git a/core-java/.gitignore b/core-java/.gitignore index 6ecc6405c2..5adb0b8310 100644 --- a/core-java/.gitignore +++ b/core-java/.gitignore @@ -13,4 +13,4 @@ *.ear # Files generated by integration tests -*.txt \ No newline at end of file +#*.txt \ No newline at end of file diff --git a/core-java/src/main/resources/fileTest.txt b/core-java/src/main/resources/fileTest.txt new file mode 100644 index 0000000000..ce4bea208b --- /dev/null +++ b/core-java/src/main/resources/fileTest.txt @@ -0,0 +1 @@ +Hello World from fileTest.txt!!! \ No newline at end of file diff --git a/core-java/src/test/java/com/baeldung/java/networking/url/UrlTest.java b/core-java/src/test/java/com/baeldung/java/networking/url/UrlTest.java index 14444f0145..053440d655 100644 --- a/core-java/src/test/java/com/baeldung/java/networking/url/UrlTest.java +++ b/core-java/src/test/java/com/baeldung/java/networking/url/UrlTest.java @@ -11,93 +11,93 @@ public class UrlTest { @Test public void givenUrl_whenCanIdentifyProtocol_thenCorrect() throws MalformedURLException { - URL url = new URL("http://baeldung.com"); + final URL url = new URL("http://baeldung.com"); assertEquals("http", url.getProtocol()); } @Test public void givenUrl_whenCanGetHost_thenCorrect() throws MalformedURLException { - URL url = new URL("http://baeldung.com"); + final URL url = new URL("http://baeldung.com"); assertEquals("baeldung.com", url.getHost()); } @Test public void givenUrl_whenCanGetFileName_thenCorrect2() throws MalformedURLException { - URL url = new URL("http://baeldung.com/articles?topic=java&version=8"); + final URL url = new URL("http://baeldung.com/articles?topic=java&version=8"); assertEquals("/articles?topic=java&version=8", url.getFile()); } @Test public void givenUrl_whenCanGetFileName_thenCorrect1() throws MalformedURLException { - URL url = new URL("http://baeldung.com/guidelines.txt"); + final URL url = new URL("http://baeldung.com/guidelines.txt"); assertEquals("/guidelines.txt", url.getFile()); } @Test public void givenUrl_whenCanGetPathParams_thenCorrect() throws MalformedURLException { - URL url = new URL("http://baeldung.com/articles?topic=java&version=8"); + final URL url = new URL("http://baeldung.com/articles?topic=java&version=8"); assertEquals("/articles", url.getPath()); } @Test public void givenUrl_whenCanGetQueryParams_thenCorrect() throws MalformedURLException { - URL url = new URL("http://baeldung.com/articles?topic=java"); + final URL url = new URL("http://baeldung.com/articles?topic=java"); assertEquals("topic=java", url.getQuery()); } @Test public void givenUrl_whenGetsDefaultPort_thenCorrect() throws MalformedURLException { - URL url = new URL("http://baeldung.com"); + final URL url = new URL("http://baeldung.com"); assertEquals(-1, url.getPort()); assertEquals(80, url.getDefaultPort()); } @Test public void givenUrl_whenGetsPort_thenCorrect() throws MalformedURLException { - URL url = new URL("http://baeldung.com:8090"); + final URL url = new URL("http://baeldung.com:8090"); assertEquals(8090, url.getPort()); assertEquals(80, url.getDefaultPort()); } @Test public void givenBaseUrl_whenCreatesRelativeUrl_thenCorrect() throws MalformedURLException { - URL baseUrl = new URL("http://baeldung.com"); - URL relativeUrl = new URL(baseUrl, "a-guide-to-java-sockets"); + final URL baseUrl = new URL("http://baeldung.com"); + final URL relativeUrl = new URL(baseUrl, "a-guide-to-java-sockets"); assertEquals("http://baeldung.com/a-guide-to-java-sockets", relativeUrl.toString()); } @Test public void givenAbsoluteUrl_whenIgnoresBaseUrl_thenCorrect() throws MalformedURLException { - URL baseUrl = new URL("http://baeldung.com"); - URL relativeUrl = new URL(baseUrl, "http://baeldung.com/a-guide-to-java-sockets"); + final URL baseUrl = new URL("http://baeldung.com"); + final URL relativeUrl = new URL(baseUrl, "http://baeldung.com/a-guide-to-java-sockets"); assertEquals("http://baeldung.com/a-guide-to-java-sockets", relativeUrl.toString()); } @Test public void givenUrlComponents_whenConstructsCompleteUrl_thenCorrect() throws MalformedURLException { - String protocol = "http"; - String host = "baeldung.com"; - String file = "/guidelines.txt"; - URL url = new URL(protocol, host, file); + final String protocol = "http"; + final String host = "baeldung.com"; + final String file = "/guidelines.txt"; + final URL url = new URL(protocol, host, file); assertEquals("http://baeldung.com/guidelines.txt", url.toString()); } @Test public void givenUrlComponents_whenConstructsCompleteUrl_thenCorrect2() throws MalformedURLException { - String protocol = "http"; - String host = "baeldung.com"; - String file = "/articles?topic=java&version=8"; - URL url = new URL(protocol, host, file); - assertEquals("http://baeldung.com/guidelines.txt", url.toString()); + final String protocol = "http"; + final String host = "baeldung.com"; + final String file = "/articles?topic=java&version=8"; + final URL url = new URL(protocol, host, file); + assertEquals("http://baeldung.com/articles?topic=java&version=8", url.toString()); } @Test public void givenUrlComponentsWithPort_whenConstructsCompleteUrl_thenCorrect() throws MalformedURLException { - String protocol = "http"; - String host = "baeldung.com"; - int port = 9000; - String file = "/guidelines.txt"; - URL url = new URL(protocol, host, port, file); + final String protocol = "http"; + final String host = "baeldung.com"; + final int port = 9000; + final String file = "/guidelines.txt"; + final URL url = new URL(protocol, host, port, file); assertEquals("http://baeldung.com:9000/guidelines.txt", url.toString()); } From 7fb6cc7900ff5c5392199e69be25eed42f04fe7e Mon Sep 17 00:00:00 2001 From: DOHA Date: Fri, 28 Oct 2016 20:16:35 +0200 Subject: [PATCH 140/215] minor fix --- core-java/.gitignore | 2 +- .../java/reflection/ReflectionUnitTest.java | 165 +++++++++--------- .../org/baeldung/java/JavaIoUnitTest.java | 2 + 3 files changed, 88 insertions(+), 81 deletions(-) diff --git a/core-java/.gitignore b/core-java/.gitignore index 5adb0b8310..6ecc6405c2 100644 --- a/core-java/.gitignore +++ b/core-java/.gitignore @@ -13,4 +13,4 @@ *.ear # Files generated by integration tests -#*.txt \ No newline at end of file +*.txt \ No newline at end of file diff --git a/core-java/src/test/java/com/baeldung/java/reflection/ReflectionUnitTest.java b/core-java/src/test/java/com/baeldung/java/reflection/ReflectionUnitTest.java index e008616c72..0c090901e7 100644 --- a/core-java/src/test/java/com/baeldung/java/reflection/ReflectionUnitTest.java +++ b/core-java/src/test/java/com/baeldung/java/reflection/ReflectionUnitTest.java @@ -1,32 +1,35 @@ package com.baeldung.java.reflection; -import org.junit.Test; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.lang.reflect.Method; import java.lang.reflect.Modifier; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; -import java.util.ArrayList; -import static org.junit.Assert.*; + +import org.junit.Test; public class ReflectionUnitTest { @Test public void givenObject_whenGetsFieldNamesAtRuntime_thenCorrect() { - Object person = new Person(); - Field[] fields = person.getClass().getDeclaredFields(); + final Object person = new Person(); + final Field[] fields = person.getClass().getDeclaredFields(); - List actualFieldNames = getFieldNames(fields); + final List actualFieldNames = getFieldNames(fields); assertTrue(Arrays.asList("name", "age").containsAll(actualFieldNames)); } @Test public void givenObject_whenGetsClassName_thenCorrect() { - Object goat = new Goat("goat"); - Class clazz = goat.getClass(); + final Object goat = new Goat("goat"); + final Class clazz = goat.getClass(); assertEquals("Goat", clazz.getSimpleName()); assertEquals("com.baeldung.java.reflection.Goat", clazz.getName()); @@ -35,7 +38,7 @@ public class ReflectionUnitTest { @Test public void givenClassName_whenCreatesObject_thenCorrect() throws ClassNotFoundException { - Class clazz = Class.forName("com.baeldung.java.reflection.Goat"); + final Class clazz = Class.forName("com.baeldung.java.reflection.Goat"); assertEquals("Goat", clazz.getSimpleName()); assertEquals("com.baeldung.java.reflection.Goat", clazz.getName()); @@ -44,10 +47,10 @@ public class ReflectionUnitTest { @Test public void givenClass_whenRecognisesModifiers_thenCorrect() throws ClassNotFoundException { - Class goatClass = Class.forName("com.baeldung.java.reflection.Goat"); - Class animalClass = Class.forName("com.baeldung.java.reflection.Animal"); - int goatMods = goatClass.getModifiers(); - int animalMods = animalClass.getModifiers(); + final Class goatClass = Class.forName("com.baeldung.java.reflection.Goat"); + final Class animalClass = Class.forName("com.baeldung.java.reflection.Animal"); + final int goatMods = goatClass.getModifiers(); + final int animalMods = animalClass.getModifiers(); assertTrue(Modifier.isPublic(goatMods)); assertTrue(Modifier.isAbstract(animalMods)); @@ -56,20 +59,20 @@ public class ReflectionUnitTest { @Test public void givenClass_whenGetsPackageInfo_thenCorrect() { - Goat goat = new Goat("goat"); - Class goatClass = goat.getClass(); - Package pkg = goatClass.getPackage(); + final Goat goat = new Goat("goat"); + final Class goatClass = goat.getClass(); + final Package pkg = goatClass.getPackage(); assertEquals("com.baeldung.java.reflection", pkg.getName()); } @Test public void givenClass_whenGetsSuperClass_thenCorrect() { - Goat goat = new Goat("goat"); - String str = "any string"; + final Goat goat = new Goat("goat"); + final String str = "any string"; - Class goatClass = goat.getClass(); - Class goatSuperClass = goatClass.getSuperclass(); + final Class goatClass = goat.getClass(); + final Class goatSuperClass = goatClass.getSuperclass(); assertEquals("Animal", goatSuperClass.getSimpleName()); assertEquals("Object", str.getClass().getSuperclass().getSimpleName()); @@ -78,10 +81,10 @@ public class ReflectionUnitTest { @Test public void givenClass_whenGetsImplementedInterfaces_thenCorrect() throws ClassNotFoundException { - Class goatClass = Class.forName("com.baeldung.java.reflection.Goat"); - Class animalClass = Class.forName("com.baeldung.java.reflection.Animal"); - Class[] goatInterfaces = goatClass.getInterfaces(); - Class[] animalInterfaces = animalClass.getInterfaces(); + final Class goatClass = Class.forName("com.baeldung.java.reflection.Goat"); + final Class animalClass = Class.forName("com.baeldung.java.reflection.Animal"); + final Class[] goatInterfaces = goatClass.getInterfaces(); + final Class[] animalInterfaces = animalClass.getInterfaces(); assertEquals(1, goatInterfaces.length); assertEquals(1, animalInterfaces.length); @@ -91,8 +94,8 @@ public class ReflectionUnitTest { @Test public void givenClass_whenGetsConstructor_thenCorrect() throws ClassNotFoundException { - Class goatClass = Class.forName("com.baeldung.java.reflection.Goat"); - Constructor[] constructors = goatClass.getConstructors(); + final Class goatClass = Class.forName("com.baeldung.java.reflection.Goat"); + final Constructor[] constructors = goatClass.getConstructors(); assertEquals(1, constructors.length); assertEquals("com.baeldung.java.reflection.Goat", constructors[0].getName()); @@ -100,10 +103,10 @@ public class ReflectionUnitTest { @Test public void givenClass_whenGetsFields_thenCorrect() throws ClassNotFoundException { - Class animalClass = Class.forName("com.baeldung.java.reflection.Animal"); - Field[] fields = animalClass.getDeclaredFields(); + final Class animalClass = Class.forName("com.baeldung.java.reflection.Animal"); + final Field[] fields = animalClass.getDeclaredFields(); - List actualFields = getFieldNames(fields); + final List actualFields = getFieldNames(fields); assertEquals(2, actualFields.size()); assertTrue(actualFields.containsAll(Arrays.asList("name", "CATEGORY"))); @@ -111,41 +114,41 @@ public class ReflectionUnitTest { @Test public void givenClass_whenGetsMethods_thenCorrect() throws ClassNotFoundException { - Class animalClass = Class.forName("com.baeldung.java.reflection.Animal"); - Method[] methods = animalClass.getDeclaredMethods(); - List actualMethods = getMethodNames(methods); + final Class animalClass = Class.forName("com.baeldung.java.reflection.Animal"); + final Method[] methods = animalClass.getDeclaredMethods(); + final List actualMethods = getMethodNames(methods); - assertEquals(4, actualMethods.size()); + assertEquals(3, actualMethods.size()); assertTrue(actualMethods.containsAll(Arrays.asList("getName", "setName", "getSound"))); } @Test public void givenClass_whenGetsAllConstructors_thenCorrect() throws ClassNotFoundException { - Class birdClass = Class.forName("com.baeldung.java.reflection.Bird"); - Constructor[] constructors = birdClass.getConstructors(); + final Class birdClass = Class.forName("com.baeldung.java.reflection.Bird"); + final Constructor[] constructors = birdClass.getConstructors(); assertEquals(3, constructors.length); } @Test public void givenClass_whenGetsEachConstructorByParamTypes_thenCorrect() throws Exception { - Class birdClass = Class.forName("com.baeldung.java.reflection.Bird"); - Constructor cons1 = birdClass.getConstructor(); - Constructor cons2 = birdClass.getConstructor(String.class); - Constructor cons3 = birdClass.getConstructor(String.class, boolean.class); + final Class birdClass = Class.forName("com.baeldung.java.reflection.Bird"); + birdClass.getConstructor(); + birdClass.getConstructor(String.class); + birdClass.getConstructor(String.class, boolean.class); } @Test public void givenClass_whenInstantiatesObjectsAtRuntime_thenCorrect() throws Exception { - Class birdClass = Class.forName("com.baeldung.java.reflection.Bird"); + final Class birdClass = Class.forName("com.baeldung.java.reflection.Bird"); - Constructor cons1 = birdClass.getConstructor(); - Constructor cons2 = birdClass.getConstructor(String.class); - Constructor cons3 = birdClass.getConstructor(String.class, boolean.class); + final Constructor cons1 = birdClass.getConstructor(); + final Constructor cons2 = birdClass.getConstructor(String.class); + final Constructor cons3 = birdClass.getConstructor(String.class, boolean.class); - Bird bird1 = (Bird) cons1.newInstance(); - Bird bird2 = (Bird) cons2.newInstance("Weaver bird"); - Bird bird3 = (Bird) cons3.newInstance("dove", true); + final Bird bird1 = (Bird) cons1.newInstance(); + final Bird bird2 = (Bird) cons2.newInstance("Weaver bird"); + final Bird bird3 = (Bird) cons3.newInstance("dove", true); assertEquals("bird", bird1.getName()); assertEquals("Weaver bird", bird2.getName()); @@ -156,8 +159,8 @@ public class ReflectionUnitTest { @Test public void givenClass_whenGetsPublicFields_thenCorrect() throws ClassNotFoundException { - Class birdClass = Class.forName("com.baeldung.java.reflection.Bird"); - Field[] fields = birdClass.getFields(); + final Class birdClass = Class.forName("com.baeldung.java.reflection.Bird"); + final Field[] fields = birdClass.getFields(); assertEquals(1, fields.length); assertEquals("CATEGORY", fields[0].getName()); @@ -165,40 +168,40 @@ public class ReflectionUnitTest { @Test public void givenClass_whenGetsPublicFieldByName_thenCorrect() throws Exception { - Class birdClass = Class.forName("com.baeldung.java.reflection.Bird"); - Field field = birdClass.getField("CATEGORY"); + final Class birdClass = Class.forName("com.baeldung.java.reflection.Bird"); + final Field field = birdClass.getField("CATEGORY"); assertEquals("CATEGORY", field.getName()); } @Test public void givenClass_whenGetsDeclaredFields_thenCorrect() throws ClassNotFoundException { - Class birdClass = Class.forName("com.baeldung.java.reflection.Bird"); - Field[] fields = birdClass.getDeclaredFields(); + final Class birdClass = Class.forName("com.baeldung.java.reflection.Bird"); + final Field[] fields = birdClass.getDeclaredFields(); assertEquals(1, fields.length); assertEquals("walks", fields[0].getName()); } @Test public void givenClass_whenGetsFieldsByName_thenCorrect() throws Exception { - Class birdClass = Class.forName("com.baeldung.java.reflection.Bird"); - Field field = birdClass.getDeclaredField("walks"); + final Class birdClass = Class.forName("com.baeldung.java.reflection.Bird"); + final Field field = birdClass.getDeclaredField("walks"); assertEquals("walks", field.getName()); } @Test public void givenClassField_whenGetsType_thenCorrect() throws Exception { - Field field = Class.forName("com.baeldung.java.reflection.Bird").getDeclaredField("walks"); - Class fieldClass = field.getType(); + final Field field = Class.forName("com.baeldung.java.reflection.Bird").getDeclaredField("walks"); + final Class fieldClass = field.getType(); assertEquals("boolean", fieldClass.getSimpleName()); } @Test public void givenClassField_whenSetsAndGetsValue_thenCorrect() throws Exception { - Class birdClass = Class.forName("com.baeldung.java.reflection.Bird"); - Bird bird = (Bird) birdClass.newInstance(); - Field field = birdClass.getDeclaredField("walks"); + final Class birdClass = Class.forName("com.baeldung.java.reflection.Bird"); + final Bird bird = (Bird) birdClass.newInstance(); + final Field field = birdClass.getDeclaredField("walks"); field.setAccessible(true); assertFalse(field.getBoolean(bird)); @@ -213,8 +216,8 @@ public class ReflectionUnitTest { @Test public void givenClassField_whenGetsAndSetsWithNull_thenCorrect() throws Exception { - Class birdClass = Class.forName("com.baeldung.java.reflection.Bird"); - Field field = birdClass.getField("CATEGORY"); + final Class birdClass = Class.forName("com.baeldung.java.reflection.Bird"); + final Field field = birdClass.getField("CATEGORY"); field.setAccessible(true); assertEquals("domestic", field.get(null)); @@ -222,9 +225,9 @@ public class ReflectionUnitTest { @Test public void givenClass_whenGetsAllPublicMethods_thenCorrect() throws ClassNotFoundException { - Class birdClass = Class.forName("com.baeldung.java.reflection.Bird"); - Method[] methods = birdClass.getMethods(); - List methodNames = getMethodNames(methods); + final Class birdClass = Class.forName("com.baeldung.java.reflection.Bird"); + final Method[] methods = birdClass.getMethods(); + final List methodNames = getMethodNames(methods); assertTrue(methodNames.containsAll(Arrays.asList("equals", "notifyAll", "hashCode", "walks", "eats", "toString"))); @@ -232,10 +235,10 @@ public class ReflectionUnitTest { @Test public void givenClass_whenGetsOnlyDeclaredMethods_thenCorrect() throws ClassNotFoundException { - Class birdClass = Class.forName("com.baeldung.java.reflection.Bird"); - List actualMethodNames = getMethodNames(birdClass.getDeclaredMethods()); + final Class birdClass = Class.forName("com.baeldung.java.reflection.Bird"); + final List actualMethodNames = getMethodNames(birdClass.getDeclaredMethods()); - List expectedMethodNames = Arrays.asList("setWalks", "walks", "getSound", "eats"); + final List expectedMethodNames = Arrays.asList("setWalks", "walks", "getSound", "eats"); assertEquals(expectedMethodNames.size(), actualMethodNames.size()); assertTrue(expectedMethodNames.containsAll(actualMethodNames)); @@ -245,9 +248,9 @@ public class ReflectionUnitTest { @Test public void givenMethodName_whenGetsMethod_thenCorrect() throws Exception { - Class birdClass = Class.forName("com.baeldung.java.reflection.Bird"); - Method walksMethod = birdClass.getDeclaredMethod("walks"); - Method setWalksMethod = birdClass.getDeclaredMethod("setWalks", boolean.class); + final Class birdClass = Class.forName("com.baeldung.java.reflection.Bird"); + final Method walksMethod = birdClass.getDeclaredMethod("walks"); + final Method setWalksMethod = birdClass.getDeclaredMethod("setWalks", boolean.class); assertFalse(walksMethod.isAccessible()); assertFalse(setWalksMethod.isAccessible()); @@ -262,17 +265,17 @@ public class ReflectionUnitTest { @Test public void givenMethod_whenInvokes_thenCorrect() throws Exception { - Class birdClass = Class.forName("com.baeldung.java.reflection.Bird"); - Bird bird = (Bird) birdClass.newInstance(); - Method setWalksMethod = birdClass.getDeclaredMethod("setWalks", boolean.class); - Method walksMethod = birdClass.getDeclaredMethod("walks"); - boolean walks = (boolean) walksMethod.invoke(bird); + final Class birdClass = Class.forName("com.baeldung.java.reflection.Bird"); + final Bird bird = (Bird) birdClass.newInstance(); + final Method setWalksMethod = birdClass.getDeclaredMethod("setWalks", boolean.class); + final Method walksMethod = birdClass.getDeclaredMethod("walks"); + final boolean walks = (boolean) walksMethod.invoke(bird); assertFalse(walks); assertFalse(bird.walks()); setWalksMethod.invoke(bird, true); - boolean walks2 = (boolean) walksMethod.invoke(bird); + final boolean walks2 = (boolean) walksMethod.invoke(bird); assertTrue(walks2); assertTrue(bird.walks()); @@ -280,17 +283,19 @@ public class ReflectionUnitTest { } private static List getFieldNames(Field[] fields) { - List fieldNames = new ArrayList<>(); - for (Field field : fields) + final List fieldNames = new ArrayList<>(); + for (final Field field : fields) { fieldNames.add(field.getName()); + } return fieldNames; } private static List getMethodNames(Method[] methods) { - List methodNames = new ArrayList<>(); - for (Method method : methods) + final List methodNames = new ArrayList<>(); + for (final Method method : methods) { methodNames.add(method.getName()); + } return methodNames; } diff --git a/core-java/src/test/java/org/baeldung/java/JavaIoUnitTest.java b/core-java/src/test/java/org/baeldung/java/JavaIoUnitTest.java index 501f2ffca0..3ab8e1de91 100644 --- a/core-java/src/test/java/org/baeldung/java/JavaIoUnitTest.java +++ b/core-java/src/test/java/org/baeldung/java/JavaIoUnitTest.java @@ -7,6 +7,7 @@ import java.util.Scanner; import org.apache.commons.io.FileUtils; import org.apache.commons.io.LineIterator; +import org.junit.Ignore; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -14,6 +15,7 @@ import org.slf4j.LoggerFactory; import com.google.common.base.Charsets; import com.google.common.io.Files; +@Ignore("need large file for testing") public class JavaIoUnitTest { protected final Logger logger = LoggerFactory.getLogger(getClass()); From 58f4e96a00dc9808510ea029222795594d889347 Mon Sep 17 00:00:00 2001 From: Ambrus Adrian-Zoltan Date: Fri, 28 Oct 2016 22:51:44 +0300 Subject: [PATCH 141/215] Readme file updated with link to article --- spring-security-custom-permission/README.MD | 1 + 1 file changed, 1 insertion(+) diff --git a/spring-security-custom-permission/README.MD b/spring-security-custom-permission/README.MD index 760cf41c63..0812a73090 100644 --- a/spring-security-custom-permission/README.MD +++ b/spring-security-custom-permission/README.MD @@ -3,3 +3,4 @@ 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) \ No newline at end of file From 539e5fed634c1c522115367432966639af928e05 Mon Sep 17 00:00:00 2001 From: slavisa-baeldung Date: Sat, 29 Oct 2016 07:55:36 +0200 Subject: [PATCH 142/215] BAEL-276 - renaming the variable --- ...ncoderDecoder.java => EncoderDecoderTest.java} | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) rename core-java/src/test/java/com/baeldung/encoderdecoder/{EncoderDecoder.java => EncoderDecoderTest.java} (87%) diff --git a/core-java/src/test/java/com/baeldung/encoderdecoder/EncoderDecoder.java b/core-java/src/test/java/com/baeldung/encoderdecoder/EncoderDecoderTest.java similarity index 87% rename from core-java/src/test/java/com/baeldung/encoderdecoder/EncoderDecoder.java rename to core-java/src/test/java/com/baeldung/encoderdecoder/EncoderDecoderTest.java index 208a23eb91..15d543aee8 100644 --- a/core-java/src/test/java/com/baeldung/encoderdecoder/EncoderDecoder.java +++ b/core-java/src/test/java/com/baeldung/encoderdecoder/EncoderDecoderTest.java @@ -7,7 +7,6 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.UnsupportedEncodingException; -import java.net.MalformedURLException; import java.net.URL; import java.net.URLDecoder; import java.net.URLEncoder; @@ -15,13 +14,12 @@ import java.nio.charset.StandardCharsets; import java.util.Arrays; import java.util.HashMap; import java.util.Map; -import java.util.function.Function; import java.util.stream.Collectors; -public class EncoderDecoder { +public class EncoderDecoderTest { - private static final String URL = "http://www.baeldung.com?key1=value+1&key2=value%40%21%242&key3=value%253"; - private static final Logger LOGGER = LoggerFactory.getLogger(EncoderDecoder.class); + private static final Logger LOGGER = LoggerFactory.getLogger(EncoderDecoderTest.class); + private static final String testUrl = "http://www.baeldung.com?key1=value+1&key2=value%40%21%242&key3=value%253"; private String encodeValue(String value) { String encoded = null; @@ -46,7 +44,7 @@ public class EncoderDecoder { @Test public void givenURL_whenAnalyze_thenCorrect() throws Exception { - URL url = new URL(URL); + URL url = new URL(testUrl); Assert.assertThat(url.getProtocol(), CoreMatchers.is("http")); Assert.assertThat(url.getHost(), CoreMatchers.is("www.baeldung.com")); @@ -63,14 +61,15 @@ public class EncoderDecoder { String encodedQuery = requestParams.keySet().stream() .map(key -> key + "=" + encodeValue(requestParams.get(key))) .collect(Collectors.joining("&")); + String encodedURL = "http://www.baeldung.com?" + encodedQuery; - Assert.assertThat(URL, CoreMatchers.is(encodedURL)); + Assert.assertThat(testUrl, CoreMatchers.is(encodedURL)); } @Test public void givenRequestParam_whenUTF8Scheme_thenDecodeRequestParams() throws Exception { - URL url = new URL(URL); + URL url = new URL(testUrl); String query = url.getQuery(); String decodedQuery = Arrays.stream(query.split("&")) From d5983b0d8c8c978e0509a0ed6f8aa3660c80c863 Mon Sep 17 00:00:00 2001 From: eugenp Date: Sat, 29 Oct 2016 09:26:08 +0300 Subject: [PATCH 143/215] generalization of the user specific spec --- ...lSpecification.java => GenericRsqlSpecification.java} | 9 ++++----- .../persistence/dao/rsql/UserRsqlSpecBuilder.java | 2 +- 2 files changed, 5 insertions(+), 6 deletions(-) rename spring-security-rest-full/src/main/java/org/baeldung/persistence/dao/rsql/{UserRsqlSpecification.java => GenericRsqlSpecification.java} (87%) diff --git a/spring-security-rest-full/src/main/java/org/baeldung/persistence/dao/rsql/UserRsqlSpecification.java b/spring-security-rest-full/src/main/java/org/baeldung/persistence/dao/rsql/GenericRsqlSpecification.java similarity index 87% rename from spring-security-rest-full/src/main/java/org/baeldung/persistence/dao/rsql/UserRsqlSpecification.java rename to spring-security-rest-full/src/main/java/org/baeldung/persistence/dao/rsql/GenericRsqlSpecification.java index b7aaa14ba6..6609a87953 100644 --- a/spring-security-rest-full/src/main/java/org/baeldung/persistence/dao/rsql/UserRsqlSpecification.java +++ b/spring-security-rest-full/src/main/java/org/baeldung/persistence/dao/rsql/GenericRsqlSpecification.java @@ -8,18 +8,17 @@ import javax.persistence.criteria.CriteriaQuery; import javax.persistence.criteria.Predicate; import javax.persistence.criteria.Root; -import org.baeldung.persistence.model.User; import org.springframework.data.jpa.domain.Specification; import cz.jirutka.rsql.parser.ast.ComparisonOperator; -public class UserRsqlSpecification implements Specification { +public class GenericRsqlSpecification implements Specification { private String property; private ComparisonOperator operator; private List arguments; - public UserRsqlSpecification(final String property, final ComparisonOperator operator, final List arguments) { + public GenericRsqlSpecification(final String property, final ComparisonOperator operator, final List arguments) { super(); this.property = property; this.operator = operator; @@ -27,7 +26,7 @@ public class UserRsqlSpecification implements Specification { } @Override - public Predicate toPredicate(final Root root, final CriteriaQuery query, final CriteriaBuilder builder) { + public Predicate toPredicate(final Root root, final CriteriaQuery query, final CriteriaBuilder builder) { final List args = castArguments(root); final Object argument = args.get(0); switch (RsqlSearchOperation.getSimpleOperator(operator)) { @@ -73,7 +72,7 @@ public class UserRsqlSpecification implements Specification { // === private - private List castArguments(final Root root) { + private List castArguments(final Root root) { final List args = new ArrayList(); final Class type = root.get(property).getJavaType(); diff --git a/spring-security-rest-full/src/main/java/org/baeldung/persistence/dao/rsql/UserRsqlSpecBuilder.java b/spring-security-rest-full/src/main/java/org/baeldung/persistence/dao/rsql/UserRsqlSpecBuilder.java index 202370a64b..07bf557a7a 100644 --- a/spring-security-rest-full/src/main/java/org/baeldung/persistence/dao/rsql/UserRsqlSpecBuilder.java +++ b/spring-security-rest-full/src/main/java/org/baeldung/persistence/dao/rsql/UserRsqlSpecBuilder.java @@ -51,7 +51,7 @@ public class UserRsqlSpecBuilder { } public Specifications createSpecification(final ComparisonNode comparisonNode) { - final Specifications result = Specifications.where(new UserRsqlSpecification(comparisonNode.getSelector(), comparisonNode.getOperator(), comparisonNode.getArguments())); + final Specifications result = Specifications.where(new GenericRsqlSpecification(comparisonNode.getSelector(), comparisonNode.getOperator(), comparisonNode.getArguments())); return result; } From 568a1d6f871b14d035808e113b30f81fb8993cd3 Mon Sep 17 00:00:00 2001 From: slavisa-baeldung Date: Sat, 29 Oct 2016 08:28:29 +0200 Subject: [PATCH 144/215] BAEL-276 - collectingAndThen --- .../baeldung/encoderdecoder/EncoderDecoderTest.java | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/core-java/src/test/java/com/baeldung/encoderdecoder/EncoderDecoderTest.java b/core-java/src/test/java/com/baeldung/encoderdecoder/EncoderDecoderTest.java index 15d543aee8..2a04088f68 100644 --- a/core-java/src/test/java/com/baeldung/encoderdecoder/EncoderDecoderTest.java +++ b/core-java/src/test/java/com/baeldung/encoderdecoder/EncoderDecoderTest.java @@ -16,6 +16,9 @@ import java.util.HashMap; import java.util.Map; import java.util.stream.Collectors; +import static java.util.stream.Collectors.collectingAndThen; +import static java.util.stream.Collectors.joining; + public class EncoderDecoderTest { private static final Logger LOGGER = LoggerFactory.getLogger(EncoderDecoderTest.class); @@ -58,11 +61,9 @@ public class EncoderDecoderTest { requestParams.put("key2", "value@!$2"); requestParams.put("key3", "value%3"); - String encodedQuery = requestParams.keySet().stream() + String encodedURL = requestParams.keySet().stream() .map(key -> key + "=" + encodeValue(requestParams.get(key))) - .collect(Collectors.joining("&")); - - String encodedURL = "http://www.baeldung.com?" + encodedQuery; + .collect(collectingAndThen(joining("&"), params -> "http://www.baeldung.com?" + params)); Assert.assertThat(testUrl, CoreMatchers.is(encodedURL)); } @@ -70,11 +71,12 @@ public class EncoderDecoderTest { @Test public void givenRequestParam_whenUTF8Scheme_thenDecodeRequestParams() throws Exception { URL url = new URL(testUrl); + String query = url.getQuery(); String decodedQuery = Arrays.stream(query.split("&")) .map(param -> param.split("=")[0] + "=" + decode(param.split("=")[1])) - .collect(Collectors.joining("&")); + .collect(joining("&")); Assert.assertEquals( "http://www.baeldung.com?key1=value 1&key2=value@!$2&key3=value%3", url.getProtocol() + "://" + url.getHost() + "?" + decodedQuery); From f81291006dce6f4c15d0131979448872c9b7dfcb Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Sat, 29 Oct 2016 08:40:21 +0200 Subject: [PATCH 145/215] Refactor EncoderDecoderTest --- .../baeldung/encoderdecoder/EncoderDecoderTest.java | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/core-java/src/test/java/com/baeldung/encoderdecoder/EncoderDecoderTest.java b/core-java/src/test/java/com/baeldung/encoderdecoder/EncoderDecoderTest.java index 2a04088f68..7f32a561e7 100644 --- a/core-java/src/test/java/com/baeldung/encoderdecoder/EncoderDecoderTest.java +++ b/core-java/src/test/java/com/baeldung/encoderdecoder/EncoderDecoderTest.java @@ -14,9 +14,7 @@ import java.nio.charset.StandardCharsets; import java.util.Arrays; import java.util.HashMap; import java.util.Map; -import java.util.stream.Collectors; -import static java.util.stream.Collectors.collectingAndThen; import static java.util.stream.Collectors.joining; public class EncoderDecoderTest { @@ -62,8 +60,8 @@ public class EncoderDecoderTest { requestParams.put("key3", "value%3"); String encodedURL = requestParams.keySet().stream() - .map(key -> key + "=" + encodeValue(requestParams.get(key))) - .collect(collectingAndThen(joining("&"), params -> "http://www.baeldung.com?" + params)); + .map(key -> key + "=" + encodeValue(requestParams.get(key))) + .collect(joining("&", "http://www.baeldung.com?", "")); Assert.assertThat(testUrl, CoreMatchers.is(encodedURL)); } @@ -75,11 +73,11 @@ public class EncoderDecoderTest { String query = url.getQuery(); String decodedQuery = Arrays.stream(query.split("&")) - .map(param -> param.split("=")[0] + "=" + decode(param.split("=")[1])) - .collect(joining("&")); + .map(param -> param.split("=")[0] + "=" + decode(param.split("=")[1])) + .collect(joining("&")); Assert.assertEquals( - "http://www.baeldung.com?key1=value 1&key2=value@!$2&key3=value%3", url.getProtocol() + "://" + url.getHost() + "?" + decodedQuery); + "http://www.baeldung.com?key1=value 1&key2=value@!$2&key3=value%3", url.getProtocol() + "://" + url.getHost() + "?" + decodedQuery); } } From e3ec1499273f84d793b385b260422ec90097252e Mon Sep 17 00:00:00 2001 From: eugenp Date: Sat, 29 Oct 2016 10:14:27 +0300 Subject: [PATCH 146/215] further generics in the rsql code --- .../persistence/dao/rsql/CustomRsqlVisitor.java | 13 ++++++------- ...Builder.java => GenericRsqlSpecBuilder.java} | 17 ++++++++--------- 2 files changed, 14 insertions(+), 16 deletions(-) rename spring-security-rest-full/src/main/java/org/baeldung/persistence/dao/rsql/{UserRsqlSpecBuilder.java => GenericRsqlSpecBuilder.java} (65%) diff --git a/spring-security-rest-full/src/main/java/org/baeldung/persistence/dao/rsql/CustomRsqlVisitor.java b/spring-security-rest-full/src/main/java/org/baeldung/persistence/dao/rsql/CustomRsqlVisitor.java index 64c84678af..89cec89951 100644 --- a/spring-security-rest-full/src/main/java/org/baeldung/persistence/dao/rsql/CustomRsqlVisitor.java +++ b/spring-security-rest-full/src/main/java/org/baeldung/persistence/dao/rsql/CustomRsqlVisitor.java @@ -1,6 +1,5 @@ package org.baeldung.persistence.dao.rsql; -import org.baeldung.persistence.model.User; import org.springframework.data.jpa.domain.Specification; import cz.jirutka.rsql.parser.ast.AndNode; @@ -8,26 +7,26 @@ import cz.jirutka.rsql.parser.ast.ComparisonNode; import cz.jirutka.rsql.parser.ast.OrNode; import cz.jirutka.rsql.parser.ast.RSQLVisitor; -public class CustomRsqlVisitor implements RSQLVisitor, Void> { +public class CustomRsqlVisitor implements RSQLVisitor, Void> { - private UserRsqlSpecBuilder builder; + private GenericRsqlSpecBuilder builder; public CustomRsqlVisitor() { - builder = new UserRsqlSpecBuilder(); + builder = new GenericRsqlSpecBuilder(); } @Override - public Specification visit(final AndNode node, final Void param) { + public Specification visit(final AndNode node, final Void param) { return builder.createSpecification(node); } @Override - public Specification visit(final OrNode node, final Void param) { + public Specification visit(final OrNode node, final Void param) { return builder.createSpecification(node); } @Override - public Specification visit(final ComparisonNode node, final Void params) { + public Specification visit(final ComparisonNode node, final Void params) { return builder.createSpecification(node); } diff --git a/spring-security-rest-full/src/main/java/org/baeldung/persistence/dao/rsql/UserRsqlSpecBuilder.java b/spring-security-rest-full/src/main/java/org/baeldung/persistence/dao/rsql/GenericRsqlSpecBuilder.java similarity index 65% rename from spring-security-rest-full/src/main/java/org/baeldung/persistence/dao/rsql/UserRsqlSpecBuilder.java rename to spring-security-rest-full/src/main/java/org/baeldung/persistence/dao/rsql/GenericRsqlSpecBuilder.java index 07bf557a7a..01ec389465 100644 --- a/spring-security-rest-full/src/main/java/org/baeldung/persistence/dao/rsql/UserRsqlSpecBuilder.java +++ b/spring-security-rest-full/src/main/java/org/baeldung/persistence/dao/rsql/GenericRsqlSpecBuilder.java @@ -3,7 +3,6 @@ package org.baeldung.persistence.dao.rsql; import java.util.ArrayList; import java.util.List; -import org.baeldung.persistence.model.User; import org.springframework.data.jpa.domain.Specifications; import cz.jirutka.rsql.parser.ast.ComparisonNode; @@ -11,9 +10,9 @@ import cz.jirutka.rsql.parser.ast.LogicalNode; import cz.jirutka.rsql.parser.ast.LogicalOperator; import cz.jirutka.rsql.parser.ast.Node; -public class UserRsqlSpecBuilder { +public class GenericRsqlSpecBuilder { - public Specifications createSpecification(final Node node) { + public Specifications createSpecification(final Node node) { if (node instanceof LogicalNode) { return createSpecification((LogicalNode) node); } @@ -23,9 +22,9 @@ public class UserRsqlSpecBuilder { return null; } - public Specifications createSpecification(final LogicalNode logicalNode) { - final List> specs = new ArrayList>(); - Specifications temp; + public Specifications createSpecification(final LogicalNode logicalNode) { + final List> specs = new ArrayList>(); + Specifications temp; for (final Node node : logicalNode.getChildren()) { temp = createSpecification(node); if (temp != null) { @@ -33,7 +32,7 @@ public class UserRsqlSpecBuilder { } } - Specifications result = specs.get(0); + Specifications result = specs.get(0); if (logicalNode.getOperator() == LogicalOperator.AND) { for (int i = 1; i < specs.size(); i++) { @@ -50,8 +49,8 @@ public class UserRsqlSpecBuilder { return result; } - public Specifications createSpecification(final ComparisonNode comparisonNode) { - final Specifications result = Specifications.where(new GenericRsqlSpecification(comparisonNode.getSelector(), comparisonNode.getOperator(), comparisonNode.getArguments())); + public Specifications createSpecification(final ComparisonNode comparisonNode) { + final Specifications result = Specifications.where(new GenericRsqlSpecification(comparisonNode.getSelector(), comparisonNode.getOperator(), comparisonNode.getArguments())); return result; } From 8690d029f028e455f73daf282fd575825831eb94 Mon Sep 17 00:00:00 2001 From: DOHA Date: Sat, 29 Oct 2016 11:28:21 +0200 Subject: [PATCH 147/215] minor fix --- .../test/java/org/baeldung/java/io/JavaFileUnitTest.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/core-java/src/test/java/org/baeldung/java/io/JavaFileUnitTest.java b/core-java/src/test/java/org/baeldung/java/io/JavaFileUnitTest.java index f39ba80c08..710f8c43fc 100644 --- a/core-java/src/test/java/org/baeldung/java/io/JavaFileUnitTest.java +++ b/core-java/src/test/java/org/baeldung/java/io/JavaFileUnitTest.java @@ -46,7 +46,7 @@ public class JavaFileUnitTest { @Test public final void givenUsingJDK6_whenMovingFile_thenCorrect() throws IOException { final File fileToMove = new File("src/test/resources/toMoveFile_jdk6.txt"); - fileToMove.exists(); + fileToMove.createNewFile();// .exists(); final File destDir = new File("src/test/resources/"); destDir.mkdir(); @@ -68,7 +68,7 @@ public class JavaFileUnitTest { public final void givenUsingGuava_whenMovingFile_thenCorrect() throws IOException { final File fileToMove = new File("src/test/resources/fileToMove.txt"); fileToMove.createNewFile(); - final File destDir = new File("src/test/resources/"); + final File destDir = new File("src/main/resources/"); final File targetFile = new File(destDir, fileToMove.getName()); com.google.common.io.Files.createParentDirs(targetFile); com.google.common.io.Files.move(fileToMove, targetFile); @@ -99,7 +99,7 @@ public class JavaFileUnitTest { @Test public final void givenUsingJDK7nio2_whenDeletingAFile_thenCorrect() throws IOException { - // Files.createFile(Paths.get("src/test/resources/fileToDelete_jdk7.txt")); + Files.createFile(Paths.get("src/test/resources/fileToDelete_jdk7.txt")); final Path fileToDeletePath = Paths.get("src/test/resources/fileToDelete_jdk7.txt"); Files.delete(fileToDeletePath); @@ -117,7 +117,7 @@ public class JavaFileUnitTest { @Test public void givenUsingCommonsIo_whenDeletingAFileV2_thenCorrect() throws IOException { - // FileUtils.touch(new File("src/test/resources/fileToDelete.txt")); + FileUtils.touch(new File("src/test/resources/fileToDelete.txt")); FileUtils.forceDelete(FileUtils.getFile("src/test/resources/fileToDelete.txt")); } From cf044dda80db3e951197dc5e94b65376994d41c7 Mon Sep 17 00:00:00 2001 From: DOHA Date: Sat, 29 Oct 2016 11:37:46 +0200 Subject: [PATCH 148/215] cleanup --- .../{Java8StreamApiTest.java => Java8StreamApiUnitTest.java} | 4 ++-- .../{Java8StreamsTest.java => Java8StreamsUnitTest.java} | 2 +- .../{JavaFolderSizeTest.java => JavaFolderSizeUnitTest.java} | 2 +- ...thResourcesTest.java => JavaTryWithResourcesUnitTest.java} | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) rename core-java/src/test/java/com/baeldung/java8/{Java8StreamApiTest.java => Java8StreamApiUnitTest.java} (99%) rename core-java/src/test/java/com/baeldung/java8/{Java8StreamsTest.java => Java8StreamsUnitTest.java} (98%) rename core-java/src/test/java/com/baeldung/java8/{JavaFolderSizeTest.java => JavaFolderSizeUnitTest.java} (98%) rename core-java/src/test/java/com/baeldung/java8/{JavaTryWithResourcesTest.java => JavaTryWithResourcesUnitTest.java} (98%) diff --git a/core-java/src/test/java/com/baeldung/java8/Java8StreamApiTest.java b/core-java/src/test/java/com/baeldung/java8/Java8StreamApiUnitTest.java similarity index 99% rename from core-java/src/test/java/com/baeldung/java8/Java8StreamApiTest.java rename to core-java/src/test/java/com/baeldung/java8/Java8StreamApiUnitTest.java index 37326c6d26..d9a72063af 100644 --- a/core-java/src/test/java/com/baeldung/java8/Java8StreamApiTest.java +++ b/core-java/src/test/java/com/baeldung/java8/Java8StreamApiUnitTest.java @@ -17,11 +17,11 @@ import java.util.stream.*; import static org.junit.Assert.*; -public class Java8StreamApiTest { +public class Java8StreamApiUnitTest { private long counter; - private static Logger log = LoggerFactory.getLogger(Java8StreamApiTest.class); + private static Logger log = LoggerFactory.getLogger(Java8StreamApiUnitTest.class); private List productList; diff --git a/core-java/src/test/java/com/baeldung/java8/Java8StreamsTest.java b/core-java/src/test/java/com/baeldung/java8/Java8StreamsUnitTest.java similarity index 98% rename from core-java/src/test/java/com/baeldung/java8/Java8StreamsTest.java rename to core-java/src/test/java/com/baeldung/java8/Java8StreamsUnitTest.java index 1f1dda49ce..fc83553c6e 100644 --- a/core-java/src/test/java/com/baeldung/java8/Java8StreamsTest.java +++ b/core-java/src/test/java/com/baeldung/java8/Java8StreamsUnitTest.java @@ -14,7 +14,7 @@ import java.util.stream.Stream; import static org.junit.Assert.*; -public class Java8StreamsTest { +public class Java8StreamsUnitTest { private List list; diff --git a/core-java/src/test/java/com/baeldung/java8/JavaFolderSizeTest.java b/core-java/src/test/java/com/baeldung/java8/JavaFolderSizeUnitTest.java similarity index 98% rename from core-java/src/test/java/com/baeldung/java8/JavaFolderSizeTest.java rename to core-java/src/test/java/com/baeldung/java8/JavaFolderSizeUnitTest.java index f2e7452137..e4a152b6a4 100644 --- a/core-java/src/test/java/com/baeldung/java8/JavaFolderSizeTest.java +++ b/core-java/src/test/java/com/baeldung/java8/JavaFolderSizeUnitTest.java @@ -14,7 +14,7 @@ import java.util.stream.StreamSupport; import static org.junit.Assert.assertEquals; -public class JavaFolderSizeTest { +public class JavaFolderSizeUnitTest { private String path; diff --git a/core-java/src/test/java/com/baeldung/java8/JavaTryWithResourcesTest.java b/core-java/src/test/java/com/baeldung/java8/JavaTryWithResourcesUnitTest.java similarity index 98% rename from core-java/src/test/java/com/baeldung/java8/JavaTryWithResourcesTest.java rename to core-java/src/test/java/com/baeldung/java8/JavaTryWithResourcesUnitTest.java index 224c4e9d6a..4c843ccaaf 100644 --- a/core-java/src/test/java/com/baeldung/java8/JavaTryWithResourcesTest.java +++ b/core-java/src/test/java/com/baeldung/java8/JavaTryWithResourcesUnitTest.java @@ -8,7 +8,7 @@ import java.io.StringWriter; import java.util.Date; import java.util.Scanner; -public class JavaTryWithResourcesTest { +public class JavaTryWithResourcesUnitTest { private static final String TEST_STRING_HELLO_WORLD = "Hello World"; private Date resource1Date, resource2Date; From 5e46e9278c72ece503fbacc21da356868bc5ee0e Mon Sep 17 00:00:00 2001 From: DOHA Date: Sat, 29 Oct 2016 11:37:55 +0200 Subject: [PATCH 149/215] minor fix --- .../org/baeldung/java/io/JavaReadFromFileUnitTest.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/core-java/src/test/java/org/baeldung/java/io/JavaReadFromFileUnitTest.java b/core-java/src/test/java/org/baeldung/java/io/JavaReadFromFileUnitTest.java index 2aa3b366ba..b1aa58424d 100644 --- a/core-java/src/test/java/org/baeldung/java/io/JavaReadFromFileUnitTest.java +++ b/core-java/src/test/java/org/baeldung/java/io/JavaReadFromFileUnitTest.java @@ -111,11 +111,11 @@ public class JavaReadFromFileUnitTest { @Test public void whenReadUTFEncodedFile_thenCorrect() throws IOException { - final String expected_value = "é?’空"; + final String expected_value = "é’空"; final BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream("src/test/resources/test_read7.in"), "UTF-8")); final String currentLine = reader.readLine(); reader.close(); - + System.out.println(currentLine); assertEquals(expected_value, currentLine); } @@ -143,8 +143,9 @@ public class JavaReadFromFileUnitTest { final FileChannel channel = reader.getChannel(); int bufferSize = 1024; - if (bufferSize > channel.size()) + if (bufferSize > channel.size()) { bufferSize = (int) channel.size(); + } final ByteBuffer buff = ByteBuffer.allocate(bufferSize); channel.read(buff); buff.flip(); From fcb4a33e3a15611925ea547697f29a792310286d Mon Sep 17 00:00:00 2001 From: Sandeep4odesk Date: Sat, 29 Oct 2016 15:09:24 +0530 Subject: [PATCH 150/215] Updating the Selenium version (#779) --- selenium-junit-testng/pom.xml | 2 +- .../java/com/baeldung/selenium/SeleniumExample.java | 13 +++++++++---- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/selenium-junit-testng/pom.xml b/selenium-junit-testng/pom.xml index 861c0b1986..cc96ea8529 100644 --- a/selenium-junit-testng/pom.xml +++ b/selenium-junit-testng/pom.xml @@ -53,7 +53,7 @@ org.seleniumhq.selenium selenium-java - 2.53.1 + 3.0.1 junit diff --git a/selenium-junit-testng/src/main/java/com/baeldung/selenium/SeleniumExample.java b/selenium-junit-testng/src/main/java/com/baeldung/selenium/SeleniumExample.java index ce60a1f638..58d47c0162 100644 --- a/selenium-junit-testng/src/main/java/com/baeldung/selenium/SeleniumExample.java +++ b/selenium-junit-testng/src/main/java/com/baeldung/selenium/SeleniumExample.java @@ -15,6 +15,7 @@ public class SeleniumExample { private String url = "http://www.baeldung.com/"; public SeleniumExample() { + System.setProperty("webdriver.firefox.marionette", "C:\\selenium\\geckodriver.exe"); webDriver = new FirefoxDriver(); webDriver.manage().window().maximize(); webDriver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); @@ -29,16 +30,20 @@ public class SeleniumExample { return webDriver.getTitle(); } - public void getAboutBaeldungPage() throws Exception { + public void getAboutBaeldungPage() { closeOverlay(); clickAboutLink(); clickAboutUsLink(); } - private void closeOverlay() throws Exception { + private void closeOverlay() { List webElementList = webDriver.findElements(By.tagName("a")); - if (webElementList != null && !webElementList.isEmpty() && webElementList.stream().filter(webElement -> "Close".equalsIgnoreCase(webElement.getAttribute("title"))).findAny().isPresent()) { - webElementList.stream().filter(webElement -> "Close".equalsIgnoreCase(webElement.getAttribute("title"))).findAny().orElseThrow(NoSuchElementException::new).click(); + try { + if (webElementList != null && !webElementList.isEmpty()) { + webElementList.stream().filter(webElement -> "Close".equalsIgnoreCase(webElement.getAttribute("title"))).findAny().orElseThrow(NoSuchElementException::new).click(); + } + } catch (NoSuchElementException exception) { + exception.printStackTrace(); } } From d426ea75b4ff05044a7a7794d719751d95c72402 Mon Sep 17 00:00:00 2001 From: DOHA Date: Sat, 29 Oct 2016 11:50:18 +0200 Subject: [PATCH 151/215] minor fix --- .../java8/JavaFolderSizeUnitTest.java | 46 ++++++++----------- 1 file changed, 19 insertions(+), 27 deletions(-) diff --git a/core-java/src/test/java/com/baeldung/java8/JavaFolderSizeUnitTest.java b/core-java/src/test/java/com/baeldung/java8/JavaFolderSizeUnitTest.java index e4a152b6a4..0881944c34 100644 --- a/core-java/src/test/java/com/baeldung/java8/JavaFolderSizeUnitTest.java +++ b/core-java/src/test/java/com/baeldung/java8/JavaFolderSizeUnitTest.java @@ -1,21 +1,25 @@ package com.baeldung.java8; -import org.apache.commons.io.FileUtils; -import org.junit.Before; -import org.junit.Test; +import static org.junit.Assert.assertEquals; import java.io.File; import java.io.IOException; -import java.nio.file.*; +import java.nio.file.FileVisitResult; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.nio.file.SimpleFileVisitor; import java.nio.file.attribute.BasicFileAttributes; import java.text.DecimalFormat; import java.util.concurrent.atomic.AtomicLong; import java.util.stream.StreamSupport; -import static org.junit.Assert.assertEquals; +import org.apache.commons.io.FileUtils; +import org.junit.Before; +import org.junit.Test; public class JavaFolderSizeUnitTest { - + private final long EXPECTED_SIZE = 260; private String path; @Before @@ -26,18 +30,14 @@ public class JavaFolderSizeUnitTest { @Test public void whenGetFolderSizeRecursive_thenCorrect() { - final long expectedSize = 136; - final File folder = new File(path); final long size = getFolderSize(folder); - assertEquals(expectedSize, size); + assertEquals(EXPECTED_SIZE, size); } @Test public void whenGetFolderSizeUsingJava7_thenCorrect() throws IOException { - final long expectedSize = 136; - final AtomicLong size = new AtomicLong(0); final Path folder = Paths.get(path); @@ -49,41 +49,33 @@ public class JavaFolderSizeUnitTest { } }); - assertEquals(expectedSize, size.longValue()); + assertEquals(EXPECTED_SIZE, size.longValue()); } @Test public void whenGetFolderSizeUsingJava8_thenCorrect() throws IOException { - final long expectedSize = 136; - final Path folder = Paths.get(path); final long size = Files.walk(folder).filter(p -> p.toFile().isFile()).mapToLong(p -> p.toFile().length()).sum(); - assertEquals(expectedSize, size); + assertEquals(EXPECTED_SIZE, size); } @Test public void whenGetFolderSizeUsingApacheCommonsIO_thenCorrect() { - final long expectedSize = 136; - final File folder = new File(path); final long size = FileUtils.sizeOfDirectory(folder); - assertEquals(expectedSize, size); + assertEquals(EXPECTED_SIZE, size); } @Test public void whenGetFolderSizeUsingGuava_thenCorrect() { - final long expectedSize = 136; - final File folder = new File(path); final Iterable files = com.google.common.io.Files.fileTreeTraverser().breadthFirstTraversal(folder); - final long size = StreamSupport.stream(files.spliterator(), false) - .filter(File::isFile) - .mapToLong(File::length).sum(); + final long size = StreamSupport.stream(files.spliterator(), false).filter(File::isFile).mapToLong(File::length).sum(); - assertEquals(expectedSize, size); + assertEquals(EXPECTED_SIZE, size); } @Test @@ -91,19 +83,19 @@ public class JavaFolderSizeUnitTest { final File folder = new File(path); final long size = getFolderSize(folder); - final String[] units = new String[]{"B", "KB", "MB", "GB", "TB"}; + final String[] units = new String[] { "B", "KB", "MB", "GB", "TB" }; final int unitIndex = (int) (Math.log10(size) / 3); final double unitValue = 1 << (unitIndex * 10); final String readableSize = new DecimalFormat("#,##0.#").format(size / unitValue) + " " + units[unitIndex]; - assertEquals("136 B", readableSize); + assertEquals(EXPECTED_SIZE + " B", readableSize); } private long getFolderSize(final File folder) { long length = 0; final File[] files = folder.listFiles(); - for (File file : files) { + for (final File file : files) { if (file.isFile()) { length += file.length(); } else { From ba093502a1d1604e4bfecbc0816071dbaf060123 Mon Sep 17 00:00:00 2001 From: DOHA Date: Sat, 29 Oct 2016 11:50:29 +0200 Subject: [PATCH 152/215] cleanup --- ...seLocalDateTimeTest.java => UseLocalDateTimeUnitTest.java} | 2 +- .../{UseLocalDateTest.java => UseLocalDateUnitTest.java} | 2 +- .../{UseLocalTimeTest.java => UseLocalTimeUnitTest.java} | 2 +- .../datetime/{UsePeriodTest.java => UsePeriodUnitTest.java} | 2 +- ...seZonedDateTimeTest.java => UseZonedDateTimeUnitTest.java} | 2 +- .../{TestComputerUtils.java => ComputerUtilsUnitTest.java} | 2 +- .../{EncoderDecoderTest.java => EncoderDecoderUnitTest.java} | 4 ++-- .../com/baeldung/enums/{PizzaTest.java => PizzaUnitTest.java} | 2 +- .../networking/udp/{UDPTest.java => UDPIntegrationTest.java} | 2 +- .../java/networking/url/{UrlTest.java => UrlUnitTest.java} | 2 +- 10 files changed, 11 insertions(+), 11 deletions(-) rename core-java/src/test/java/com/baeldung/datetime/{UseLocalDateTimeTest.java => UseLocalDateTimeUnitTest.java} (93%) rename core-java/src/test/java/com/baeldung/datetime/{UseLocalDateTest.java => UseLocalDateUnitTest.java} (97%) rename core-java/src/test/java/com/baeldung/datetime/{UseLocalTimeTest.java => UseLocalTimeUnitTest.java} (96%) rename core-java/src/test/java/com/baeldung/datetime/{UsePeriodTest.java => UsePeriodUnitTest.java} (95%) rename core-java/src/test/java/com/baeldung/datetime/{UseZonedDateTimeTest.java => UseZonedDateTimeUnitTest.java} (93%) rename core-java/src/test/java/com/baeldung/doublecolon/{TestComputerUtils.java => ComputerUtilsUnitTest.java} (98%) rename core-java/src/test/java/com/baeldung/encoderdecoder/{EncoderDecoderTest.java => EncoderDecoderUnitTest.java} (97%) rename core-java/src/test/java/com/baeldung/enums/{PizzaTest.java => PizzaUnitTest.java} (98%) rename core-java/src/test/java/com/baeldung/java/networking/udp/{UDPTest.java => UDPIntegrationTest.java} (96%) rename core-java/src/test/java/com/baeldung/java/networking/url/{UrlTest.java => UrlUnitTest.java} (99%) diff --git a/core-java/src/test/java/com/baeldung/datetime/UseLocalDateTimeTest.java b/core-java/src/test/java/com/baeldung/datetime/UseLocalDateTimeUnitTest.java similarity index 93% rename from core-java/src/test/java/com/baeldung/datetime/UseLocalDateTimeTest.java rename to core-java/src/test/java/com/baeldung/datetime/UseLocalDateTimeUnitTest.java index 69a289fd02..906d641632 100644 --- a/core-java/src/test/java/com/baeldung/datetime/UseLocalDateTimeTest.java +++ b/core-java/src/test/java/com/baeldung/datetime/UseLocalDateTimeUnitTest.java @@ -7,7 +7,7 @@ import java.time.Month; import org.junit.Assert; import org.junit.Test; -public class UseLocalDateTimeTest { +public class UseLocalDateTimeUnitTest { UseLocalDateTime useLocalDateTime = new UseLocalDateTime(); diff --git a/core-java/src/test/java/com/baeldung/datetime/UseLocalDateTest.java b/core-java/src/test/java/com/baeldung/datetime/UseLocalDateUnitTest.java similarity index 97% rename from core-java/src/test/java/com/baeldung/datetime/UseLocalDateTest.java rename to core-java/src/test/java/com/baeldung/datetime/UseLocalDateUnitTest.java index 0537832586..dcfca792af 100644 --- a/core-java/src/test/java/com/baeldung/datetime/UseLocalDateTest.java +++ b/core-java/src/test/java/com/baeldung/datetime/UseLocalDateUnitTest.java @@ -7,7 +7,7 @@ import java.time.LocalDateTime; import org.junit.Assert; import org.junit.Test; -public class UseLocalDateTest { +public class UseLocalDateUnitTest { UseLocalDate useLocalDate = new UseLocalDate(); diff --git a/core-java/src/test/java/com/baeldung/datetime/UseLocalTimeTest.java b/core-java/src/test/java/com/baeldung/datetime/UseLocalTimeUnitTest.java similarity index 96% rename from core-java/src/test/java/com/baeldung/datetime/UseLocalTimeTest.java rename to core-java/src/test/java/com/baeldung/datetime/UseLocalTimeUnitTest.java index 7776fad363..520b79d4bf 100644 --- a/core-java/src/test/java/com/baeldung/datetime/UseLocalTimeTest.java +++ b/core-java/src/test/java/com/baeldung/datetime/UseLocalTimeUnitTest.java @@ -5,7 +5,7 @@ import java.time.LocalTime; import org.junit.Assert; import org.junit.Test; -public class UseLocalTimeTest { +public class UseLocalTimeUnitTest { UseLocalTime useLocalTime = new UseLocalTime(); diff --git a/core-java/src/test/java/com/baeldung/datetime/UsePeriodTest.java b/core-java/src/test/java/com/baeldung/datetime/UsePeriodUnitTest.java similarity index 95% rename from core-java/src/test/java/com/baeldung/datetime/UsePeriodTest.java rename to core-java/src/test/java/com/baeldung/datetime/UsePeriodUnitTest.java index 5237270096..a060d974ed 100644 --- a/core-java/src/test/java/com/baeldung/datetime/UsePeriodTest.java +++ b/core-java/src/test/java/com/baeldung/datetime/UsePeriodUnitTest.java @@ -6,7 +6,7 @@ import java.time.Period; import org.junit.Assert; import org.junit.Test; -public class UsePeriodTest { +public class UsePeriodUnitTest { UsePeriod usingPeriod=new UsePeriod(); @Test diff --git a/core-java/src/test/java/com/baeldung/datetime/UseZonedDateTimeTest.java b/core-java/src/test/java/com/baeldung/datetime/UseZonedDateTimeUnitTest.java similarity index 93% rename from core-java/src/test/java/com/baeldung/datetime/UseZonedDateTimeTest.java rename to core-java/src/test/java/com/baeldung/datetime/UseZonedDateTimeUnitTest.java index 5af01ad678..d5652430fe 100644 --- a/core-java/src/test/java/com/baeldung/datetime/UseZonedDateTimeTest.java +++ b/core-java/src/test/java/com/baeldung/datetime/UseZonedDateTimeUnitTest.java @@ -7,7 +7,7 @@ import java.time.ZonedDateTime; import org.junit.Assert; import org.junit.Test; -public class UseZonedDateTimeTest { +public class UseZonedDateTimeUnitTest { UseZonedDateTime zonedDateTime=new UseZonedDateTime(); diff --git a/core-java/src/test/java/com/baeldung/doublecolon/TestComputerUtils.java b/core-java/src/test/java/com/baeldung/doublecolon/ComputerUtilsUnitTest.java similarity index 98% rename from core-java/src/test/java/com/baeldung/doublecolon/TestComputerUtils.java rename to core-java/src/test/java/com/baeldung/doublecolon/ComputerUtilsUnitTest.java index 85194f5aa6..f69e4b03ee 100644 --- a/core-java/src/test/java/com/baeldung/doublecolon/TestComputerUtils.java +++ b/core-java/src/test/java/com/baeldung/doublecolon/ComputerUtilsUnitTest.java @@ -13,7 +13,7 @@ import java.util.function.BiFunction; import static com.baeldung.doublecolon.ComputerUtils.*; -public class TestComputerUtils { +public class ComputerUtilsUnitTest { @Before public void setup() { diff --git a/core-java/src/test/java/com/baeldung/encoderdecoder/EncoderDecoderTest.java b/core-java/src/test/java/com/baeldung/encoderdecoder/EncoderDecoderUnitTest.java similarity index 97% rename from core-java/src/test/java/com/baeldung/encoderdecoder/EncoderDecoderTest.java rename to core-java/src/test/java/com/baeldung/encoderdecoder/EncoderDecoderUnitTest.java index 7f32a561e7..0e3ec29dfd 100644 --- a/core-java/src/test/java/com/baeldung/encoderdecoder/EncoderDecoderTest.java +++ b/core-java/src/test/java/com/baeldung/encoderdecoder/EncoderDecoderUnitTest.java @@ -17,9 +17,9 @@ import java.util.Map; import static java.util.stream.Collectors.joining; -public class EncoderDecoderTest { +public class EncoderDecoderUnitTest { - private static final Logger LOGGER = LoggerFactory.getLogger(EncoderDecoderTest.class); + private static final Logger LOGGER = LoggerFactory.getLogger(EncoderDecoderUnitTest.class); private static final String testUrl = "http://www.baeldung.com?key1=value+1&key2=value%40%21%242&key3=value%253"; private String encodeValue(String value) { diff --git a/core-java/src/test/java/com/baeldung/enums/PizzaTest.java b/core-java/src/test/java/com/baeldung/enums/PizzaUnitTest.java similarity index 98% rename from core-java/src/test/java/com/baeldung/enums/PizzaTest.java rename to core-java/src/test/java/com/baeldung/enums/PizzaUnitTest.java index deeebaa240..de60becfce 100644 --- a/core-java/src/test/java/com/baeldung/enums/PizzaTest.java +++ b/core-java/src/test/java/com/baeldung/enums/PizzaUnitTest.java @@ -9,7 +9,7 @@ import java.util.List; import static junit.framework.TestCase.assertTrue; -public class PizzaTest { +public class PizzaUnitTest { @Test public void givenPizaOrder_whenReady_thenDeliverable() { diff --git a/core-java/src/test/java/com/baeldung/java/networking/udp/UDPTest.java b/core-java/src/test/java/com/baeldung/java/networking/udp/UDPIntegrationTest.java similarity index 96% rename from core-java/src/test/java/com/baeldung/java/networking/udp/UDPTest.java rename to core-java/src/test/java/com/baeldung/java/networking/udp/UDPIntegrationTest.java index cf35c07ab3..2ca2d3a0c8 100644 --- a/core-java/src/test/java/com/baeldung/java/networking/udp/UDPTest.java +++ b/core-java/src/test/java/com/baeldung/java/networking/udp/UDPIntegrationTest.java @@ -10,7 +10,7 @@ import java.io.IOException; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; -public class UDPTest { +public class UDPIntegrationTest { private EchoClient client; @Before diff --git a/core-java/src/test/java/com/baeldung/java/networking/url/UrlTest.java b/core-java/src/test/java/com/baeldung/java/networking/url/UrlUnitTest.java similarity index 99% rename from core-java/src/test/java/com/baeldung/java/networking/url/UrlTest.java rename to core-java/src/test/java/com/baeldung/java/networking/url/UrlUnitTest.java index 053440d655..505d9595ab 100644 --- a/core-java/src/test/java/com/baeldung/java/networking/url/UrlTest.java +++ b/core-java/src/test/java/com/baeldung/java/networking/url/UrlUnitTest.java @@ -7,7 +7,7 @@ import java.net.URL; import org.junit.Test; -public class UrlTest { +public class UrlUnitTest { @Test public void givenUrl_whenCanIdentifyProtocol_thenCorrect() throws MalformedURLException { From 06e7facc846ed655c4b8d23b2b7cca919f371238 Mon Sep 17 00:00:00 2001 From: Shubham Aggarwal Date: Sat, 29 Oct 2016 16:29:14 +0530 Subject: [PATCH 153/215] Added HexToAscii example. --- .../com/baeldung/hextToAscii/HexToAscii.java | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 core-java/src/main/java/com/baeldung/hextToAscii/HexToAscii.java diff --git a/core-java/src/main/java/com/baeldung/hextToAscii/HexToAscii.java b/core-java/src/main/java/com/baeldung/hextToAscii/HexToAscii.java new file mode 100644 index 0000000000..a3e0dd431d --- /dev/null +++ b/core-java/src/main/java/com/baeldung/hextToAscii/HexToAscii.java @@ -0,0 +1,38 @@ +package com.baeldung.hexToAscii; + +public class HexToAscii { + + public static void main(String[] args) { + + String demoString = "http://www.baeldung.com/jackson-serialize-dates"; + + System.out.println("Original statement: " + demoString); + + String hexEquivalent = asciiToHex(demoString); + System.out.println("Hex equivalent: " + hexEquivalent); + + String asciiEquivalent = hexToASCII(hexEquivalent); + System.out.println("Ascii equivalent: " + asciiEquivalent); + } + + private static String asciiToHex(String asciiStr) { + + char[] chars = asciiStr.toCharArray(); + StringBuilder hex = new StringBuilder(); + for (char ch : chars) { + hex.append(Integer.toHexString((int) ch)); + } + + return hex.toString(); + } + + private static String hexToASCII(String hexStr) { + + StringBuilder output = new StringBuilder(""); + for (int i = 0; i < hexStr.length(); i += 2) { + String str = hexStr.substring(i, i + 2); + output.append((char) Integer.parseInt(str, 16)); + } + return output.toString(); + } +} From f164e58c7cfb6c7344a15049a2cdea997b433bb3 Mon Sep 17 00:00:00 2001 From: DOHA Date: Sat, 29 Oct 2016 13:49:35 +0200 Subject: [PATCH 154/215] minor fix --- core-java/pom.xml | 35 +++++++++++++++++++ .../java8/JavaFolderSizeUnitTest.java | 2 +- .../baeldung/java/io/JavaFileUnitTest.java | 6 ++-- 3 files changed, 39 insertions(+), 4 deletions(-) diff --git a/core-java/pom.xml b/core-java/pom.xml index b39e356977..8b93e238eb 100644 --- a/core-java/pom.xml +++ b/core-java/pom.xml @@ -279,6 +279,41 @@ + + + + integration + + + + org.apache.maven.plugins + maven-surefire-plugin + + + integration-test + + test + + + + **/*ManualTest.java + + + **/*IntegrationTest.java + + + + + + + json + + + + + + + diff --git a/core-java/src/test/java/com/baeldung/java8/JavaFolderSizeUnitTest.java b/core-java/src/test/java/com/baeldung/java8/JavaFolderSizeUnitTest.java index 0881944c34..68b736096e 100644 --- a/core-java/src/test/java/com/baeldung/java8/JavaFolderSizeUnitTest.java +++ b/core-java/src/test/java/com/baeldung/java8/JavaFolderSizeUnitTest.java @@ -19,7 +19,7 @@ import org.junit.Before; import org.junit.Test; public class JavaFolderSizeUnitTest { - private final long EXPECTED_SIZE = 260; + private final long EXPECTED_SIZE = 381; private String path; @Before diff --git a/core-java/src/test/java/org/baeldung/java/io/JavaFileUnitTest.java b/core-java/src/test/java/org/baeldung/java/io/JavaFileUnitTest.java index 710f8c43fc..f4c52f3c65 100644 --- a/core-java/src/test/java/org/baeldung/java/io/JavaFileUnitTest.java +++ b/core-java/src/test/java/org/baeldung/java/io/JavaFileUnitTest.java @@ -76,13 +76,13 @@ public class JavaFileUnitTest { @Test public final void givenUsingApache_whenMovingFile_thenCorrect() throws IOException { - FileUtils.moveFile(FileUtils.getFile("src/test/resources/fileToMove.txt"), FileUtils.getFile("src/test/resources/fileMoved.txt")); + FileUtils.moveFile(FileUtils.getFile("src/test/resources/fileToMove_apache.txt"), FileUtils.getFile("src/test/resources/fileMoved_apache2.txt")); } @Test public final void givenUsingApache_whenMovingFileApproach2_thenCorrect() throws IOException { - FileUtils.touch(new File("src/test/resources/fileToMove.txt")); - FileUtils.moveFileToDirectory(FileUtils.getFile("src/test/resources/fileToMove.txt"), FileUtils.getFile("src/main/resources/"), true); + FileUtils.touch(new File("src/test/resources/fileToMove_apache.txt")); + FileUtils.moveFileToDirectory(FileUtils.getFile("src/test/resources/fileToMove_apache.txt"), FileUtils.getFile("src/main/resources/"), true); } // delete a file From d0882abc5fb02f0cfd5cd79d2c3fd546731ee55f Mon Sep 17 00:00:00 2001 From: DOHA Date: Sat, 29 Oct 2016 13:59:48 +0200 Subject: [PATCH 155/215] configure test profiles --- httpclient/pom.xml | 40 +++++++++++++++++++ ....java => HttpClientMultipartLiveTest.java} | 2 +- ...st.java => HttpClientPostingLiveTest.java} | 4 +- 3 files changed, 44 insertions(+), 2 deletions(-) rename httpclient/src/test/java/org/baeldung/httpclient/{HttpClientMultipartTest.java => HttpClientMultipartLiveTest.java} (99%) rename httpclient/src/test/java/org/baeldung/httpclient/{HttpClientPostingTest.java => HttpClientPostingLiveTest.java} (98%) diff --git a/httpclient/pom.xml b/httpclient/pom.xml index 66b2076852..cac363c414 100644 --- a/httpclient/pom.xml +++ b/httpclient/pom.xml @@ -141,12 +141,52 @@ org.apache.maven.plugins maven-surefire-plugin ${maven-surefire-plugin.version} + + + **/*LiveTest.java + + + + + live + + + + org.apache.maven.plugins + maven-surefire-plugin + + + integration-test + + test + + + + **/*ManualTest.java + + + **/*LiveTest.java + + + + + + + json + + + + + + + + 4.3.11.Final diff --git a/httpclient/src/test/java/org/baeldung/httpclient/HttpClientMultipartTest.java b/httpclient/src/test/java/org/baeldung/httpclient/HttpClientMultipartLiveTest.java similarity index 99% rename from httpclient/src/test/java/org/baeldung/httpclient/HttpClientMultipartTest.java rename to httpclient/src/test/java/org/baeldung/httpclient/HttpClientMultipartLiveTest.java index 371657af62..3287faa176 100644 --- a/httpclient/src/test/java/org/baeldung/httpclient/HttpClientMultipartTest.java +++ b/httpclient/src/test/java/org/baeldung/httpclient/HttpClientMultipartLiveTest.java @@ -30,7 +30,7 @@ import org.junit.After; import org.junit.Before; import org.junit.Test; -public class HttpClientMultipartTest { +public class HttpClientMultipartLiveTest { private static final String SERVER = "http://echo.200please.com"; private static final String TEXTFILENAME = "temp.txt"; diff --git a/httpclient/src/test/java/org/baeldung/httpclient/HttpClientPostingTest.java b/httpclient/src/test/java/org/baeldung/httpclient/HttpClientPostingLiveTest.java similarity index 98% rename from httpclient/src/test/java/org/baeldung/httpclient/HttpClientPostingTest.java rename to httpclient/src/test/java/org/baeldung/httpclient/HttpClientPostingLiveTest.java index 7b75cdfc19..23cbfde82d 100644 --- a/httpclient/src/test/java/org/baeldung/httpclient/HttpClientPostingTest.java +++ b/httpclient/src/test/java/org/baeldung/httpclient/HttpClientPostingLiveTest.java @@ -27,9 +27,11 @@ import org.apache.http.impl.auth.BasicScheme; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.message.BasicNameValuePair; +import org.junit.Ignore; import org.junit.Test; -public class HttpClientPostingTest { +@Ignore("need spring-rest module running") +public class HttpClientPostingLiveTest { private static final String SAMPLE_URL = "http://localhost:8080/spring-rest/users"; private static final String URL_SECURED_BY_BASIC_AUTHENTICATION = "http://browserspy.dk/password-ok.php"; private static final String DEFAULT_USER = "test"; From 412a93ce684cf459b74c47656fa8c67089595f37 Mon Sep 17 00:00:00 2001 From: DOHA Date: Sat, 29 Oct 2016 14:27:40 +0200 Subject: [PATCH 156/215] cleanup --- .../java/org/baeldung/httpclient/HttpAsyncClientLiveTest.java | 2 +- .../org/baeldung/httpclient/HttpClientMultipartLiveTest.java | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/httpclient/src/test/java/org/baeldung/httpclient/HttpAsyncClientLiveTest.java b/httpclient/src/test/java/org/baeldung/httpclient/HttpAsyncClientLiveTest.java index bfe1e68ebe..b1399dcab8 100644 --- a/httpclient/src/test/java/org/baeldung/httpclient/HttpAsyncClientLiveTest.java +++ b/httpclient/src/test/java/org/baeldung/httpclient/HttpAsyncClientLiveTest.java @@ -51,7 +51,7 @@ public class HttpAsyncClientLiveTest { @Test public void whenUseHttpAsyncClient_thenCorrect() throws InterruptedException, ExecutionException, IOException { final CloseableHttpAsyncClient client = HttpAsyncClients.createDefault(); - // client.start(); + client.start(); final HttpGet request = new HttpGet(HOST); final Future future = client.execute(request, null); diff --git a/httpclient/src/test/java/org/baeldung/httpclient/HttpClientMultipartLiveTest.java b/httpclient/src/test/java/org/baeldung/httpclient/HttpClientMultipartLiveTest.java index 3287faa176..6fad126537 100644 --- a/httpclient/src/test/java/org/baeldung/httpclient/HttpClientMultipartLiveTest.java +++ b/httpclient/src/test/java/org/baeldung/httpclient/HttpClientMultipartLiveTest.java @@ -28,15 +28,17 @@ import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClientBuilder; import org.junit.After; import org.junit.Before; +import org.junit.Ignore; import org.junit.Test; +@Ignore("Server is not available") public class HttpClientMultipartLiveTest { private static final String SERVER = "http://echo.200please.com"; private static final String TEXTFILENAME = "temp.txt"; private static final String IMAGEFILENAME = "image.jpg"; private static final String ZIPFILENAME = "zipFile.zip"; - private static final Logger LOGGER = Logger.getLogger("org.baeldung.httpclient.HttpClientMultipartTest"); + private static final Logger LOGGER = Logger.getLogger("org.baeldung.httpclient.HttpClientMultipartLiveTest"); private CloseableHttpClient client; private HttpPost post; private BufferedReader rd; From 5a6ab35333582ebf0017bab20141e5105712bf10 Mon Sep 17 00:00:00 2001 From: DOHA Date: Sat, 29 Oct 2016 16:56:13 +0200 Subject: [PATCH 157/215] minor fix --- .../test/java/com/baeldung/java8/JavaFolderSizeUnitTest.java | 4 ++-- .../src/test/java/org/baeldung/java/io/JavaFileUnitTest.java | 1 + core-java/src/test/resources/testFolder/sample_file_1.in | 1 + core-java/src/test/resources/testFolder/sample_file_2.in | 1 + 4 files changed, 5 insertions(+), 2 deletions(-) create mode 100644 core-java/src/test/resources/testFolder/sample_file_1.in create mode 100644 core-java/src/test/resources/testFolder/sample_file_2.in diff --git a/core-java/src/test/java/com/baeldung/java8/JavaFolderSizeUnitTest.java b/core-java/src/test/java/com/baeldung/java8/JavaFolderSizeUnitTest.java index 68b736096e..1f3b380772 100644 --- a/core-java/src/test/java/com/baeldung/java8/JavaFolderSizeUnitTest.java +++ b/core-java/src/test/java/com/baeldung/java8/JavaFolderSizeUnitTest.java @@ -19,13 +19,13 @@ import org.junit.Before; import org.junit.Test; public class JavaFolderSizeUnitTest { - private final long EXPECTED_SIZE = 381; + private final long EXPECTED_SIZE = 24; private String path; @Before public void init() { final String separator = File.separator; - path = String.format("src%stest%sresources", separator, separator); + path = String.format("src%stest%sresources%stestFolder", separator, separator, separator); } @Test diff --git a/core-java/src/test/java/org/baeldung/java/io/JavaFileUnitTest.java b/core-java/src/test/java/org/baeldung/java/io/JavaFileUnitTest.java index f4c52f3c65..4b56a97325 100644 --- a/core-java/src/test/java/org/baeldung/java/io/JavaFileUnitTest.java +++ b/core-java/src/test/java/org/baeldung/java/io/JavaFileUnitTest.java @@ -76,6 +76,7 @@ public class JavaFileUnitTest { @Test public final void givenUsingApache_whenMovingFile_thenCorrect() throws IOException { + FileUtils.touch(new File("src/test/resources/fileToMove_apache.txt")); FileUtils.moveFile(FileUtils.getFile("src/test/resources/fileToMove_apache.txt"), FileUtils.getFile("src/test/resources/fileMoved_apache2.txt")); } diff --git a/core-java/src/test/resources/testFolder/sample_file_1.in b/core-java/src/test/resources/testFolder/sample_file_1.in new file mode 100644 index 0000000000..70c379b63f --- /dev/null +++ b/core-java/src/test/resources/testFolder/sample_file_1.in @@ -0,0 +1 @@ +Hello world \ No newline at end of file diff --git a/core-java/src/test/resources/testFolder/sample_file_2.in b/core-java/src/test/resources/testFolder/sample_file_2.in new file mode 100644 index 0000000000..93b493a513 --- /dev/null +++ b/core-java/src/test/resources/testFolder/sample_file_2.in @@ -0,0 +1 @@ +Hello world ! \ No newline at end of file From bd179cdcc12f42363ff67f016b3afe6e5b8a059c Mon Sep 17 00:00:00 2001 From: DOHA Date: Sat, 29 Oct 2016 19:23:17 +0200 Subject: [PATCH 158/215] minor fix --- junit5/src/test/java/com/baeldung/FirstTest.java | 1 + 1 file changed, 1 insertion(+) diff --git a/junit5/src/test/java/com/baeldung/FirstTest.java b/junit5/src/test/java/com/baeldung/FirstTest.java index 4fc6037174..3306dc01f9 100644 --- a/junit5/src/test/java/com/baeldung/FirstTest.java +++ b/junit5/src/test/java/com/baeldung/FirstTest.java @@ -19,6 +19,7 @@ class FirstTest { .sum() > 5, "Sum should be greater than 5"); } + @Disabled("test to show MultipleFailuresError") @Test void groupAssertions() { int[] numbers = {0, 1, 2, 3, 4}; From e087fc921e6510358d236cc683fd617c9e13aba1 Mon Sep 17 00:00:00 2001 From: slavisa-baeldung Date: Sat, 29 Oct 2016 19:25:52 +0200 Subject: [PATCH 159/215] BAEL-315 - reformatting config classes --- .../bootstrap/config/SecurityConfig.java | 15 +++++---- .../bootstrap/discovery/SecurityConfig.java | 29 +++++++++-------- .../bootstrap/gateway/SecurityConfig.java | 31 +++++++++---------- .../bootstrap/resource/SecurityConfig.java | 21 ++++++------- 4 files changed, 46 insertions(+), 50 deletions(-) diff --git a/spring-cloud/spring-cloud-bootstrap/config/src/main/java/com/baeldung/spring/cloud/bootstrap/config/SecurityConfig.java b/spring-cloud/spring-cloud-bootstrap/config/src/main/java/com/baeldung/spring/cloud/bootstrap/config/SecurityConfig.java index 315ab8b543..e607144f11 100644 --- a/spring-cloud/spring-cloud-bootstrap/config/src/main/java/com/baeldung/spring/cloud/bootstrap/config/SecurityConfig.java +++ b/spring-cloud/spring-cloud-bootstrap/config/src/main/java/com/baeldung/spring/cloud/bootstrap/config/SecurityConfig.java @@ -18,13 +18,12 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { - http - .authorizeRequests() - .anyRequest().hasRole("SYSTEM") - .and() - .httpBasic() - .and() - .csrf() - .disable(); + http.authorizeRequests() + .anyRequest().hasRole("SYSTEM") + .and() + .httpBasic() + .and() + .csrf() + .disable(); } } diff --git a/spring-cloud/spring-cloud-bootstrap/discovery/src/main/java/com/baeldung/spring/cloud/bootstrap/discovery/SecurityConfig.java b/spring-cloud/spring-cloud-bootstrap/discovery/src/main/java/com/baeldung/spring/cloud/bootstrap/discovery/SecurityConfig.java index 3c874bf581..b559da6394 100644 --- a/spring-cloud/spring-cloud-bootstrap/discovery/src/main/java/com/baeldung/spring/cloud/bootstrap/discovery/SecurityConfig.java +++ b/spring-cloud/spring-cloud-bootstrap/discovery/src/main/java/com/baeldung/spring/cloud/bootstrap/discovery/SecurityConfig.java @@ -22,21 +22,20 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { - http - .sessionManagement() - .sessionCreationPolicy(SessionCreationPolicy.ALWAYS) - .and() - .requestMatchers() - .antMatchers("/eureka/**") - .and() - .authorizeRequests() - .antMatchers("/eureka/**").hasRole("SYSTEM") - .anyRequest().denyAll() - .and() - .httpBasic() - .and() - .csrf() - .disable(); + http.sessionManagement() + .sessionCreationPolicy(SessionCreationPolicy.ALWAYS) + .and() + .requestMatchers() + .antMatchers("/eureka/**") + .and() + .authorizeRequests() + .antMatchers("/eureka/**").hasRole("SYSTEM") + .anyRequest().denyAll() + .and() + .httpBasic() + .and() + .csrf() + .disable(); } @Configuration diff --git a/spring-cloud/spring-cloud-bootstrap/gateway/src/main/java/com/baeldung/spring/cloud/bootstrap/gateway/SecurityConfig.java b/spring-cloud/spring-cloud-bootstrap/gateway/src/main/java/com/baeldung/spring/cloud/bootstrap/gateway/SecurityConfig.java index 0b8923391f..60dccf9042 100644 --- a/spring-cloud/spring-cloud-bootstrap/gateway/src/main/java/com/baeldung/spring/cloud/bootstrap/gateway/SecurityConfig.java +++ b/spring-cloud/spring-cloud-bootstrap/gateway/src/main/java/com/baeldung/spring/cloud/bootstrap/gateway/SecurityConfig.java @@ -14,25 +14,24 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter { @Autowired public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception { auth.inMemoryAuthentication() - .withUser("user").password("password").roles("USER") - .and() - .withUser("admin").password("admin").roles("ADMIN"); + .withUser("user").password("password").roles("USER") + .and() + .withUser("admin").password("admin").roles("ADMIN"); } @Override protected void configure(HttpSecurity http) throws Exception { - http - .authorizeRequests() - .antMatchers("/resource/hello/cloud").permitAll() - .antMatchers("/eureka/**").hasRole("ADMIN") - .anyRequest().authenticated() - .and() - .formLogin() - .and() - .logout().permitAll() - .logoutSuccessUrl("/resource/hello/cloud").permitAll() - .and() - .csrf() - .disable(); + http.authorizeRequests() + .antMatchers("/resource/hello/cloud").permitAll() + .antMatchers("/eureka/**").hasRole("ADMIN") + .anyRequest().authenticated() + .and() + .formLogin() + .and() + .logout().permitAll() + .logoutSuccessUrl("/resource/hello/cloud").permitAll() + .and() + .csrf() + .disable(); } } diff --git a/spring-cloud/spring-cloud-bootstrap/resource/src/main/java/com/baeldung/spring/cloud/bootstrap/resource/SecurityConfig.java b/spring-cloud/spring-cloud-bootstrap/resource/src/main/java/com/baeldung/spring/cloud/bootstrap/resource/SecurityConfig.java index 66d154dafb..0b0de6ec20 100644 --- a/spring-cloud/spring-cloud-bootstrap/resource/src/main/java/com/baeldung/spring/cloud/bootstrap/resource/SecurityConfig.java +++ b/spring-cloud/spring-cloud-bootstrap/resource/src/main/java/com/baeldung/spring/cloud/bootstrap/resource/SecurityConfig.java @@ -19,16 +19,15 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { - http - .httpBasic() - .disable() - .authorizeRequests() - .antMatchers("/hello/cloud").permitAll() - .antMatchers("/hello/user").hasAnyRole("USER", "ADMIN") - .antMatchers("/hello/admin").hasRole("ADMIN") - .anyRequest().authenticated() - .and() - .csrf() - .disable(); + http.httpBasic() + .disable() + .authorizeRequests() + .antMatchers("/hello/cloud").permitAll() + .antMatchers("/hello/user").hasAnyRole("USER", "ADMIN") + .antMatchers("/hello/admin").hasRole("ADMIN") + .anyRequest().authenticated() + .and() + .csrf() + .disable(); } } From 585a88409f6775e879e47240eac4be52061787e9 Mon Sep 17 00:00:00 2001 From: Egima profile Date: Sat, 29 Oct 2016 20:41:01 +0300 Subject: [PATCH 160/215] created project for nio2 (#785) * made changes to java reflection * removed redundant method makeSound in Animal abstract class * added project for play-framework article * added project for regex * changed regex project from own model to core-java * added project for routing in play * made changes to regex project * refactored code for REST API with Play project * refactored student store indexing to zero base * added unit tests, removed bad names * added NIO Selector project under core-java module * requested changes made * added project for nio2 --- .../baeldung/java/networking/udp/UDPTest.java | 33 +++ .../baeldung/java/networking/url/UrlTest.java | 104 +++++++ .../java/com/baeldung/java/nio2/FileTest.java | 265 ++++++++++++++++++ .../java/com/baeldung/java/nio2/PathTest.java | 197 +++++++++++++ 4 files changed, 599 insertions(+) create mode 100644 core-java/src/main/java/com/baeldung/java/networking/udp/UDPTest.java create mode 100644 core-java/src/test/java/com/baeldung/java/networking/url/UrlTest.java create mode 100644 core-java/src/test/java/com/baeldung/java/nio2/FileTest.java create mode 100644 core-java/src/test/java/com/baeldung/java/nio2/PathTest.java diff --git a/core-java/src/main/java/com/baeldung/java/networking/udp/UDPTest.java b/core-java/src/main/java/com/baeldung/java/networking/udp/UDPTest.java new file mode 100644 index 0000000000..ee93936230 --- /dev/null +++ b/core-java/src/main/java/com/baeldung/java/networking/udp/UDPTest.java @@ -0,0 +1,33 @@ +package com.baeldung.java.networking.udp; + +import static org.junit.Assert.*; + +import java.io.IOException; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class UDPTest { + EchoClient client = null; + + @Before + public void setup() throws IOException { + new EchoServer().start(); + client = new EchoClient(); + } + + @Test + public void whenCanSendAndReceivePacket_thenCorrect1() { + String echo = client.sendEcho("hello server"); + assertEquals("hello server", echo); + echo = client.sendEcho("server is working"); + assertFalse(echo.equals("hello server")); + } + + @After + public void tearDown() { + client.sendEcho("end"); + client.close(); + } +} diff --git a/core-java/src/test/java/com/baeldung/java/networking/url/UrlTest.java b/core-java/src/test/java/com/baeldung/java/networking/url/UrlTest.java new file mode 100644 index 0000000000..14444f0145 --- /dev/null +++ b/core-java/src/test/java/com/baeldung/java/networking/url/UrlTest.java @@ -0,0 +1,104 @@ +package com.baeldung.java.networking.url; + +import static org.junit.Assert.assertEquals; + +import java.net.MalformedURLException; +import java.net.URL; + +import org.junit.Test; + +public class UrlTest { + + @Test + public void givenUrl_whenCanIdentifyProtocol_thenCorrect() throws MalformedURLException { + URL url = new URL("http://baeldung.com"); + assertEquals("http", url.getProtocol()); + } + + @Test + public void givenUrl_whenCanGetHost_thenCorrect() throws MalformedURLException { + URL url = new URL("http://baeldung.com"); + assertEquals("baeldung.com", url.getHost()); + } + + @Test + public void givenUrl_whenCanGetFileName_thenCorrect2() throws MalformedURLException { + URL url = new URL("http://baeldung.com/articles?topic=java&version=8"); + assertEquals("/articles?topic=java&version=8", url.getFile()); + } + + @Test + public void givenUrl_whenCanGetFileName_thenCorrect1() throws MalformedURLException { + URL url = new URL("http://baeldung.com/guidelines.txt"); + assertEquals("/guidelines.txt", url.getFile()); + } + + @Test + public void givenUrl_whenCanGetPathParams_thenCorrect() throws MalformedURLException { + URL url = new URL("http://baeldung.com/articles?topic=java&version=8"); + assertEquals("/articles", url.getPath()); + } + + @Test + public void givenUrl_whenCanGetQueryParams_thenCorrect() throws MalformedURLException { + URL url = new URL("http://baeldung.com/articles?topic=java"); + assertEquals("topic=java", url.getQuery()); + } + + @Test + public void givenUrl_whenGetsDefaultPort_thenCorrect() throws MalformedURLException { + URL url = new URL("http://baeldung.com"); + assertEquals(-1, url.getPort()); + assertEquals(80, url.getDefaultPort()); + } + + @Test + public void givenUrl_whenGetsPort_thenCorrect() throws MalformedURLException { + URL url = new URL("http://baeldung.com:8090"); + assertEquals(8090, url.getPort()); + assertEquals(80, url.getDefaultPort()); + } + + @Test + public void givenBaseUrl_whenCreatesRelativeUrl_thenCorrect() throws MalformedURLException { + URL baseUrl = new URL("http://baeldung.com"); + URL relativeUrl = new URL(baseUrl, "a-guide-to-java-sockets"); + assertEquals("http://baeldung.com/a-guide-to-java-sockets", relativeUrl.toString()); + } + + @Test + public void givenAbsoluteUrl_whenIgnoresBaseUrl_thenCorrect() throws MalformedURLException { + URL baseUrl = new URL("http://baeldung.com"); + URL relativeUrl = new URL(baseUrl, "http://baeldung.com/a-guide-to-java-sockets"); + assertEquals("http://baeldung.com/a-guide-to-java-sockets", relativeUrl.toString()); + } + + @Test + public void givenUrlComponents_whenConstructsCompleteUrl_thenCorrect() throws MalformedURLException { + String protocol = "http"; + String host = "baeldung.com"; + String file = "/guidelines.txt"; + URL url = new URL(protocol, host, file); + assertEquals("http://baeldung.com/guidelines.txt", url.toString()); + } + + @Test + public void givenUrlComponents_whenConstructsCompleteUrl_thenCorrect2() throws MalformedURLException { + String protocol = "http"; + String host = "baeldung.com"; + String file = "/articles?topic=java&version=8"; + URL url = new URL(protocol, host, file); + assertEquals("http://baeldung.com/guidelines.txt", url.toString()); + } + + @Test + public void givenUrlComponentsWithPort_whenConstructsCompleteUrl_thenCorrect() throws MalformedURLException { + String protocol = "http"; + String host = "baeldung.com"; + int port = 9000; + String file = "/guidelines.txt"; + URL url = new URL(protocol, host, port, file); + assertEquals("http://baeldung.com:9000/guidelines.txt", url.toString()); + } + +} diff --git a/core-java/src/test/java/com/baeldung/java/nio2/FileTest.java b/core-java/src/test/java/com/baeldung/java/nio2/FileTest.java new file mode 100644 index 0000000000..b6fc8d98a4 --- /dev/null +++ b/core-java/src/test/java/com/baeldung/java/nio2/FileTest.java @@ -0,0 +1,265 @@ +package com.baeldung.java.nio2; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +import java.io.IOException; +import java.nio.file.CopyOption; +import java.nio.file.DirectoryNotEmptyException; +import java.nio.file.FileAlreadyExistsException; +import java.nio.file.Files; +import java.nio.file.NoSuchFileException; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.nio.file.StandardCopyOption; +import java.util.Date; + +import org.junit.Test; + +public class FileTest { + private static final String HOME = System.getProperty("user.home"); + + // checking file or dir + @Test + public void givenExistentPath_whenConfirmsFileExists_thenCorrect() { + Path p = Paths.get(HOME); + assertTrue(Files.exists(p)); + } + + @Test + public void givenNonexistentPath_whenConfirmsFileNotExists_thenCorrect() { + Path p = Paths.get(HOME + "/inexistent_file.txt"); + assertTrue(Files.notExists(p)); + } + + @Test + public void givenExistentDirPath_whenConfirmsNotRegularFile_thenCorrect() { + Path p = Paths.get(HOME); + assertFalse(Files.isRegularFile(p)); + } + + @Test + public void givenExistentDirPath_whenConfirmsReadable_thenCorrect() { + Path p = Paths.get(HOME); + assertTrue(Files.isReadable(p)); + } + + @Test + public void givenExistentDirPath_whenConfirmsWritable_thenCorrect() { + Path p = Paths.get(HOME); + assertTrue(Files.isWritable(p)); + } + + @Test + public void givenExistentDirPath_whenConfirmsExecutable_thenCorrect() { + Path p = Paths.get(HOME); + assertTrue(Files.isExecutable(p)); + } + + @Test + public void givenSameFilePaths_whenConfirmsIsSame_thenCorrect() throws IOException { + Path p1 = Paths.get(HOME); + Path p2 = Paths.get(HOME); + assertTrue(Files.isSameFile(p1, p2)); + } + + // reading, writing and creating files + // creating file + @Test + public void givenFilePath_whenCreatesNewFile_thenCorrect() throws IOException { + String fileName = "myfile_" + new Date().getTime() + ".txt"; + Path p = Paths.get(HOME + "/" + fileName); + assertFalse(Files.exists(p)); + Files.createFile(p); + assertTrue(Files.exists(p)); + + } + + @Test + public void givenDirPath_whenCreatesNewDir_thenCorrect() throws IOException { + String dirName = "myDir_" + new Date().getTime(); + Path p = Paths.get(HOME + "/" + dirName); + assertFalse(Files.exists(p)); + Files.createDirectory(p); + assertTrue(Files.exists(p)); + assertFalse(Files.isRegularFile(p)); + assertTrue(Files.isDirectory(p)); + + } + + @Test + public void givenDirPath_whenFailsToCreateRecursively_thenCorrect() { + String dirName = "myDir_" + new Date().getTime() + "/subdir"; + Path p = Paths.get(HOME + "/" + dirName); + assertFalse(Files.exists(p)); + try { + Files.createDirectory(p); + } catch (IOException e) { + assertTrue(e instanceof NoSuchFileException); + } + } + + @Test + public void givenDirPath_whenCreatesRecursively_thenCorrect() throws IOException { + Path dir = Paths.get(HOME + "/myDir_" + new Date().getTime()); + Path subdir = dir.resolve("subdir"); + assertFalse(Files.exists(dir)); + assertFalse(Files.exists(subdir)); + Files.createDirectories(subdir); + assertTrue(Files.exists(dir)); + assertTrue(Files.exists(subdir)); + } + + @Test + public void givenFilePath_whenCreatesTempFile_thenCorrect() throws IOException { + String prefix = "log_"; + String suffix = ".txt"; + Path p = Paths.get(HOME + "/"); + p = Files.createTempFile(p, prefix, suffix); + // like log_8821081429012075286.txt + assertTrue(Files.exists(p)); + + } + + @Test + public void givenFilePath_whenCreatesTempFileWithDefaultsNaming_thenCorrect() throws IOException { + Path p = Paths.get(HOME + "/"); + p = Files.createTempFile(p, null, null); + // like 8600179353689423985.tmp + System.out.println(p); + assertTrue(Files.exists(p)); + } + + @Test + public void givenNoFilePath_whenCreatesTempFileInTempDir_thenCorrect() throws IOException { + Path p = Files.createTempFile(null, null); + // like C:\Users\new\AppData\Local\Temp\6100927974988978748.tmp + assertTrue(Files.exists(p)); + + } + + // delete file + @Test + public void givenPath_whenDeletes_thenCorrect() throws IOException { + Path p = Paths.get(HOME + "/fileToDelete.txt"); + assertFalse(Files.exists(p)); + Files.createFile(p); + assertTrue(Files.exists(p)); + Files.delete(p); + assertFalse(Files.exists(p)); + + } + + @Test + public void givenPath_whenFailsToDeleteNonEmptyDir_thenCorrect() throws IOException { + Path dir = Paths.get(HOME + "/emptyDir" + new Date().getTime()); + Files.createDirectory(dir); + assertTrue(Files.exists(dir)); + Path file = dir.resolve("file.txt"); + Files.createFile(file); + try { + Files.delete(dir); + } catch (IOException e) { + assertTrue(e instanceof DirectoryNotEmptyException); + } + assertTrue(Files.exists(dir)); + + } + + @Test + public void givenInexistentFile_whenDeleteFails_thenCorrect() throws IOException { + Path p = Paths.get(HOME + "/inexistentFile.txt"); + assertFalse(Files.exists(p)); + try { + Files.delete(p); + } catch (IOException e) { + assertTrue(e instanceof NoSuchFileException); + } + + } + + @Test + public void givenInexistentFile_whenDeleteIfExistsWorks_thenCorrect() throws IOException { + Path p = Paths.get(HOME + "/inexistentFile.txt"); + assertFalse(Files.exists(p)); + Files.deleteIfExists(p); + + } + + // copy file + @Test + public void givenFilePath_whenCopiesToNewLocation_thenCorrect() throws IOException { + Path dir1 = Paths.get(HOME + "/firstdir_" + new Date().getTime()); + Path dir2 = Paths.get(HOME + "/otherdir_" + new Date().getTime()); + Files.createDirectory(dir1); + Files.createDirectory(dir2); + Path file1 = dir1.resolve("filetocopy.txt"); + Path file2 = dir2.resolve("filetocopy.txt"); + Files.createFile(file1); + assertTrue(Files.exists(file1)); + assertFalse(Files.exists(file2)); + Files.copy(file1, file2); + assertTrue(Files.exists(file2)); + + } + + @Test + public void givenPath_whenCopyFailsDueToExistingFile_thenCorrect() throws IOException { + Path dir1 = Paths.get(HOME + "/firstdir_" + new Date().getTime()); + Path dir2 = Paths.get(HOME + "/otherdir_" + new Date().getTime()); + Files.createDirectory(dir1); + Files.createDirectory(dir2); + Path file1 = dir1.resolve("filetocopy.txt"); + Path file2 = dir2.resolve("filetocopy.txt"); + Files.createFile(file1); + Files.createFile(file2); + assertTrue(Files.exists(file1)); + assertTrue(Files.exists(file2)); + try { + Files.copy(file1, file2); + } catch (IOException e) { + assertTrue(e instanceof FileAlreadyExistsException); + } + Files.copy(file1, file2, StandardCopyOption.REPLACE_EXISTING); + } + + // moving files + @Test + public void givenFilePath_whenMovesToNewLocation_thenCorrect() throws IOException { + Path dir1 = Paths.get(HOME + "/firstdir_" + new Date().getTime()); + Path dir2 = Paths.get(HOME + "/otherdir_" + new Date().getTime()); + Files.createDirectory(dir1); + Files.createDirectory(dir2); + Path file1 = dir1.resolve("filetocopy.txt"); + Path file2 = dir2.resolve("filetocopy.txt"); + Files.createFile(file1); + assertTrue(Files.exists(file1)); + assertFalse(Files.exists(file2)); + Files.move(file1, file2); + assertTrue(Files.exists(file2)); + assertFalse(Files.exists(file1)); + + } + + @Test + public void givenFilePath_whenMoveFailsDueToExistingFile_thenCorrect() throws IOException { + Path dir1 = Paths.get(HOME + "/firstdir_" + new Date().getTime()); + Path dir2 = Paths.get(HOME + "/otherdir_" + new Date().getTime()); + Files.createDirectory(dir1); + Files.createDirectory(dir2); + Path file1 = dir1.resolve("filetocopy.txt"); + Path file2 = dir2.resolve("filetocopy.txt"); + Files.createFile(file1); + Files.createFile(file2); + assertTrue(Files.exists(file1)); + assertTrue(Files.exists(file2)); + try { + Files.move(file1, file2); + } catch (IOException e) { + assertTrue(e instanceof FileAlreadyExistsException); + } + Files.move(file1, file2, StandardCopyOption.REPLACE_EXISTING); + assertTrue(Files.exists(file2)); + assertFalse(Files.exists(file1)); + } +} diff --git a/core-java/src/test/java/com/baeldung/java/nio2/PathTest.java b/core-java/src/test/java/com/baeldung/java/nio2/PathTest.java new file mode 100644 index 0000000000..c0cb45341e --- /dev/null +++ b/core-java/src/test/java/com/baeldung/java/nio2/PathTest.java @@ -0,0 +1,197 @@ +package com.baeldung.java.nio2; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +import java.io.IOException; +import java.net.URI; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.Date; + +import org.junit.Test; + +public class PathTest { + + private static final String HOME = System.getProperty("user.home"); + + // creating a path + @Test + public void givenPathString_whenCreatesPathObject_thenCorrect() { + Path p = Paths.get("/articles/baeldung"); + assertEquals("\\articles\\baeldung", p.toString()); + + } + + @Test + public void givenPathParts_whenCreatesPathObject_thenCorrect() { + Path p = Paths.get("/articles", "baeldung"); + assertEquals("\\articles\\baeldung", p.toString()); + + } + + // retrieving path info + @Test + public void givenPath_whenRetrievesFileName_thenCorrect() { + Path p = Paths.get("/articles/baeldung/logs"); + assertEquals("logs", p.getFileName().toString()); + } + + @Test + public void givenPath_whenRetrievesNameByIndex_thenCorrect() { + Path p = Paths.get("/articles/baeldung/logs"); + assertEquals("articles", p.getName(0).toString()); + assertEquals("baeldung", p.getName(1).toString()); + assertEquals("logs", p.getName(2).toString()); + } + + @Test + public void givenPath_whenCountsParts_thenCorrect() { + Path p = Paths.get("/articles/baeldung/logs"); + assertEquals(3, p.getNameCount()); + } + + @Test + public void givenPath_whenCanRetrieveSubsequenceByIndex_thenCorrect() { + Path p = Paths.get("/articles/baeldung/logs"); + assertEquals("articles", p.subpath(0, 1).toString()); + assertEquals("articles\\baeldung", p.subpath(0, 2).toString()); + assertEquals("articles\\baeldung\\logs", p.subpath(0, 3).toString()); + assertEquals("baeldung", p.subpath(1, 2).toString()); + assertEquals("baeldung\\logs", p.subpath(1, 3).toString()); + assertEquals("logs", p.subpath(2, 3).toString()); + } + + @Test + public void givenPath_whenRetrievesParent_thenCorrect() { + Path p1 = Paths.get("/articles/baeldung/logs"); + Path p2 = Paths.get("/articles/baeldung"); + Path p3 = Paths.get("/articles"); + Path p4 = Paths.get("/"); + + assertEquals("\\articles\\baeldung", p1.getParent().toString()); + assertEquals("\\articles", p2.getParent().toString()); + assertEquals("\\", p3.getParent().toString()); + assertEquals(null, p4.getParent()); + } + + @Test + public void givenPath_whenRetrievesRoot_thenCorrect() { + Path p1 = Paths.get("/articles/baeldung/logs"); + Path p2 = Paths.get("c:/articles/baeldung/logs"); + + assertEquals("\\", p1.getRoot().toString()); + assertEquals("c:\\", p2.getRoot().toString()); + } + + // removing redundancies from path + @Test + public void givenPath_whenRemovesRedundancies_thenCorrect1() { + Path p = Paths.get("/home/./baeldung/articles"); + p = p.normalize(); + assertEquals("\\home\\baeldung\\articles", p.toString()); + } + + @Test + public void givenPath_whenRemovesRedundancies_thenCorrect2() { + Path p = Paths.get("/home/baeldung/../articles"); + p = p.normalize(); + assertEquals("\\home\\articles", p.toString()); + } + + // converting a path + @Test + public void givenPath_whenConvertsToBrowseablePath_thenCorrect() { + Path p = Paths.get("/home/baeldung/articles.html"); + URI uri = p.toUri(); + assertEquals("file:///E:/home/baeldung/articles.html", uri.toString()); + } + + @Test + public void givenPath_whenConvertsToAbsolutePath_thenCorrect() { + Path p = Paths.get("/home/baeldung/articles.html"); + assertEquals("E:\\home\\baeldung\\articles.html", p.toAbsolutePath().toString()); + } + + @Test + public void givenAbsolutePath_whenRetainsAsAbsolute_thenCorrect() { + Path p = Paths.get("E:\\home\\baeldung\\articles.html"); + assertEquals("E:\\home\\baeldung\\articles.html", p.toAbsolutePath().toString()); + } + + @Test + public void givenExistingPath_whenGetsRealPathToFile_thenCorrect() throws IOException { + Path p = Paths.get(HOME); + assertEquals(HOME, p.toRealPath().toString()); + } + + @Test + public void givenInExistentPath_whenFailsToConvert_thenCorrect() { + Path p = Paths.get("E:\\home\\baeldung\\articles.html"); + try { + p.toRealPath(); + } catch (IOException e) { + assertTrue(true); + } + } + + // joining paths + @Test + public void givenTwoPaths_whenJoinsAndResolves_thenCorrect() throws IOException { + Path p = Paths.get("/baeldung/articles"); + assertEquals("\\baeldung\\articles\\java", p.resolve("java").toString()); + } + + @Test + public void givenAbsolutePath_whenResolutionRetainsIt_thenCorrect() throws IOException { + Path p = Paths.get("/baeldung/articles"); + assertEquals("C:\\baeldung\\articles\\java", p.resolve("C:\\baeldung\\articles\\java").toString()); + } + + @Test + public void givenPathWithRoot_whenResolutionRetainsIt_thenCorrect2() throws IOException { + Path p = Paths.get("/baeldung/articles"); + assertEquals("\\java", p.resolve("/java").toString()); + } + + // creating a path between 2 paths + @Test + public void givenSiblingPaths_whenCreatesPathToOther_thenCorrect() throws IOException { + Path p1 = Paths.get("articles"); + Path p2 = Paths.get("authors"); + assertEquals("..\\authors", p1.relativize(p2).toString()); + assertEquals("..\\articles", p2.relativize(p1).toString()); + } + + @Test + public void givenNonSiblingPaths_whenCreatesPathToOther_thenCorrect() throws IOException { + Path p1 = Paths.get("/baeldung"); + Path p2 = Paths.get("/baeldung/authors/articles"); + assertEquals("authors\\articles", p1.relativize(p2).toString()); + assertEquals("..\\..", p2.relativize(p1).toString()); + } + + // comparing 2 paths + @Test + public void givenTwoPaths_whenTestsEquality_thenCorrect() throws IOException { + Path p1 = Paths.get("/baeldung/articles"); + Path p2 = Paths.get("/baeldung/articles"); + Path p3 = Paths.get("/baeldung/authors"); + + assertTrue(p1.equals(p2)); + assertFalse(p1.equals(p3)); + } + + @Test + public void givenPath_whenInspectsStart_thenCorrect() { + Path p1 = Paths.get("/baeldung/articles"); + assertTrue(p1.startsWith("/baeldung")); + } + + @Test + public void givenPath_whenInspectsEnd_thenCorrect() { + Path p1 = Paths.get("/baeldung/articles"); + assertTrue(p1.endsWith("articles")); + } +} From 03e97ffe0eadf2bafb055e23c52cee58bdb3e249 Mon Sep 17 00:00:00 2001 From: michal_aibin Date: Sun, 30 Oct 2016 10:45:20 +0100 Subject: [PATCH 161/215] Import All Eclipse modules --- spring-all/src/main/webapp/WEB-INF/web.xml | 2 +- spring-freemarker/pom.xml | 2 +- spring-freemarker/src/main/webapp/WEB-INF/web.xml | 12 ++++++++++++ .../resources/{jpaConfig.xml => persistence.xml} | 0 .../src/main/resources/webSecurityConfig.xml | 3 ++- 5 files changed, 16 insertions(+), 3 deletions(-) create mode 100644 spring-freemarker/src/main/webapp/WEB-INF/web.xml rename spring-jpa/src/main/resources/{jpaConfig.xml => persistence.xml} (100%) diff --git a/spring-all/src/main/webapp/WEB-INF/web.xml b/spring-all/src/main/webapp/WEB-INF/web.xml index 4e0e7a231c..3ac9e9ed8c 100644 --- a/spring-all/src/main/webapp/WEB-INF/web.xml +++ b/spring-all/src/main/webapp/WEB-INF/web.xml @@ -9,11 +9,11 @@ org.springframework.web.servlet.DispatcherServlet - 1 contextConfigLocation /WEB-INF/test-mvc.xml + 1 diff --git a/spring-freemarker/pom.xml b/spring-freemarker/pom.xml index 9bbdbcecfb..51df4e6647 100644 --- a/spring-freemarker/pom.xml +++ b/spring-freemarker/pom.xml @@ -77,7 +77,7 @@ ${jdk.version} ${jdk.version} - true + false diff --git a/spring-freemarker/src/main/webapp/WEB-INF/web.xml b/spring-freemarker/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 0000000000..a498aef4ad --- /dev/null +++ b/spring-freemarker/src/main/webapp/WEB-INF/web.xml @@ -0,0 +1,12 @@ + + + spring4-freemarker-example + + index.html + index.htm + index.jsp + default.html + default.htm + default.jsp + + \ No newline at end of file diff --git a/spring-jpa/src/main/resources/jpaConfig.xml b/spring-jpa/src/main/resources/persistence.xml similarity index 100% rename from spring-jpa/src/main/resources/jpaConfig.xml rename to spring-jpa/src/main/resources/persistence.xml diff --git a/spring-mvc-no-xml/src/main/resources/webSecurityConfig.xml b/spring-mvc-no-xml/src/main/resources/webSecurityConfig.xml index 88af78dabc..b9e15c7bae 100644 --- a/spring-mvc-no-xml/src/main/resources/webSecurityConfig.xml +++ b/spring-mvc-no-xml/src/main/resources/webSecurityConfig.xml @@ -5,7 +5,8 @@ http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd" > - + + From 1110c53d813a81e0c132fe4c4438b274ed613ca7 Mon Sep 17 00:00:00 2001 From: DOHA Date: Sun, 30 Oct 2016 12:18:40 +0200 Subject: [PATCH 162/215] cleanup --- .../baeldung/java/networking/udp/UDPTest.java | 33 ------- .../nio2/{FileTest.java => FileUnitTest.java} | 93 +++++++++---------- 2 files changed, 46 insertions(+), 80 deletions(-) delete mode 100644 core-java/src/main/java/com/baeldung/java/networking/udp/UDPTest.java rename core-java/src/test/java/com/baeldung/java/nio2/{FileTest.java => FileUnitTest.java} (71%) diff --git a/core-java/src/main/java/com/baeldung/java/networking/udp/UDPTest.java b/core-java/src/main/java/com/baeldung/java/networking/udp/UDPTest.java deleted file mode 100644 index ee93936230..0000000000 --- a/core-java/src/main/java/com/baeldung/java/networking/udp/UDPTest.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.baeldung.java.networking.udp; - -import static org.junit.Assert.*; - -import java.io.IOException; - -import org.junit.After; -import org.junit.Before; -import org.junit.Test; - -public class UDPTest { - EchoClient client = null; - - @Before - public void setup() throws IOException { - new EchoServer().start(); - client = new EchoClient(); - } - - @Test - public void whenCanSendAndReceivePacket_thenCorrect1() { - String echo = client.sendEcho("hello server"); - assertEquals("hello server", echo); - echo = client.sendEcho("server is working"); - assertFalse(echo.equals("hello server")); - } - - @After - public void tearDown() { - client.sendEcho("end"); - client.close(); - } -} diff --git a/core-java/src/test/java/com/baeldung/java/nio2/FileTest.java b/core-java/src/test/java/com/baeldung/java/nio2/FileUnitTest.java similarity index 71% rename from core-java/src/test/java/com/baeldung/java/nio2/FileTest.java rename to core-java/src/test/java/com/baeldung/java/nio2/FileUnitTest.java index b6fc8d98a4..30e531f13a 100644 --- a/core-java/src/test/java/com/baeldung/java/nio2/FileTest.java +++ b/core-java/src/test/java/com/baeldung/java/nio2/FileUnitTest.java @@ -4,7 +4,6 @@ import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import java.io.IOException; -import java.nio.file.CopyOption; import java.nio.file.DirectoryNotEmptyException; import java.nio.file.FileAlreadyExistsException; import java.nio.file.Files; @@ -16,50 +15,50 @@ import java.util.Date; import org.junit.Test; -public class FileTest { +public class FileUnitTest { private static final String HOME = System.getProperty("user.home"); // checking file or dir @Test public void givenExistentPath_whenConfirmsFileExists_thenCorrect() { - Path p = Paths.get(HOME); + final Path p = Paths.get(HOME); assertTrue(Files.exists(p)); } @Test public void givenNonexistentPath_whenConfirmsFileNotExists_thenCorrect() { - Path p = Paths.get(HOME + "/inexistent_file.txt"); + final Path p = Paths.get(HOME + "/inexistent_file.txt"); assertTrue(Files.notExists(p)); } @Test public void givenExistentDirPath_whenConfirmsNotRegularFile_thenCorrect() { - Path p = Paths.get(HOME); + final Path p = Paths.get(HOME); assertFalse(Files.isRegularFile(p)); } @Test public void givenExistentDirPath_whenConfirmsReadable_thenCorrect() { - Path p = Paths.get(HOME); + final Path p = Paths.get(HOME); assertTrue(Files.isReadable(p)); } @Test public void givenExistentDirPath_whenConfirmsWritable_thenCorrect() { - Path p = Paths.get(HOME); + final Path p = Paths.get(HOME); assertTrue(Files.isWritable(p)); } @Test public void givenExistentDirPath_whenConfirmsExecutable_thenCorrect() { - Path p = Paths.get(HOME); + final Path p = Paths.get(HOME); assertTrue(Files.isExecutable(p)); } @Test public void givenSameFilePaths_whenConfirmsIsSame_thenCorrect() throws IOException { - Path p1 = Paths.get(HOME); - Path p2 = Paths.get(HOME); + final Path p1 = Paths.get(HOME); + final Path p2 = Paths.get(HOME); assertTrue(Files.isSameFile(p1, p2)); } @@ -67,8 +66,8 @@ public class FileTest { // creating file @Test public void givenFilePath_whenCreatesNewFile_thenCorrect() throws IOException { - String fileName = "myfile_" + new Date().getTime() + ".txt"; - Path p = Paths.get(HOME + "/" + fileName); + final String fileName = "myfile_" + new Date().getTime() + ".txt"; + final Path p = Paths.get(HOME + "/" + fileName); assertFalse(Files.exists(p)); Files.createFile(p); assertTrue(Files.exists(p)); @@ -77,8 +76,8 @@ public class FileTest { @Test public void givenDirPath_whenCreatesNewDir_thenCorrect() throws IOException { - String dirName = "myDir_" + new Date().getTime(); - Path p = Paths.get(HOME + "/" + dirName); + final String dirName = "myDir_" + new Date().getTime(); + final Path p = Paths.get(HOME + "/" + dirName); assertFalse(Files.exists(p)); Files.createDirectory(p); assertTrue(Files.exists(p)); @@ -89,20 +88,20 @@ public class FileTest { @Test public void givenDirPath_whenFailsToCreateRecursively_thenCorrect() { - String dirName = "myDir_" + new Date().getTime() + "/subdir"; - Path p = Paths.get(HOME + "/" + dirName); + final String dirName = "myDir_" + new Date().getTime() + "/subdir"; + final Path p = Paths.get(HOME + "/" + dirName); assertFalse(Files.exists(p)); try { Files.createDirectory(p); - } catch (IOException e) { + } catch (final IOException e) { assertTrue(e instanceof NoSuchFileException); } } @Test public void givenDirPath_whenCreatesRecursively_thenCorrect() throws IOException { - Path dir = Paths.get(HOME + "/myDir_" + new Date().getTime()); - Path subdir = dir.resolve("subdir"); + final Path dir = Paths.get(HOME + "/myDir_" + new Date().getTime()); + final Path subdir = dir.resolve("subdir"); assertFalse(Files.exists(dir)); assertFalse(Files.exists(subdir)); Files.createDirectories(subdir); @@ -112,8 +111,8 @@ public class FileTest { @Test public void givenFilePath_whenCreatesTempFile_thenCorrect() throws IOException { - String prefix = "log_"; - String suffix = ".txt"; + final String prefix = "log_"; + final String suffix = ".txt"; Path p = Paths.get(HOME + "/"); p = Files.createTempFile(p, prefix, suffix); // like log_8821081429012075286.txt @@ -132,7 +131,7 @@ public class FileTest { @Test public void givenNoFilePath_whenCreatesTempFileInTempDir_thenCorrect() throws IOException { - Path p = Files.createTempFile(null, null); + final Path p = Files.createTempFile(null, null); // like C:\Users\new\AppData\Local\Temp\6100927974988978748.tmp assertTrue(Files.exists(p)); @@ -141,7 +140,7 @@ public class FileTest { // delete file @Test public void givenPath_whenDeletes_thenCorrect() throws IOException { - Path p = Paths.get(HOME + "/fileToDelete.txt"); + final Path p = Paths.get(HOME + "/fileToDelete.txt"); assertFalse(Files.exists(p)); Files.createFile(p); assertTrue(Files.exists(p)); @@ -152,14 +151,14 @@ public class FileTest { @Test public void givenPath_whenFailsToDeleteNonEmptyDir_thenCorrect() throws IOException { - Path dir = Paths.get(HOME + "/emptyDir" + new Date().getTime()); + final Path dir = Paths.get(HOME + "/emptyDir" + new Date().getTime()); Files.createDirectory(dir); assertTrue(Files.exists(dir)); - Path file = dir.resolve("file.txt"); + final Path file = dir.resolve("file.txt"); Files.createFile(file); try { Files.delete(dir); - } catch (IOException e) { + } catch (final IOException e) { assertTrue(e instanceof DirectoryNotEmptyException); } assertTrue(Files.exists(dir)); @@ -168,11 +167,11 @@ public class FileTest { @Test public void givenInexistentFile_whenDeleteFails_thenCorrect() throws IOException { - Path p = Paths.get(HOME + "/inexistentFile.txt"); + final Path p = Paths.get(HOME + "/inexistentFile.txt"); assertFalse(Files.exists(p)); try { Files.delete(p); - } catch (IOException e) { + } catch (final IOException e) { assertTrue(e instanceof NoSuchFileException); } @@ -180,7 +179,7 @@ public class FileTest { @Test public void givenInexistentFile_whenDeleteIfExistsWorks_thenCorrect() throws IOException { - Path p = Paths.get(HOME + "/inexistentFile.txt"); + final Path p = Paths.get(HOME + "/inexistentFile.txt"); assertFalse(Files.exists(p)); Files.deleteIfExists(p); @@ -189,12 +188,12 @@ public class FileTest { // copy file @Test public void givenFilePath_whenCopiesToNewLocation_thenCorrect() throws IOException { - Path dir1 = Paths.get(HOME + "/firstdir_" + new Date().getTime()); - Path dir2 = Paths.get(HOME + "/otherdir_" + new Date().getTime()); + final Path dir1 = Paths.get(HOME + "/firstdir_" + new Date().getTime()); + final Path dir2 = Paths.get(HOME + "/otherdir_" + new Date().getTime()); Files.createDirectory(dir1); Files.createDirectory(dir2); - Path file1 = dir1.resolve("filetocopy.txt"); - Path file2 = dir2.resolve("filetocopy.txt"); + final Path file1 = dir1.resolve("filetocopy.txt"); + final Path file2 = dir2.resolve("filetocopy.txt"); Files.createFile(file1); assertTrue(Files.exists(file1)); assertFalse(Files.exists(file2)); @@ -205,19 +204,19 @@ public class FileTest { @Test public void givenPath_whenCopyFailsDueToExistingFile_thenCorrect() throws IOException { - Path dir1 = Paths.get(HOME + "/firstdir_" + new Date().getTime()); - Path dir2 = Paths.get(HOME + "/otherdir_" + new Date().getTime()); + final Path dir1 = Paths.get(HOME + "/firstdir_" + new Date().getTime()); + final Path dir2 = Paths.get(HOME + "/otherdir_" + new Date().getTime()); Files.createDirectory(dir1); Files.createDirectory(dir2); - Path file1 = dir1.resolve("filetocopy.txt"); - Path file2 = dir2.resolve("filetocopy.txt"); + final Path file1 = dir1.resolve("filetocopy.txt"); + final Path file2 = dir2.resolve("filetocopy.txt"); Files.createFile(file1); Files.createFile(file2); assertTrue(Files.exists(file1)); assertTrue(Files.exists(file2)); try { Files.copy(file1, file2); - } catch (IOException e) { + } catch (final IOException e) { assertTrue(e instanceof FileAlreadyExistsException); } Files.copy(file1, file2, StandardCopyOption.REPLACE_EXISTING); @@ -226,12 +225,12 @@ public class FileTest { // moving files @Test public void givenFilePath_whenMovesToNewLocation_thenCorrect() throws IOException { - Path dir1 = Paths.get(HOME + "/firstdir_" + new Date().getTime()); - Path dir2 = Paths.get(HOME + "/otherdir_" + new Date().getTime()); + final Path dir1 = Paths.get(HOME + "/firstdir_" + new Date().getTime()); + final Path dir2 = Paths.get(HOME + "/otherdir_" + new Date().getTime()); Files.createDirectory(dir1); Files.createDirectory(dir2); - Path file1 = dir1.resolve("filetocopy.txt"); - Path file2 = dir2.resolve("filetocopy.txt"); + final Path file1 = dir1.resolve("filetocopy.txt"); + final Path file2 = dir2.resolve("filetocopy.txt"); Files.createFile(file1); assertTrue(Files.exists(file1)); assertFalse(Files.exists(file2)); @@ -243,19 +242,19 @@ public class FileTest { @Test public void givenFilePath_whenMoveFailsDueToExistingFile_thenCorrect() throws IOException { - Path dir1 = Paths.get(HOME + "/firstdir_" + new Date().getTime()); - Path dir2 = Paths.get(HOME + "/otherdir_" + new Date().getTime()); + final Path dir1 = Paths.get(HOME + "/firstdir_" + new Date().getTime()); + final Path dir2 = Paths.get(HOME + "/otherdir_" + new Date().getTime()); Files.createDirectory(dir1); Files.createDirectory(dir2); - Path file1 = dir1.resolve("filetocopy.txt"); - Path file2 = dir2.resolve("filetocopy.txt"); + final Path file1 = dir1.resolve("filetocopy.txt"); + final Path file2 = dir2.resolve("filetocopy.txt"); Files.createFile(file1); Files.createFile(file2); assertTrue(Files.exists(file1)); assertTrue(Files.exists(file2)); try { Files.move(file1, file2); - } catch (IOException e) { + } catch (final IOException e) { assertTrue(e instanceof FileAlreadyExistsException); } Files.move(file1, file2, StandardCopyOption.REPLACE_EXISTING); From 2fcf097d88cb077736fbd09e77cf58136f088d40 Mon Sep 17 00:00:00 2001 From: DOHA Date: Sun, 30 Oct 2016 13:12:08 +0200 Subject: [PATCH 163/215] cleanup --- .../{PathTest.java => PathManualTest.java} | 65 +++++++++---------- 1 file changed, 32 insertions(+), 33 deletions(-) rename core-java/src/test/java/com/baeldung/java/nio2/{PathTest.java => PathManualTest.java} (74%) diff --git a/core-java/src/test/java/com/baeldung/java/nio2/PathTest.java b/core-java/src/test/java/com/baeldung/java/nio2/PathManualTest.java similarity index 74% rename from core-java/src/test/java/com/baeldung/java/nio2/PathTest.java rename to core-java/src/test/java/com/baeldung/java/nio2/PathManualTest.java index c0cb45341e..83f8c64ff9 100644 --- a/core-java/src/test/java/com/baeldung/java/nio2/PathTest.java +++ b/core-java/src/test/java/com/baeldung/java/nio2/PathManualTest.java @@ -8,25 +8,24 @@ import java.io.IOException; import java.net.URI; import java.nio.file.Path; import java.nio.file.Paths; -import java.util.Date; import org.junit.Test; -public class PathTest { +public class PathManualTest { private static final String HOME = System.getProperty("user.home"); // creating a path @Test public void givenPathString_whenCreatesPathObject_thenCorrect() { - Path p = Paths.get("/articles/baeldung"); + final Path p = Paths.get("/articles/baeldung"); assertEquals("\\articles\\baeldung", p.toString()); } @Test public void givenPathParts_whenCreatesPathObject_thenCorrect() { - Path p = Paths.get("/articles", "baeldung"); + final Path p = Paths.get("/articles", "baeldung"); assertEquals("\\articles\\baeldung", p.toString()); } @@ -34,13 +33,13 @@ public class PathTest { // retrieving path info @Test public void givenPath_whenRetrievesFileName_thenCorrect() { - Path p = Paths.get("/articles/baeldung/logs"); + final Path p = Paths.get("/articles/baeldung/logs"); assertEquals("logs", p.getFileName().toString()); } @Test public void givenPath_whenRetrievesNameByIndex_thenCorrect() { - Path p = Paths.get("/articles/baeldung/logs"); + final Path p = Paths.get("/articles/baeldung/logs"); assertEquals("articles", p.getName(0).toString()); assertEquals("baeldung", p.getName(1).toString()); assertEquals("logs", p.getName(2).toString()); @@ -48,13 +47,13 @@ public class PathTest { @Test public void givenPath_whenCountsParts_thenCorrect() { - Path p = Paths.get("/articles/baeldung/logs"); + final Path p = Paths.get("/articles/baeldung/logs"); assertEquals(3, p.getNameCount()); } @Test public void givenPath_whenCanRetrieveSubsequenceByIndex_thenCorrect() { - Path p = Paths.get("/articles/baeldung/logs"); + final Path p = Paths.get("/articles/baeldung/logs"); assertEquals("articles", p.subpath(0, 1).toString()); assertEquals("articles\\baeldung", p.subpath(0, 2).toString()); assertEquals("articles\\baeldung\\logs", p.subpath(0, 3).toString()); @@ -65,10 +64,10 @@ public class PathTest { @Test public void givenPath_whenRetrievesParent_thenCorrect() { - Path p1 = Paths.get("/articles/baeldung/logs"); - Path p2 = Paths.get("/articles/baeldung"); - Path p3 = Paths.get("/articles"); - Path p4 = Paths.get("/"); + final Path p1 = Paths.get("/articles/baeldung/logs"); + final Path p2 = Paths.get("/articles/baeldung"); + final Path p3 = Paths.get("/articles"); + final Path p4 = Paths.get("/"); assertEquals("\\articles\\baeldung", p1.getParent().toString()); assertEquals("\\articles", p2.getParent().toString()); @@ -78,8 +77,8 @@ public class PathTest { @Test public void givenPath_whenRetrievesRoot_thenCorrect() { - Path p1 = Paths.get("/articles/baeldung/logs"); - Path p2 = Paths.get("c:/articles/baeldung/logs"); + final Path p1 = Paths.get("/articles/baeldung/logs"); + final Path p2 = Paths.get("c:/articles/baeldung/logs"); assertEquals("\\", p1.getRoot().toString()); assertEquals("c:\\", p2.getRoot().toString()); @@ -103,35 +102,35 @@ public class PathTest { // converting a path @Test public void givenPath_whenConvertsToBrowseablePath_thenCorrect() { - Path p = Paths.get("/home/baeldung/articles.html"); - URI uri = p.toUri(); + final Path p = Paths.get("/home/baeldung/articles.html"); + final URI uri = p.toUri(); assertEquals("file:///E:/home/baeldung/articles.html", uri.toString()); } @Test public void givenPath_whenConvertsToAbsolutePath_thenCorrect() { - Path p = Paths.get("/home/baeldung/articles.html"); + final Path p = Paths.get("/home/baeldung/articles.html"); assertEquals("E:\\home\\baeldung\\articles.html", p.toAbsolutePath().toString()); } @Test public void givenAbsolutePath_whenRetainsAsAbsolute_thenCorrect() { - Path p = Paths.get("E:\\home\\baeldung\\articles.html"); + final Path p = Paths.get("E:\\home\\baeldung\\articles.html"); assertEquals("E:\\home\\baeldung\\articles.html", p.toAbsolutePath().toString()); } @Test public void givenExistingPath_whenGetsRealPathToFile_thenCorrect() throws IOException { - Path p = Paths.get(HOME); + final Path p = Paths.get(HOME); assertEquals(HOME, p.toRealPath().toString()); } @Test public void givenInExistentPath_whenFailsToConvert_thenCorrect() { - Path p = Paths.get("E:\\home\\baeldung\\articles.html"); + final Path p = Paths.get("E:\\home\\baeldung\\articles.html"); try { p.toRealPath(); - } catch (IOException e) { + } catch (final IOException e) { assertTrue(true); } } @@ -139,35 +138,35 @@ public class PathTest { // joining paths @Test public void givenTwoPaths_whenJoinsAndResolves_thenCorrect() throws IOException { - Path p = Paths.get("/baeldung/articles"); + final Path p = Paths.get("/baeldung/articles"); assertEquals("\\baeldung\\articles\\java", p.resolve("java").toString()); } @Test public void givenAbsolutePath_whenResolutionRetainsIt_thenCorrect() throws IOException { - Path p = Paths.get("/baeldung/articles"); + final Path p = Paths.get("/baeldung/articles"); assertEquals("C:\\baeldung\\articles\\java", p.resolve("C:\\baeldung\\articles\\java").toString()); } @Test public void givenPathWithRoot_whenResolutionRetainsIt_thenCorrect2() throws IOException { - Path p = Paths.get("/baeldung/articles"); + final Path p = Paths.get("/baeldung/articles"); assertEquals("\\java", p.resolve("/java").toString()); } // creating a path between 2 paths @Test public void givenSiblingPaths_whenCreatesPathToOther_thenCorrect() throws IOException { - Path p1 = Paths.get("articles"); - Path p2 = Paths.get("authors"); + final Path p1 = Paths.get("articles"); + final Path p2 = Paths.get("authors"); assertEquals("..\\authors", p1.relativize(p2).toString()); assertEquals("..\\articles", p2.relativize(p1).toString()); } @Test public void givenNonSiblingPaths_whenCreatesPathToOther_thenCorrect() throws IOException { - Path p1 = Paths.get("/baeldung"); - Path p2 = Paths.get("/baeldung/authors/articles"); + final Path p1 = Paths.get("/baeldung"); + final Path p2 = Paths.get("/baeldung/authors/articles"); assertEquals("authors\\articles", p1.relativize(p2).toString()); assertEquals("..\\..", p2.relativize(p1).toString()); } @@ -175,9 +174,9 @@ public class PathTest { // comparing 2 paths @Test public void givenTwoPaths_whenTestsEquality_thenCorrect() throws IOException { - Path p1 = Paths.get("/baeldung/articles"); - Path p2 = Paths.get("/baeldung/articles"); - Path p3 = Paths.get("/baeldung/authors"); + final Path p1 = Paths.get("/baeldung/articles"); + final Path p2 = Paths.get("/baeldung/articles"); + final Path p3 = Paths.get("/baeldung/authors"); assertTrue(p1.equals(p2)); assertFalse(p1.equals(p3)); @@ -185,13 +184,13 @@ public class PathTest { @Test public void givenPath_whenInspectsStart_thenCorrect() { - Path p1 = Paths.get("/baeldung/articles"); + final Path p1 = Paths.get("/baeldung/articles"); assertTrue(p1.startsWith("/baeldung")); } @Test public void givenPath_whenInspectsEnd_thenCorrect() { - Path p1 = Paths.get("/baeldung/articles"); + final Path p1 = Paths.get("/baeldung/articles"); assertTrue(p1.endsWith("articles")); } } From b2ef95f78d66efe9838d6697b7d6cce8404487a8 Mon Sep 17 00:00:00 2001 From: DOHA Date: Sun, 30 Oct 2016 18:12:39 +0200 Subject: [PATCH 164/215] cleanup --- .../baeldung/java/networking/url/UrlTest.java | 104 ------------------ 1 file changed, 104 deletions(-) delete mode 100644 core-java/src/test/java/com/baeldung/java/networking/url/UrlTest.java diff --git a/core-java/src/test/java/com/baeldung/java/networking/url/UrlTest.java b/core-java/src/test/java/com/baeldung/java/networking/url/UrlTest.java deleted file mode 100644 index 14444f0145..0000000000 --- a/core-java/src/test/java/com/baeldung/java/networking/url/UrlTest.java +++ /dev/null @@ -1,104 +0,0 @@ -package com.baeldung.java.networking.url; - -import static org.junit.Assert.assertEquals; - -import java.net.MalformedURLException; -import java.net.URL; - -import org.junit.Test; - -public class UrlTest { - - @Test - public void givenUrl_whenCanIdentifyProtocol_thenCorrect() throws MalformedURLException { - URL url = new URL("http://baeldung.com"); - assertEquals("http", url.getProtocol()); - } - - @Test - public void givenUrl_whenCanGetHost_thenCorrect() throws MalformedURLException { - URL url = new URL("http://baeldung.com"); - assertEquals("baeldung.com", url.getHost()); - } - - @Test - public void givenUrl_whenCanGetFileName_thenCorrect2() throws MalformedURLException { - URL url = new URL("http://baeldung.com/articles?topic=java&version=8"); - assertEquals("/articles?topic=java&version=8", url.getFile()); - } - - @Test - public void givenUrl_whenCanGetFileName_thenCorrect1() throws MalformedURLException { - URL url = new URL("http://baeldung.com/guidelines.txt"); - assertEquals("/guidelines.txt", url.getFile()); - } - - @Test - public void givenUrl_whenCanGetPathParams_thenCorrect() throws MalformedURLException { - URL url = new URL("http://baeldung.com/articles?topic=java&version=8"); - assertEquals("/articles", url.getPath()); - } - - @Test - public void givenUrl_whenCanGetQueryParams_thenCorrect() throws MalformedURLException { - URL url = new URL("http://baeldung.com/articles?topic=java"); - assertEquals("topic=java", url.getQuery()); - } - - @Test - public void givenUrl_whenGetsDefaultPort_thenCorrect() throws MalformedURLException { - URL url = new URL("http://baeldung.com"); - assertEquals(-1, url.getPort()); - assertEquals(80, url.getDefaultPort()); - } - - @Test - public void givenUrl_whenGetsPort_thenCorrect() throws MalformedURLException { - URL url = new URL("http://baeldung.com:8090"); - assertEquals(8090, url.getPort()); - assertEquals(80, url.getDefaultPort()); - } - - @Test - public void givenBaseUrl_whenCreatesRelativeUrl_thenCorrect() throws MalformedURLException { - URL baseUrl = new URL("http://baeldung.com"); - URL relativeUrl = new URL(baseUrl, "a-guide-to-java-sockets"); - assertEquals("http://baeldung.com/a-guide-to-java-sockets", relativeUrl.toString()); - } - - @Test - public void givenAbsoluteUrl_whenIgnoresBaseUrl_thenCorrect() throws MalformedURLException { - URL baseUrl = new URL("http://baeldung.com"); - URL relativeUrl = new URL(baseUrl, "http://baeldung.com/a-guide-to-java-sockets"); - assertEquals("http://baeldung.com/a-guide-to-java-sockets", relativeUrl.toString()); - } - - @Test - public void givenUrlComponents_whenConstructsCompleteUrl_thenCorrect() throws MalformedURLException { - String protocol = "http"; - String host = "baeldung.com"; - String file = "/guidelines.txt"; - URL url = new URL(protocol, host, file); - assertEquals("http://baeldung.com/guidelines.txt", url.toString()); - } - - @Test - public void givenUrlComponents_whenConstructsCompleteUrl_thenCorrect2() throws MalformedURLException { - String protocol = "http"; - String host = "baeldung.com"; - String file = "/articles?topic=java&version=8"; - URL url = new URL(protocol, host, file); - assertEquals("http://baeldung.com/guidelines.txt", url.toString()); - } - - @Test - public void givenUrlComponentsWithPort_whenConstructsCompleteUrl_thenCorrect() throws MalformedURLException { - String protocol = "http"; - String host = "baeldung.com"; - int port = 9000; - String file = "/guidelines.txt"; - URL url = new URL(protocol, host, port, file); - assertEquals("http://baeldung.com:9000/guidelines.txt", url.toString()); - } - -} From c0ed2e50cb68483ace732412dfd0d8e4f4540b67 Mon Sep 17 00:00:00 2001 From: DOHA Date: Sun, 30 Oct 2016 18:47:10 +0200 Subject: [PATCH 165/215] adding missing modules to parent pom --- pom.xml | 75 +++++++++++++++++++++++++++++++-------------------------- 1 file changed, 41 insertions(+), 34 deletions(-) diff --git a/pom.xml b/pom.xml index 95182ab63c..29ac631c53 100644 --- a/pom.xml +++ b/pom.xml @@ -14,24 +14,25 @@ - assertj + annotations apache-cxf - + apache-fop + assertj autovalue cdi + core-java-9 core-java couchbase-sdk - - dozer deltaspike + dozer - patterns feign + flyway + - flyway gson guava @@ -39,56 +40,66 @@ guava19 handling-spring-static-resources + hazelcast httpclient + hystrix immutables jackson + java-cassandra javaxval - jjwt - - jpa-storedprocedure - json - json-path - junit5 jee7 - - + jjwt + jpa-storedprocedure + jsf + json-path + json + junit5 + log4j + lombok + mapstruct mockito mocks - testing orika + patterns + querydsl - + raml + redis rest-assured rest-testing resteasy + selenium-junit-testng + spring-akka spring-all - spring-akka spring-apache-camel spring-autowire spring-batch spring-boot + spring-cloud-data-flow + spring-cloud spring-core spring-cucumber spring-data-cassandra spring-data-couchbase-2 + spring-boot-dynamodb spring-data-elasticsearch - spring-data-neo4j spring-data-mongodb + spring-data-neo4j spring-data-redis spring-data-rest - spring-exceptions spring-freemarker spring-hibernate3 spring-hibernate4 + baeldungSIsample spring-jms spring-jooq spring-jpa @@ -96,18 +107,16 @@ spring-mockito spring-mvc-java spring-mvc-no-xml - spring-mvc-xml spring-mvc-tiles + spring-mvc-velocity + spring-mvc-web-vs-initializer + spring-mvc-xml spring-openid spring-protobuf spring-quartz - spring-spel - spring-rest spring-rest-angular spring-rest-docs - spring-cloud - spring-cloud-data-flow - + spring-rest spring-security-basic-auth spring-security-custom-permission spring-security-mvc-custom @@ -116,26 +125,24 @@ spring-security-mvc-login spring-security-mvc-persisted-remember-me spring-security-mvc-session - spring-security-rest spring-security-rest-basic-auth spring-security-rest-custom spring-security-rest-digest-auth spring-security-rest-full + spring-security-rest spring-security-x509 + spring-spel spring-thymeleaf + spring-userservice spring-zuul - spring-mvc-velocity - jsf - xml - xmlunit2 - lombok - redis + testing wicket + + xml + xmlunit2 xstream - java-cassandra - annotations From 1858abf5583b0136d3705ad665e9fa699aad8f41 Mon Sep 17 00:00:00 2001 From: DOHA Date: Sun, 30 Oct 2016 19:54:17 +0200 Subject: [PATCH 166/215] minor fix --- pom.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pom.xml b/pom.xml index 29ac631c53..f04b79296a 100644 --- a/pom.xml +++ b/pom.xml @@ -70,7 +70,7 @@ querydsl - raml + redis rest-assured rest-testing @@ -89,7 +89,7 @@ spring-cucumber spring-data-cassandra spring-data-couchbase-2 - spring-boot-dynamodb + spring-data-dynamodb spring-data-elasticsearch spring-data-mongodb spring-data-neo4j @@ -99,7 +99,7 @@ spring-freemarker spring-hibernate3 spring-hibernate4 - baeldungSIsample + spring-integration spring-jms spring-jooq spring-jpa From e88fe8b904b93cca57aebd9dc393f9fa70395e42 Mon Sep 17 00:00:00 2001 From: Egima profile Date: Sun, 30 Oct 2016 22:36:35 +0300 Subject: [PATCH 167/215] standardized exception based tests (#790) * made changes to java reflection * removed redundant method makeSound in Animal abstract class * added project for play-framework article * added project for regex * changed regex project from own model to core-java * added project for routing in play * made changes to regex project * refactored code for REST API with Play project * refactored student store indexing to zero base * added unit tests, removed bad names * added NIO Selector project under core-java module * requested changes made * added project for nio2 * standardized exception based tests --- .../baeldung/java/networking/udp/UDPTest.java | 33 +++ .../baeldung/java/networking/url/UrlTest.java | 104 ++++++++ .../java/com/baeldung/java/nio2/FileTest.java | 250 ++++++++++++++++++ .../com/baeldung/java/nio2/FileUnitTest.java | 120 ++++----- .../java/com/baeldung/java/nio2/PathTest.java | 197 ++++++++++++++ 5 files changed, 637 insertions(+), 67 deletions(-) create mode 100644 core-java/src/main/java/com/baeldung/java/networking/udp/UDPTest.java create mode 100644 core-java/src/test/java/com/baeldung/java/networking/url/UrlTest.java create mode 100644 core-java/src/test/java/com/baeldung/java/nio2/FileTest.java create mode 100644 core-java/src/test/java/com/baeldung/java/nio2/PathTest.java diff --git a/core-java/src/main/java/com/baeldung/java/networking/udp/UDPTest.java b/core-java/src/main/java/com/baeldung/java/networking/udp/UDPTest.java new file mode 100644 index 0000000000..ee93936230 --- /dev/null +++ b/core-java/src/main/java/com/baeldung/java/networking/udp/UDPTest.java @@ -0,0 +1,33 @@ +package com.baeldung.java.networking.udp; + +import static org.junit.Assert.*; + +import java.io.IOException; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class UDPTest { + EchoClient client = null; + + @Before + public void setup() throws IOException { + new EchoServer().start(); + client = new EchoClient(); + } + + @Test + public void whenCanSendAndReceivePacket_thenCorrect1() { + String echo = client.sendEcho("hello server"); + assertEquals("hello server", echo); + echo = client.sendEcho("server is working"); + assertFalse(echo.equals("hello server")); + } + + @After + public void tearDown() { + client.sendEcho("end"); + client.close(); + } +} diff --git a/core-java/src/test/java/com/baeldung/java/networking/url/UrlTest.java b/core-java/src/test/java/com/baeldung/java/networking/url/UrlTest.java new file mode 100644 index 0000000000..14444f0145 --- /dev/null +++ b/core-java/src/test/java/com/baeldung/java/networking/url/UrlTest.java @@ -0,0 +1,104 @@ +package com.baeldung.java.networking.url; + +import static org.junit.Assert.assertEquals; + +import java.net.MalformedURLException; +import java.net.URL; + +import org.junit.Test; + +public class UrlTest { + + @Test + public void givenUrl_whenCanIdentifyProtocol_thenCorrect() throws MalformedURLException { + URL url = new URL("http://baeldung.com"); + assertEquals("http", url.getProtocol()); + } + + @Test + public void givenUrl_whenCanGetHost_thenCorrect() throws MalformedURLException { + URL url = new URL("http://baeldung.com"); + assertEquals("baeldung.com", url.getHost()); + } + + @Test + public void givenUrl_whenCanGetFileName_thenCorrect2() throws MalformedURLException { + URL url = new URL("http://baeldung.com/articles?topic=java&version=8"); + assertEquals("/articles?topic=java&version=8", url.getFile()); + } + + @Test + public void givenUrl_whenCanGetFileName_thenCorrect1() throws MalformedURLException { + URL url = new URL("http://baeldung.com/guidelines.txt"); + assertEquals("/guidelines.txt", url.getFile()); + } + + @Test + public void givenUrl_whenCanGetPathParams_thenCorrect() throws MalformedURLException { + URL url = new URL("http://baeldung.com/articles?topic=java&version=8"); + assertEquals("/articles", url.getPath()); + } + + @Test + public void givenUrl_whenCanGetQueryParams_thenCorrect() throws MalformedURLException { + URL url = new URL("http://baeldung.com/articles?topic=java"); + assertEquals("topic=java", url.getQuery()); + } + + @Test + public void givenUrl_whenGetsDefaultPort_thenCorrect() throws MalformedURLException { + URL url = new URL("http://baeldung.com"); + assertEquals(-1, url.getPort()); + assertEquals(80, url.getDefaultPort()); + } + + @Test + public void givenUrl_whenGetsPort_thenCorrect() throws MalformedURLException { + URL url = new URL("http://baeldung.com:8090"); + assertEquals(8090, url.getPort()); + assertEquals(80, url.getDefaultPort()); + } + + @Test + public void givenBaseUrl_whenCreatesRelativeUrl_thenCorrect() throws MalformedURLException { + URL baseUrl = new URL("http://baeldung.com"); + URL relativeUrl = new URL(baseUrl, "a-guide-to-java-sockets"); + assertEquals("http://baeldung.com/a-guide-to-java-sockets", relativeUrl.toString()); + } + + @Test + public void givenAbsoluteUrl_whenIgnoresBaseUrl_thenCorrect() throws MalformedURLException { + URL baseUrl = new URL("http://baeldung.com"); + URL relativeUrl = new URL(baseUrl, "http://baeldung.com/a-guide-to-java-sockets"); + assertEquals("http://baeldung.com/a-guide-to-java-sockets", relativeUrl.toString()); + } + + @Test + public void givenUrlComponents_whenConstructsCompleteUrl_thenCorrect() throws MalformedURLException { + String protocol = "http"; + String host = "baeldung.com"; + String file = "/guidelines.txt"; + URL url = new URL(protocol, host, file); + assertEquals("http://baeldung.com/guidelines.txt", url.toString()); + } + + @Test + public void givenUrlComponents_whenConstructsCompleteUrl_thenCorrect2() throws MalformedURLException { + String protocol = "http"; + String host = "baeldung.com"; + String file = "/articles?topic=java&version=8"; + URL url = new URL(protocol, host, file); + assertEquals("http://baeldung.com/guidelines.txt", url.toString()); + } + + @Test + public void givenUrlComponentsWithPort_whenConstructsCompleteUrl_thenCorrect() throws MalformedURLException { + String protocol = "http"; + String host = "baeldung.com"; + int port = 9000; + String file = "/guidelines.txt"; + URL url = new URL(protocol, host, port, file); + assertEquals("http://baeldung.com:9000/guidelines.txt", url.toString()); + } + +} diff --git a/core-java/src/test/java/com/baeldung/java/nio2/FileTest.java b/core-java/src/test/java/com/baeldung/java/nio2/FileTest.java new file mode 100644 index 0000000000..4a1ad1da60 --- /dev/null +++ b/core-java/src/test/java/com/baeldung/java/nio2/FileTest.java @@ -0,0 +1,250 @@ +package com.baeldung.java.nio2; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +import java.io.IOException; +import java.nio.file.CopyOption; +import java.nio.file.DirectoryNotEmptyException; +import java.nio.file.FileAlreadyExistsException; +import java.nio.file.Files; +import java.nio.file.NoSuchFileException; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.nio.file.StandardCopyOption; +import java.util.Date; + +import org.junit.Test; + +public class FileTest { + private static final String HOME = System.getProperty("user.home"); + + // checking file or dir + @Test + public void givenExistentPath_whenConfirmsFileExists_thenCorrect() { + Path p = Paths.get(HOME); + assertTrue(Files.exists(p)); + } + + @Test + public void givenNonexistentPath_whenConfirmsFileNotExists_thenCorrect() { + Path p = Paths.get(HOME + "/inexistent_file.txt"); + assertTrue(Files.notExists(p)); + } + + @Test + public void givenExistentDirPath_whenConfirmsNotRegularFile_thenCorrect() { + Path p = Paths.get(HOME); + assertFalse(Files.isRegularFile(p)); + } + + @Test + public void givenExistentDirPath_whenConfirmsReadable_thenCorrect() { + Path p = Paths.get(HOME); + assertTrue(Files.isReadable(p)); + } + + @Test + public void givenExistentDirPath_whenConfirmsWritable_thenCorrect() { + Path p = Paths.get(HOME); + assertTrue(Files.isWritable(p)); + } + + @Test + public void givenExistentDirPath_whenConfirmsExecutable_thenCorrect() { + Path p = Paths.get(HOME); + assertTrue(Files.isExecutable(p)); + } + + @Test + public void givenSameFilePaths_whenConfirmsIsSame_thenCorrect() throws IOException { + Path p1 = Paths.get(HOME); + Path p2 = Paths.get(HOME); + assertTrue(Files.isSameFile(p1, p2)); + } + + // reading, writing and creating files + // creating file + @Test + public void givenFilePath_whenCreatesNewFile_thenCorrect() throws IOException { + String fileName = "myfile_" + new Date().getTime() + ".txt"; + Path p = Paths.get(HOME + "/" + fileName); + assertFalse(Files.exists(p)); + Files.createFile(p); + assertTrue(Files.exists(p)); + + } + + @Test + public void givenDirPath_whenCreatesNewDir_thenCorrect() throws IOException { + String dirName = "myDir_" + new Date().getTime(); + Path p = Paths.get(HOME + "/" + dirName); + assertFalse(Files.exists(p)); + Files.createDirectory(p); + assertTrue(Files.exists(p)); + assertFalse(Files.isRegularFile(p)); + assertTrue(Files.isDirectory(p)); + + } + + @Test(expected = NoSuchFileException.class) + public void givenDirPath_whenFailsToCreateRecursively_thenCorrect() throws IOException { + String dirName = "myDir_" + new Date().getTime() + "/subdir"; + Path p = Paths.get(HOME + "/" + dirName); + assertFalse(Files.exists(p)); + Files.createDirectory(p); + + } + + @Test + public void givenDirPath_whenCreatesRecursively_thenCorrect() throws IOException { + Path dir = Paths.get(HOME + "/myDir_" + new Date().getTime()); + Path subdir = dir.resolve("subdir"); + assertFalse(Files.exists(dir)); + assertFalse(Files.exists(subdir)); + Files.createDirectories(subdir); + assertTrue(Files.exists(dir)); + assertTrue(Files.exists(subdir)); + } + + @Test + public void givenFilePath_whenCreatesTempFile_thenCorrect() throws IOException { + String prefix = "log_"; + String suffix = ".txt"; + Path p = Paths.get(HOME + "/"); + p = Files.createTempFile(p, prefix, suffix); + // like log_8821081429012075286.txt + assertTrue(Files.exists(p)); + + } + + @Test + public void givenFilePath_whenCreatesTempFileWithDefaultsNaming_thenCorrect() throws IOException { + Path p = Paths.get(HOME + "/"); + p = Files.createTempFile(p, null, null); + // like 8600179353689423985.tmp + assertTrue(Files.exists(p)); + } + + @Test + public void givenNoFilePath_whenCreatesTempFileInTempDir_thenCorrect() throws IOException { + Path p = Files.createTempFile(null, null); + // like C:\Users\new\AppData\Local\Temp\6100927974988978748.tmp + assertTrue(Files.exists(p)); + + } + + // delete file + @Test + public void givenPath_whenDeletes_thenCorrect() throws IOException { + Path p = Paths.get(HOME + "/fileToDelete.txt"); + assertFalse(Files.exists(p)); + Files.createFile(p); + assertTrue(Files.exists(p)); + Files.delete(p); + assertFalse(Files.exists(p)); + + } + + @Test(expected = DirectoryNotEmptyException.class) + public void givenPath_whenFailsToDeleteNonEmptyDir_thenCorrect() throws IOException { + Path dir = Paths.get(HOME + "/emptyDir" + new Date().getTime()); + Files.createDirectory(dir); + assertTrue(Files.exists(dir)); + Path file = dir.resolve("file.txt"); + Files.createFile(file); + Files.delete(dir); + + assertTrue(Files.exists(dir)); + + } + + @Test + public void givenInexistentFile_whenDeleteFails_thenCorrect() throws IOException { + Path p = Paths.get(HOME + "/inexistentFile.txt"); + assertFalse(Files.exists(p)); + try { + Files.delete(p); + } catch (IOException e) { + assertTrue(e instanceof NoSuchFileException); + } + + } + + @Test + public void givenInexistentFile_whenDeleteIfExistsWorks_thenCorrect() throws IOException { + Path p = Paths.get(HOME + "/inexistentFile.txt"); + assertFalse(Files.exists(p)); + Files.deleteIfExists(p); + + } + + // copy file + @Test + public void givenFilePath_whenCopiesToNewLocation_thenCorrect() throws IOException { + Path dir1 = Paths.get(HOME + "/firstdir_" + new Date().getTime()); + Path dir2 = Paths.get(HOME + "/otherdir_" + new Date().getTime()); + Files.createDirectory(dir1); + Files.createDirectory(dir2); + Path file1 = dir1.resolve("filetocopy.txt"); + Path file2 = dir2.resolve("filetocopy.txt"); + Files.createFile(file1); + assertTrue(Files.exists(file1)); + assertFalse(Files.exists(file2)); + Files.copy(file1, file2); + assertTrue(Files.exists(file2)); + + } + + @Test(expected = FileAlreadyExistsException.class) + public void givenPath_whenCopyFailsDueToExistingFile_thenCorrect() throws IOException { + Path dir1 = Paths.get(HOME + "/firstdir_" + new Date().getTime()); + Path dir2 = Paths.get(HOME + "/otherdir_" + new Date().getTime()); + Files.createDirectory(dir1); + Files.createDirectory(dir2); + Path file1 = dir1.resolve("filetocopy.txt"); + Path file2 = dir2.resolve("filetocopy.txt"); + Files.createFile(file1); + Files.createFile(file2); + assertTrue(Files.exists(file1)); + assertTrue(Files.exists(file2)); + Files.copy(file1, file2); + Files.copy(file1, file2, StandardCopyOption.REPLACE_EXISTING); + } + + // moving files + @Test + public void givenFilePath_whenMovesToNewLocation_thenCorrect() throws IOException { + Path dir1 = Paths.get(HOME + "/firstdir_" + new Date().getTime()); + Path dir2 = Paths.get(HOME + "/otherdir_" + new Date().getTime()); + Files.createDirectory(dir1); + Files.createDirectory(dir2); + Path file1 = dir1.resolve("filetocopy.txt"); + Path file2 = dir2.resolve("filetocopy.txt"); + Files.createFile(file1); + assertTrue(Files.exists(file1)); + assertFalse(Files.exists(file2)); + Files.move(file1, file2); + assertTrue(Files.exists(file2)); + assertFalse(Files.exists(file1)); + + } + + @Test(expected = FileAlreadyExistsException.class) + public void givenFilePath_whenMoveFailsDueToExistingFile_thenCorrect() throws IOException { + Path dir1 = Paths.get(HOME + "/firstdir_" + new Date().getTime()); + Path dir2 = Paths.get(HOME + "/otherdir_" + new Date().getTime()); + Files.createDirectory(dir1); + Files.createDirectory(dir2); + Path file1 = dir1.resolve("filetocopy.txt"); + Path file2 = dir2.resolve("filetocopy.txt"); + Files.createFile(file1); + Files.createFile(file2); + assertTrue(Files.exists(file1)); + assertTrue(Files.exists(file2)); + Files.move(file1, file2); + Files.move(file1, file2, StandardCopyOption.REPLACE_EXISTING); + assertTrue(Files.exists(file2)); + assertFalse(Files.exists(file1)); + } +} diff --git a/core-java/src/test/java/com/baeldung/java/nio2/FileUnitTest.java b/core-java/src/test/java/com/baeldung/java/nio2/FileUnitTest.java index 30e531f13a..a94c71fb17 100644 --- a/core-java/src/test/java/com/baeldung/java/nio2/FileUnitTest.java +++ b/core-java/src/test/java/com/baeldung/java/nio2/FileUnitTest.java @@ -4,6 +4,7 @@ import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import java.io.IOException; +import java.nio.file.CopyOption; import java.nio.file.DirectoryNotEmptyException; import java.nio.file.FileAlreadyExistsException; import java.nio.file.Files; @@ -21,44 +22,44 @@ public class FileUnitTest { // checking file or dir @Test public void givenExistentPath_whenConfirmsFileExists_thenCorrect() { - final Path p = Paths.get(HOME); + Path p = Paths.get(HOME); assertTrue(Files.exists(p)); } @Test public void givenNonexistentPath_whenConfirmsFileNotExists_thenCorrect() { - final Path p = Paths.get(HOME + "/inexistent_file.txt"); + Path p = Paths.get(HOME + "/inexistent_file.txt"); assertTrue(Files.notExists(p)); } @Test public void givenExistentDirPath_whenConfirmsNotRegularFile_thenCorrect() { - final Path p = Paths.get(HOME); + Path p = Paths.get(HOME); assertFalse(Files.isRegularFile(p)); } @Test public void givenExistentDirPath_whenConfirmsReadable_thenCorrect() { - final Path p = Paths.get(HOME); + Path p = Paths.get(HOME); assertTrue(Files.isReadable(p)); } @Test public void givenExistentDirPath_whenConfirmsWritable_thenCorrect() { - final Path p = Paths.get(HOME); + Path p = Paths.get(HOME); assertTrue(Files.isWritable(p)); } @Test public void givenExistentDirPath_whenConfirmsExecutable_thenCorrect() { - final Path p = Paths.get(HOME); + Path p = Paths.get(HOME); assertTrue(Files.isExecutable(p)); } @Test public void givenSameFilePaths_whenConfirmsIsSame_thenCorrect() throws IOException { - final Path p1 = Paths.get(HOME); - final Path p2 = Paths.get(HOME); + Path p1 = Paths.get(HOME); + Path p2 = Paths.get(HOME); assertTrue(Files.isSameFile(p1, p2)); } @@ -66,8 +67,8 @@ public class FileUnitTest { // creating file @Test public void givenFilePath_whenCreatesNewFile_thenCorrect() throws IOException { - final String fileName = "myfile_" + new Date().getTime() + ".txt"; - final Path p = Paths.get(HOME + "/" + fileName); + String fileName = "myfile_" + new Date().getTime() + ".txt"; + Path p = Paths.get(HOME + "/" + fileName); assertFalse(Files.exists(p)); Files.createFile(p); assertTrue(Files.exists(p)); @@ -76,8 +77,8 @@ public class FileUnitTest { @Test public void givenDirPath_whenCreatesNewDir_thenCorrect() throws IOException { - final String dirName = "myDir_" + new Date().getTime(); - final Path p = Paths.get(HOME + "/" + dirName); + String dirName = "myDir_" + new Date().getTime(); + Path p = Paths.get(HOME + "/" + dirName); assertFalse(Files.exists(p)); Files.createDirectory(p); assertTrue(Files.exists(p)); @@ -86,22 +87,19 @@ public class FileUnitTest { } - @Test - public void givenDirPath_whenFailsToCreateRecursively_thenCorrect() { - final String dirName = "myDir_" + new Date().getTime() + "/subdir"; - final Path p = Paths.get(HOME + "/" + dirName); + @Test(expected = NoSuchFileException.class) + public void givenDirPath_whenFailsToCreateRecursively_thenCorrect() throws IOException { + String dirName = "myDir_" + new Date().getTime() + "/subdir"; + Path p = Paths.get(HOME + "/" + dirName); assertFalse(Files.exists(p)); - try { - Files.createDirectory(p); - } catch (final IOException e) { - assertTrue(e instanceof NoSuchFileException); - } + Files.createDirectory(p); + } @Test public void givenDirPath_whenCreatesRecursively_thenCorrect() throws IOException { - final Path dir = Paths.get(HOME + "/myDir_" + new Date().getTime()); - final Path subdir = dir.resolve("subdir"); + Path dir = Paths.get(HOME + "/myDir_" + new Date().getTime()); + Path subdir = dir.resolve("subdir"); assertFalse(Files.exists(dir)); assertFalse(Files.exists(subdir)); Files.createDirectories(subdir); @@ -111,8 +109,8 @@ public class FileUnitTest { @Test public void givenFilePath_whenCreatesTempFile_thenCorrect() throws IOException { - final String prefix = "log_"; - final String suffix = ".txt"; + String prefix = "log_"; + String suffix = ".txt"; Path p = Paths.get(HOME + "/"); p = Files.createTempFile(p, prefix, suffix); // like log_8821081429012075286.txt @@ -125,13 +123,12 @@ public class FileUnitTest { Path p = Paths.get(HOME + "/"); p = Files.createTempFile(p, null, null); // like 8600179353689423985.tmp - System.out.println(p); assertTrue(Files.exists(p)); } @Test public void givenNoFilePath_whenCreatesTempFileInTempDir_thenCorrect() throws IOException { - final Path p = Files.createTempFile(null, null); + Path p = Files.createTempFile(null, null); // like C:\Users\new\AppData\Local\Temp\6100927974988978748.tmp assertTrue(Files.exists(p)); @@ -140,7 +137,7 @@ public class FileUnitTest { // delete file @Test public void givenPath_whenDeletes_thenCorrect() throws IOException { - final Path p = Paths.get(HOME + "/fileToDelete.txt"); + Path p = Paths.get(HOME + "/fileToDelete.txt"); assertFalse(Files.exists(p)); Files.createFile(p); assertTrue(Files.exists(p)); @@ -149,29 +146,26 @@ public class FileUnitTest { } - @Test + @Test(expected = DirectoryNotEmptyException.class) public void givenPath_whenFailsToDeleteNonEmptyDir_thenCorrect() throws IOException { - final Path dir = Paths.get(HOME + "/emptyDir" + new Date().getTime()); + Path dir = Paths.get(HOME + "/emptyDir" + new Date().getTime()); Files.createDirectory(dir); assertTrue(Files.exists(dir)); - final Path file = dir.resolve("file.txt"); + Path file = dir.resolve("file.txt"); Files.createFile(file); - try { - Files.delete(dir); - } catch (final IOException e) { - assertTrue(e instanceof DirectoryNotEmptyException); - } + Files.delete(dir); + assertTrue(Files.exists(dir)); } @Test public void givenInexistentFile_whenDeleteFails_thenCorrect() throws IOException { - final Path p = Paths.get(HOME + "/inexistentFile.txt"); + Path p = Paths.get(HOME + "/inexistentFile.txt"); assertFalse(Files.exists(p)); try { Files.delete(p); - } catch (final IOException e) { + } catch (IOException e) { assertTrue(e instanceof NoSuchFileException); } @@ -179,7 +173,7 @@ public class FileUnitTest { @Test public void givenInexistentFile_whenDeleteIfExistsWorks_thenCorrect() throws IOException { - final Path p = Paths.get(HOME + "/inexistentFile.txt"); + Path p = Paths.get(HOME + "/inexistentFile.txt"); assertFalse(Files.exists(p)); Files.deleteIfExists(p); @@ -188,12 +182,12 @@ public class FileUnitTest { // copy file @Test public void givenFilePath_whenCopiesToNewLocation_thenCorrect() throws IOException { - final Path dir1 = Paths.get(HOME + "/firstdir_" + new Date().getTime()); - final Path dir2 = Paths.get(HOME + "/otherdir_" + new Date().getTime()); + Path dir1 = Paths.get(HOME + "/firstdir_" + new Date().getTime()); + Path dir2 = Paths.get(HOME + "/otherdir_" + new Date().getTime()); Files.createDirectory(dir1); Files.createDirectory(dir2); - final Path file1 = dir1.resolve("filetocopy.txt"); - final Path file2 = dir2.resolve("filetocopy.txt"); + Path file1 = dir1.resolve("filetocopy.txt"); + Path file2 = dir2.resolve("filetocopy.txt"); Files.createFile(file1); assertTrue(Files.exists(file1)); assertFalse(Files.exists(file2)); @@ -202,35 +196,31 @@ public class FileUnitTest { } - @Test + @Test(expected = FileAlreadyExistsException.class) public void givenPath_whenCopyFailsDueToExistingFile_thenCorrect() throws IOException { - final Path dir1 = Paths.get(HOME + "/firstdir_" + new Date().getTime()); - final Path dir2 = Paths.get(HOME + "/otherdir_" + new Date().getTime()); + Path dir1 = Paths.get(HOME + "/firstdir_" + new Date().getTime()); + Path dir2 = Paths.get(HOME + "/otherdir_" + new Date().getTime()); Files.createDirectory(dir1); Files.createDirectory(dir2); - final Path file1 = dir1.resolve("filetocopy.txt"); - final Path file2 = dir2.resolve("filetocopy.txt"); + Path file1 = dir1.resolve("filetocopy.txt"); + Path file2 = dir2.resolve("filetocopy.txt"); Files.createFile(file1); Files.createFile(file2); assertTrue(Files.exists(file1)); assertTrue(Files.exists(file2)); - try { - Files.copy(file1, file2); - } catch (final IOException e) { - assertTrue(e instanceof FileAlreadyExistsException); - } + Files.copy(file1, file2); Files.copy(file1, file2, StandardCopyOption.REPLACE_EXISTING); } // moving files @Test public void givenFilePath_whenMovesToNewLocation_thenCorrect() throws IOException { - final Path dir1 = Paths.get(HOME + "/firstdir_" + new Date().getTime()); - final Path dir2 = Paths.get(HOME + "/otherdir_" + new Date().getTime()); + Path dir1 = Paths.get(HOME + "/firstdir_" + new Date().getTime()); + Path dir2 = Paths.get(HOME + "/otherdir_" + new Date().getTime()); Files.createDirectory(dir1); Files.createDirectory(dir2); - final Path file1 = dir1.resolve("filetocopy.txt"); - final Path file2 = dir2.resolve("filetocopy.txt"); + Path file1 = dir1.resolve("filetocopy.txt"); + Path file2 = dir2.resolve("filetocopy.txt"); Files.createFile(file1); assertTrue(Files.exists(file1)); assertFalse(Files.exists(file2)); @@ -240,23 +230,19 @@ public class FileUnitTest { } - @Test + @Test(expected = FileAlreadyExistsException.class) public void givenFilePath_whenMoveFailsDueToExistingFile_thenCorrect() throws IOException { - final Path dir1 = Paths.get(HOME + "/firstdir_" + new Date().getTime()); - final Path dir2 = Paths.get(HOME + "/otherdir_" + new Date().getTime()); + Path dir1 = Paths.get(HOME + "/firstdir_" + new Date().getTime()); + Path dir2 = Paths.get(HOME + "/otherdir_" + new Date().getTime()); Files.createDirectory(dir1); Files.createDirectory(dir2); - final Path file1 = dir1.resolve("filetocopy.txt"); - final Path file2 = dir2.resolve("filetocopy.txt"); + Path file1 = dir1.resolve("filetocopy.txt"); + Path file2 = dir2.resolve("filetocopy.txt"); Files.createFile(file1); Files.createFile(file2); assertTrue(Files.exists(file1)); assertTrue(Files.exists(file2)); - try { - Files.move(file1, file2); - } catch (final IOException e) { - assertTrue(e instanceof FileAlreadyExistsException); - } + Files.move(file1, file2); Files.move(file1, file2, StandardCopyOption.REPLACE_EXISTING); assertTrue(Files.exists(file2)); assertFalse(Files.exists(file1)); diff --git a/core-java/src/test/java/com/baeldung/java/nio2/PathTest.java b/core-java/src/test/java/com/baeldung/java/nio2/PathTest.java new file mode 100644 index 0000000000..c0cb45341e --- /dev/null +++ b/core-java/src/test/java/com/baeldung/java/nio2/PathTest.java @@ -0,0 +1,197 @@ +package com.baeldung.java.nio2; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +import java.io.IOException; +import java.net.URI; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.Date; + +import org.junit.Test; + +public class PathTest { + + private static final String HOME = System.getProperty("user.home"); + + // creating a path + @Test + public void givenPathString_whenCreatesPathObject_thenCorrect() { + Path p = Paths.get("/articles/baeldung"); + assertEquals("\\articles\\baeldung", p.toString()); + + } + + @Test + public void givenPathParts_whenCreatesPathObject_thenCorrect() { + Path p = Paths.get("/articles", "baeldung"); + assertEquals("\\articles\\baeldung", p.toString()); + + } + + // retrieving path info + @Test + public void givenPath_whenRetrievesFileName_thenCorrect() { + Path p = Paths.get("/articles/baeldung/logs"); + assertEquals("logs", p.getFileName().toString()); + } + + @Test + public void givenPath_whenRetrievesNameByIndex_thenCorrect() { + Path p = Paths.get("/articles/baeldung/logs"); + assertEquals("articles", p.getName(0).toString()); + assertEquals("baeldung", p.getName(1).toString()); + assertEquals("logs", p.getName(2).toString()); + } + + @Test + public void givenPath_whenCountsParts_thenCorrect() { + Path p = Paths.get("/articles/baeldung/logs"); + assertEquals(3, p.getNameCount()); + } + + @Test + public void givenPath_whenCanRetrieveSubsequenceByIndex_thenCorrect() { + Path p = Paths.get("/articles/baeldung/logs"); + assertEquals("articles", p.subpath(0, 1).toString()); + assertEquals("articles\\baeldung", p.subpath(0, 2).toString()); + assertEquals("articles\\baeldung\\logs", p.subpath(0, 3).toString()); + assertEquals("baeldung", p.subpath(1, 2).toString()); + assertEquals("baeldung\\logs", p.subpath(1, 3).toString()); + assertEquals("logs", p.subpath(2, 3).toString()); + } + + @Test + public void givenPath_whenRetrievesParent_thenCorrect() { + Path p1 = Paths.get("/articles/baeldung/logs"); + Path p2 = Paths.get("/articles/baeldung"); + Path p3 = Paths.get("/articles"); + Path p4 = Paths.get("/"); + + assertEquals("\\articles\\baeldung", p1.getParent().toString()); + assertEquals("\\articles", p2.getParent().toString()); + assertEquals("\\", p3.getParent().toString()); + assertEquals(null, p4.getParent()); + } + + @Test + public void givenPath_whenRetrievesRoot_thenCorrect() { + Path p1 = Paths.get("/articles/baeldung/logs"); + Path p2 = Paths.get("c:/articles/baeldung/logs"); + + assertEquals("\\", p1.getRoot().toString()); + assertEquals("c:\\", p2.getRoot().toString()); + } + + // removing redundancies from path + @Test + public void givenPath_whenRemovesRedundancies_thenCorrect1() { + Path p = Paths.get("/home/./baeldung/articles"); + p = p.normalize(); + assertEquals("\\home\\baeldung\\articles", p.toString()); + } + + @Test + public void givenPath_whenRemovesRedundancies_thenCorrect2() { + Path p = Paths.get("/home/baeldung/../articles"); + p = p.normalize(); + assertEquals("\\home\\articles", p.toString()); + } + + // converting a path + @Test + public void givenPath_whenConvertsToBrowseablePath_thenCorrect() { + Path p = Paths.get("/home/baeldung/articles.html"); + URI uri = p.toUri(); + assertEquals("file:///E:/home/baeldung/articles.html", uri.toString()); + } + + @Test + public void givenPath_whenConvertsToAbsolutePath_thenCorrect() { + Path p = Paths.get("/home/baeldung/articles.html"); + assertEquals("E:\\home\\baeldung\\articles.html", p.toAbsolutePath().toString()); + } + + @Test + public void givenAbsolutePath_whenRetainsAsAbsolute_thenCorrect() { + Path p = Paths.get("E:\\home\\baeldung\\articles.html"); + assertEquals("E:\\home\\baeldung\\articles.html", p.toAbsolutePath().toString()); + } + + @Test + public void givenExistingPath_whenGetsRealPathToFile_thenCorrect() throws IOException { + Path p = Paths.get(HOME); + assertEquals(HOME, p.toRealPath().toString()); + } + + @Test + public void givenInExistentPath_whenFailsToConvert_thenCorrect() { + Path p = Paths.get("E:\\home\\baeldung\\articles.html"); + try { + p.toRealPath(); + } catch (IOException e) { + assertTrue(true); + } + } + + // joining paths + @Test + public void givenTwoPaths_whenJoinsAndResolves_thenCorrect() throws IOException { + Path p = Paths.get("/baeldung/articles"); + assertEquals("\\baeldung\\articles\\java", p.resolve("java").toString()); + } + + @Test + public void givenAbsolutePath_whenResolutionRetainsIt_thenCorrect() throws IOException { + Path p = Paths.get("/baeldung/articles"); + assertEquals("C:\\baeldung\\articles\\java", p.resolve("C:\\baeldung\\articles\\java").toString()); + } + + @Test + public void givenPathWithRoot_whenResolutionRetainsIt_thenCorrect2() throws IOException { + Path p = Paths.get("/baeldung/articles"); + assertEquals("\\java", p.resolve("/java").toString()); + } + + // creating a path between 2 paths + @Test + public void givenSiblingPaths_whenCreatesPathToOther_thenCorrect() throws IOException { + Path p1 = Paths.get("articles"); + Path p2 = Paths.get("authors"); + assertEquals("..\\authors", p1.relativize(p2).toString()); + assertEquals("..\\articles", p2.relativize(p1).toString()); + } + + @Test + public void givenNonSiblingPaths_whenCreatesPathToOther_thenCorrect() throws IOException { + Path p1 = Paths.get("/baeldung"); + Path p2 = Paths.get("/baeldung/authors/articles"); + assertEquals("authors\\articles", p1.relativize(p2).toString()); + assertEquals("..\\..", p2.relativize(p1).toString()); + } + + // comparing 2 paths + @Test + public void givenTwoPaths_whenTestsEquality_thenCorrect() throws IOException { + Path p1 = Paths.get("/baeldung/articles"); + Path p2 = Paths.get("/baeldung/articles"); + Path p3 = Paths.get("/baeldung/authors"); + + assertTrue(p1.equals(p2)); + assertFalse(p1.equals(p3)); + } + + @Test + public void givenPath_whenInspectsStart_thenCorrect() { + Path p1 = Paths.get("/baeldung/articles"); + assertTrue(p1.startsWith("/baeldung")); + } + + @Test + public void givenPath_whenInspectsEnd_thenCorrect() { + Path p1 = Paths.get("/baeldung/articles"); + assertTrue(p1.endsWith("articles")); + } +} From 20873aad37124db0527cc9f7a8d4ea66a088967f Mon Sep 17 00:00:00 2001 From: Egima profile Date: Sun, 30 Oct 2016 22:55:53 +0300 Subject: [PATCH 168/215] removed redundant files (#791) * made changes to java reflection * removed redundant method makeSound in Animal abstract class * added project for play-framework article * added project for regex * changed regex project from own model to core-java * added project for routing in play * made changes to regex project * refactored code for REST API with Play project * refactored student store indexing to zero base * added unit tests, removed bad names * added NIO Selector project under core-java module * requested changes made * added project for nio2 * standardized exception based tests * fixed exception based tests * removed redundant files --- .../com/baeldung/java/nio2/FileUnitTest.java | 250 ------------------ .../baeldung/java/nio2/PathManualTest.java | 196 -------------- .../java/com/baeldung/java/nio2/PathTest.java | 12 +- 3 files changed, 5 insertions(+), 453 deletions(-) delete mode 100644 core-java/src/test/java/com/baeldung/java/nio2/FileUnitTest.java delete mode 100644 core-java/src/test/java/com/baeldung/java/nio2/PathManualTest.java diff --git a/core-java/src/test/java/com/baeldung/java/nio2/FileUnitTest.java b/core-java/src/test/java/com/baeldung/java/nio2/FileUnitTest.java deleted file mode 100644 index a94c71fb17..0000000000 --- a/core-java/src/test/java/com/baeldung/java/nio2/FileUnitTest.java +++ /dev/null @@ -1,250 +0,0 @@ -package com.baeldung.java.nio2; - -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; - -import java.io.IOException; -import java.nio.file.CopyOption; -import java.nio.file.DirectoryNotEmptyException; -import java.nio.file.FileAlreadyExistsException; -import java.nio.file.Files; -import java.nio.file.NoSuchFileException; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.nio.file.StandardCopyOption; -import java.util.Date; - -import org.junit.Test; - -public class FileUnitTest { - private static final String HOME = System.getProperty("user.home"); - - // checking file or dir - @Test - public void givenExistentPath_whenConfirmsFileExists_thenCorrect() { - Path p = Paths.get(HOME); - assertTrue(Files.exists(p)); - } - - @Test - public void givenNonexistentPath_whenConfirmsFileNotExists_thenCorrect() { - Path p = Paths.get(HOME + "/inexistent_file.txt"); - assertTrue(Files.notExists(p)); - } - - @Test - public void givenExistentDirPath_whenConfirmsNotRegularFile_thenCorrect() { - Path p = Paths.get(HOME); - assertFalse(Files.isRegularFile(p)); - } - - @Test - public void givenExistentDirPath_whenConfirmsReadable_thenCorrect() { - Path p = Paths.get(HOME); - assertTrue(Files.isReadable(p)); - } - - @Test - public void givenExistentDirPath_whenConfirmsWritable_thenCorrect() { - Path p = Paths.get(HOME); - assertTrue(Files.isWritable(p)); - } - - @Test - public void givenExistentDirPath_whenConfirmsExecutable_thenCorrect() { - Path p = Paths.get(HOME); - assertTrue(Files.isExecutable(p)); - } - - @Test - public void givenSameFilePaths_whenConfirmsIsSame_thenCorrect() throws IOException { - Path p1 = Paths.get(HOME); - Path p2 = Paths.get(HOME); - assertTrue(Files.isSameFile(p1, p2)); - } - - // reading, writing and creating files - // creating file - @Test - public void givenFilePath_whenCreatesNewFile_thenCorrect() throws IOException { - String fileName = "myfile_" + new Date().getTime() + ".txt"; - Path p = Paths.get(HOME + "/" + fileName); - assertFalse(Files.exists(p)); - Files.createFile(p); - assertTrue(Files.exists(p)); - - } - - @Test - public void givenDirPath_whenCreatesNewDir_thenCorrect() throws IOException { - String dirName = "myDir_" + new Date().getTime(); - Path p = Paths.get(HOME + "/" + dirName); - assertFalse(Files.exists(p)); - Files.createDirectory(p); - assertTrue(Files.exists(p)); - assertFalse(Files.isRegularFile(p)); - assertTrue(Files.isDirectory(p)); - - } - - @Test(expected = NoSuchFileException.class) - public void givenDirPath_whenFailsToCreateRecursively_thenCorrect() throws IOException { - String dirName = "myDir_" + new Date().getTime() + "/subdir"; - Path p = Paths.get(HOME + "/" + dirName); - assertFalse(Files.exists(p)); - Files.createDirectory(p); - - } - - @Test - public void givenDirPath_whenCreatesRecursively_thenCorrect() throws IOException { - Path dir = Paths.get(HOME + "/myDir_" + new Date().getTime()); - Path subdir = dir.resolve("subdir"); - assertFalse(Files.exists(dir)); - assertFalse(Files.exists(subdir)); - Files.createDirectories(subdir); - assertTrue(Files.exists(dir)); - assertTrue(Files.exists(subdir)); - } - - @Test - public void givenFilePath_whenCreatesTempFile_thenCorrect() throws IOException { - String prefix = "log_"; - String suffix = ".txt"; - Path p = Paths.get(HOME + "/"); - p = Files.createTempFile(p, prefix, suffix); - // like log_8821081429012075286.txt - assertTrue(Files.exists(p)); - - } - - @Test - public void givenFilePath_whenCreatesTempFileWithDefaultsNaming_thenCorrect() throws IOException { - Path p = Paths.get(HOME + "/"); - p = Files.createTempFile(p, null, null); - // like 8600179353689423985.tmp - assertTrue(Files.exists(p)); - } - - @Test - public void givenNoFilePath_whenCreatesTempFileInTempDir_thenCorrect() throws IOException { - Path p = Files.createTempFile(null, null); - // like C:\Users\new\AppData\Local\Temp\6100927974988978748.tmp - assertTrue(Files.exists(p)); - - } - - // delete file - @Test - public void givenPath_whenDeletes_thenCorrect() throws IOException { - Path p = Paths.get(HOME + "/fileToDelete.txt"); - assertFalse(Files.exists(p)); - Files.createFile(p); - assertTrue(Files.exists(p)); - Files.delete(p); - assertFalse(Files.exists(p)); - - } - - @Test(expected = DirectoryNotEmptyException.class) - public void givenPath_whenFailsToDeleteNonEmptyDir_thenCorrect() throws IOException { - Path dir = Paths.get(HOME + "/emptyDir" + new Date().getTime()); - Files.createDirectory(dir); - assertTrue(Files.exists(dir)); - Path file = dir.resolve("file.txt"); - Files.createFile(file); - Files.delete(dir); - - assertTrue(Files.exists(dir)); - - } - - @Test - public void givenInexistentFile_whenDeleteFails_thenCorrect() throws IOException { - Path p = Paths.get(HOME + "/inexistentFile.txt"); - assertFalse(Files.exists(p)); - try { - Files.delete(p); - } catch (IOException e) { - assertTrue(e instanceof NoSuchFileException); - } - - } - - @Test - public void givenInexistentFile_whenDeleteIfExistsWorks_thenCorrect() throws IOException { - Path p = Paths.get(HOME + "/inexistentFile.txt"); - assertFalse(Files.exists(p)); - Files.deleteIfExists(p); - - } - - // copy file - @Test - public void givenFilePath_whenCopiesToNewLocation_thenCorrect() throws IOException { - Path dir1 = Paths.get(HOME + "/firstdir_" + new Date().getTime()); - Path dir2 = Paths.get(HOME + "/otherdir_" + new Date().getTime()); - Files.createDirectory(dir1); - Files.createDirectory(dir2); - Path file1 = dir1.resolve("filetocopy.txt"); - Path file2 = dir2.resolve("filetocopy.txt"); - Files.createFile(file1); - assertTrue(Files.exists(file1)); - assertFalse(Files.exists(file2)); - Files.copy(file1, file2); - assertTrue(Files.exists(file2)); - - } - - @Test(expected = FileAlreadyExistsException.class) - public void givenPath_whenCopyFailsDueToExistingFile_thenCorrect() throws IOException { - Path dir1 = Paths.get(HOME + "/firstdir_" + new Date().getTime()); - Path dir2 = Paths.get(HOME + "/otherdir_" + new Date().getTime()); - Files.createDirectory(dir1); - Files.createDirectory(dir2); - Path file1 = dir1.resolve("filetocopy.txt"); - Path file2 = dir2.resolve("filetocopy.txt"); - Files.createFile(file1); - Files.createFile(file2); - assertTrue(Files.exists(file1)); - assertTrue(Files.exists(file2)); - Files.copy(file1, file2); - Files.copy(file1, file2, StandardCopyOption.REPLACE_EXISTING); - } - - // moving files - @Test - public void givenFilePath_whenMovesToNewLocation_thenCorrect() throws IOException { - Path dir1 = Paths.get(HOME + "/firstdir_" + new Date().getTime()); - Path dir2 = Paths.get(HOME + "/otherdir_" + new Date().getTime()); - Files.createDirectory(dir1); - Files.createDirectory(dir2); - Path file1 = dir1.resolve("filetocopy.txt"); - Path file2 = dir2.resolve("filetocopy.txt"); - Files.createFile(file1); - assertTrue(Files.exists(file1)); - assertFalse(Files.exists(file2)); - Files.move(file1, file2); - assertTrue(Files.exists(file2)); - assertFalse(Files.exists(file1)); - - } - - @Test(expected = FileAlreadyExistsException.class) - public void givenFilePath_whenMoveFailsDueToExistingFile_thenCorrect() throws IOException { - Path dir1 = Paths.get(HOME + "/firstdir_" + new Date().getTime()); - Path dir2 = Paths.get(HOME + "/otherdir_" + new Date().getTime()); - Files.createDirectory(dir1); - Files.createDirectory(dir2); - Path file1 = dir1.resolve("filetocopy.txt"); - Path file2 = dir2.resolve("filetocopy.txt"); - Files.createFile(file1); - Files.createFile(file2); - assertTrue(Files.exists(file1)); - assertTrue(Files.exists(file2)); - Files.move(file1, file2); - Files.move(file1, file2, StandardCopyOption.REPLACE_EXISTING); - assertTrue(Files.exists(file2)); - assertFalse(Files.exists(file1)); - } -} diff --git a/core-java/src/test/java/com/baeldung/java/nio2/PathManualTest.java b/core-java/src/test/java/com/baeldung/java/nio2/PathManualTest.java deleted file mode 100644 index 83f8c64ff9..0000000000 --- a/core-java/src/test/java/com/baeldung/java/nio2/PathManualTest.java +++ /dev/null @@ -1,196 +0,0 @@ -package com.baeldung.java.nio2; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; - -import java.io.IOException; -import java.net.URI; -import java.nio.file.Path; -import java.nio.file.Paths; - -import org.junit.Test; - -public class PathManualTest { - - private static final String HOME = System.getProperty("user.home"); - - // creating a path - @Test - public void givenPathString_whenCreatesPathObject_thenCorrect() { - final Path p = Paths.get("/articles/baeldung"); - assertEquals("\\articles\\baeldung", p.toString()); - - } - - @Test - public void givenPathParts_whenCreatesPathObject_thenCorrect() { - final Path p = Paths.get("/articles", "baeldung"); - assertEquals("\\articles\\baeldung", p.toString()); - - } - - // retrieving path info - @Test - public void givenPath_whenRetrievesFileName_thenCorrect() { - final Path p = Paths.get("/articles/baeldung/logs"); - assertEquals("logs", p.getFileName().toString()); - } - - @Test - public void givenPath_whenRetrievesNameByIndex_thenCorrect() { - final Path p = Paths.get("/articles/baeldung/logs"); - assertEquals("articles", p.getName(0).toString()); - assertEquals("baeldung", p.getName(1).toString()); - assertEquals("logs", p.getName(2).toString()); - } - - @Test - public void givenPath_whenCountsParts_thenCorrect() { - final Path p = Paths.get("/articles/baeldung/logs"); - assertEquals(3, p.getNameCount()); - } - - @Test - public void givenPath_whenCanRetrieveSubsequenceByIndex_thenCorrect() { - final Path p = Paths.get("/articles/baeldung/logs"); - assertEquals("articles", p.subpath(0, 1).toString()); - assertEquals("articles\\baeldung", p.subpath(0, 2).toString()); - assertEquals("articles\\baeldung\\logs", p.subpath(0, 3).toString()); - assertEquals("baeldung", p.subpath(1, 2).toString()); - assertEquals("baeldung\\logs", p.subpath(1, 3).toString()); - assertEquals("logs", p.subpath(2, 3).toString()); - } - - @Test - public void givenPath_whenRetrievesParent_thenCorrect() { - final Path p1 = Paths.get("/articles/baeldung/logs"); - final Path p2 = Paths.get("/articles/baeldung"); - final Path p3 = Paths.get("/articles"); - final Path p4 = Paths.get("/"); - - assertEquals("\\articles\\baeldung", p1.getParent().toString()); - assertEquals("\\articles", p2.getParent().toString()); - assertEquals("\\", p3.getParent().toString()); - assertEquals(null, p4.getParent()); - } - - @Test - public void givenPath_whenRetrievesRoot_thenCorrect() { - final Path p1 = Paths.get("/articles/baeldung/logs"); - final Path p2 = Paths.get("c:/articles/baeldung/logs"); - - assertEquals("\\", p1.getRoot().toString()); - assertEquals("c:\\", p2.getRoot().toString()); - } - - // removing redundancies from path - @Test - public void givenPath_whenRemovesRedundancies_thenCorrect1() { - Path p = Paths.get("/home/./baeldung/articles"); - p = p.normalize(); - assertEquals("\\home\\baeldung\\articles", p.toString()); - } - - @Test - public void givenPath_whenRemovesRedundancies_thenCorrect2() { - Path p = Paths.get("/home/baeldung/../articles"); - p = p.normalize(); - assertEquals("\\home\\articles", p.toString()); - } - - // converting a path - @Test - public void givenPath_whenConvertsToBrowseablePath_thenCorrect() { - final Path p = Paths.get("/home/baeldung/articles.html"); - final URI uri = p.toUri(); - assertEquals("file:///E:/home/baeldung/articles.html", uri.toString()); - } - - @Test - public void givenPath_whenConvertsToAbsolutePath_thenCorrect() { - final Path p = Paths.get("/home/baeldung/articles.html"); - assertEquals("E:\\home\\baeldung\\articles.html", p.toAbsolutePath().toString()); - } - - @Test - public void givenAbsolutePath_whenRetainsAsAbsolute_thenCorrect() { - final Path p = Paths.get("E:\\home\\baeldung\\articles.html"); - assertEquals("E:\\home\\baeldung\\articles.html", p.toAbsolutePath().toString()); - } - - @Test - public void givenExistingPath_whenGetsRealPathToFile_thenCorrect() throws IOException { - final Path p = Paths.get(HOME); - assertEquals(HOME, p.toRealPath().toString()); - } - - @Test - public void givenInExistentPath_whenFailsToConvert_thenCorrect() { - final Path p = Paths.get("E:\\home\\baeldung\\articles.html"); - try { - p.toRealPath(); - } catch (final IOException e) { - assertTrue(true); - } - } - - // joining paths - @Test - public void givenTwoPaths_whenJoinsAndResolves_thenCorrect() throws IOException { - final Path p = Paths.get("/baeldung/articles"); - assertEquals("\\baeldung\\articles\\java", p.resolve("java").toString()); - } - - @Test - public void givenAbsolutePath_whenResolutionRetainsIt_thenCorrect() throws IOException { - final Path p = Paths.get("/baeldung/articles"); - assertEquals("C:\\baeldung\\articles\\java", p.resolve("C:\\baeldung\\articles\\java").toString()); - } - - @Test - public void givenPathWithRoot_whenResolutionRetainsIt_thenCorrect2() throws IOException { - final Path p = Paths.get("/baeldung/articles"); - assertEquals("\\java", p.resolve("/java").toString()); - } - - // creating a path between 2 paths - @Test - public void givenSiblingPaths_whenCreatesPathToOther_thenCorrect() throws IOException { - final Path p1 = Paths.get("articles"); - final Path p2 = Paths.get("authors"); - assertEquals("..\\authors", p1.relativize(p2).toString()); - assertEquals("..\\articles", p2.relativize(p1).toString()); - } - - @Test - public void givenNonSiblingPaths_whenCreatesPathToOther_thenCorrect() throws IOException { - final Path p1 = Paths.get("/baeldung"); - final Path p2 = Paths.get("/baeldung/authors/articles"); - assertEquals("authors\\articles", p1.relativize(p2).toString()); - assertEquals("..\\..", p2.relativize(p1).toString()); - } - - // comparing 2 paths - @Test - public void givenTwoPaths_whenTestsEquality_thenCorrect() throws IOException { - final Path p1 = Paths.get("/baeldung/articles"); - final Path p2 = Paths.get("/baeldung/articles"); - final Path p3 = Paths.get("/baeldung/authors"); - - assertTrue(p1.equals(p2)); - assertFalse(p1.equals(p3)); - } - - @Test - public void givenPath_whenInspectsStart_thenCorrect() { - final Path p1 = Paths.get("/baeldung/articles"); - assertTrue(p1.startsWith("/baeldung")); - } - - @Test - public void givenPath_whenInspectsEnd_thenCorrect() { - final Path p1 = Paths.get("/baeldung/articles"); - assertTrue(p1.endsWith("articles")); - } -} diff --git a/core-java/src/test/java/com/baeldung/java/nio2/PathTest.java b/core-java/src/test/java/com/baeldung/java/nio2/PathTest.java index c0cb45341e..004aeb3deb 100644 --- a/core-java/src/test/java/com/baeldung/java/nio2/PathTest.java +++ b/core-java/src/test/java/com/baeldung/java/nio2/PathTest.java @@ -6,6 +6,7 @@ import static org.junit.Assert.assertTrue; import java.io.IOException; import java.net.URI; +import java.nio.file.NoSuchFileException; import java.nio.file.Path; import java.nio.file.Paths; import java.util.Date; @@ -126,14 +127,11 @@ public class PathTest { assertEquals(HOME, p.toRealPath().toString()); } - @Test - public void givenInExistentPath_whenFailsToConvert_thenCorrect() { + @Test(expected = NoSuchFileException.class) + public void givenInExistentPath_whenFailsToConvert_thenCorrect() throws IOException { Path p = Paths.get("E:\\home\\baeldung\\articles.html"); - try { - p.toRealPath(); - } catch (IOException e) { - assertTrue(true); - } + + p.toRealPath(); } // joining paths From 2529414d4355a1920ae21664d38ccb6a82a054dc Mon Sep 17 00:00:00 2001 From: DOHA Date: Sun, 30 Oct 2016 22:05:15 +0200 Subject: [PATCH 169/215] cleanup --- apache-fop/pom.xml | 47 ++++++++++++++++++- ... ApacheFOPConvertHTMLIntegrationTest.java} | 2 +- ...Test.java => ApacheFOPHeroldLiveTest.java} | 2 +- 3 files changed, 48 insertions(+), 3 deletions(-) rename apache-fop/src/test/java/org/baeldung/java/{ApacheFOPConvertHTMLTest.java => ApacheFOPConvertHTMLIntegrationTest.java} (98%) rename apache-fop/src/test/java/org/baeldung/java/{ApacheFOPHeroldTest.java => ApacheFOPHeroldLiveTest.java} (99%) diff --git a/apache-fop/pom.xml b/apache-fop/pom.xml index 658d567a90..949843a47e 100644 --- a/apache-fop/pom.xml +++ b/apache-fop/pom.xml @@ -97,6 +97,14 @@ 8.0.2 + + org.dbdoclet + herold + 6.1.0 + system + ${basedir}/src/test/resources/jars/herold.jar + + net.sf.jtidy jtidy @@ -132,7 +140,8 @@ ${maven-surefire-plugin.version} - **/*IntegrationTest.java + **/*IntegrationTest.java + **/*LiveTest.java @@ -141,6 +150,42 @@ + + + integration + + + + org.apache.maven.plugins + maven-surefire-plugin + + + integration-test + + test + + + + **/*ManualTest.java + + + **/*IntegrationTest.java + **/*LiveTest.java + + + + + + + json + + + + + + + + 4.3.11.Final diff --git a/apache-fop/src/test/java/org/baeldung/java/ApacheFOPConvertHTMLTest.java b/apache-fop/src/test/java/org/baeldung/java/ApacheFOPConvertHTMLIntegrationTest.java similarity index 98% rename from apache-fop/src/test/java/org/baeldung/java/ApacheFOPConvertHTMLTest.java rename to apache-fop/src/test/java/org/baeldung/java/ApacheFOPConvertHTMLIntegrationTest.java index bde6868b39..99487c8fdf 100644 --- a/apache-fop/src/test/java/org/baeldung/java/ApacheFOPConvertHTMLTest.java +++ b/apache-fop/src/test/java/org/baeldung/java/ApacheFOPConvertHTMLIntegrationTest.java @@ -25,7 +25,7 @@ import org.junit.Test; import org.w3c.dom.Document; import org.w3c.tidy.Tidy; -public class ApacheFOPConvertHTMLTest { +public class ApacheFOPConvertHTMLIntegrationTest { private String inputFile = "src/test/resources/input.html"; private String style = "src/test/resources/xhtml2fo.xsl"; private String style1 = "src/test/resources/docbook-xsl/fo/docbook.xsl"; diff --git a/apache-fop/src/test/java/org/baeldung/java/ApacheFOPHeroldTest.java b/apache-fop/src/test/java/org/baeldung/java/ApacheFOPHeroldLiveTest.java similarity index 99% rename from apache-fop/src/test/java/org/baeldung/java/ApacheFOPHeroldTest.java rename to apache-fop/src/test/java/org/baeldung/java/ApacheFOPHeroldLiveTest.java index 5e3c2c472b..9e71cd9c16 100644 --- a/apache-fop/src/test/java/org/baeldung/java/ApacheFOPHeroldTest.java +++ b/apache-fop/src/test/java/org/baeldung/java/ApacheFOPHeroldLiveTest.java @@ -30,7 +30,7 @@ import org.dbdoclet.trafo.script.Script; import org.junit.Test; import org.w3c.dom.Document; -public class ApacheFOPHeroldTest { +public class ApacheFOPHeroldLiveTest { private String[] inputUrls = {// @formatter:off "http://www.baeldung.com/2011/10/20/bootstraping-a-web-application-with-spring-3-1-and-java-based-configuration-part-1/", "http://www.baeldung.com/2011/10/25/building-a-restful-web-service-with-spring-3-1-and-java-based-configuration-part-2/", From e8dc2be8c1637d81ffa90e3b080100d35201cbfd Mon Sep 17 00:00:00 2001 From: Ankush Sharma Date: Mon, 31 Oct 2016 12:07:36 +0530 Subject: [PATCH 170/215] Added ErrorController, edited web.xml and added error pages code, added errorPage.jsp --- .../spring/controller/ErrorController.java | 52 +++++++++++++++++++ .../main/webapp/WEB-INF/view/errorPage.jsp | 13 +++++ .../src/main/webapp/WEB-INF/web.xml | 5 ++ 3 files changed, 70 insertions(+) create mode 100644 spring-mvc-xml/src/main/java/com/baeldung/spring/controller/ErrorController.java create mode 100644 spring-mvc-xml/src/main/webapp/WEB-INF/view/errorPage.jsp diff --git a/spring-mvc-xml/src/main/java/com/baeldung/spring/controller/ErrorController.java b/spring-mvc-xml/src/main/java/com/baeldung/spring/controller/ErrorController.java new file mode 100644 index 0000000000..3da613cd56 --- /dev/null +++ b/spring-mvc-xml/src/main/java/com/baeldung/spring/controller/ErrorController.java @@ -0,0 +1,52 @@ +package com.baeldung.spring.controller; + +import javax.servlet.http.HttpServletRequest; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.servlet.ModelAndView; + +@Controller +public class ErrorController { + + @RequestMapping(value = "500Error" , method = RequestMethod.GET) + public void throwRuntimeException(){ + throw new NullPointerException("Throwing a null pointer exception"); + } + + + @RequestMapping(value = "errors" , method = RequestMethod.GET) + public ModelAndView renderErrorPages(HttpServletRequest httpRequest){ + ModelAndView errorPage = new ModelAndView("errorPage"); + String errorMsg = ""; + int httpErrorCode = getErrorCode(httpRequest); + + switch( httpErrorCode ){ + case 400:{ + errorMsg = "Http Error Code : 400 . Bad Request"; + break; + } + case 401:{ + errorMsg = "Http Error Code : 401. Unauthorized"; + break; + } + case 404:{ + errorMsg = "Http Error Code : 404. Resource not found"; + break; + } + //Handle other 4xx error codes. + case 500:{ + errorMsg = "Http Error Code : 500. Internal Server Error"; + break; + } + //Handle other 5xx error codes. + } + errorPage.addObject("errorMsg", errorMsg); + return errorPage; + } + + private int getErrorCode(HttpServletRequest httpRequest){ + return (Integer) httpRequest.getAttribute("javax.servlet.error.status_code"); + } +} diff --git a/spring-mvc-xml/src/main/webapp/WEB-INF/view/errorPage.jsp b/spring-mvc-xml/src/main/webapp/WEB-INF/view/errorPage.jsp new file mode 100644 index 0000000000..a94858c6b1 --- /dev/null +++ b/spring-mvc-xml/src/main/webapp/WEB-INF/view/errorPage.jsp @@ -0,0 +1,13 @@ +<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> +<%@ page session="false" %> + + + Home + + +

+ ${errorMsg} +

+ + + diff --git a/spring-mvc-xml/src/main/webapp/WEB-INF/web.xml b/spring-mvc-xml/src/main/webapp/WEB-INF/web.xml index 29608a17ef..3aecded8d6 100644 --- a/spring-mvc-xml/src/main/webapp/WEB-INF/web.xml +++ b/spring-mvc-xml/src/main/webapp/WEB-INF/web.xml @@ -43,4 +43,9 @@ index.jsp + + + /errors + + \ No newline at end of file From d100f84ea9c33c3f0ce96d963a43219415b0eafa Mon Sep 17 00:00:00 2001 From: Ankush Sharma Date: Mon, 31 Oct 2016 12:11:37 +0530 Subject: [PATCH 171/215] code formatted. --- .../spring/controller/ErrorController.java | 55 +++++++++---------- 1 file changed, 27 insertions(+), 28 deletions(-) diff --git a/spring-mvc-xml/src/main/java/com/baeldung/spring/controller/ErrorController.java b/spring-mvc-xml/src/main/java/com/baeldung/spring/controller/ErrorController.java index 3da613cd56..8ca815b4d7 100644 --- a/spring-mvc-xml/src/main/java/com/baeldung/spring/controller/ErrorController.java +++ b/spring-mvc-xml/src/main/java/com/baeldung/spring/controller/ErrorController.java @@ -9,44 +9,43 @@ import org.springframework.web.servlet.ModelAndView; @Controller public class ErrorController { - - @RequestMapping(value = "500Error" , method = RequestMethod.GET) - public void throwRuntimeException(){ + + @RequestMapping(value = "500Error", method = RequestMethod.GET) + public void throwRuntimeException() { throw new NullPointerException("Throwing a null pointer exception"); } - - @RequestMapping(value = "errors" , method = RequestMethod.GET) - public ModelAndView renderErrorPages(HttpServletRequest httpRequest){ + @RequestMapping(value = "errors", method = RequestMethod.GET) + public ModelAndView renderErrorPages(HttpServletRequest httpRequest) { ModelAndView errorPage = new ModelAndView("errorPage"); String errorMsg = ""; int httpErrorCode = getErrorCode(httpRequest); - - switch( httpErrorCode ){ - case 400:{ - errorMsg = "Http Error Code : 400 . Bad Request"; - break; - } - case 401:{ - errorMsg = "Http Error Code : 401. Unauthorized"; - break; - } - case 404:{ - errorMsg = "Http Error Code : 404. Resource not found"; - break; - } - //Handle other 4xx error codes. - case 500:{ - errorMsg = "Http Error Code : 500. Internal Server Error"; - break; - } - //Handle other 5xx error codes. + + switch (httpErrorCode) { + case 400: { + errorMsg = "Http Error Code : 400 . Bad Request"; + break; + } + case 401: { + errorMsg = "Http Error Code : 401. Unauthorized"; + break; + } + case 404: { + errorMsg = "Http Error Code : 404. Resource not found"; + break; + } + // Handle other 4xx error codes. + case 500: { + errorMsg = "Http Error Code : 500. Internal Server Error"; + break; + } + // Handle other 5xx error codes. } errorPage.addObject("errorMsg", errorMsg); return errorPage; } - - private int getErrorCode(HttpServletRequest httpRequest){ + + private int getErrorCode(HttpServletRequest httpRequest) { return (Integer) httpRequest.getAttribute("javax.servlet.error.status_code"); } } From f0c98472c0d39d6cd07d977dc580d427fab638b7 Mon Sep 17 00:00:00 2001 From: eugenp Date: Mon, 31 Oct 2016 09:33:00 +0200 Subject: [PATCH 172/215] minor comment to clarify the test --- .../java/org/baeldung/java/JavaTimerLongRunningUnitTest.java | 1 - 1 file changed, 1 deletion(-) diff --git a/core-java/src/test/java/org/baeldung/java/JavaTimerLongRunningUnitTest.java b/core-java/src/test/java/org/baeldung/java/JavaTimerLongRunningUnitTest.java index da316aa885..3b126464ab 100644 --- a/core-java/src/test/java/org/baeldung/java/JavaTimerLongRunningUnitTest.java +++ b/core-java/src/test/java/org/baeldung/java/JavaTimerLongRunningUnitTest.java @@ -90,7 +90,6 @@ public class JavaTimerLongRunningUnitTest { @Override public void run() { System.out.println("Task performed on " + new Date()); - // TODO: stop the thread } }; final Timer timer = new Timer("Timer"); From c0c8d8690e9ee4d76710c1fd3b41429428a7aa88 Mon Sep 17 00:00:00 2001 From: DOHA Date: Mon, 31 Oct 2016 12:06:29 +0200 Subject: [PATCH 173/215] cleanup --- .../baeldung/java/networking/udp/UDPTest.java | 33 ------------------- pom.xml | 2 +- 2 files changed, 1 insertion(+), 34 deletions(-) delete mode 100644 core-java/src/main/java/com/baeldung/java/networking/udp/UDPTest.java diff --git a/core-java/src/main/java/com/baeldung/java/networking/udp/UDPTest.java b/core-java/src/main/java/com/baeldung/java/networking/udp/UDPTest.java deleted file mode 100644 index ee93936230..0000000000 --- a/core-java/src/main/java/com/baeldung/java/networking/udp/UDPTest.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.baeldung.java.networking.udp; - -import static org.junit.Assert.*; - -import java.io.IOException; - -import org.junit.After; -import org.junit.Before; -import org.junit.Test; - -public class UDPTest { - EchoClient client = null; - - @Before - public void setup() throws IOException { - new EchoServer().start(); - client = new EchoClient(); - } - - @Test - public void whenCanSendAndReceivePacket_thenCorrect1() { - String echo = client.sendEcho("hello server"); - assertEquals("hello server", echo); - echo = client.sendEcho("server is working"); - assertFalse(echo.equals("hello server")); - } - - @After - public void tearDown() { - client.sendEcho("end"); - client.close(); - } -} diff --git a/pom.xml b/pom.xml index f04b79296a..82aa022269 100644 --- a/pom.xml +++ b/pom.xml @@ -21,7 +21,7 @@ autovalue cdi - core-java-9 + core-java couchbase-sdk From 2931b3114e4a2f646cc6924801abfd3858e24b59 Mon Sep 17 00:00:00 2001 From: DOHA Date: Mon, 31 Oct 2016 16:26:05 +0200 Subject: [PATCH 174/215] minor cleanup --- .../baeldung/java/networking/url/UrlTest.java | 104 ------------------ 1 file changed, 104 deletions(-) delete mode 100644 core-java/src/test/java/com/baeldung/java/networking/url/UrlTest.java diff --git a/core-java/src/test/java/com/baeldung/java/networking/url/UrlTest.java b/core-java/src/test/java/com/baeldung/java/networking/url/UrlTest.java deleted file mode 100644 index 14444f0145..0000000000 --- a/core-java/src/test/java/com/baeldung/java/networking/url/UrlTest.java +++ /dev/null @@ -1,104 +0,0 @@ -package com.baeldung.java.networking.url; - -import static org.junit.Assert.assertEquals; - -import java.net.MalformedURLException; -import java.net.URL; - -import org.junit.Test; - -public class UrlTest { - - @Test - public void givenUrl_whenCanIdentifyProtocol_thenCorrect() throws MalformedURLException { - URL url = new URL("http://baeldung.com"); - assertEquals("http", url.getProtocol()); - } - - @Test - public void givenUrl_whenCanGetHost_thenCorrect() throws MalformedURLException { - URL url = new URL("http://baeldung.com"); - assertEquals("baeldung.com", url.getHost()); - } - - @Test - public void givenUrl_whenCanGetFileName_thenCorrect2() throws MalformedURLException { - URL url = new URL("http://baeldung.com/articles?topic=java&version=8"); - assertEquals("/articles?topic=java&version=8", url.getFile()); - } - - @Test - public void givenUrl_whenCanGetFileName_thenCorrect1() throws MalformedURLException { - URL url = new URL("http://baeldung.com/guidelines.txt"); - assertEquals("/guidelines.txt", url.getFile()); - } - - @Test - public void givenUrl_whenCanGetPathParams_thenCorrect() throws MalformedURLException { - URL url = new URL("http://baeldung.com/articles?topic=java&version=8"); - assertEquals("/articles", url.getPath()); - } - - @Test - public void givenUrl_whenCanGetQueryParams_thenCorrect() throws MalformedURLException { - URL url = new URL("http://baeldung.com/articles?topic=java"); - assertEquals("topic=java", url.getQuery()); - } - - @Test - public void givenUrl_whenGetsDefaultPort_thenCorrect() throws MalformedURLException { - URL url = new URL("http://baeldung.com"); - assertEquals(-1, url.getPort()); - assertEquals(80, url.getDefaultPort()); - } - - @Test - public void givenUrl_whenGetsPort_thenCorrect() throws MalformedURLException { - URL url = new URL("http://baeldung.com:8090"); - assertEquals(8090, url.getPort()); - assertEquals(80, url.getDefaultPort()); - } - - @Test - public void givenBaseUrl_whenCreatesRelativeUrl_thenCorrect() throws MalformedURLException { - URL baseUrl = new URL("http://baeldung.com"); - URL relativeUrl = new URL(baseUrl, "a-guide-to-java-sockets"); - assertEquals("http://baeldung.com/a-guide-to-java-sockets", relativeUrl.toString()); - } - - @Test - public void givenAbsoluteUrl_whenIgnoresBaseUrl_thenCorrect() throws MalformedURLException { - URL baseUrl = new URL("http://baeldung.com"); - URL relativeUrl = new URL(baseUrl, "http://baeldung.com/a-guide-to-java-sockets"); - assertEquals("http://baeldung.com/a-guide-to-java-sockets", relativeUrl.toString()); - } - - @Test - public void givenUrlComponents_whenConstructsCompleteUrl_thenCorrect() throws MalformedURLException { - String protocol = "http"; - String host = "baeldung.com"; - String file = "/guidelines.txt"; - URL url = new URL(protocol, host, file); - assertEquals("http://baeldung.com/guidelines.txt", url.toString()); - } - - @Test - public void givenUrlComponents_whenConstructsCompleteUrl_thenCorrect2() throws MalformedURLException { - String protocol = "http"; - String host = "baeldung.com"; - String file = "/articles?topic=java&version=8"; - URL url = new URL(protocol, host, file); - assertEquals("http://baeldung.com/guidelines.txt", url.toString()); - } - - @Test - public void givenUrlComponentsWithPort_whenConstructsCompleteUrl_thenCorrect() throws MalformedURLException { - String protocol = "http"; - String host = "baeldung.com"; - int port = 9000; - String file = "/guidelines.txt"; - URL url = new URL(protocol, host, port, file); - assertEquals("http://baeldung.com:9000/guidelines.txt", url.toString()); - } - -} From fd5188aed21432867b11b7fd6587eeba2f624a0a Mon Sep 17 00:00:00 2001 From: DOHA Date: Mon, 31 Oct 2016 16:55:15 +0200 Subject: [PATCH 175/215] minor fix --- .../httpclient/HttpClientPostingLiveTest.java | 5 ++- .../httpclient/HttpsClientSslLiveTest.java | 45 +++++++++++-------- .../base/HttpClientSandboxLiveTest.java | 13 +++--- .../sec/HttpClientAuthLiveTest.java | 4 ++ 4 files changed, 41 insertions(+), 26 deletions(-) diff --git a/httpclient/src/test/java/org/baeldung/httpclient/HttpClientPostingLiveTest.java b/httpclient/src/test/java/org/baeldung/httpclient/HttpClientPostingLiveTest.java index 23cbfde82d..ada5667f0b 100644 --- a/httpclient/src/test/java/org/baeldung/httpclient/HttpClientPostingLiveTest.java +++ b/httpclient/src/test/java/org/baeldung/httpclient/HttpClientPostingLiveTest.java @@ -27,10 +27,11 @@ import org.apache.http.impl.auth.BasicScheme; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.message.BasicNameValuePair; -import org.junit.Ignore; import org.junit.Test; -@Ignore("need spring-rest module running") +/* + * NOTE : Need module spring-rest to be running + */ public class HttpClientPostingLiveTest { private static final String SAMPLE_URL = "http://localhost:8080/spring-rest/users"; private static final String URL_SECURED_BY_BASIC_AUTHENTICATION = "http://browserspy.dk/password-ok.php"; diff --git a/httpclient/src/test/java/org/baeldung/httpclient/HttpsClientSslLiveTest.java b/httpclient/src/test/java/org/baeldung/httpclient/HttpsClientSslLiveTest.java index 66b4f5cff4..fb272b0a33 100644 --- a/httpclient/src/test/java/org/baeldung/httpclient/HttpsClientSslLiveTest.java +++ b/httpclient/src/test/java/org/baeldung/httpclient/HttpsClientSslLiveTest.java @@ -1,28 +1,35 @@ package org.baeldung.httpclient; -import org.apache.http.HttpResponse; -import org.apache.http.client.methods.HttpGet; -import org.apache.http.conn.ClientConnectionManager; -import org.apache.http.conn.scheme.Scheme; -import org.apache.http.conn.scheme.SchemeRegistry; -import org.apache.http.conn.ssl.*; -import org.apache.http.impl.client.CloseableHttpClient; -import org.apache.http.impl.client.DefaultHttpClient; -import org.apache.http.impl.client.HttpClientBuilder; -import org.apache.http.impl.client.HttpClients; -import org.apache.http.impl.conn.PoolingClientConnectionManager; -import org.junit.Test; +import static org.hamcrest.CoreMatchers.equalTo; +import static org.junit.Assert.assertThat; -import javax.net.ssl.SSLContext; -import javax.net.ssl.SSLException; import java.io.IOException; import java.security.GeneralSecurityException; import java.security.KeyManagementException; import java.security.KeyStoreException; import java.security.NoSuchAlgorithmException; -import static org.hamcrest.CoreMatchers.equalTo; -import static org.junit.Assert.assertThat; +import javax.net.ssl.SSLContext; +import javax.net.ssl.SSLException; + +import org.apache.http.HttpResponse; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.conn.ClientConnectionManager; +import org.apache.http.conn.scheme.Scheme; +import org.apache.http.conn.scheme.SchemeRegistry; +import org.apache.http.conn.ssl.NoopHostnameVerifier; +import org.apache.http.conn.ssl.SSLConnectionSocketFactory; +import org.apache.http.conn.ssl.SSLContextBuilder; +import org.apache.http.conn.ssl.SSLContexts; +import org.apache.http.conn.ssl.SSLSocketFactory; +import org.apache.http.conn.ssl.TrustSelfSignedStrategy; +import org.apache.http.conn.ssl.TrustStrategy; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.DefaultHttpClient; +import org.apache.http.impl.client.HttpClientBuilder; +import org.apache.http.impl.client.HttpClients; +import org.apache.http.impl.conn.PoolingClientConnectionManager; +import org.junit.Test; /** * This test requires a localhost server over HTTPS
@@ -96,7 +103,7 @@ public class HttpsClientSslLiveTest { @Test public final void givenIgnoringCertificates_whenHttpsUrlIsConsumed_thenCorrect() throws IOException { - TrustStrategy acceptingTrustStrategy = (certificate, authType) -> true; + final TrustStrategy acceptingTrustStrategy = (certificate, authType) -> true; SSLContext sslContext = null; try { @@ -106,8 +113,8 @@ public class HttpsClientSslLiveTest { e.printStackTrace(); } - CloseableHttpClient client = HttpClients.custom().setSSLContext(sslContext).setSSLHostnameVerifier(new NoopHostnameVerifier()).build(); - final HttpGet httpGet = new HttpGet("https://sesar3.geoinfogeochem.org/sample/igsn/ODP000002"); + final CloseableHttpClient client = HttpClients.custom().setSSLContext(sslContext).setSSLHostnameVerifier(new NoopHostnameVerifier()).build(); + final HttpGet httpGet = new HttpGet(HOST_WITH_SSL); httpGet.setHeader("Accept", "application/xml"); final HttpResponse response = client.execute(httpGet); diff --git a/httpclient/src/test/java/org/baeldung/httpclient/base/HttpClientSandboxLiveTest.java b/httpclient/src/test/java/org/baeldung/httpclient/base/HttpClientSandboxLiveTest.java index 22b32e7ef5..40216a70a5 100644 --- a/httpclient/src/test/java/org/baeldung/httpclient/base/HttpClientSandboxLiveTest.java +++ b/httpclient/src/test/java/org/baeldung/httpclient/base/HttpClientSandboxLiveTest.java @@ -1,5 +1,8 @@ package org.baeldung.httpclient.base; +import java.io.IOException; +import java.io.InputStream; + import org.apache.http.HttpEntity; import org.apache.http.auth.AuthScope; import org.apache.http.auth.UsernamePasswordCredentials; @@ -11,9 +14,9 @@ import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClientBuilder; import org.junit.Test; -import java.io.IOException; -import java.io.InputStream; - +/* + * NOTE : Need module spring-security-rest-basic-auth to be running + */ public class HttpClientSandboxLiveTest { @Test @@ -22,10 +25,10 @@ public class HttpClientSandboxLiveTest { final AuthScope authscp = new AuthScope("localhost", 8080); credentialsProvider.setCredentials(authscp, new UsernamePasswordCredentials("user1", "user1Pass")); - CloseableHttpClient client = HttpClientBuilder.create().setDefaultCredentialsProvider(credentialsProvider).build(); + final CloseableHttpClient client = HttpClientBuilder.create().setDefaultCredentialsProvider(credentialsProvider).build(); final HttpGet httpGet = new HttpGet("http://localhost:8080/spring-security-rest-basic-auth/api/foos/1"); - CloseableHttpResponse response = client.execute(httpGet); + final CloseableHttpResponse response = client.execute(httpGet); System.out.println(response.getStatusLine()); diff --git a/httpclient/src/test/java/org/baeldung/httpclient/sec/HttpClientAuthLiveTest.java b/httpclient/src/test/java/org/baeldung/httpclient/sec/HttpClientAuthLiveTest.java index 495d46e91f..e98dd4d14f 100644 --- a/httpclient/src/test/java/org/baeldung/httpclient/sec/HttpClientAuthLiveTest.java +++ b/httpclient/src/test/java/org/baeldung/httpclient/sec/HttpClientAuthLiveTest.java @@ -30,6 +30,10 @@ import org.junit.After; import org.junit.Before; import org.junit.Test; +/* + * NOTE : Need module spring-security-rest-basic-auth to be running + */ + public class HttpClientAuthLiveTest { private static final String URL_SECURED_BY_BASIC_AUTHENTICATION = "http://localhost:8081/spring-security-rest-basic-auth/api/foos/1"; From 20fd711f87e9d8137b3d44282278d4fffdef4c2c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20R=C3=A4del?= Date: Mon, 31 Oct 2016 16:18:33 +0100 Subject: [PATCH 176/215] BAEL-90: Service Release (#781) * BAEL-90: - Updated dependencies & Maven cleanup - Fixed security configuration * BAEL-90: - Updated dependencies & Maven cleanup - Fixed security configuration * BAEL-90: Removed local workspace path to config repository. --- .../config-client-production.properties | 1 - .../spring-cloud-config/client/pom.xml | 46 ++---------------- .../src/main/resources/bootstrap.properties | 1 + .../config-client-development.properties | 0 .../config-client-production.properties | 2 + spring-cloud/spring-cloud-config/pom.xml | 22 +++++++-- .../spring-cloud-config/server/pom.xml | 47 +++---------------- .../cloud/config/server/ConfigServer.java | 2 - .../src/main/resources/application.properties | 2 +- 9 files changed, 33 insertions(+), 90 deletions(-) delete mode 100644 spring-cloud/spring-cloud-config/client-config/config-client-production.properties rename spring-cloud/spring-cloud-config/{client-config => config-repo}/config-client-development.properties (100%) create mode 100644 spring-cloud/spring-cloud-config/config-repo/config-client-production.properties diff --git a/spring-cloud/spring-cloud-config/client-config/config-client-production.properties b/spring-cloud/spring-cloud-config/client-config/config-client-production.properties deleted file mode 100644 index cd2e14fcc3..0000000000 --- a/spring-cloud/spring-cloud-config/client-config/config-client-production.properties +++ /dev/null @@ -1 +0,0 @@ -user.role=User diff --git a/spring-cloud/spring-cloud-config/client/pom.xml b/spring-cloud/spring-cloud-config/client/pom.xml index 0ef4b35581..2c4b748e8a 100644 --- a/spring-cloud/spring-cloud-config/client/pom.xml +++ b/spring-cloud/spring-cloud-config/client/pom.xml @@ -6,49 +6,30 @@ com.baeldung.spring.cloud spring-cloud-config - 0.0.1-SNAPSHOT + 1.0-SNAPSHOT client - jar - - client - Demo project for Spring Cloud Config Client - - - UTF-8 - UTF-8 - 1.8 - org.springframework.cloud spring-cloud-starter-config + 1.2.0.RELEASE org.springframework.boot spring-boot-starter-web + ${org.springframework.boot.version} org.springframework.boot spring-boot-starter-test + ${org.springframework.boot.version} test - - - - org.springframework.cloud - spring-cloud-dependencies - Brixton.BUILD-SNAPSHOT - pom - import - - - - @@ -57,23 +38,4 @@ - - - - spring-snapshots - Spring Snapshots - https://repo.spring.io/snapshot - - true - - - - spring-milestones - Spring Milestones - https://repo.spring.io/milestone - - false - - - diff --git a/spring-cloud/spring-cloud-config/client/src/main/resources/bootstrap.properties b/spring-cloud/spring-cloud-config/client/src/main/resources/bootstrap.properties index 18982a93b5..5dde8baa28 100644 --- a/spring-cloud/spring-cloud-config/client/src/main/resources/bootstrap.properties +++ b/spring-cloud/spring-cloud-config/client/src/main/resources/bootstrap.properties @@ -3,3 +3,4 @@ spring.profiles.active=development spring.cloud.config.uri=http://localhost:8888 spring.cloud.config.username=root spring.cloud.config.password=s3cr3t +spring.cloud.config.fail-fast=true diff --git a/spring-cloud/spring-cloud-config/client-config/config-client-development.properties b/spring-cloud/spring-cloud-config/config-repo/config-client-development.properties similarity index 100% rename from spring-cloud/spring-cloud-config/client-config/config-client-development.properties rename to spring-cloud/spring-cloud-config/config-repo/config-client-development.properties diff --git a/spring-cloud/spring-cloud-config/config-repo/config-client-production.properties b/spring-cloud/spring-cloud-config/config-repo/config-client-production.properties new file mode 100644 index 0000000000..ca00f0e390 --- /dev/null +++ b/spring-cloud/spring-cloud-config/config-repo/config-client-production.properties @@ -0,0 +1,2 @@ +user.role=User +user.password=pass diff --git a/spring-cloud/spring-cloud-config/pom.xml b/spring-cloud/spring-cloud-config/pom.xml index 8e0e4b8706..7d9fd97ee4 100644 --- a/spring-cloud/spring-cloud-config/pom.xml +++ b/spring-cloud/spring-cloud-config/pom.xml @@ -5,7 +5,7 @@ com.baeldung.spring.cloud spring-cloud-config - 0.0.1-SNAPSHOT + 1.0-SNAPSHOT pom @@ -16,9 +16,22 @@ org.springframework.boot spring-boot-starter-parent - 1.3.5.RELEASE + 1.4.1.RELEASE + + + + + org.springframework.cloud + spring-cloud-dependencies + Camden.SR1 + pom + import + + + + @@ -36,7 +49,10 @@ - 1.3.5.RELEASE + UTF-8 + UTF-8 + 1.8 + 1.4.1.RELEASE 2.19.1 diff --git a/spring-cloud/spring-cloud-config/server/pom.xml b/spring-cloud/spring-cloud-config/server/pom.xml index c3f68854bb..33fac435b1 100644 --- a/spring-cloud/spring-cloud-config/server/pom.xml +++ b/spring-cloud/spring-cloud-config/server/pom.xml @@ -6,77 +6,42 @@ com.baeldung.spring.cloud spring-cloud-config - 0.0.1-SNAPSHOT + 1.0-SNAPSHOT server - server - Demo project for Spring Cloud Config Server - - - UTF-8 - UTF-8 - 1.8 - - org.springframework.cloud spring-cloud-config-server + 1.2.0.RELEASE org.springframework.boot spring-boot-starter-security + ${org.springframework.boot.version} org.springframework.boot spring-boot-starter-web + ${org.springframework.boot.version} org.springframework.boot spring-boot-starter-test + ${org.springframework.boot.version} test - - - - org.springframework.cloud - spring-cloud-dependencies - Brixton.BUILD-SNAPSHOT - pom - import - - - - org.springframework.boot spring-boot-maven-plugin + ${org.springframework.boot.version} - - - - spring-snapshots - Spring Snapshots - https://repo.spring.io/snapshot - - true - - - - spring-milestones - Spring Milestones - https://repo.spring.io/milestone - - false - - - diff --git a/spring-cloud/spring-cloud-config/server/src/main/java/com/baeldung/spring/cloud/config/server/ConfigServer.java b/spring-cloud/spring-cloud-config/server/src/main/java/com/baeldung/spring/cloud/config/server/ConfigServer.java index 4dd34ae3ff..7c5933e509 100644 --- a/spring-cloud/spring-cloud-config/server/src/main/java/com/baeldung/spring/cloud/config/server/ConfigServer.java +++ b/spring-cloud/spring-cloud-config/server/src/main/java/com/baeldung/spring/cloud/config/server/ConfigServer.java @@ -3,11 +3,9 @@ package com.baeldung.spring.cloud.config.server; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.config.server.EnableConfigServer; -import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; @SpringBootApplication @EnableConfigServer -@EnableWebSecurity public class ConfigServer { public static void main(String[] args) { SpringApplication.run(ConfigServer.class, args); diff --git a/spring-cloud/spring-cloud-config/server/src/main/resources/application.properties b/spring-cloud/spring-cloud-config/server/src/main/resources/application.properties index 9476887a1c..3d4f3bcd47 100644 --- a/spring-cloud/spring-cloud-config/server/src/main/resources/application.properties +++ b/spring-cloud/spring-cloud-config/server/src/main/resources/application.properties @@ -1,5 +1,5 @@ server.port=8888 -spring.cloud.config.server.git.uri=https://github.com/spring-cloud-samples/config-repo +spring.cloud.config.server.git.uri= spring.cloud.config.server.git.clone-on-start=true security.user.name=root security.user.password=s3cr3t From 3dd42cb1cd664ac1c090d8e8996b4cc95a8147d9 Mon Sep 17 00:00:00 2001 From: michal_aibin Date: Mon, 31 Oct 2016 21:48:24 +0100 Subject: [PATCH 177/215] Updated errors in Eclipse import all modules --- spring-jooq/README.md | 4 ++++ spring-jooq/pom.xml | 33 +++++++++++++++++++++++++++++++++ spring-jpa/README.md | 3 +++ 3 files changed, 40 insertions(+) diff --git a/spring-jooq/README.md b/spring-jooq/README.md index 79718e74c6..2777aa450c 100644 --- a/spring-jooq/README.md +++ b/spring-jooq/README.md @@ -1,3 +1,7 @@ ### Relevant Articles: - [Spring Boot Support for jOOQ](http://www.baeldung.com/spring-boot-support-for-jooq) - [Introduction to jOOQ with Spring](http://www.baeldung.com/jooq-with-spring) + +In order to fix the error "Plugin execution not covered by lifecycle configuration: org.jooq:jooq-codegen-maven:3.7.3:generate (execution: default, phase: generate-sources)", right-click on the error message and choose "Mark goal generated as ignore in pom.xml". Until version 1.4.x, the maven-plugin-plugin was covered by the default lifecycle mapping that ships with m2e. + +Since version 1.5.x, the m2e default lifecycle mapping no longer covers the maven-plugin-plugin. diff --git a/spring-jooq/pom.xml b/spring-jooq/pom.xml index 96a3de11db..bf60acd6f6 100644 --- a/spring-jooq/pom.xml +++ b/spring-jooq/pom.xml @@ -173,6 +173,39 @@ + + + + + org.eclipse.m2e + lifecycle-mapping + 1.0.0 + + + + + + org.jooq + + jooq-codegen-maven + + + [3.7.3,) + + + generate + + + + + + + + + + + + diff --git a/spring-jpa/README.md b/spring-jpa/README.md index 4568c0bc7f..bc768bee22 100644 --- a/spring-jpa/README.md +++ b/spring-jpa/README.md @@ -12,3 +12,6 @@ - [Spring JPA – Multiple Databases](http://www.baeldung.com/spring-data-jpa-multiple-databases) - [Hibernate Second-Level Cache](http://www.baeldung.com/hibernate-second-level-cache) - [Spring, Hibernate and a JNDI Datasource](http://www.baeldung.com/spring-persistence-jpa-jndi-datasource) + +To ignore "No persistence xml file found in project", you do: +Project -> Properties -> Java Persistance -> JPA -> Error/Warnings -> Select Ignore on "No persistence xml file found in project" From 3e7e70eb33b56fc874823faa033bc1f4e8fc90dd Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Tue, 1 Nov 2016 07:26:04 +0000 Subject: [PATCH 178/215] Refactor FileTest --- .../java/com/baeldung/java/nio2/FileTest.java | 55 +++++++------------ 1 file changed, 21 insertions(+), 34 deletions(-) diff --git a/core-java/src/test/java/com/baeldung/java/nio2/FileTest.java b/core-java/src/test/java/com/baeldung/java/nio2/FileTest.java index 4a1ad1da60..e8b10fe767 100644 --- a/core-java/src/test/java/com/baeldung/java/nio2/FileTest.java +++ b/core-java/src/test/java/com/baeldung/java/nio2/FileTest.java @@ -1,21 +1,14 @@ package com.baeldung.java.nio2; +import org.junit.Test; + +import java.io.IOException; +import java.nio.file.*; +import java.util.UUID; + import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; -import java.io.IOException; -import java.nio.file.CopyOption; -import java.nio.file.DirectoryNotEmptyException; -import java.nio.file.FileAlreadyExistsException; -import java.nio.file.Files; -import java.nio.file.NoSuchFileException; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.nio.file.StandardCopyOption; -import java.util.Date; - -import org.junit.Test; - public class FileTest { private static final String HOME = System.getProperty("user.home"); @@ -67,7 +60,7 @@ public class FileTest { // creating file @Test public void givenFilePath_whenCreatesNewFile_thenCorrect() throws IOException { - String fileName = "myfile_" + new Date().getTime() + ".txt"; + String fileName = "myfile_" + UUID.randomUUID().toString() + ".txt"; Path p = Paths.get(HOME + "/" + fileName); assertFalse(Files.exists(p)); Files.createFile(p); @@ -77,7 +70,7 @@ public class FileTest { @Test public void givenDirPath_whenCreatesNewDir_thenCorrect() throws IOException { - String dirName = "myDir_" + new Date().getTime(); + String dirName = "myDir_" + UUID.randomUUID().toString(); Path p = Paths.get(HOME + "/" + dirName); assertFalse(Files.exists(p)); Files.createDirectory(p); @@ -89,16 +82,15 @@ public class FileTest { @Test(expected = NoSuchFileException.class) public void givenDirPath_whenFailsToCreateRecursively_thenCorrect() throws IOException { - String dirName = "myDir_" + new Date().getTime() + "/subdir"; + String dirName = "myDir_" + UUID.randomUUID().toString() + "/subdir"; Path p = Paths.get(HOME + "/" + dirName); assertFalse(Files.exists(p)); Files.createDirectory(p); - } @Test public void givenDirPath_whenCreatesRecursively_thenCorrect() throws IOException { - Path dir = Paths.get(HOME + "/myDir_" + new Date().getTime()); + Path dir = Paths.get(HOME + "/myDir_" + UUID.randomUUID().toString()); Path subdir = dir.resolve("subdir"); assertFalse(Files.exists(dir)); assertFalse(Files.exists(subdir)); @@ -148,7 +140,7 @@ public class FileTest { @Test(expected = DirectoryNotEmptyException.class) public void givenPath_whenFailsToDeleteNonEmptyDir_thenCorrect() throws IOException { - Path dir = Paths.get(HOME + "/emptyDir" + new Date().getTime()); + Path dir = Paths.get(HOME + "/emptyDir" + UUID.randomUUID().toString()); Files.createDirectory(dir); assertTrue(Files.exists(dir)); Path file = dir.resolve("file.txt"); @@ -159,16 +151,11 @@ public class FileTest { } - @Test + @Test(expected = NoSuchFileException.class) public void givenInexistentFile_whenDeleteFails_thenCorrect() throws IOException { Path p = Paths.get(HOME + "/inexistentFile.txt"); assertFalse(Files.exists(p)); - try { - Files.delete(p); - } catch (IOException e) { - assertTrue(e instanceof NoSuchFileException); - } - + Files.delete(p); } @Test @@ -182,8 +169,8 @@ public class FileTest { // copy file @Test public void givenFilePath_whenCopiesToNewLocation_thenCorrect() throws IOException { - Path dir1 = Paths.get(HOME + "/firstdir_" + new Date().getTime()); - Path dir2 = Paths.get(HOME + "/otherdir_" + new Date().getTime()); + Path dir1 = Paths.get(HOME + "/firstdir_" + UUID.randomUUID().toString()); + Path dir2 = Paths.get(HOME + "/otherdir_" + UUID.randomUUID().toString()); Files.createDirectory(dir1); Files.createDirectory(dir2); Path file1 = dir1.resolve("filetocopy.txt"); @@ -198,8 +185,8 @@ public class FileTest { @Test(expected = FileAlreadyExistsException.class) public void givenPath_whenCopyFailsDueToExistingFile_thenCorrect() throws IOException { - Path dir1 = Paths.get(HOME + "/firstdir_" + new Date().getTime()); - Path dir2 = Paths.get(HOME + "/otherdir_" + new Date().getTime()); + Path dir1 = Paths.get(HOME + "/firstdir_" + UUID.randomUUID().toString()); + Path dir2 = Paths.get(HOME + "/otherdir_" + UUID.randomUUID().toString()); Files.createDirectory(dir1); Files.createDirectory(dir2); Path file1 = dir1.resolve("filetocopy.txt"); @@ -215,8 +202,8 @@ public class FileTest { // moving files @Test public void givenFilePath_whenMovesToNewLocation_thenCorrect() throws IOException { - Path dir1 = Paths.get(HOME + "/firstdir_" + new Date().getTime()); - Path dir2 = Paths.get(HOME + "/otherdir_" + new Date().getTime()); + Path dir1 = Paths.get(HOME + "/firstdir_" + UUID.randomUUID().toString()); + Path dir2 = Paths.get(HOME + "/otherdir_" + UUID.randomUUID().toString()); Files.createDirectory(dir1); Files.createDirectory(dir2); Path file1 = dir1.resolve("filetocopy.txt"); @@ -232,8 +219,8 @@ public class FileTest { @Test(expected = FileAlreadyExistsException.class) public void givenFilePath_whenMoveFailsDueToExistingFile_thenCorrect() throws IOException { - Path dir1 = Paths.get(HOME + "/firstdir_" + new Date().getTime()); - Path dir2 = Paths.get(HOME + "/otherdir_" + new Date().getTime()); + Path dir1 = Paths.get(HOME + "/firstdir_" + UUID.randomUUID().toString()); + Path dir2 = Paths.get(HOME + "/otherdir_" + UUID.randomUUID().toString()); Files.createDirectory(dir1); Files.createDirectory(dir2); Path file1 = dir1.resolve("filetocopy.txt"); From ddf41d61a0829d1beb9fb22a8e475fdd0816e83a Mon Sep 17 00:00:00 2001 From: Alex Vargas Date: Tue, 1 Nov 2016 00:33:13 -0700 Subject: [PATCH 179/215] Test cases for examples in article "A guide to Java 8 forEach" (#769) * An example of a test using a WebAppConfiguration annotation * Giving the test the appropriate formatting * A example of a test that uses WebAppConfiguration without the need of a MockMvc object * Adding model class and test cases class to show the use of the forEach loop. For article "A guide to Java 8 forEach" * Examples used in article "Guide to Java 8 forEach" --- .../com/baeldung/java8/Java8ForEachTest.java | 52 +++++++++++++++++++ .../EmployeeTestWithoutMockMvc.java | 51 ++++++++++++++++++ 2 files changed, 103 insertions(+) create mode 100644 core-java/src/test/java/com/baeldung/java8/Java8ForEachTest.java create mode 100644 spring-mvc-java/src/test/java/com/baeldung/web/controller/EmployeeTestWithoutMockMvc.java diff --git a/core-java/src/test/java/com/baeldung/java8/Java8ForEachTest.java b/core-java/src/test/java/com/baeldung/java8/Java8ForEachTest.java new file mode 100644 index 0000000000..d9b0aa9d98 --- /dev/null +++ b/core-java/src/test/java/com/baeldung/java8/Java8ForEachTest.java @@ -0,0 +1,52 @@ +package com.baeldung.java8; + +import java.util.ArrayList; +import java.util.List; +import java.util.function.Consumer; + +import org.junit.Test; + +public class Java8ForEachTest { + + @Test + public void compareForEachMethods_thenPrintResults() { + + List names = new ArrayList<>(); + names.add("Larry"); + names.add("Steve"); + names.add("James"); + names.add("Conan"); + names.add("Ellen"); + + // Java 5 - for-loop + System.out.println("--- Enhanced for-loop ---"); + for (String name : names) { + System.out.println(name); + } + + // Java 8 - forEach + System.out.println("--- forEach method ---"); + names.forEach(name -> System.out.println(name)); + + // Anonymous inner class that implements Consumer interface + System.out.println("--- Anonymous inner class ---"); + names.forEach(new Consumer() { + public void accept(String name) { + System.out.println(name); + } + }); + + // Create a Consumer implementation to then use in a forEach method + Consumer consumerNames = name -> { + System.out.println(name); + }; + System.out.println("--- Implementation of Consumer interface ---"); + names.forEach(consumerNames); + + // Print elements using a Method Reference + System.out.println("--- Method Reference ---"); + names.forEach(System.out::println); + + } + +} diff --git a/spring-mvc-java/src/test/java/com/baeldung/web/controller/EmployeeTestWithoutMockMvc.java b/spring-mvc-java/src/test/java/com/baeldung/web/controller/EmployeeTestWithoutMockMvc.java new file mode 100644 index 0000000000..19806e0559 --- /dev/null +++ b/spring-mvc-java/src/test/java/com/baeldung/web/controller/EmployeeTestWithoutMockMvc.java @@ -0,0 +1,51 @@ +package com.baeldung.web.controller; + +import org.junit.Before; +import org.junit.Assert; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.web.WebAppConfiguration; + +import com.baeldung.model.Employee; +import com.baeldung.spring.web.config.WebConfig; + +@RunWith(SpringJUnit4ClassRunner.class) +@WebAppConfiguration +@ContextConfiguration(classes = WebConfig.class) +public class EmployeeTestWithoutMockMvc { + + @Autowired + private EmployeeController employeeController; + + @Before + public void setup() { + employeeController.initEmployees(); + } + + @Test + public void whenInitEmployees_thenVerifyValuesInitiation() { + + Employee employee1 = employeeController.employeeMap.get(1L); + Employee employee2 = employeeController.employeeMap.get(2L); + Employee employee3 = employeeController.employeeMap.get(3L); + + Assert.assertTrue(employee1.getId() == 1L); + Assert.assertTrue(employee1.getName().equals("John")); + Assert.assertTrue(employee1.getContactNumber().equals("223334411")); + Assert.assertTrue(employee1.getWorkingArea().equals("rh")); + + Assert.assertTrue(employee2.getId() == 2L); + Assert.assertTrue(employee2.getName().equals("Peter")); + Assert.assertTrue(employee2.getContactNumber().equals("22001543")); + Assert.assertTrue(employee2.getWorkingArea().equals("informatics")); + + Assert.assertTrue(employee3.getId() == 3L); + Assert.assertTrue(employee3.getName().equals("Mike")); + Assert.assertTrue(employee3.getContactNumber().equals("223334411")); + Assert.assertTrue(employee3.getWorkingArea().equals("admin")); + } + +} From f7525b82fb376a33a2bc869e91977e3b488d55e6 Mon Sep 17 00:00:00 2001 From: Egima profile Date: Tue, 1 Nov 2016 15:01:33 +0300 Subject: [PATCH 180/215] network interfaces (#794) * made changes to java reflection * removed redundant method makeSound in Animal abstract class * added project for play-framework article * added project for regex * changed regex project from own model to core-java * added project for routing in play * made changes to regex project * refactored code for REST API with Play project * refactored student store indexing to zero base * added unit tests, removed bad names * added NIO Selector project under core-java module * requested changes made * added project for nio2 * standardized exception based tests * fixed exception based tests * removed redundant files * added network interface project * used UUID other than timestamps --- .../interfaces/NetworkInterfaceTest.java | 123 ++++++++++++++++++ .../java/com/baeldung/java/nio2/FileTest.java | 29 +++-- 2 files changed, 144 insertions(+), 8 deletions(-) create mode 100644 core-java/src/test/java/com/baeldung/java/networking/interfaces/NetworkInterfaceTest.java diff --git a/core-java/src/test/java/com/baeldung/java/networking/interfaces/NetworkInterfaceTest.java b/core-java/src/test/java/com/baeldung/java/networking/interfaces/NetworkInterfaceTest.java new file mode 100644 index 0000000000..743180d57f --- /dev/null +++ b/core-java/src/test/java/com/baeldung/java/networking/interfaces/NetworkInterfaceTest.java @@ -0,0 +1,123 @@ +package com.baeldung.java.networking.interfaces; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +import java.net.InetAddress; +import java.net.InterfaceAddress; +import java.net.NetworkInterface; +import java.net.SocketException; +import java.net.UnknownHostException; +import java.util.Enumeration; +import java.util.List; + +import org.junit.Test; + +public class NetworkInterfaceTest { + @Test + public void givenName_whenReturnsNetworkInterface_thenCorrect() throws SocketException { + NetworkInterface nif = NetworkInterface.getByName("lo"); + assertFalse(nif == null); + } + + @Test + public void givenInExistentName_whenReturnsNull_thenCorrect() throws SocketException { + NetworkInterface nif = NetworkInterface.getByName("inexistent_name"); + assertTrue(nif == null); + } + + @Test + public void givenIP_whenReturnsNetworkInterface_thenCorrect() throws SocketException, UnknownHostException { + byte[] ip = new byte[] { 127, 0, 0, 1 }; + NetworkInterface nif = NetworkInterface.getByInetAddress(InetAddress.getByAddress(ip)); + assertFalse(nif == null); + } + + @Test + public void givenHostName_whenReturnsNetworkInterface_thenCorrect() throws SocketException, UnknownHostException { + NetworkInterface nif = NetworkInterface.getByInetAddress(InetAddress.getByName("localhost")); + assertFalse(nif == null); + } + + @Test + public void givenLocalHost_whenReturnsNetworkInterface_thenCorrect() throws SocketException, UnknownHostException { + NetworkInterface nif = NetworkInterface.getByInetAddress(InetAddress.getLocalHost()); + assertFalse(nif == null); + } + + @Test + public void givenLoopBack_whenReturnsNetworkInterface_thenCorrect() throws SocketException, UnknownHostException { + NetworkInterface nif = NetworkInterface.getByInetAddress(InetAddress.getLoopbackAddress()); + assertFalse(nif == null); + } + + @Test + public void givenIndex_whenReturnsNetworkInterface_thenCorrect() throws SocketException, UnknownHostException { + NetworkInterface nif = NetworkInterface.getByIndex(0); + assertFalse(nif == null); + } + + @Test + public void givenInterface_whenReturnsInetAddresses_thenCorrect() throws SocketException, UnknownHostException { + NetworkInterface nif = NetworkInterface.getByName("lo"); + Enumeration addressEnum = nif.getInetAddresses(); + InetAddress address = addressEnum.nextElement(); + assertEquals("127.0.0.1", address.getHostAddress()); + } + + @Test + public void givenInterface_whenReturnsInterfaceAddresses_thenCorrect() throws SocketException, UnknownHostException { + NetworkInterface nif = NetworkInterface.getByName("lo"); + + List addressEnum = nif.getInterfaceAddresses(); + InterfaceAddress address = addressEnum.get(0); + InetAddress localAddress = address.getAddress(); + InetAddress broadCastAddress = address.getBroadcast(); + assertEquals("127.0.0.1", localAddress.getHostAddress()); + assertEquals("127.255.255.255", broadCastAddress.getHostAddress()); + } + + @Test + public void givenInterface_whenChecksIfLoopback_thenCorrect() throws SocketException, UnknownHostException { + NetworkInterface nif = NetworkInterface.getByName("lo"); + assertTrue(nif.isLoopback()); + } + + @Test + public void givenInterface_whenChecksIfUp_thenCorrect() throws SocketException, UnknownHostException { + NetworkInterface nif = NetworkInterface.getByName("lo"); + assertTrue(nif.isUp()); + } + + @Test + public void givenInterface_whenChecksIfPointToPoint_thenCorrect() throws SocketException, UnknownHostException { + NetworkInterface nif = NetworkInterface.getByName("lo"); + assertFalse(nif.isPointToPoint()); + } + + @Test + public void givenInterface_whenChecksIfVirtual_thenCorrect() throws SocketException, UnknownHostException { + NetworkInterface nif = NetworkInterface.getByName("lo"); + assertFalse(nif.isVirtual()); + } + + @Test + public void givenInterface_whenChecksMulticastSupport_thenCorrect() throws SocketException, UnknownHostException { + NetworkInterface nif = NetworkInterface.getByName("lo"); + assertTrue(nif.supportsMulticast()); + } + + @Test + public void givenInterface_whenGetsMacAddress_thenCorrect() throws SocketException, UnknownHostException { + NetworkInterface nif = NetworkInterface.getByName("lo"); + byte[] bytes = nif.getHardwareAddress(); + assertFalse(bytes == null); + } + + @Test + public void givenInterface_whenGetsMTU_thenCorrect() throws SocketException, UnknownHostException { + NetworkInterface nif = NetworkInterface.getByName("lo"); + int mtu = nif.getMTU(); + } +} diff --git a/core-java/src/test/java/com/baeldung/java/nio2/FileTest.java b/core-java/src/test/java/com/baeldung/java/nio2/FileTest.java index e8b10fe767..d4e01cc005 100644 --- a/core-java/src/test/java/com/baeldung/java/nio2/FileTest.java +++ b/core-java/src/test/java/com/baeldung/java/nio2/FileTest.java @@ -1,14 +1,20 @@ package com.baeldung.java.nio2; -import org.junit.Test; - -import java.io.IOException; -import java.nio.file.*; -import java.util.UUID; - import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; +import java.io.IOException; +import java.nio.file.DirectoryNotEmptyException; +import java.nio.file.FileAlreadyExistsException; +import java.nio.file.Files; +import java.nio.file.NoSuchFileException; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.nio.file.StandardCopyOption; +import java.util.UUID; + +import org.junit.Test; + public class FileTest { private static final String HOME = System.getProperty("user.home"); @@ -86,6 +92,7 @@ public class FileTest { Path p = Paths.get(HOME + "/" + dirName); assertFalse(Files.exists(p)); Files.createDirectory(p); + } @Test @@ -151,11 +158,16 @@ public class FileTest { } - @Test(expected = NoSuchFileException.class) + @Test public void givenInexistentFile_whenDeleteFails_thenCorrect() throws IOException { Path p = Paths.get(HOME + "/inexistentFile.txt"); assertFalse(Files.exists(p)); - Files.delete(p); + try { + Files.delete(p); + } catch (IOException e) { + assertTrue(e instanceof NoSuchFileException); + } + } @Test @@ -234,4 +246,5 @@ public class FileTest { assertTrue(Files.exists(file2)); assertFalse(Files.exists(file1)); } + } From 0532349b4ee69b33f799e06ca25010106d76a620 Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Tue, 1 Nov 2016 12:03:22 +0000 Subject: [PATCH 181/215] Refactor FileTest --- .../java/com/baeldung/java/nio2/FileTest.java | 27 ++++++------------- 1 file changed, 8 insertions(+), 19 deletions(-) diff --git a/core-java/src/test/java/com/baeldung/java/nio2/FileTest.java b/core-java/src/test/java/com/baeldung/java/nio2/FileTest.java index d4e01cc005..96509945d7 100644 --- a/core-java/src/test/java/com/baeldung/java/nio2/FileTest.java +++ b/core-java/src/test/java/com/baeldung/java/nio2/FileTest.java @@ -1,20 +1,14 @@ package com.baeldung.java.nio2; +import org.junit.Test; + +import java.io.IOException; +import java.nio.file.*; +import java.util.UUID; + import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; -import java.io.IOException; -import java.nio.file.DirectoryNotEmptyException; -import java.nio.file.FileAlreadyExistsException; -import java.nio.file.Files; -import java.nio.file.NoSuchFileException; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.nio.file.StandardCopyOption; -import java.util.UUID; - -import org.junit.Test; - public class FileTest { private static final String HOME = System.getProperty("user.home"); @@ -158,16 +152,11 @@ public class FileTest { } - @Test + @Test(expected = NoSuchFileException.class) public void givenInexistentFile_whenDeleteFails_thenCorrect() throws IOException { Path p = Paths.get(HOME + "/inexistentFile.txt"); assertFalse(Files.exists(p)); - try { - Files.delete(p); - } catch (IOException e) { - assertTrue(e instanceof NoSuchFileException); - } - + Files.delete(p); } @Test From e3b40e4556a7a0c3dc5ef8462f516a1670ab900f Mon Sep 17 00:00:00 2001 From: Egima profile Date: Tue, 1 Nov 2016 22:45:01 +0300 Subject: [PATCH 182/215] fixed network interface tetst (#797) * made changes to java reflection * removed redundant method makeSound in Animal abstract class * added project for play-framework article * added project for regex * changed regex project from own model to core-java * added project for routing in play * made changes to regex project * refactored code for REST API with Play project * refactored student store indexing to zero base * added unit tests, removed bad names * added NIO Selector project under core-java module * requested changes made * added project for nio2 * standardized exception based tests * fixed exception based tests * removed redundant files * added network interface project * used UUID other than timestamps * fixed network interface tests * removed filetest change --- .../interfaces/NetworkInterfaceTest.java | 23 +++++++++---------- .../java/com/baeldung/java/nio2/FileTest.java | 19 +++++++++------ 2 files changed, 23 insertions(+), 19 deletions(-) diff --git a/core-java/src/test/java/com/baeldung/java/networking/interfaces/NetworkInterfaceTest.java b/core-java/src/test/java/com/baeldung/java/networking/interfaces/NetworkInterfaceTest.java index 743180d57f..4a8ef57b8f 100644 --- a/core-java/src/test/java/com/baeldung/java/networking/interfaces/NetworkInterfaceTest.java +++ b/core-java/src/test/java/com/baeldung/java/networking/interfaces/NetworkInterfaceTest.java @@ -1,8 +1,6 @@ package com.baeldung.java.networking.interfaces; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; +import static org.junit.Assert.*; import java.net.InetAddress; import java.net.InterfaceAddress; @@ -18,44 +16,44 @@ public class NetworkInterfaceTest { @Test public void givenName_whenReturnsNetworkInterface_thenCorrect() throws SocketException { NetworkInterface nif = NetworkInterface.getByName("lo"); - assertFalse(nif == null); + assertNotNull(nif); } @Test public void givenInExistentName_whenReturnsNull_thenCorrect() throws SocketException { NetworkInterface nif = NetworkInterface.getByName("inexistent_name"); - assertTrue(nif == null); + assertNull(nif); } @Test public void givenIP_whenReturnsNetworkInterface_thenCorrect() throws SocketException, UnknownHostException { byte[] ip = new byte[] { 127, 0, 0, 1 }; NetworkInterface nif = NetworkInterface.getByInetAddress(InetAddress.getByAddress(ip)); - assertFalse(nif == null); + assertNotNull(nif); } @Test public void givenHostName_whenReturnsNetworkInterface_thenCorrect() throws SocketException, UnknownHostException { NetworkInterface nif = NetworkInterface.getByInetAddress(InetAddress.getByName("localhost")); - assertFalse(nif == null); + assertNotNull(nif); } @Test public void givenLocalHost_whenReturnsNetworkInterface_thenCorrect() throws SocketException, UnknownHostException { NetworkInterface nif = NetworkInterface.getByInetAddress(InetAddress.getLocalHost()); - assertFalse(nif == null); + assertNotNull(nif); } @Test public void givenLoopBack_whenReturnsNetworkInterface_thenCorrect() throws SocketException, UnknownHostException { NetworkInterface nif = NetworkInterface.getByInetAddress(InetAddress.getLoopbackAddress()); - assertFalse(nif == null); + assertNotNull(nif); } @Test public void givenIndex_whenReturnsNetworkInterface_thenCorrect() throws SocketException, UnknownHostException { NetworkInterface nif = NetworkInterface.getByIndex(0); - assertFalse(nif == null); + assertNotNull(nif); } @Test @@ -112,12 +110,13 @@ public class NetworkInterfaceTest { public void givenInterface_whenGetsMacAddress_thenCorrect() throws SocketException, UnknownHostException { NetworkInterface nif = NetworkInterface.getByName("lo"); byte[] bytes = nif.getHardwareAddress(); - assertFalse(bytes == null); + assertNotNull(bytes); } @Test public void givenInterface_whenGetsMTU_thenCorrect() throws SocketException, UnknownHostException { - NetworkInterface nif = NetworkInterface.getByName("lo"); + NetworkInterface nif = NetworkInterface.getByName("net0"); int mtu = nif.getMTU(); + assertEquals(1500, mtu); } } diff --git a/core-java/src/test/java/com/baeldung/java/nio2/FileTest.java b/core-java/src/test/java/com/baeldung/java/nio2/FileTest.java index 96509945d7..f1cb572d9b 100644 --- a/core-java/src/test/java/com/baeldung/java/nio2/FileTest.java +++ b/core-java/src/test/java/com/baeldung/java/nio2/FileTest.java @@ -1,14 +1,20 @@ package com.baeldung.java.nio2; -import org.junit.Test; - -import java.io.IOException; -import java.nio.file.*; -import java.util.UUID; - import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; +import java.io.IOException; +import java.nio.file.DirectoryNotEmptyException; +import java.nio.file.FileAlreadyExistsException; +import java.nio.file.Files; +import java.nio.file.NoSuchFileException; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.nio.file.StandardCopyOption; +import java.util.UUID; + +import org.junit.Test; + public class FileTest { private static final String HOME = System.getProperty("user.home"); @@ -155,7 +161,6 @@ public class FileTest { @Test(expected = NoSuchFileException.class) public void givenInexistentFile_whenDeleteFails_thenCorrect() throws IOException { Path p = Paths.get(HOME + "/inexistentFile.txt"); - assertFalse(Files.exists(p)); Files.delete(p); } From 3d8b2aa6e7a4ad428687bbb6bbea13443ed66e50 Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Wed, 2 Nov 2016 10:09:55 +0000 Subject: [PATCH 183/215] Update README.md --- testing/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/testing/README.md b/testing/README.md index f49aeeb881..121472ae13 100644 --- a/testing/README.md +++ b/testing/README.md @@ -5,4 +5,4 @@ ### Relevant Articles: - [Introduction to Mutation Testing Using the PITest Library](http://www.baeldung.com/java-mutation-testing-with-pitest) - [Intro to JaCoCo](http://www.baeldung.com/jacoco) -- [Mutation Testing with PITest](http://www.baeldung.com/java-mutation-testing-with-pitest) + From a9106b8e704401c9981b9ab1d41550082eead924 Mon Sep 17 00:00:00 2001 From: GuenHamza Date: Mon, 31 Oct 2016 12:30:35 +0100 Subject: [PATCH 184/215] BAEL-280 - Update pom.xml --- spring-rest/pom.xml | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/spring-rest/pom.xml b/spring-rest/pom.xml index 69ab4ed361..6580f5ecc7 100644 --- a/spring-rest/pom.xml +++ b/spring-rest/pom.xml @@ -332,5 +332,17 @@ 3.4.1
- + + + + org.codehaus.mojo + findbugs-maven-plugin + 3.0.4 + + Max + FindDeadLocalStores,FindNullDeref + + + + From c9073cbfa57b46742021408debbb805f1ff15dbc Mon Sep 17 00:00:00 2001 From: slavisa-baeldung Date: Wed, 2 Nov 2016 15:15:50 +0100 Subject: [PATCH 185/215] BAEL-325 - adding optional construct --- .../intercepting/filter/commands/LoginCommand.java | 7 +++---- .../intercepting/filter/commands/LogoutCommand.java | 9 ++++++--- .../intercepting/filter/commands/OrderCommand.java | 10 +++++----- .../intercepting/filter/filters/EncodingFilter.java | 8 ++++---- .../intercepting/filter/filters/LoggingFilter.java | 9 +++++---- .../filter/filters/VisitorCounterFilter.java | 6 ++++-- 6 files changed, 27 insertions(+), 22 deletions(-) diff --git a/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/commands/LoginCommand.java b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/commands/LoginCommand.java index cbc8ad9498..46a0329112 100644 --- a/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/commands/LoginCommand.java +++ b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/commands/LoginCommand.java @@ -3,6 +3,7 @@ package com.baeldung.patterns.intercepting.filter.commands; import javax.servlet.ServletException; import javax.servlet.http.HttpSession; import java.io.IOException; +import java.util.Optional; public class LoginCommand extends FrontCommand { @Override @@ -12,10 +13,8 @@ public class LoginCommand extends FrontCommand { session.setAttribute("username", request.getParameter("username")); response.sendRedirect(request.getParameter("redirect")); } else { - String queryString = request.getQueryString(); - if (queryString == null) { - queryString = "command=Home"; - } + String queryString = Optional.ofNullable(request.getQueryString()) + .orElse("command=Home"); request.setAttribute("redirect", request.getRequestURL() .append("?").append(queryString).toString()); forward("login"); diff --git a/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/commands/LogoutCommand.java b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/commands/LogoutCommand.java index 3c9475d6af..f309dc5cf3 100644 --- a/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/commands/LogoutCommand.java +++ b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/commands/LogoutCommand.java @@ -3,14 +3,17 @@ package com.baeldung.patterns.intercepting.filter.commands; import javax.servlet.ServletException; import javax.servlet.http.HttpSession; import java.io.IOException; +import java.util.Optional; public class LogoutCommand extends FrontCommand { @Override public void process() throws ServletException, IOException { super.process(); - HttpSession session = request.getSession(false); - session.removeAttribute("username"); - session.removeAttribute("order"); + Optional.ofNullable(request.getSession(false)) + .ifPresent(session -> { + session.removeAttribute("username"); + session.removeAttribute("order"); + }); response.sendRedirect("/?command=Home"); } } diff --git a/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/commands/OrderCommand.java b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/commands/OrderCommand.java index e53fcf78dd..a57785669b 100644 --- a/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/commands/OrderCommand.java +++ b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/commands/OrderCommand.java @@ -8,6 +8,7 @@ import com.baeldung.patterns.intercepting.filter.data.OrderImpl; import javax.servlet.ServletException; import javax.servlet.http.HttpSession; import java.io.IOException; +import java.util.Optional; public class OrderCommand extends FrontCommand { @Override @@ -15,11 +16,10 @@ public class OrderCommand extends FrontCommand { super.process(); if (request.getMethod().equals("POST")) { HttpSession session = request.getSession(false); - Order order = (Order) session.getAttribute("order"); - if (order == null) { - String username = (String) session.getAttribute("username"); - order = new OrderImpl(username); - } + Order order = Optional + .ofNullable(session.getAttribute("order")) + .map(Order.class::cast) + .orElseGet(() -> new OrderImpl((String) session.getAttribute("username"))); Bookshelf bookshelf = (Bookshelf) request.getServletContext() .getAttribute("bookshelf"); String isbn = request.getParameter("isbn"); diff --git a/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/filters/EncodingFilter.java b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/filters/EncodingFilter.java index ef3f95382e..0806aecba3 100644 --- a/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/filters/EncodingFilter.java +++ b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/filters/EncodingFilter.java @@ -4,6 +4,7 @@ import javax.servlet.*; import javax.servlet.annotation.WebFilter; import javax.servlet.annotation.WebInitParam; import java.io.IOException; +import java.util.Optional; @WebFilter( servletNames = {"intercepting-filter"}, @@ -24,10 +25,9 @@ public class EncodingFilter extends BaseFilter { ServletResponse response, FilterChain chain ) throws IOException, ServletException { - String encoding = request.getParameter("encoding"); - if (encoding == null) { - encoding = this.encoding; - } + String encoding = Optional + .ofNullable(request.getParameter("encoding")) + .orElse(this.encoding); response.setCharacterEncoding(encoding); chain.doFilter(request, response); } diff --git a/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/filters/LoggingFilter.java b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/filters/LoggingFilter.java index 0ebb397938..322592f84e 100644 --- a/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/filters/LoggingFilter.java +++ b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/filters/LoggingFilter.java @@ -10,6 +10,7 @@ import javax.servlet.ServletResponse; import javax.servlet.annotation.WebFilter; import javax.servlet.http.HttpServletRequest; import java.io.IOException; +import java.util.Optional; @WebFilter(servletNames = "intercepting-filter") public class LoggingFilter extends BaseFilter { @@ -23,10 +24,10 @@ public class LoggingFilter extends BaseFilter { ) throws IOException, ServletException { chain.doFilter(request, response); HttpServletRequest httpServletRequest = (HttpServletRequest) request; - String username = (String) httpServletRequest.getAttribute("username"); - if (username == null) { - username = "guest"; - } + String username = Optional + .ofNullable(httpServletRequest.getAttribute("username")) + .map(Object::toString) + .orElse("guest"); log.info("Request from '{}@{}': {}?{}", username, request.getRemoteAddr(), httpServletRequest.getRequestURI(), request.getParameterMap()); } diff --git a/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/filters/VisitorCounterFilter.java b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/filters/VisitorCounterFilter.java index 5521b9faee..42551310d3 100644 --- a/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/filters/VisitorCounterFilter.java +++ b/patterns/intercepting-filter/src/main/java/com/baeldung/patterns/intercepting/filter/filters/VisitorCounterFilter.java @@ -5,6 +5,7 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import java.io.IOException; import java.util.HashSet; +import java.util.Optional; import java.util.Set; public class VisitorCounterFilter implements Filter { @@ -21,8 +22,9 @@ public class VisitorCounterFilter implements Filter { FilterChain chain ) throws IOException, ServletException { HttpSession session = ((HttpServletRequest) request).getSession(false); - String username = (String) session.getAttribute("username"); - users.add(username); + Optional.ofNullable(session.getAttribute("username")) + .map(Object::toString) + .ifPresent(users::add); request.setAttribute("counter", users.size()); chain.doFilter(request, response); } From 04f8eb55a8b99b8737ca14498ed5a401a80f1301 Mon Sep 17 00:00:00 2001 From: Christian Raedel Date: Mon, 5 Sep 2016 05:50:02 +0200 Subject: [PATCH 186/215] BAEL-86: Working sample. --- enterprise-patterns/pom.xml | 35 +++++++++ .../spring-dispatcher-servlet/pom.xml | 73 +++++++++++++++++++ .../dispatcher/servlet/RootConfiguration.java | 19 +++++ .../dispatcher/servlet/WebConfiguration.java | 41 +++++++++++ .../dispatcher/servlet/WebInitializer.java | 20 +++++ .../dispatcher/servlet/models/Task.java | 41 +++++++++++ .../web/GlobalDefaultExceptionHandler.java | 24 ++++++ .../servlet/web/HomeController.java | 26 +++++++ .../servlet/web/TaskController.java | 57 +++++++++++++++ .../src/main/resources/log4j2.xml | 14 ++++ .../src/main/webapp/WEB-INF/views/error.html | 11 +++ .../src/main/webapp/WEB-INF/views/home.html | 14 ++++ .../main/webapp/WEB-INF/views/task-add.html | 14 ++++ .../main/webapp/WEB-INF/views/task-list.html | 19 +++++ 14 files changed, 408 insertions(+) create mode 100644 enterprise-patterns/pom.xml create mode 100644 enterprise-patterns/spring-dispatcher-servlet/pom.xml create mode 100644 enterprise-patterns/spring-dispatcher-servlet/src/main/java/com/baeldung/enterprise/patterns/dispatcher/servlet/RootConfiguration.java create mode 100644 enterprise-patterns/spring-dispatcher-servlet/src/main/java/com/baeldung/enterprise/patterns/dispatcher/servlet/WebConfiguration.java create mode 100644 enterprise-patterns/spring-dispatcher-servlet/src/main/java/com/baeldung/enterprise/patterns/dispatcher/servlet/WebInitializer.java create mode 100644 enterprise-patterns/spring-dispatcher-servlet/src/main/java/com/baeldung/enterprise/patterns/dispatcher/servlet/models/Task.java create mode 100644 enterprise-patterns/spring-dispatcher-servlet/src/main/java/com/baeldung/enterprise/patterns/dispatcher/servlet/web/GlobalDefaultExceptionHandler.java create mode 100644 enterprise-patterns/spring-dispatcher-servlet/src/main/java/com/baeldung/enterprise/patterns/dispatcher/servlet/web/HomeController.java create mode 100644 enterprise-patterns/spring-dispatcher-servlet/src/main/java/com/baeldung/enterprise/patterns/dispatcher/servlet/web/TaskController.java create mode 100644 enterprise-patterns/spring-dispatcher-servlet/src/main/resources/log4j2.xml create mode 100644 enterprise-patterns/spring-dispatcher-servlet/src/main/webapp/WEB-INF/views/error.html create mode 100644 enterprise-patterns/spring-dispatcher-servlet/src/main/webapp/WEB-INF/views/home.html create mode 100644 enterprise-patterns/spring-dispatcher-servlet/src/main/webapp/WEB-INF/views/task-add.html create mode 100644 enterprise-patterns/spring-dispatcher-servlet/src/main/webapp/WEB-INF/views/task-list.html diff --git a/enterprise-patterns/pom.xml b/enterprise-patterns/pom.xml new file mode 100644 index 0000000000..036a61c44a --- /dev/null +++ b/enterprise-patterns/pom.xml @@ -0,0 +1,35 @@ + + + 4.0.0 + + com.baeldung.enterprise.patterns + enterprise-patterns-parent + pom + + spring-dispatcher-servlet + + + + com.baeldung + parent-modules + 1.0.0-SNAPSHOT + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.5.1 + + 1.8 + 1.8 + + + + + + diff --git a/enterprise-patterns/spring-dispatcher-servlet/pom.xml b/enterprise-patterns/spring-dispatcher-servlet/pom.xml new file mode 100644 index 0000000000..e7220eec59 --- /dev/null +++ b/enterprise-patterns/spring-dispatcher-servlet/pom.xml @@ -0,0 +1,73 @@ + + + 4.0.0 + + spring-dispatcher-servlet + 1.0.0-SNAPSHOT + war + + + com.baeldung.enterprise.patterns + enterprise-patterns-parent + 1.0.0-SNAPSHOT + .. + + + + + javax.servlet + javax.servlet-api + 3.1.0 + provided + + + org.springframework + spring-webmvc + 4.3.2.RELEASE + + + org.thymeleaf + thymeleaf-spring4 + 3.0.1.RELEASE + + + org.apache.logging.log4j + log4j-slf4j-impl + 2.6.2 + + + org.apache.logging.log4j + log4j-core + 2.6.2 + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + + + org.apache.maven.plugins + maven-war-plugin + 3.0.0 + + false + + + + org.eclipse.jetty + jetty-maven-plugin + 9.4.0.M1 + + + / + + + + + + diff --git a/enterprise-patterns/spring-dispatcher-servlet/src/main/java/com/baeldung/enterprise/patterns/dispatcher/servlet/RootConfiguration.java b/enterprise-patterns/spring-dispatcher-servlet/src/main/java/com/baeldung/enterprise/patterns/dispatcher/servlet/RootConfiguration.java new file mode 100644 index 0000000000..9b22e411c5 --- /dev/null +++ b/enterprise-patterns/spring-dispatcher-servlet/src/main/java/com/baeldung/enterprise/patterns/dispatcher/servlet/RootConfiguration.java @@ -0,0 +1,19 @@ +package com.baeldung.enterprise.patterns.dispatcher.servlet; + +import com.baeldung.enterprise.patterns.dispatcher.servlet.models.Task; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import java.util.*; + +@Configuration +public class RootConfiguration { + @Bean + public Map> taskList() { + Map> taskMap = new HashMap<>(); + List taskList = new ArrayList<>(); + taskList.add(new Task("Clean the dishes!", new Date())); + taskMap.put("Cid", taskList); + return taskMap; + } +} diff --git a/enterprise-patterns/spring-dispatcher-servlet/src/main/java/com/baeldung/enterprise/patterns/dispatcher/servlet/WebConfiguration.java b/enterprise-patterns/spring-dispatcher-servlet/src/main/java/com/baeldung/enterprise/patterns/dispatcher/servlet/WebConfiguration.java new file mode 100644 index 0000000000..90f4f48f50 --- /dev/null +++ b/enterprise-patterns/spring-dispatcher-servlet/src/main/java/com/baeldung/enterprise/patterns/dispatcher/servlet/WebConfiguration.java @@ -0,0 +1,41 @@ +package com.baeldung.enterprise.patterns.dispatcher.servlet; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.EnableWebMvc; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; +import org.thymeleaf.spring4.SpringTemplateEngine; +import org.thymeleaf.spring4.view.ThymeleafViewResolver; +import org.thymeleaf.templatemode.TemplateMode; +import org.thymeleaf.templateresolver.ServletContextTemplateResolver; + +import javax.servlet.ServletContext; + +@Configuration +@ComponentScan("com.baeldung.enterprise.patterns.dispatcher.servlet.web") +@EnableWebMvc +public class WebConfiguration extends WebMvcConfigurerAdapter { + @Bean + public ServletContextTemplateResolver templateResolver(ServletContext servletContext) { + ServletContextTemplateResolver templateResolver = new ServletContextTemplateResolver(servletContext); + templateResolver.setPrefix("/WEB-INF/views/"); + templateResolver.setSuffix(".html"); + templateResolver.setTemplateMode(TemplateMode.HTML); + return templateResolver; + } + + @Bean + public SpringTemplateEngine templateEngine(ServletContextTemplateResolver templateResolver) { + SpringTemplateEngine templateEngine = new SpringTemplateEngine(); + templateEngine.setTemplateResolver(templateResolver); + return templateEngine; + } + + @Bean + public ThymeleafViewResolver viewResolver(SpringTemplateEngine templateEngine) { + ThymeleafViewResolver viewResolver = new ThymeleafViewResolver(); + viewResolver.setTemplateEngine(templateEngine); + return viewResolver; + } +} diff --git a/enterprise-patterns/spring-dispatcher-servlet/src/main/java/com/baeldung/enterprise/patterns/dispatcher/servlet/WebInitializer.java b/enterprise-patterns/spring-dispatcher-servlet/src/main/java/com/baeldung/enterprise/patterns/dispatcher/servlet/WebInitializer.java new file mode 100644 index 0000000000..a544b2cbac --- /dev/null +++ b/enterprise-patterns/spring-dispatcher-servlet/src/main/java/com/baeldung/enterprise/patterns/dispatcher/servlet/WebInitializer.java @@ -0,0 +1,20 @@ +package com.baeldung.enterprise.patterns.dispatcher.servlet; + +import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer; + +public class WebInitializer extends AbstractAnnotationConfigDispatcherServletInitializer { + @Override + protected Class[] getRootConfigClasses() { + return new Class[]{RootConfiguration.class}; + } + + @Override + protected Class[] getServletConfigClasses() { + return new Class[]{WebConfiguration.class}; + } + + @Override + protected String[] getServletMappings() { + return new String[]{"/example/*"}; + } +} diff --git a/enterprise-patterns/spring-dispatcher-servlet/src/main/java/com/baeldung/enterprise/patterns/dispatcher/servlet/models/Task.java b/enterprise-patterns/spring-dispatcher-servlet/src/main/java/com/baeldung/enterprise/patterns/dispatcher/servlet/models/Task.java new file mode 100644 index 0000000000..3a84f156a8 --- /dev/null +++ b/enterprise-patterns/spring-dispatcher-servlet/src/main/java/com/baeldung/enterprise/patterns/dispatcher/servlet/models/Task.java @@ -0,0 +1,41 @@ +package com.baeldung.enterprise.patterns.dispatcher.servlet.models; + +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; + +public class Task { + + private String description; + + @DateTimeFormat(pattern = "yyyy-MM-dd'T'hh:mm") + private Date due; + + public Task() { + } + + public Task(Date due) { + this.due = due; + } + + public Task(String description, Date due) { + this.description = description; + this.due = due; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public Date getDue() { + return due; + } + + public void setDue(Date due) { + this.due = due; + } +} diff --git a/enterprise-patterns/spring-dispatcher-servlet/src/main/java/com/baeldung/enterprise/patterns/dispatcher/servlet/web/GlobalDefaultExceptionHandler.java b/enterprise-patterns/spring-dispatcher-servlet/src/main/java/com/baeldung/enterprise/patterns/dispatcher/servlet/web/GlobalDefaultExceptionHandler.java new file mode 100644 index 0000000000..0c44d0a5e7 --- /dev/null +++ b/enterprise-patterns/spring-dispatcher-servlet/src/main/java/com/baeldung/enterprise/patterns/dispatcher/servlet/web/GlobalDefaultExceptionHandler.java @@ -0,0 +1,24 @@ +package com.baeldung.enterprise.patterns.dispatcher.servlet.web; + +import org.springframework.core.annotation.AnnotationUtils; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseStatus; +import org.springframework.web.servlet.ModelAndView; + +import javax.servlet.http.HttpServletRequest; + +@ControllerAdvice +public class GlobalDefaultExceptionHandler { + @ExceptionHandler(Exception.class) + public ModelAndView defaultErrorHandler(HttpServletRequest request, Exception e) throws Exception { + if (AnnotationUtils.findAnnotation(e.getClass(), ResponseStatus.class) != null) { + throw e; + } + ModelAndView modelAndView = new ModelAndView(); + modelAndView.addObject("exception", e); + modelAndView.addObject("url", request.getRequestURL()); + modelAndView.setViewName("error"); + return modelAndView; + } +} diff --git a/enterprise-patterns/spring-dispatcher-servlet/src/main/java/com/baeldung/enterprise/patterns/dispatcher/servlet/web/HomeController.java b/enterprise-patterns/spring-dispatcher-servlet/src/main/java/com/baeldung/enterprise/patterns/dispatcher/servlet/web/HomeController.java new file mode 100644 index 0000000000..6e4e437a44 --- /dev/null +++ b/enterprise-patterns/spring-dispatcher-servlet/src/main/java/com/baeldung/enterprise/patterns/dispatcher/servlet/web/HomeController.java @@ -0,0 +1,26 @@ +package com.baeldung.enterprise.patterns.dispatcher.servlet.web; + +import com.baeldung.enterprise.patterns.dispatcher.servlet.models.Task; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.GetMapping; + +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +@Controller +public class HomeController { + @Autowired + private Map> taskMap; + + @GetMapping("/*") + public String home(Model model) { + List users = taskMap.keySet().stream() + .sorted() + .collect(Collectors.toList()); + model.addAttribute("users", users); + return "home"; + } +} diff --git a/enterprise-patterns/spring-dispatcher-servlet/src/main/java/com/baeldung/enterprise/patterns/dispatcher/servlet/web/TaskController.java b/enterprise-patterns/spring-dispatcher-servlet/src/main/java/com/baeldung/enterprise/patterns/dispatcher/servlet/web/TaskController.java new file mode 100644 index 0000000000..6930464f81 --- /dev/null +++ b/enterprise-patterns/spring-dispatcher-servlet/src/main/java/com/baeldung/enterprise/patterns/dispatcher/servlet/web/TaskController.java @@ -0,0 +1,57 @@ +package com.baeldung.enterprise.patterns.dispatcher.servlet.web; + +import com.baeldung.enterprise.patterns.dispatcher.servlet.models.Task; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.*; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +@Controller +@RequestMapping("/tasks") +public class TaskController { + @Autowired + private Map> taskMap; + + @GetMapping("/{username}/list") + public String listForm( + Model model, + @PathVariable("username") String username + ) { + List tasks = taskMap.get(username).stream() + .sorted((t1, t2) -> t1.getDue().compareTo(t2.getDue())) + .collect(Collectors.toList()); + model.addAttribute("username", username); + model.addAttribute("tasks", tasks); + return "task-list"; + } + + @GetMapping("/{username}/add") + public String addForm( + Model model, + @PathVariable("username") String username + ) { + model.addAttribute("username", username); + model.addAttribute("task", new Task(new Date())); + return "task-add"; + } + + @PostMapping("/{username}/add") + public String addSubmit( + @PathVariable("username") String username, + @ModelAttribute Task task + ) { + List taskList = taskMap.get(username); + if (taskList == null) { + taskList = new ArrayList<>(); + } + taskList.add(task); + taskMap.put(username, taskList); + return "redirect:list"; + } +} diff --git a/enterprise-patterns/spring-dispatcher-servlet/src/main/resources/log4j2.xml b/enterprise-patterns/spring-dispatcher-servlet/src/main/resources/log4j2.xml new file mode 100644 index 0000000000..fb18e8279a --- /dev/null +++ b/enterprise-patterns/spring-dispatcher-servlet/src/main/resources/log4j2.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/enterprise-patterns/spring-dispatcher-servlet/src/main/webapp/WEB-INF/views/error.html b/enterprise-patterns/spring-dispatcher-servlet/src/main/webapp/WEB-INF/views/error.html new file mode 100644 index 0000000000..c1b362e51a --- /dev/null +++ b/enterprise-patterns/spring-dispatcher-servlet/src/main/webapp/WEB-INF/views/error.html @@ -0,0 +1,11 @@ + + + + Error + + +

Error:

+

+

+ + diff --git a/enterprise-patterns/spring-dispatcher-servlet/src/main/webapp/WEB-INF/views/home.html b/enterprise-patterns/spring-dispatcher-servlet/src/main/webapp/WEB-INF/views/home.html new file mode 100644 index 0000000000..1a333ed641 --- /dev/null +++ b/enterprise-patterns/spring-dispatcher-servlet/src/main/webapp/WEB-INF/views/home.html @@ -0,0 +1,14 @@ + + + + Welcome to TaskTools! + + +

TaskTools

+
    +
  • + +
  • +
+ + diff --git a/enterprise-patterns/spring-dispatcher-servlet/src/main/webapp/WEB-INF/views/task-add.html b/enterprise-patterns/spring-dispatcher-servlet/src/main/webapp/WEB-INF/views/task-add.html new file mode 100644 index 0000000000..70f010e58d --- /dev/null +++ b/enterprise-patterns/spring-dispatcher-servlet/src/main/webapp/WEB-INF/views/task-add.html @@ -0,0 +1,14 @@ + + + + + + +

+
+ + + +
+ + diff --git a/enterprise-patterns/spring-dispatcher-servlet/src/main/webapp/WEB-INF/views/task-list.html b/enterprise-patterns/spring-dispatcher-servlet/src/main/webapp/WEB-INF/views/task-list.html new file mode 100644 index 0000000000..2fe628456f --- /dev/null +++ b/enterprise-patterns/spring-dispatcher-servlet/src/main/webapp/WEB-INF/views/task-list.html @@ -0,0 +1,19 @@ + + + + + + +

+
    +
  • +

    +

    +
  • +
+

+ Home + Add new +

+ + From 3808960bd999f5a3594558077dd351b627b58254 Mon Sep 17 00:00:00 2001 From: Christian Raedel Date: Mon, 5 Sep 2016 05:56:41 +0200 Subject: [PATCH 187/215] BAEL-86: Cosmetical issue. --- .../enterprise/patterns/dispatcher/servlet/models/Task.java | 1 - 1 file changed, 1 deletion(-) diff --git a/enterprise-patterns/spring-dispatcher-servlet/src/main/java/com/baeldung/enterprise/patterns/dispatcher/servlet/models/Task.java b/enterprise-patterns/spring-dispatcher-servlet/src/main/java/com/baeldung/enterprise/patterns/dispatcher/servlet/models/Task.java index 3a84f156a8..dfe4aed4e1 100644 --- a/enterprise-patterns/spring-dispatcher-servlet/src/main/java/com/baeldung/enterprise/patterns/dispatcher/servlet/models/Task.java +++ b/enterprise-patterns/spring-dispatcher-servlet/src/main/java/com/baeldung/enterprise/patterns/dispatcher/servlet/models/Task.java @@ -5,7 +5,6 @@ import org.springframework.format.annotation.DateTimeFormat; import java.util.Date; public class Task { - private String description; @DateTimeFormat(pattern = "yyyy-MM-dd'T'hh:mm") From 88a4f61917fdd3df838c75cd94ecf91e3f72f66b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20R=C3=A4del?= Date: Tue, 18 Oct 2016 17:04:02 +0200 Subject: [PATCH 188/215] BAEL-86: Added localization and themes. --- .../dispatcher/servlet/WebConfiguration.java | 41 ------- .../src/main/webapp/WEB-INF/views/home.html | 14 --- .../main/webapp/WEB-INF/views/task-add.html | 14 --- .../main/webapp/WEB-INF/views/task-list.html | 19 --- .../pom.xml | 29 +++-- .../dispatcher/servlet/RootConfiguration.java | 4 +- .../dispatcher/servlet/WebConfiguration.java | 114 ++++++++++++++++++ .../dispatcher/servlet/WebInitializer.java | 12 +- .../dispatcher/servlet/models/Task.java | 2 +- .../web/GlobalDefaultExceptionHandler.java | 2 +- .../servlet/web/HomeController.java | 6 +- .../servlet/web/TaskController.java | 11 +- .../src/main/resources/log4j2.xml | 0 .../src/main/resources/messages.properties | 10 ++ .../src/main/resources/messages_de.properties | 10 ++ .../main/resources/theme-post_it.properties | 1 + .../main/resources/theme-robotask.properties | 1 + .../src/main/webapp/WEB-INF/views/error.html | 1 + .../src/main/webapp/WEB-INF/views/home.html | 15 +++ .../main/webapp/WEB-INF/views/task-add.html | 15 +++ .../main/webapp/WEB-INF/views/task-list.html | 20 +++ .../main/webapp/public/css/themes/post_it.css | 8 ++ .../webapp/public/css/themes/robotask.css | 8 ++ 23 files changed, 244 insertions(+), 113 deletions(-) delete mode 100644 enterprise-patterns/spring-dispatcher-servlet/src/main/java/com/baeldung/enterprise/patterns/dispatcher/servlet/WebConfiguration.java delete mode 100644 enterprise-patterns/spring-dispatcher-servlet/src/main/webapp/WEB-INF/views/home.html delete mode 100644 enterprise-patterns/spring-dispatcher-servlet/src/main/webapp/WEB-INF/views/task-add.html delete mode 100644 enterprise-patterns/spring-dispatcher-servlet/src/main/webapp/WEB-INF/views/task-list.html rename {enterprise-patterns/spring-dispatcher-servlet => spring-dispatcher-servlet}/pom.xml (77%) rename {enterprise-patterns/spring-dispatcher-servlet/src/main/java/com/baeldung/enterprise/patterns => spring-dispatcher-servlet/src/main/java/com/baeldung/spring}/dispatcher/servlet/RootConfiguration.java (78%) create mode 100644 spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/WebConfiguration.java rename {enterprise-patterns/spring-dispatcher-servlet/src/main/java/com/baeldung/enterprise/patterns => spring-dispatcher-servlet/src/main/java/com/baeldung/spring}/dispatcher/servlet/WebInitializer.java (62%) rename {enterprise-patterns/spring-dispatcher-servlet/src/main/java/com/baeldung/enterprise/patterns => spring-dispatcher-servlet/src/main/java/com/baeldung/spring}/dispatcher/servlet/models/Task.java (91%) rename {enterprise-patterns/spring-dispatcher-servlet/src/main/java/com/baeldung/enterprise/patterns => spring-dispatcher-servlet/src/main/java/com/baeldung/spring}/dispatcher/servlet/web/GlobalDefaultExceptionHandler.java (93%) rename {enterprise-patterns/spring-dispatcher-servlet/src/main/java/com/baeldung/enterprise/patterns => spring-dispatcher-servlet/src/main/java/com/baeldung/spring}/dispatcher/servlet/web/HomeController.java (76%) rename {enterprise-patterns/spring-dispatcher-servlet/src/main/java/com/baeldung/enterprise/patterns => spring-dispatcher-servlet/src/main/java/com/baeldung/spring}/dispatcher/servlet/web/TaskController.java (82%) rename {enterprise-patterns/spring-dispatcher-servlet => spring-dispatcher-servlet}/src/main/resources/log4j2.xml (100%) create mode 100644 spring-dispatcher-servlet/src/main/resources/messages.properties create mode 100644 spring-dispatcher-servlet/src/main/resources/messages_de.properties create mode 100644 spring-dispatcher-servlet/src/main/resources/theme-post_it.properties create mode 100644 spring-dispatcher-servlet/src/main/resources/theme-robotask.properties rename {enterprise-patterns/spring-dispatcher-servlet => spring-dispatcher-servlet}/src/main/webapp/WEB-INF/views/error.html (73%) create mode 100644 spring-dispatcher-servlet/src/main/webapp/WEB-INF/views/home.html create mode 100644 spring-dispatcher-servlet/src/main/webapp/WEB-INF/views/task-add.html create mode 100644 spring-dispatcher-servlet/src/main/webapp/WEB-INF/views/task-list.html create mode 100644 spring-dispatcher-servlet/src/main/webapp/public/css/themes/post_it.css create mode 100644 spring-dispatcher-servlet/src/main/webapp/public/css/themes/robotask.css diff --git a/enterprise-patterns/spring-dispatcher-servlet/src/main/java/com/baeldung/enterprise/patterns/dispatcher/servlet/WebConfiguration.java b/enterprise-patterns/spring-dispatcher-servlet/src/main/java/com/baeldung/enterprise/patterns/dispatcher/servlet/WebConfiguration.java deleted file mode 100644 index 90f4f48f50..0000000000 --- a/enterprise-patterns/spring-dispatcher-servlet/src/main/java/com/baeldung/enterprise/patterns/dispatcher/servlet/WebConfiguration.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.baeldung.enterprise.patterns.dispatcher.servlet; - -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.ComponentScan; -import org.springframework.context.annotation.Configuration; -import org.springframework.web.servlet.config.annotation.EnableWebMvc; -import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; -import org.thymeleaf.spring4.SpringTemplateEngine; -import org.thymeleaf.spring4.view.ThymeleafViewResolver; -import org.thymeleaf.templatemode.TemplateMode; -import org.thymeleaf.templateresolver.ServletContextTemplateResolver; - -import javax.servlet.ServletContext; - -@Configuration -@ComponentScan("com.baeldung.enterprise.patterns.dispatcher.servlet.web") -@EnableWebMvc -public class WebConfiguration extends WebMvcConfigurerAdapter { - @Bean - public ServletContextTemplateResolver templateResolver(ServletContext servletContext) { - ServletContextTemplateResolver templateResolver = new ServletContextTemplateResolver(servletContext); - templateResolver.setPrefix("/WEB-INF/views/"); - templateResolver.setSuffix(".html"); - templateResolver.setTemplateMode(TemplateMode.HTML); - return templateResolver; - } - - @Bean - public SpringTemplateEngine templateEngine(ServletContextTemplateResolver templateResolver) { - SpringTemplateEngine templateEngine = new SpringTemplateEngine(); - templateEngine.setTemplateResolver(templateResolver); - return templateEngine; - } - - @Bean - public ThymeleafViewResolver viewResolver(SpringTemplateEngine templateEngine) { - ThymeleafViewResolver viewResolver = new ThymeleafViewResolver(); - viewResolver.setTemplateEngine(templateEngine); - return viewResolver; - } -} diff --git a/enterprise-patterns/spring-dispatcher-servlet/src/main/webapp/WEB-INF/views/home.html b/enterprise-patterns/spring-dispatcher-servlet/src/main/webapp/WEB-INF/views/home.html deleted file mode 100644 index 1a333ed641..0000000000 --- a/enterprise-patterns/spring-dispatcher-servlet/src/main/webapp/WEB-INF/views/home.html +++ /dev/null @@ -1,14 +0,0 @@ - - - - Welcome to TaskTools! - - -

TaskTools

-
    -
  • - -
  • -
- - diff --git a/enterprise-patterns/spring-dispatcher-servlet/src/main/webapp/WEB-INF/views/task-add.html b/enterprise-patterns/spring-dispatcher-servlet/src/main/webapp/WEB-INF/views/task-add.html deleted file mode 100644 index 70f010e58d..0000000000 --- a/enterprise-patterns/spring-dispatcher-servlet/src/main/webapp/WEB-INF/views/task-add.html +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - -

-
- - - -
- - diff --git a/enterprise-patterns/spring-dispatcher-servlet/src/main/webapp/WEB-INF/views/task-list.html b/enterprise-patterns/spring-dispatcher-servlet/src/main/webapp/WEB-INF/views/task-list.html deleted file mode 100644 index 2fe628456f..0000000000 --- a/enterprise-patterns/spring-dispatcher-servlet/src/main/webapp/WEB-INF/views/task-list.html +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - -

-
    -
  • -

    -

    -
  • -
-

- Home - Add new -

- - diff --git a/enterprise-patterns/spring-dispatcher-servlet/pom.xml b/spring-dispatcher-servlet/pom.xml similarity index 77% rename from enterprise-patterns/spring-dispatcher-servlet/pom.xml rename to spring-dispatcher-servlet/pom.xml index e7220eec59..646db663db 100644 --- a/enterprise-patterns/spring-dispatcher-servlet/pom.xml +++ b/spring-dispatcher-servlet/pom.xml @@ -5,12 +5,11 @@ 4.0.0 spring-dispatcher-servlet - 1.0.0-SNAPSHOT war - com.baeldung.enterprise.patterns - enterprise-patterns-parent + com.baeldung + parent-modules 1.0.0-SNAPSHOT .. @@ -25,22 +24,27 @@ org.springframework spring-webmvc - 4.3.2.RELEASE + 4.3.3.RELEASE org.thymeleaf thymeleaf-spring4 - 3.0.1.RELEASE + 3.0.2.RELEASE - org.apache.logging.log4j - log4j-slf4j-impl - 2.6.2 + org.slf4j + slf4j-api + 1.7.21 org.apache.logging.log4j log4j-core - 2.6.2 + 2.7 + + + org.apache.logging.log4j + log4j-slf4j-impl + 2.7 @@ -49,6 +53,11 @@ org.apache.maven.plugins maven-compiler-plugin + 3.5.1 + + 1.8 + 1.8 + org.apache.maven.plugins @@ -61,7 +70,7 @@ org.eclipse.jetty jetty-maven-plugin - 9.4.0.M1 + 9.3.12.v20160915 / diff --git a/enterprise-patterns/spring-dispatcher-servlet/src/main/java/com/baeldung/enterprise/patterns/dispatcher/servlet/RootConfiguration.java b/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/RootConfiguration.java similarity index 78% rename from enterprise-patterns/spring-dispatcher-servlet/src/main/java/com/baeldung/enterprise/patterns/dispatcher/servlet/RootConfiguration.java rename to spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/RootConfiguration.java index 9b22e411c5..48281c5e5d 100644 --- a/enterprise-patterns/spring-dispatcher-servlet/src/main/java/com/baeldung/enterprise/patterns/dispatcher/servlet/RootConfiguration.java +++ b/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/RootConfiguration.java @@ -1,6 +1,6 @@ -package com.baeldung.enterprise.patterns.dispatcher.servlet; +package com.baeldung.spring.dispatcher.servlet; -import com.baeldung.enterprise.patterns.dispatcher.servlet.models.Task; +import com.baeldung.spring.dispatcher.servlet.models.Task; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; diff --git a/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/WebConfiguration.java b/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/WebConfiguration.java new file mode 100644 index 0000000000..5bfde3fb6b --- /dev/null +++ b/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/WebConfiguration.java @@ -0,0 +1,114 @@ +package com.baeldung.spring.dispatcher.servlet; + +import org.springframework.context.MessageSource; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.support.ResourceBundleMessageSource; +import org.springframework.ui.context.support.ResourceBundleThemeSource; +import org.springframework.web.servlet.LocaleResolver; +import org.springframework.web.servlet.ThemeResolver; +import org.springframework.web.servlet.config.annotation.EnableWebMvc; +import org.springframework.web.servlet.config.annotation.InterceptorRegistry; +import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; +import org.springframework.web.servlet.i18n.CookieLocaleResolver; +import org.springframework.web.servlet.i18n.LocaleChangeInterceptor; +import org.springframework.web.servlet.theme.CookieThemeResolver; +import org.springframework.web.servlet.theme.ThemeChangeInterceptor; +import org.thymeleaf.spring4.SpringTemplateEngine; +import org.thymeleaf.spring4.view.ThymeleafViewResolver; +import org.thymeleaf.templatemode.TemplateMode; +import org.thymeleaf.templateresolver.ServletContextTemplateResolver; + +import javax.servlet.ServletContext; +import java.util.Locale; + +@Configuration +@ComponentScan("com.baeldung.enterprise.patterns.dispatcher.servlet.web") +@EnableWebMvc +public class WebConfiguration extends WebMvcConfigurerAdapter { + @Override + public void addResourceHandlers(ResourceHandlerRegistry registry) { + registry + .addResourceHandler("/public/**") + .addResourceLocations("/public/"); + } + + @Override + public void addInterceptors(InterceptorRegistry registry) { + registry.addInterceptor(localeChangeInterceptor()); + registry.addInterceptor(themeChangeInterceptor()); + } + + @Bean + public ServletContextTemplateResolver templateResolver(ServletContext servletContext) { + ServletContextTemplateResolver templateResolver = new ServletContextTemplateResolver(servletContext); + templateResolver.setPrefix("/WEB-INF/views/"); + templateResolver.setSuffix(".html"); + templateResolver.setTemplateMode(TemplateMode.HTML); + return templateResolver; + } + + @Bean + public SpringTemplateEngine templateEngine(ServletContextTemplateResolver templateResolver) { + SpringTemplateEngine templateEngine = new SpringTemplateEngine(); + templateEngine.setTemplateResolver(templateResolver); + return templateEngine; + } + + @Bean + public ThymeleafViewResolver viewResolver(SpringTemplateEngine templateEngine) { + ThymeleafViewResolver viewResolver = new ThymeleafViewResolver(); + viewResolver.setTemplateEngine(templateEngine); + return viewResolver; + } + + @Bean + public MessageSource messageSource() { + ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource(); + messageSource.setBasename("messages"); + return messageSource; + } + + @Bean + public LocaleResolver localeResolver() { + CookieLocaleResolver localeResolver = new CookieLocaleResolver(); + localeResolver.setDefaultLocale(Locale.ENGLISH); + localeResolver.setCookieName("locale"); + localeResolver.setCookieMaxAge(-1); + return localeResolver; + } + + @Bean + public LocaleChangeInterceptor localeChangeInterceptor() { + LocaleChangeInterceptor localeChangeInterceptor = new LocaleChangeInterceptor(); + localeChangeInterceptor.setParamName("lang"); + localeChangeInterceptor.setIgnoreInvalidLocale(true); + return localeChangeInterceptor; + } + + @Bean + public ResourceBundleThemeSource themeSource() { + ResourceBundleThemeSource themeSource = new ResourceBundleThemeSource(); + themeSource.setBasenamePrefix("theme-"); + themeSource.setFallbackToSystemLocale(false); + return themeSource; + } + + @Bean + public ThemeResolver themeResolver() { + CookieThemeResolver themeResolver = new CookieThemeResolver(); + themeResolver.setDefaultThemeName("robotask"); + themeResolver.setCookieName("theme"); + themeResolver.setCookieMaxAge(-1); + return themeResolver; + } + + @Bean + public ThemeChangeInterceptor themeChangeInterceptor() { + ThemeChangeInterceptor themeChangeInterceptor = new ThemeChangeInterceptor(); + themeChangeInterceptor.setParamName("theme"); + return themeChangeInterceptor; + } +} diff --git a/enterprise-patterns/spring-dispatcher-servlet/src/main/java/com/baeldung/enterprise/patterns/dispatcher/servlet/WebInitializer.java b/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/WebInitializer.java similarity index 62% rename from enterprise-patterns/spring-dispatcher-servlet/src/main/java/com/baeldung/enterprise/patterns/dispatcher/servlet/WebInitializer.java rename to spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/WebInitializer.java index a544b2cbac..34e7ce6fc9 100644 --- a/enterprise-patterns/spring-dispatcher-servlet/src/main/java/com/baeldung/enterprise/patterns/dispatcher/servlet/WebInitializer.java +++ b/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/WebInitializer.java @@ -1,7 +1,10 @@ -package com.baeldung.enterprise.patterns.dispatcher.servlet; +package com.baeldung.spring.dispatcher.servlet; +import com.baeldung.spring.dispatcher.servlet.web.filters.RequestLoggingFilter; import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer; +import javax.servlet.Filter; + public class WebInitializer extends AbstractAnnotationConfigDispatcherServletInitializer { @Override protected Class[] getRootConfigClasses() { @@ -15,6 +18,11 @@ public class WebInitializer extends AbstractAnnotationConfigDispatcherServletIni @Override protected String[] getServletMappings() { - return new String[]{"/example/*"}; + return new String[]{"/*"}; + } + + @Override + protected Filter[] getServletFilters() { + return new Filter[]{new RequestLoggingFilter()}; } } diff --git a/enterprise-patterns/spring-dispatcher-servlet/src/main/java/com/baeldung/enterprise/patterns/dispatcher/servlet/models/Task.java b/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/models/Task.java similarity index 91% rename from enterprise-patterns/spring-dispatcher-servlet/src/main/java/com/baeldung/enterprise/patterns/dispatcher/servlet/models/Task.java rename to spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/models/Task.java index dfe4aed4e1..d672948112 100644 --- a/enterprise-patterns/spring-dispatcher-servlet/src/main/java/com/baeldung/enterprise/patterns/dispatcher/servlet/models/Task.java +++ b/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/models/Task.java @@ -1,4 +1,4 @@ -package com.baeldung.enterprise.patterns.dispatcher.servlet.models; +package com.baeldung.spring.dispatcher.servlet.models; import org.springframework.format.annotation.DateTimeFormat; diff --git a/enterprise-patterns/spring-dispatcher-servlet/src/main/java/com/baeldung/enterprise/patterns/dispatcher/servlet/web/GlobalDefaultExceptionHandler.java b/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/web/GlobalDefaultExceptionHandler.java similarity index 93% rename from enterprise-patterns/spring-dispatcher-servlet/src/main/java/com/baeldung/enterprise/patterns/dispatcher/servlet/web/GlobalDefaultExceptionHandler.java rename to spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/web/GlobalDefaultExceptionHandler.java index 0c44d0a5e7..f25fe11b53 100644 --- a/enterprise-patterns/spring-dispatcher-servlet/src/main/java/com/baeldung/enterprise/patterns/dispatcher/servlet/web/GlobalDefaultExceptionHandler.java +++ b/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/web/GlobalDefaultExceptionHandler.java @@ -1,4 +1,4 @@ -package com.baeldung.enterprise.patterns.dispatcher.servlet.web; +package com.baeldung.spring.dispatcher.servlet.web; import org.springframework.core.annotation.AnnotationUtils; import org.springframework.web.bind.annotation.ControllerAdvice; diff --git a/enterprise-patterns/spring-dispatcher-servlet/src/main/java/com/baeldung/enterprise/patterns/dispatcher/servlet/web/HomeController.java b/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/web/HomeController.java similarity index 76% rename from enterprise-patterns/spring-dispatcher-servlet/src/main/java/com/baeldung/enterprise/patterns/dispatcher/servlet/web/HomeController.java rename to spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/web/HomeController.java index 6e4e437a44..0a7d81958e 100644 --- a/enterprise-patterns/spring-dispatcher-servlet/src/main/java/com/baeldung/enterprise/patterns/dispatcher/servlet/web/HomeController.java +++ b/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/web/HomeController.java @@ -1,16 +1,18 @@ -package com.baeldung.enterprise.patterns.dispatcher.servlet.web; +package com.baeldung.spring.dispatcher.servlet.web; -import com.baeldung.enterprise.patterns.dispatcher.servlet.models.Task; +import com.baeldung.spring.dispatcher.servlet.models.Task; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @Controller +@RequestMapping("/") public class HomeController { @Autowired private Map> taskMap; diff --git a/enterprise-patterns/spring-dispatcher-servlet/src/main/java/com/baeldung/enterprise/patterns/dispatcher/servlet/web/TaskController.java b/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/web/TaskController.java similarity index 82% rename from enterprise-patterns/spring-dispatcher-servlet/src/main/java/com/baeldung/enterprise/patterns/dispatcher/servlet/web/TaskController.java rename to spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/web/TaskController.java index 6930464f81..2450e9244d 100644 --- a/enterprise-patterns/spring-dispatcher-servlet/src/main/java/com/baeldung/enterprise/patterns/dispatcher/servlet/web/TaskController.java +++ b/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/web/TaskController.java @@ -1,15 +1,12 @@ -package com.baeldung.enterprise.patterns.dispatcher.servlet.web; +package com.baeldung.spring.dispatcher.servlet.web; -import com.baeldung.enterprise.patterns.dispatcher.servlet.models.Task; +import com.baeldung.spring.dispatcher.servlet.models.Task; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.*; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; @Controller @@ -24,7 +21,7 @@ public class TaskController { @PathVariable("username") String username ) { List tasks = taskMap.get(username).stream() - .sorted((t1, t2) -> t1.getDue().compareTo(t2.getDue())) + .sorted(Comparator.comparing(Task::getDue)) .collect(Collectors.toList()); model.addAttribute("username", username); model.addAttribute("tasks", tasks); diff --git a/enterprise-patterns/spring-dispatcher-servlet/src/main/resources/log4j2.xml b/spring-dispatcher-servlet/src/main/resources/log4j2.xml similarity index 100% rename from enterprise-patterns/spring-dispatcher-servlet/src/main/resources/log4j2.xml rename to spring-dispatcher-servlet/src/main/resources/log4j2.xml diff --git a/spring-dispatcher-servlet/src/main/resources/messages.properties b/spring-dispatcher-servlet/src/main/resources/messages.properties new file mode 100644 index 0000000000..63f0c63a4d --- /dev/null +++ b/spring-dispatcher-servlet/src/main/resources/messages.properties @@ -0,0 +1,10 @@ +home.title=Welcome to TaskTools! +task.add.description=description +task.add.due=due +task.add.header=Adding a task to {0}''s list: +task.add.submit=Submit +task.add.title={0}: task add +task.list.add-new=Add new +task.list.header={0}''s tasks: +task.list.home=Home +task.list.title={0}: task list diff --git a/spring-dispatcher-servlet/src/main/resources/messages_de.properties b/spring-dispatcher-servlet/src/main/resources/messages_de.properties new file mode 100644 index 0000000000..8bda8fa698 --- /dev/null +++ b/spring-dispatcher-servlet/src/main/resources/messages_de.properties @@ -0,0 +1,10 @@ +home.title=Willkommen bei TaskTools! +task.add.description=Beschreibung +task.add.due=f\u00e4llig +task.add.header=F\u00fcge eine Aufgabe zu {0}''s Liste hinzu: +task.add.submit=Senden +task.add.title={0}: Task hinzuf\u00fcgen +task.list.add-new=Neuer Task +task.list.header={0}''s Tasks: +task.list.home=Startseite +task.list.title={0}: Task Liste diff --git a/spring-dispatcher-servlet/src/main/resources/theme-post_it.properties b/spring-dispatcher-servlet/src/main/resources/theme-post_it.properties new file mode 100644 index 0000000000..d2998e2bdf --- /dev/null +++ b/spring-dispatcher-servlet/src/main/resources/theme-post_it.properties @@ -0,0 +1 @@ +stylesheet=/public/css/themes/post_it.css diff --git a/spring-dispatcher-servlet/src/main/resources/theme-robotask.properties b/spring-dispatcher-servlet/src/main/resources/theme-robotask.properties new file mode 100644 index 0000000000..68fe270b64 --- /dev/null +++ b/spring-dispatcher-servlet/src/main/resources/theme-robotask.properties @@ -0,0 +1 @@ +stylesheet=/public/css/themes/robotask.css diff --git a/enterprise-patterns/spring-dispatcher-servlet/src/main/webapp/WEB-INF/views/error.html b/spring-dispatcher-servlet/src/main/webapp/WEB-INF/views/error.html similarity index 73% rename from enterprise-patterns/spring-dispatcher-servlet/src/main/webapp/WEB-INF/views/error.html rename to spring-dispatcher-servlet/src/main/webapp/WEB-INF/views/error.html index c1b362e51a..cc1ea12789 100644 --- a/enterprise-patterns/spring-dispatcher-servlet/src/main/webapp/WEB-INF/views/error.html +++ b/spring-dispatcher-servlet/src/main/webapp/WEB-INF/views/error.html @@ -2,6 +2,7 @@ Error +

Error:

diff --git a/spring-dispatcher-servlet/src/main/webapp/WEB-INF/views/home.html b/spring-dispatcher-servlet/src/main/webapp/WEB-INF/views/home.html new file mode 100644 index 0000000000..e26079de96 --- /dev/null +++ b/spring-dispatcher-servlet/src/main/webapp/WEB-INF/views/home.html @@ -0,0 +1,15 @@ + + + + + + + +

TaskTools

+
    +
  • + +
  • +
+ + diff --git a/spring-dispatcher-servlet/src/main/webapp/WEB-INF/views/task-add.html b/spring-dispatcher-servlet/src/main/webapp/WEB-INF/views/task-add.html new file mode 100644 index 0000000000..68b9b233c5 --- /dev/null +++ b/spring-dispatcher-servlet/src/main/webapp/WEB-INF/views/task-add.html @@ -0,0 +1,15 @@ + + + + + + + +

+
+ + + +
+ + diff --git a/spring-dispatcher-servlet/src/main/webapp/WEB-INF/views/task-list.html b/spring-dispatcher-servlet/src/main/webapp/WEB-INF/views/task-list.html new file mode 100644 index 0000000000..cc5e0a396d --- /dev/null +++ b/spring-dispatcher-servlet/src/main/webapp/WEB-INF/views/task-list.html @@ -0,0 +1,20 @@ + + + + + + + +

+
    +
  • +

    +

    +
  • +
+

+ + +

+ + diff --git a/spring-dispatcher-servlet/src/main/webapp/public/css/themes/post_it.css b/spring-dispatcher-servlet/src/main/webapp/public/css/themes/post_it.css new file mode 100644 index 0000000000..578781ec83 --- /dev/null +++ b/spring-dispatcher-servlet/src/main/webapp/public/css/themes/post_it.css @@ -0,0 +1,8 @@ +@import url('https://fonts.googleapis.com/css?family=Indie+Flower'); + +* { + font-family: 'Indie Flower', sans-serif; + font-size: 18px; + color: #ffeb3b; + background-color: #212121; +} diff --git a/spring-dispatcher-servlet/src/main/webapp/public/css/themes/robotask.css b/spring-dispatcher-servlet/src/main/webapp/public/css/themes/robotask.css new file mode 100644 index 0000000000..8c0121b536 --- /dev/null +++ b/spring-dispatcher-servlet/src/main/webapp/public/css/themes/robotask.css @@ -0,0 +1,8 @@ +@import url('https://fonts.googleapis.com/css?family=Roboto'); + +* { + font-family: Roboto, sans-serif; + font-size: 1em; + color: #212121; + background-color: #fafafa; +} From a1a8c29c63e2b34779ace210d03803d8410d6c02 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20R=C3=A4del?= Date: Wed, 19 Oct 2016 01:56:47 +0200 Subject: [PATCH 189/215] BAEL-86: Refactored WebInitializer and added MultipartResolver. --- .../servlet/WebApplicationInitializer.java | 30 +++++++++++++++++++ .../dispatcher/servlet/WebConfiguration.java | 7 +++++ .../dispatcher/servlet/WebInitializer.java | 28 ----------------- 3 files changed, 37 insertions(+), 28 deletions(-) create mode 100644 spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/WebApplicationInitializer.java delete mode 100644 spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/WebInitializer.java diff --git a/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/WebApplicationInitializer.java b/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/WebApplicationInitializer.java new file mode 100644 index 0000000000..76f19f2eb3 --- /dev/null +++ b/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/WebApplicationInitializer.java @@ -0,0 +1,30 @@ +package com.baeldung.spring.dispatcher.servlet; + +import org.springframework.web.context.ContextLoaderListener; +import org.springframework.web.context.support.AnnotationConfigWebApplicationContext; +import org.springframework.web.servlet.DispatcherServlet; + +import javax.servlet.MultipartConfigElement; +import javax.servlet.ServletContext; +import javax.servlet.ServletException; +import javax.servlet.ServletRegistration; + +public class WebApplicationInitializer implements org.springframework.web.WebApplicationInitializer { + @Override + public void onStartup(ServletContext servletContext) throws ServletException { + AnnotationConfigWebApplicationContext rootContext = + new AnnotationConfigWebApplicationContext(); + rootContext.register(RootConfiguration.class); + servletContext.addListener(new ContextLoaderListener(rootContext)); + AnnotationConfigWebApplicationContext webContext = + new AnnotationConfigWebApplicationContext(); + webContext.register(WebConfiguration.class); + webContext.scan("com.baeldung.spring.dispatcher.servlet.web"); + ServletRegistration.Dynamic servlet = servletContext.addServlet("dispatcher", + new DispatcherServlet(webContext)); + servlet.addMapping("/*"); + MultipartConfigElement multipartConfigElement = + new MultipartConfigElement("/tmp"); + servlet.setMultipartConfig(multipartConfigElement); + } +} diff --git a/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/WebConfiguration.java b/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/WebConfiguration.java index 5bfde3fb6b..b997ec824e 100644 --- a/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/WebConfiguration.java +++ b/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/WebConfiguration.java @@ -6,6 +6,8 @@ import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.context.support.ResourceBundleMessageSource; import org.springframework.ui.context.support.ResourceBundleThemeSource; +import org.springframework.web.multipart.MultipartResolver; +import org.springframework.web.multipart.support.StandardServletMultipartResolver; import org.springframework.web.servlet.LocaleResolver; import org.springframework.web.servlet.ThemeResolver; import org.springframework.web.servlet.config.annotation.EnableWebMvc; @@ -111,4 +113,9 @@ public class WebConfiguration extends WebMvcConfigurerAdapter { themeChangeInterceptor.setParamName("theme"); return themeChangeInterceptor; } + + @Bean + public MultipartResolver multipartResolver() { + return new StandardServletMultipartResolver(); + } } diff --git a/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/WebInitializer.java b/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/WebInitializer.java deleted file mode 100644 index 34e7ce6fc9..0000000000 --- a/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/WebInitializer.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.baeldung.spring.dispatcher.servlet; - -import com.baeldung.spring.dispatcher.servlet.web.filters.RequestLoggingFilter; -import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer; - -import javax.servlet.Filter; - -public class WebInitializer extends AbstractAnnotationConfigDispatcherServletInitializer { - @Override - protected Class[] getRootConfigClasses() { - return new Class[]{RootConfiguration.class}; - } - - @Override - protected Class[] getServletConfigClasses() { - return new Class[]{WebConfiguration.class}; - } - - @Override - protected String[] getServletMappings() { - return new String[]{"/*"}; - } - - @Override - protected Filter[] getServletFilters() { - return new Filter[]{new RequestLoggingFilter()}; - } -} From da0f93feb54b384f397665e7795fcd575f059f2a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20R=C3=A4del?= Date: Wed, 19 Oct 2016 15:19:30 +0200 Subject: [PATCH 190/215] BAEL-86: - Split controller into interfaces and implementations. - Added ability to up/download files. --- .../dispatcher/servlet/models/Attachment.java | 58 +++++++++ .../dispatcher/servlet/models/Task.java | 12 ++ .../servlet/web/AttachmentController.java | 17 +++ .../servlet/web/AttachmentControllerImpl.java | 45 +++++++ .../servlet/web/HomeController.java | 23 +--- .../servlet/web/HomeControllerImpl.java | 25 ++++ .../servlet/web/TaskController.java | 73 ++++++------ .../servlet/web/TaskControllerImpl.java | 111 ++++++++++++++++++ .../src/main/resources/messages.properties | 12 ++ .../src/main/resources/messages_de.properties | 12 ++ .../src/main/webapp/WEB-INF/views/error.html | 1 + .../src/main/webapp/WEB-INF/views/home.html | 1 + .../main/webapp/WEB-INF/views/task-add.html | 7 +- .../webapp/WEB-INF/views/task-attach.html | 17 +++ .../main/webapp/WEB-INF/views/task-get.html | 28 +++++ .../main/webapp/WEB-INF/views/task-list.html | 2 + .../src/main/webapp/public/css/base.css | 8 ++ 17 files changed, 391 insertions(+), 61 deletions(-) create mode 100644 spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/models/Attachment.java create mode 100644 spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/web/AttachmentController.java create mode 100644 spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/web/AttachmentControllerImpl.java create mode 100644 spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/web/HomeControllerImpl.java create mode 100644 spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/web/TaskControllerImpl.java create mode 100644 spring-dispatcher-servlet/src/main/webapp/WEB-INF/views/task-attach.html create mode 100644 spring-dispatcher-servlet/src/main/webapp/WEB-INF/views/task-get.html create mode 100644 spring-dispatcher-servlet/src/main/webapp/public/css/base.css diff --git a/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/models/Attachment.java b/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/models/Attachment.java new file mode 100644 index 0000000000..1d6248650f --- /dev/null +++ b/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/models/Attachment.java @@ -0,0 +1,58 @@ +package com.baeldung.spring.dispatcher.servlet.models; + +import java.util.UUID; + +public class Attachment { + private String id; + + private String name; + + private String description; + + public Attachment() { + this.id = UUID.randomUUID().toString(); + } + + public Attachment(String name, String description) { + this(); + this.name = name; + this.description = description; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + 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; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + Attachment that = (Attachment) o; + return id.equals(that.id); + } + + @Override + public int hashCode() { + return id.hashCode(); + } +} diff --git a/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/models/Task.java b/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/models/Task.java index d672948112..1e6a533e3a 100644 --- a/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/models/Task.java +++ b/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/models/Task.java @@ -3,6 +3,8 @@ package com.baeldung.spring.dispatcher.servlet.models; import org.springframework.format.annotation.DateTimeFormat; import java.util.Date; +import java.util.HashSet; +import java.util.Set; public class Task { private String description; @@ -10,6 +12,8 @@ public class Task { @DateTimeFormat(pattern = "yyyy-MM-dd'T'hh:mm") private Date due; + private Set attachments = new HashSet<>(); + public Task() { } @@ -37,4 +41,12 @@ public class Task { public void setDue(Date due) { this.due = due; } + + public Set getAttachments() { + return attachments; + } + + public void setAttachments(Set attachments) { + this.attachments = attachments; + } } diff --git a/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/web/AttachmentController.java b/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/web/AttachmentController.java new file mode 100644 index 0000000000..2521004ff1 --- /dev/null +++ b/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/web/AttachmentController.java @@ -0,0 +1,17 @@ +package com.baeldung.spring.dispatcher.servlet.web; + +import org.springframework.core.io.FileSystemResource; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; + +@RequestMapping("/attachments") +public interface AttachmentController { + @GetMapping("/{attachmentId}") + ResponseEntity getAttachment( + @PathVariable("attachmentId") String attachmentId, + @RequestParam(name = "download", required = false, defaultValue = "false") boolean forcedDownload + ); +} diff --git a/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/web/AttachmentControllerImpl.java b/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/web/AttachmentControllerImpl.java new file mode 100644 index 0000000000..75a15cf657 --- /dev/null +++ b/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/web/AttachmentControllerImpl.java @@ -0,0 +1,45 @@ +package com.baeldung.spring.dispatcher.servlet.web; + +import com.baeldung.spring.dispatcher.servlet.models.Task; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.io.FileSystemResource; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestParam; + +import java.net.URLConnection; +import java.util.Collection; +import java.util.List; +import java.util.Map; + +@Controller +public class AttachmentControllerImpl implements AttachmentController { + @Autowired + private Map> taskMap; + + @Override + public ResponseEntity getAttachment( + @PathVariable("attachmentId") String attachmentId, + @RequestParam(name = "download", required = false, defaultValue = "false") boolean forcedDownload + ) { + FileSystemResource resource = new FileSystemResource("/tmp/" + attachmentId); + HttpHeaders headers = new HttpHeaders(); + taskMap.values().stream() + .flatMap(Collection::stream) + .flatMap(t -> t.getAttachments().stream()) + .filter(a -> a.getId().equals(attachmentId)) + .findFirst() + .ifPresent(a -> { + headers.add("Content-Disposition", + "attachment; filename=" + a.getName()); + headers.add("Content-Type", forcedDownload ? + MediaType.APPLICATION_OCTET_STREAM_VALUE : + URLConnection.guessContentTypeFromName(a.getName())); + }); + return new ResponseEntity<>(resource, headers, HttpStatus.OK); + } +} diff --git a/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/web/HomeController.java b/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/web/HomeController.java index 0a7d81958e..5ac39fadb4 100644 --- a/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/web/HomeController.java +++ b/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/web/HomeController.java @@ -1,28 +1,13 @@ package com.baeldung.spring.dispatcher.servlet.web; -import com.baeldung.spring.dispatcher.servlet.models.Task; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; - -@Controller @RequestMapping("/") -public class HomeController { - @Autowired - private Map> taskMap; - +public interface HomeController { @GetMapping("/*") - public String home(Model model) { - List users = taskMap.keySet().stream() - .sorted() - .collect(Collectors.toList()); - model.addAttribute("users", users); - return "home"; - } + String home( + Model model + ); } diff --git a/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/web/HomeControllerImpl.java b/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/web/HomeControllerImpl.java new file mode 100644 index 0000000000..66d869ca67 --- /dev/null +++ b/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/web/HomeControllerImpl.java @@ -0,0 +1,25 @@ +package com.baeldung.spring.dispatcher.servlet.web; + +import com.baeldung.spring.dispatcher.servlet.models.Task; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; + +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +@Controller +public class HomeControllerImpl implements HomeController { + @Autowired + private Map> taskMap; + + @Override + public String home(Model model) { + List users = taskMap.keySet().stream() + .sorted() + .collect(Collectors.toList()); + model.addAttribute("users", users); + return "home"; + } +} diff --git a/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/web/TaskController.java b/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/web/TaskController.java index 2450e9244d..eff93ffb2f 100644 --- a/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/web/TaskController.java +++ b/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/web/TaskController.java @@ -1,54 +1,49 @@ package com.baeldung.spring.dispatcher.servlet.web; import com.baeldung.spring.dispatcher.servlet.models.Task; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; -import java.util.*; -import java.util.stream.Collectors; - -@Controller @RequestMapping("/tasks") -public class TaskController { - @Autowired - private Map> taskMap; - +public interface TaskController { @GetMapping("/{username}/list") - public String listForm( - Model model, - @PathVariable("username") String username - ) { - List tasks = taskMap.get(username).stream() - .sorted(Comparator.comparing(Task::getDue)) - .collect(Collectors.toList()); - model.addAttribute("username", username); - model.addAttribute("tasks", tasks); - return "task-list"; - } + String listTasks( + @PathVariable("username") String username, + Model model + ); @GetMapping("/{username}/add") - public String addForm( - Model model, - @PathVariable("username") String username - ) { - model.addAttribute("username", username); - model.addAttribute("task", new Task(new Date())); - return "task-add"; - } + String addTask( + @PathVariable("username") String username, + Model model + ); @PostMapping("/{username}/add") - public String addSubmit( + String addTask( @PathVariable("username") String username, @ModelAttribute Task task - ) { - List taskList = taskMap.get(username); - if (taskList == null) { - taskList = new ArrayList<>(); - } - taskList.add(task); - taskMap.put(username, taskList); - return "redirect:list"; - } + ); + + @GetMapping("/{username}/get/{id}") + String getTask( + @PathVariable("username") String username, + @PathVariable("id") int id, + Model model + ); + + @GetMapping("/{username}/get/{id}/attach") + String attachToTask( + @PathVariable("username") String username, + @PathVariable("id") int id, + Model model + ); + + @PostMapping("/{username}/get/{id}/attach") + String attachToTask( + @PathVariable("username") String username, + @PathVariable("id") int id, + @RequestParam("attachment") MultipartFile attachment, + @RequestParam("description") String description + ); } diff --git a/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/web/TaskControllerImpl.java b/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/web/TaskControllerImpl.java new file mode 100644 index 0000000000..464e58aa54 --- /dev/null +++ b/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/web/TaskControllerImpl.java @@ -0,0 +1,111 @@ +package com.baeldung.spring.dispatcher.servlet.web; + +import com.baeldung.spring.dispatcher.servlet.models.Attachment; +import com.baeldung.spring.dispatcher.servlet.models.Task; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.multipart.MultipartFile; + +import java.io.*; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.util.*; +import java.util.stream.Collectors; + +@Controller +public class TaskControllerImpl implements TaskController { + @Autowired + private Map> taskMap; + + @Override + public String listTasks( + @PathVariable("username") String username, + Model model + ) { + List tasks = taskMap.get(username).stream() + .sorted(Comparator.comparing(Task::getDue)) + .collect(Collectors.toList()); + model.addAttribute("username", username); + model.addAttribute("tasks", tasks); + return "task-list"; + } + + @Override + public String addTask( + @PathVariable("username") String username, + Model model + ) { + model.addAttribute("username", username); + model.addAttribute("task", new Task(new Date())); + return "task-add"; + } + + @Override + public String addTask( + @PathVariable("username") String username, + @ModelAttribute Task task + ) { + List taskList = taskMap.get(username); + if (taskList == null) { + taskList = new ArrayList<>(); + } + taskList.add(task); + taskMap.put(username, taskList); + return "redirect:list"; + } + + @Override + public String getTask( + @PathVariable("username") String username, + @PathVariable("id") int id, + Model model + ) { + Task task = taskMap.get(username).get(id); + model.addAttribute("username", username); + model.addAttribute("id", id); + model.addAttribute("task", task); + return "task-get"; + } + + @Override + public String attachToTask( + @PathVariable("username") String username, + @PathVariable("id") int id, + Model model + ) { + model.addAttribute("username", username); + model.addAttribute("id", id); + return "task-attach"; + } + + @Override + public String attachToTask( + @PathVariable("username") String username, + @PathVariable("id") int id, + @RequestParam("attachment") MultipartFile multipartFile, + @RequestParam("description") String description + ) { + Task task = taskMap.get(username).get(id); + Attachment attachment = new Attachment(multipartFile.getOriginalFilename(), + description); + task.getAttachments().add(attachment); + try (InputStream inputStream = + new BufferedInputStream(multipartFile.getInputStream()); + OutputStream outputStream = + new BufferedOutputStream(Files.newOutputStream( + Paths.get("/tmp", attachment.getId())))) { + byte[] buf = new byte[1024 * 16]; + int len; + while ((len = inputStream.read(buf)) != -1) { + outputStream.write(buf, 0, len); + } + } catch (IOException e) { + throw new RuntimeException("Failed to upload file!", e); + } + return "redirect:./"; + } +} diff --git a/spring-dispatcher-servlet/src/main/resources/messages.properties b/spring-dispatcher-servlet/src/main/resources/messages.properties index 63f0c63a4d..c36eb5aa42 100644 --- a/spring-dispatcher-servlet/src/main/resources/messages.properties +++ b/spring-dispatcher-servlet/src/main/resources/messages.properties @@ -4,7 +4,19 @@ task.add.due=due task.add.header=Adding a task to {0}''s list: task.add.submit=Submit task.add.title={0}: task add +task.attach.attachment=attached file +task.attach.description=description +task.attach.header=task #{0}: attach file +task.attach.submit=Submit +task.attach.title=#{0}: Attach file +task.get.attach=Attach file +task.get.attachments=attachments: +task.get.download=Download +task.get.header=task #{0}: +task.get.list=Back +task.get.title={0}: task details task.list.add-new=Add new +task.list.details=Details task.list.header={0}''s tasks: task.list.home=Home task.list.title={0}: task list diff --git a/spring-dispatcher-servlet/src/main/resources/messages_de.properties b/spring-dispatcher-servlet/src/main/resources/messages_de.properties index 8bda8fa698..184b72101c 100644 --- a/spring-dispatcher-servlet/src/main/resources/messages_de.properties +++ b/spring-dispatcher-servlet/src/main/resources/messages_de.properties @@ -4,7 +4,19 @@ task.add.due=f\u00e4llig task.add.header=F\u00fcge eine Aufgabe zu {0}''s Liste hinzu: task.add.submit=Senden task.add.title={0}: Task hinzuf\u00fcgen +task.attach.attachment=Angeh\u00e4ngte Datei +task.attach.description=Beschreibung +task.attach.header=Task #{0}: Datei anh\u00e4ngen +task.attach.submit=Senden +task.attach.title=#{0}: Datei anh\u00e4ngen +task.get.attach=Datei anh\u00e4ngen +task.get.attachments=Anh\u00e4nge: +task.get.download=Download +task.get.header=Task #{0}: +task.get.list=Zur\u00fcck +task.get.title={0}: Task Details task.list.add-new=Neuer Task +task.list.details=Details task.list.header={0}''s Tasks: task.list.home=Startseite task.list.title={0}: Task Liste diff --git a/spring-dispatcher-servlet/src/main/webapp/WEB-INF/views/error.html b/spring-dispatcher-servlet/src/main/webapp/WEB-INF/views/error.html index cc1ea12789..8f0f6afca7 100644 --- a/spring-dispatcher-servlet/src/main/webapp/WEB-INF/views/error.html +++ b/spring-dispatcher-servlet/src/main/webapp/WEB-INF/views/error.html @@ -2,6 +2,7 @@ Error + diff --git a/spring-dispatcher-servlet/src/main/webapp/WEB-INF/views/home.html b/spring-dispatcher-servlet/src/main/webapp/WEB-INF/views/home.html index e26079de96..6adec7bb12 100644 --- a/spring-dispatcher-servlet/src/main/webapp/WEB-INF/views/home.html +++ b/spring-dispatcher-servlet/src/main/webapp/WEB-INF/views/home.html @@ -2,6 +2,7 @@ + diff --git a/spring-dispatcher-servlet/src/main/webapp/WEB-INF/views/task-add.html b/spring-dispatcher-servlet/src/main/webapp/WEB-INF/views/task-add.html index 68b9b233c5..520486f52e 100644 --- a/spring-dispatcher-servlet/src/main/webapp/WEB-INF/views/task-add.html +++ b/spring-dispatcher-servlet/src/main/webapp/WEB-INF/views/task-add.html @@ -2,14 +2,15 @@ +

- - - + + +
diff --git a/spring-dispatcher-servlet/src/main/webapp/WEB-INF/views/task-attach.html b/spring-dispatcher-servlet/src/main/webapp/WEB-INF/views/task-attach.html new file mode 100644 index 0000000000..23246f330b --- /dev/null +++ b/spring-dispatcher-servlet/src/main/webapp/WEB-INF/views/task-attach.html @@ -0,0 +1,17 @@ + + + + + + + + +

+
+ + + +
+ + diff --git a/spring-dispatcher-servlet/src/main/webapp/WEB-INF/views/task-get.html b/spring-dispatcher-servlet/src/main/webapp/WEB-INF/views/task-get.html new file mode 100644 index 0000000000..e7b35b6780 --- /dev/null +++ b/spring-dispatcher-servlet/src/main/webapp/WEB-INF/views/task-get.html @@ -0,0 +1,28 @@ + + + + + + + + +

+

+

+
+

+
+
+
+ + +
+
+
+

+ + +

+ + diff --git a/spring-dispatcher-servlet/src/main/webapp/WEB-INF/views/task-list.html b/spring-dispatcher-servlet/src/main/webapp/WEB-INF/views/task-list.html index cc5e0a396d..0671f24ba3 100644 --- a/spring-dispatcher-servlet/src/main/webapp/WEB-INF/views/task-list.html +++ b/spring-dispatcher-servlet/src/main/webapp/WEB-INF/views/task-list.html @@ -2,6 +2,7 @@ + @@ -10,6 +11,7 @@
  • +
  • diff --git a/spring-dispatcher-servlet/src/main/webapp/public/css/base.css b/spring-dispatcher-servlet/src/main/webapp/public/css/base.css new file mode 100644 index 0000000000..4d3c2597cf --- /dev/null +++ b/spring-dispatcher-servlet/src/main/webapp/public/css/base.css @@ -0,0 +1,8 @@ +a.button { + -webkit-appearance: button; + -moz-appearance: button; + appearance: button; + text-decoration: none; + color: #2196f3; + background-color: #e0e0e0; +} From 6f2c2a7d1d86296e87198da601f9c13aead03506 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20R=C3=A4del?= Date: Fri, 21 Oct 2016 11:57:14 +0200 Subject: [PATCH 191/215] BAEL-86: - Changed component scanning. --- .../spring/dispatcher/servlet/WebApplicationInitializer.java | 4 ++-- .../baeldung/spring/dispatcher/servlet/WebConfiguration.java | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/WebApplicationInitializer.java b/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/WebApplicationInitializer.java index 76f19f2eb3..016e4a8b4c 100644 --- a/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/WebApplicationInitializer.java +++ b/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/WebApplicationInitializer.java @@ -19,9 +19,9 @@ public class WebApplicationInitializer implements org.springframework.web.WebApp AnnotationConfigWebApplicationContext webContext = new AnnotationConfigWebApplicationContext(); webContext.register(WebConfiguration.class); - webContext.scan("com.baeldung.spring.dispatcher.servlet.web"); + DispatcherServlet dispatcherServlet = new DispatcherServlet(webContext); ServletRegistration.Dynamic servlet = servletContext.addServlet("dispatcher", - new DispatcherServlet(webContext)); + dispatcherServlet); servlet.addMapping("/*"); MultipartConfigElement multipartConfigElement = new MultipartConfigElement("/tmp"); diff --git a/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/WebConfiguration.java b/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/WebConfiguration.java index b997ec824e..efc2461050 100644 --- a/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/WebConfiguration.java +++ b/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/WebConfiguration.java @@ -27,7 +27,7 @@ import javax.servlet.ServletContext; import java.util.Locale; @Configuration -@ComponentScan("com.baeldung.enterprise.patterns.dispatcher.servlet.web") +@ComponentScan("com.baeldung.spring.dispatcher.servlet.web") @EnableWebMvc public class WebConfiguration extends WebMvcConfigurerAdapter { @Override From 86e387e9a458d03af7d1d6137db98acfce3f533a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20R=C3=A4del?= Date: Thu, 27 Oct 2016 22:17:20 +0200 Subject: [PATCH 192/215] BAEL-86: - Small modification on exception handler, because we have only one resolver. - Added exception resolver to web configuration. --- .../spring/dispatcher/servlet/WebConfiguration.java | 8 ++++++++ .../servlet/web/GlobalDefaultExceptionHandler.java | 5 ----- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/WebConfiguration.java b/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/WebConfiguration.java index efc2461050..419c1a2908 100644 --- a/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/WebConfiguration.java +++ b/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/WebConfiguration.java @@ -8,6 +8,7 @@ import org.springframework.context.support.ResourceBundleMessageSource; import org.springframework.ui.context.support.ResourceBundleThemeSource; import org.springframework.web.multipart.MultipartResolver; import org.springframework.web.multipart.support.StandardServletMultipartResolver; +import org.springframework.web.servlet.HandlerExceptionResolver; import org.springframework.web.servlet.LocaleResolver; import org.springframework.web.servlet.ThemeResolver; import org.springframework.web.servlet.config.annotation.EnableWebMvc; @@ -16,6 +17,7 @@ import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; import org.springframework.web.servlet.i18n.CookieLocaleResolver; import org.springframework.web.servlet.i18n.LocaleChangeInterceptor; +import org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver; import org.springframework.web.servlet.theme.CookieThemeResolver; import org.springframework.web.servlet.theme.ThemeChangeInterceptor; import org.thymeleaf.spring4.SpringTemplateEngine; @@ -70,6 +72,7 @@ public class WebConfiguration extends WebMvcConfigurerAdapter { public MessageSource messageSource() { ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource(); messageSource.setBasename("messages"); + messageSource.setFallbackToSystemLocale(false); return messageSource; } @@ -118,4 +121,9 @@ public class WebConfiguration extends WebMvcConfigurerAdapter { public MultipartResolver multipartResolver() { return new StandardServletMultipartResolver(); } + + @Bean + public HandlerExceptionResolver handlerExceptionResolver() { + return new ExceptionHandlerExceptionResolver(); + } } diff --git a/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/web/GlobalDefaultExceptionHandler.java b/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/web/GlobalDefaultExceptionHandler.java index f25fe11b53..f25eb601a7 100644 --- a/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/web/GlobalDefaultExceptionHandler.java +++ b/spring-dispatcher-servlet/src/main/java/com/baeldung/spring/dispatcher/servlet/web/GlobalDefaultExceptionHandler.java @@ -1,9 +1,7 @@ package com.baeldung.spring.dispatcher.servlet.web; -import org.springframework.core.annotation.AnnotationUtils; import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ExceptionHandler; -import org.springframework.web.bind.annotation.ResponseStatus; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; @@ -12,9 +10,6 @@ import javax.servlet.http.HttpServletRequest; public class GlobalDefaultExceptionHandler { @ExceptionHandler(Exception.class) public ModelAndView defaultErrorHandler(HttpServletRequest request, Exception e) throws Exception { - if (AnnotationUtils.findAnnotation(e.getClass(), ResponseStatus.class) != null) { - throw e; - } ModelAndView modelAndView = new ModelAndView(); modelAndView.addObject("exception", e); modelAndView.addObject("url", request.getRequestURL()); From 33a183b9657fe71116214b7329746696e33f060e Mon Sep 17 00:00:00 2001 From: slavisa-baeldung Date: Wed, 2 Nov 2016 16:19:13 +0100 Subject: [PATCH 193/215] BAEL-86 - adding dispatcher servlet to the code --- pom.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/pom.xml b/pom.xml index 82aa022269..ddd2c57d81 100644 --- a/pom.xml +++ b/pom.xml @@ -95,6 +95,7 @@ spring-data-neo4j spring-data-redis spring-data-rest + spring-dispatcher-servlet spring-exceptions spring-freemarker spring-hibernate3 From 1c13d2ccf90eae4bdc18b9ad9fb8088f86d55745 Mon Sep 17 00:00:00 2001 From: Ankush Sharma Date: Wed, 2 Nov 2016 21:53:19 +0530 Subject: [PATCH 194/215] formatted according to eugen's formatter. --- .../spring/controller/ErrorController.java | 74 ++++++++++--------- .../main/webapp/WEB-INF/view/errorPage.jsp | 10 +-- .../src/main/webapp/WEB-INF/web.xml | 4 +- 3 files changed, 43 insertions(+), 45 deletions(-) diff --git a/spring-mvc-xml/src/main/java/com/baeldung/spring/controller/ErrorController.java b/spring-mvc-xml/src/main/java/com/baeldung/spring/controller/ErrorController.java index 8ca815b4d7..c1aa147df5 100644 --- a/spring-mvc-xml/src/main/java/com/baeldung/spring/controller/ErrorController.java +++ b/spring-mvc-xml/src/main/java/com/baeldung/spring/controller/ErrorController.java @@ -2,6 +2,7 @@ package com.baeldung.spring.controller; import javax.servlet.http.HttpServletRequest; +import org.springframework.http.converter.xml.MarshallingHttpMessageConverter; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @@ -9,43 +10,44 @@ import org.springframework.web.servlet.ModelAndView; @Controller public class ErrorController { + + @RequestMapping(value = "500Error", method = RequestMethod.GET) + public void throwRuntimeException() { + throw new NullPointerException("Throwing a null pointer exception"); + } - @RequestMapping(value = "500Error", method = RequestMethod.GET) - public void throwRuntimeException() { - throw new NullPointerException("Throwing a null pointer exception"); - } + @RequestMapping(value = "errors", method = RequestMethod.GET) + public ModelAndView renderErrorPage(HttpServletRequest httpRequest) { + ModelAndView errorPage = new ModelAndView("errorPage"); + String errorMsg = ""; + int httpErrorCode = getErrorCode(httpRequest); - @RequestMapping(value = "errors", method = RequestMethod.GET) - public ModelAndView renderErrorPages(HttpServletRequest httpRequest) { - ModelAndView errorPage = new ModelAndView("errorPage"); - String errorMsg = ""; - int httpErrorCode = getErrorCode(httpRequest); + switch (httpErrorCode) { + case 400: { + errorMsg = "Http Error Code : 400 . Bad Request"; + break; + } + case 401: { + errorMsg = "Http Error Code : 401. Unauthorized"; + break; + } + case 404: { + errorMsg = "Http Error Code : 404. Resource not found"; + break; + } + // Handle other 4xx error codes. + case 500: { + errorMsg = "Http Error Code : 500. Internal Server Error"; + break; + } + // Handle other 5xx error codes. + } + errorPage.addObject("errorMsg", errorMsg); + return errorPage; + } - switch (httpErrorCode) { - case 400: { - errorMsg = "Http Error Code : 400 . Bad Request"; - break; - } - case 401: { - errorMsg = "Http Error Code : 401. Unauthorized"; - break; - } - case 404: { - errorMsg = "Http Error Code : 404. Resource not found"; - break; - } - // Handle other 4xx error codes. - case 500: { - errorMsg = "Http Error Code : 500. Internal Server Error"; - break; - } - // Handle other 5xx error codes. - } - errorPage.addObject("errorMsg", errorMsg); - return errorPage; - } - - private int getErrorCode(HttpServletRequest httpRequest) { - return (Integer) httpRequest.getAttribute("javax.servlet.error.status_code"); - } + private int getErrorCode(HttpServletRequest httpRequest) { + return (Integer) httpRequest + .getAttribute("javax.servlet.error.status_code"); + } } diff --git a/spring-mvc-xml/src/main/webapp/WEB-INF/view/errorPage.jsp b/spring-mvc-xml/src/main/webapp/WEB-INF/view/errorPage.jsp index a94858c6b1..9fc7e523cb 100644 --- a/spring-mvc-xml/src/main/webapp/WEB-INF/view/errorPage.jsp +++ b/spring-mvc-xml/src/main/webapp/WEB-INF/view/errorPage.jsp @@ -1,13 +1,11 @@ -<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> -<%@ page session="false" %> +<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> +<%@ page session="false"%> - Home +Home -

    - ${errorMsg} -

    +

    ${errorMsg}

    diff --git a/spring-mvc-xml/src/main/webapp/WEB-INF/web.xml b/spring-mvc-xml/src/main/webapp/WEB-INF/web.xml index 3aecded8d6..e73d772483 100644 --- a/spring-mvc-xml/src/main/webapp/WEB-INF/web.xml +++ b/spring-mvc-xml/src/main/webapp/WEB-INF/web.xml @@ -44,8 +44,6 @@ - - /errors - + /errors \ No newline at end of file From 362bc6ff9b72fd39c4983ccbd4f13a34c23afdd3 Mon Sep 17 00:00:00 2001 From: Ankush Sharma Date: Wed, 2 Nov 2016 22:04:17 +0530 Subject: [PATCH 195/215] Unused imports removed --- .../java/com/baeldung/spring/controller/ErrorController.java | 1 - 1 file changed, 1 deletion(-) diff --git a/spring-mvc-xml/src/main/java/com/baeldung/spring/controller/ErrorController.java b/spring-mvc-xml/src/main/java/com/baeldung/spring/controller/ErrorController.java index c1aa147df5..96556bd5b1 100644 --- a/spring-mvc-xml/src/main/java/com/baeldung/spring/controller/ErrorController.java +++ b/spring-mvc-xml/src/main/java/com/baeldung/spring/controller/ErrorController.java @@ -2,7 +2,6 @@ package com.baeldung.spring.controller; import javax.servlet.http.HttpServletRequest; -import org.springframework.http.converter.xml.MarshallingHttpMessageConverter; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; From 961f4f5b1e7ea99b4b25c3d77bcb05621b98b3dd Mon Sep 17 00:00:00 2001 From: Shubham Aggarwal Date: Thu, 3 Nov 2016 09:13:21 +0530 Subject: [PATCH 196/215] Test case created for HexToAscii --- .../java/com/baeldung/hextToAscii/HexToAscii.java | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/core-java/src/main/java/com/baeldung/hextToAscii/HexToAscii.java b/core-java/src/main/java/com/baeldung/hextToAscii/HexToAscii.java index a3e0dd431d..d6db2218bf 100644 --- a/core-java/src/main/java/com/baeldung/hextToAscii/HexToAscii.java +++ b/core-java/src/main/java/com/baeldung/hextToAscii/HexToAscii.java @@ -2,17 +2,14 @@ package com.baeldung.hexToAscii; public class HexToAscii { - public static void main(String[] args) { + @Test + public static void main() { - String demoString = "http://www.baeldung.com/jackson-serialize-dates"; + String asciiString = "http://www.baeldung.com/jackson-serialize-dates"; + String hexEquivalent = "687474703a2f2f7777772e6261656c64756e672e636f6d2f6a61636b736f6e2d73657269616c697a652d6461746573"; - System.out.println("Original statement: " + demoString); - - String hexEquivalent = asciiToHex(demoString); - System.out.println("Hex equivalent: " + hexEquivalent); - - String asciiEquivalent = hexToASCII(hexEquivalent); - System.out.println("Ascii equivalent: " + asciiEquivalent); + assertEquals(hexEquivalent, asciiToHex(asciiString)); + assertEquals(asciiString, hexToAscii(hexEquivalent)); } private static String asciiToHex(String asciiStr) { From f1d720919859a0187ef36d89e219c233eb95036d Mon Sep 17 00:00:00 2001 From: Shubham Aggarwal Date: Thu, 3 Nov 2016 09:17:28 +0530 Subject: [PATCH 197/215] Test case created for HexToAscii --- .../java/com/baeldung/hextToAscii/HexToAscii.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/core-java/src/main/java/com/baeldung/hextToAscii/HexToAscii.java b/core-java/src/main/java/com/baeldung/hextToAscii/HexToAscii.java index d6db2218bf..4c20215288 100644 --- a/core-java/src/main/java/com/baeldung/hextToAscii/HexToAscii.java +++ b/core-java/src/main/java/com/baeldung/hextToAscii/HexToAscii.java @@ -3,13 +3,21 @@ package com.baeldung.hexToAscii; public class HexToAscii { @Test - public static void main() { + public static void whenHexToAscii() { + + String asciiString = "http://www.baeldung.com/jackson-serialize-dates"; + String hexEquivalent = "687474703a2f2f7777772e6261656c64756e672e636f6d2f6a61636b736f6e2d73657269616c697a652d6461746573"; + + assertEquals(asciiString, hexToAscii(hexEquivalent)); + } + + @Test + public static void whenAsciiToHex() { String asciiString = "http://www.baeldung.com/jackson-serialize-dates"; String hexEquivalent = "687474703a2f2f7777772e6261656c64756e672e636f6d2f6a61636b736f6e2d73657269616c697a652d6461746573"; assertEquals(hexEquivalent, asciiToHex(asciiString)); - assertEquals(asciiString, hexToAscii(hexEquivalent)); } private static String asciiToHex(String asciiStr) { From f27e421c89d2c0391837fe1ecf7a0c0f78cebdea Mon Sep 17 00:00:00 2001 From: Ankush Sharma Date: Thu, 3 Nov 2016 11:16:28 +0530 Subject: [PATCH 198/215] xml and html formatted by 4 spaces. --- spring-mvc-xml/src/main/webapp/WEB-INF/view/errorPage.jsp | 5 ++--- spring-mvc-xml/src/main/webapp/WEB-INF/web.xml | 6 +++--- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/spring-mvc-xml/src/main/webapp/WEB-INF/view/errorPage.jsp b/spring-mvc-xml/src/main/webapp/WEB-INF/view/errorPage.jsp index 9fc7e523cb..ba8a836285 100644 --- a/spring-mvc-xml/src/main/webapp/WEB-INF/view/errorPage.jsp +++ b/spring-mvc-xml/src/main/webapp/WEB-INF/view/errorPage.jsp @@ -2,10 +2,9 @@ <%@ page session="false"%> -Home + Home -

    ${errorMsg}

    - +

    ${errorMsg}

    diff --git a/spring-mvc-xml/src/main/webapp/WEB-INF/web.xml b/spring-mvc-xml/src/main/webapp/WEB-INF/web.xml index e73d772483..2240ac0a22 100644 --- a/spring-mvc-xml/src/main/webapp/WEB-INF/web.xml +++ b/spring-mvc-xml/src/main/webapp/WEB-INF/web.xml @@ -43,7 +43,7 @@ index.jsp - - /errors - + + /errors + \ No newline at end of file From c48a5c2c79c93d053125ce67f220fe107de44e7a Mon Sep 17 00:00:00 2001 From: Nikhil Khatwani Date: Thu, 3 Nov 2016 12:49:18 +0530 Subject: [PATCH 199/215] Fixed Failing EchoTest (#782) --- .../java/nio/selector/EchoClient.java | 6 +++++- .../java/nio/selector/EchoServer.java | 19 +++++++---------- .../nio/selector/NioEchoIntegrationTest.java | 21 +++++++++++++++---- 3 files changed, 30 insertions(+), 16 deletions(-) diff --git a/core-java/src/main/java/com/baeldung/java/nio/selector/EchoClient.java b/core-java/src/main/java/com/baeldung/java/nio/selector/EchoClient.java index 1c034051aa..61f339db58 100644 --- a/core-java/src/main/java/com/baeldung/java/nio/selector/EchoClient.java +++ b/core-java/src/main/java/com/baeldung/java/nio/selector/EchoClient.java @@ -17,6 +17,11 @@ public class EchoClient { return instance; } + public static void stop() throws IOException { + client.close(); + buffer = null; + } + private EchoClient() { try { client = SocketChannel.open(new InetSocketAddress("localhost", 5454)); @@ -42,5 +47,4 @@ public class EchoClient { return response; } - } diff --git a/core-java/src/main/java/com/baeldung/java/nio/selector/EchoServer.java b/core-java/src/main/java/com/baeldung/java/nio/selector/EchoServer.java index 1d4e01bbc3..2ed9a27c4c 100644 --- a/core-java/src/main/java/com/baeldung/java/nio/selector/EchoServer.java +++ b/core-java/src/main/java/com/baeldung/java/nio/selector/EchoServer.java @@ -1,21 +1,19 @@ package com.baeldung.java.nio.selector; +import java.io.File; +import java.io.IOException; +import java.net.InetSocketAddress; +import java.nio.ByteBuffer; +import java.nio.channels.SelectionKey; +import java.nio.channels.Selector; import java.nio.channels.ServerSocketChannel; import java.nio.channels.SocketChannel; -import java.nio.channels.Selector; -import java.nio.channels.SelectionKey; -import java.nio.ByteBuffer; -import java.io.IOException; -import java.util.Set; import java.util.Iterator; -import java.net.InetSocketAddress; -import java.io.File; +import java.util.Set; public class EchoServer { - public static void main(String[] args) - - throws IOException { + public static void main(String[] args) throws IOException { Selector selector = Selector.open(); ServerSocketChannel serverSocket = ServerSocketChannel.open(); serverSocket.bind(new InetSocketAddress("localhost", 5454)); @@ -49,7 +47,6 @@ public class EchoServer { } } - public static Process start() throws IOException, InterruptedException { String javaHome = System.getProperty("java.home"); String javaBin = javaHome + File.separator + "bin" + File.separator + "java"; diff --git a/core-java/src/test/java/com/baeldung/java/nio/selector/NioEchoIntegrationTest.java b/core-java/src/test/java/com/baeldung/java/nio/selector/NioEchoIntegrationTest.java index 748dc5b9f4..fc64799578 100644 --- a/core-java/src/test/java/com/baeldung/java/nio/selector/NioEchoIntegrationTest.java +++ b/core-java/src/test/java/com/baeldung/java/nio/selector/NioEchoIntegrationTest.java @@ -4,19 +4,32 @@ import static org.junit.Assert.assertEquals; import java.io.IOException; +import org.junit.After; +import org.junit.Before; import org.junit.Test; public class NioEchoIntegrationTest { + Process server; + EchoClient client; + + @Before + public void setup() throws IOException, InterruptedException { + server = EchoServer.start(); + client = EchoClient.start(); + } + @Test - public void givenClient_whenServerEchosMessage_thenCorrect() throws IOException, InterruptedException { - Process process = EchoServer.start(); - EchoClient client = EchoClient.start(); + public void givenServerClient_whenServerEchosMessage_thenCorrect() { String resp1 = client.sendMessage("hello"); String resp2 = client.sendMessage("world"); assertEquals("hello", resp1); assertEquals("world", resp2); + } - process.destroy(); + @After + public void teardown() throws IOException { + server.destroy(); + EchoClient.stop(); } } From d0d62b53c2bab74a02d0fab6317c468269bf8877 Mon Sep 17 00:00:00 2001 From: maibin Date: Thu, 3 Nov 2016 10:58:57 +0100 Subject: [PATCH 200/215] PDF to X conversions (#799) * PDF to X * PDF to X * Remove created doc --- pdf/.gitignore | 1 + pdf/pom.xml | 100 ++++++++++++++++++ .../com/baeldung/pdf/PDF2HTMLExample.java | 49 +++++++++ .../com/baeldung/pdf/PDF2ImageExample.java | 38 +++++++ .../com/baeldung/pdf/PDF2TextExample.java | 65 ++++++++++++ .../com/baeldung/pdf/PDF2WordExample.java | 61 +++++++++++ pdf/src/main/resources/pdf.pdf | Bin 0 -> 829637 bytes pom.xml | 9 +- 8 files changed, 319 insertions(+), 4 deletions(-) create mode 100644 pdf/.gitignore create mode 100644 pdf/pom.xml create mode 100644 pdf/src/main/java/com/baeldung/pdf/PDF2HTMLExample.java create mode 100644 pdf/src/main/java/com/baeldung/pdf/PDF2ImageExample.java create mode 100644 pdf/src/main/java/com/baeldung/pdf/PDF2TextExample.java create mode 100644 pdf/src/main/java/com/baeldung/pdf/PDF2WordExample.java create mode 100644 pdf/src/main/resources/pdf.pdf diff --git a/pdf/.gitignore b/pdf/.gitignore new file mode 100644 index 0000000000..b83d22266a --- /dev/null +++ b/pdf/.gitignore @@ -0,0 +1 @@ +/target/ diff --git a/pdf/pom.xml b/pdf/pom.xml new file mode 100644 index 0000000000..078a364e77 --- /dev/null +++ b/pdf/pom.xml @@ -0,0 +1,100 @@ + + + 4.0.0 + + com.baeldung + parent-modules + 1.0.0-SNAPSHOT + + pdf + pdf + http://maven.apache.org + + + UTF-8 + 3.5.1 + + + + + junit + junit + 3.8.1 + test + + + + org.apache.pdfbox + pdfbox + 2.0.3 + + + + org.apache.pdfbox + pdfbox-tools + 2.0.3 + + + + net.sf.cssbox + pdf2dom + 1.6 + + + + com.itextpdf + itextpdf + 5.5.10 + + + + org.apache.poi + poi + 3.15 + + + + org.apache.poi + poi-ooxml + 3.15 + + + + org.apache.poi + poi-scratchpad + 3.15 + + + + org.apache.xmlgraphics + batik-transcoder + 1.8 + + + + + pdf + + + src/main/resources + true + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + ${maven-compiler-plugin.version} + + 1.8 + 1.8 + + + + + + diff --git a/pdf/src/main/java/com/baeldung/pdf/PDF2HTMLExample.java b/pdf/src/main/java/com/baeldung/pdf/PDF2HTMLExample.java new file mode 100644 index 0000000000..72877a465a --- /dev/null +++ b/pdf/src/main/java/com/baeldung/pdf/PDF2HTMLExample.java @@ -0,0 +1,49 @@ +package com.baeldung.pdf; + +import java.io.File; +import java.io.IOException; +import java.io.PrintWriter; +import java.io.Writer; + +import javax.xml.parsers.ParserConfigurationException; + +import org.apache.pdfbox.pdmodel.PDDocument; +import org.fit.pdfdom.PDFDomTree; + +public class PDF2HTMLExample { + + private static final String FILENAME = "src/main/resources/pdf.pdf"; + + public static void main(String[] args) { + try { + generateHTMLFromPDF(FILENAME); + } catch (IOException | ParserConfigurationException e) { + e.printStackTrace(); + } + } + + private static void generateHTMLFromPDF(String filename) throws ParserConfigurationException, IOException { + System.out.println("Creating HTML file from a PDF file: " + filename); + PDDocument pdf = null; + try { + // load the PDF file using PDFBox + pdf = PDDocument.load(new File(filename)); + // create the DOM parser + PDFDomTree parser = new PDFDomTree(); + // parse the file and get the DOM Document + Writer output = new PrintWriter("src/output/pdf.html", "utf-8"); + parser.writeText(pdf, output); + output.close(); + } finally { + if (pdf != null) { + try { + pdf.close(); + } catch (IOException e) { + System.err.println("Error: " + e.getMessage()); + } + } + } + System.out.println("Done."); + } + +} diff --git a/pdf/src/main/java/com/baeldung/pdf/PDF2ImageExample.java b/pdf/src/main/java/com/baeldung/pdf/PDF2ImageExample.java new file mode 100644 index 0000000000..4cfaea26b9 --- /dev/null +++ b/pdf/src/main/java/com/baeldung/pdf/PDF2ImageExample.java @@ -0,0 +1,38 @@ +package com.baeldung.pdf; + +import java.awt.image.BufferedImage; +import java.io.File; +import java.io.IOException; + +import org.apache.pdfbox.pdmodel.PDDocument; +import org.apache.pdfbox.rendering.ImageType; +import org.apache.pdfbox.rendering.PDFRenderer; +import org.apache.pdfbox.tools.imageio.ImageIOUtil; + +public class PDF2ImageExample { + + private static final String FILENAME = "src/main/resources/pdf.pdf"; + + public static void main(String[] args) { + try { + generateImageFromPDF(FILENAME, "png"); + generateImageFromPDF(FILENAME, "jpeg"); + generateImageFromPDF(FILENAME, "gif"); + } catch (IOException e) { + e.printStackTrace(); + } + } + + private static void generateImageFromPDF(String filename, String extension) throws IOException { + System.out.println("Creating " + extension + " image from a PDF file: " + filename); + PDDocument document = PDDocument.load(new File(filename)); + PDFRenderer pdfRenderer = new PDFRenderer(document); + for (int page = 0; page < document.getNumberOfPages(); ++page) { + System.out.println("Page number: " + (page + 1) + " is being rendered"); + BufferedImage bim = pdfRenderer.renderImageWithDPI(page, 300, ImageType.RGB); + ImageIOUtil.writeImage(bim, "src/output/pdf" + "-" + (page + 1) + "." + extension, 300); + } + document.close(); + System.out.println("Done."); + } +} diff --git a/pdf/src/main/java/com/baeldung/pdf/PDF2TextExample.java b/pdf/src/main/java/com/baeldung/pdf/PDF2TextExample.java new file mode 100644 index 0000000000..eafdc07560 --- /dev/null +++ b/pdf/src/main/java/com/baeldung/pdf/PDF2TextExample.java @@ -0,0 +1,65 @@ +package com.baeldung.pdf; + +import java.io.File; +import java.io.IOException; +import java.io.PrintWriter; + +import org.apache.pdfbox.cos.COSDocument; +import org.apache.pdfbox.io.RandomAccessFile; +import org.apache.pdfbox.pdfparser.PDFParser; +import org.apache.pdfbox.pdmodel.PDDocument; +import org.apache.pdfbox.text.PDFTextStripper; + +public class PDF2TextExample { + + private static final String FILENAME = "src/main/resources/pdf.pdf"; + + public static void main(String[] args) { + try { + generateTxtFromPDF(FILENAME); + } catch (IOException e) { + e.printStackTrace(); + } + } + + private static void generateTxtFromPDF(String filename) throws IOException { + System.out.println("Parsing text from PDF file " + filename); + String parsedText = null; + PDFTextStripper pdfStripper; + PDDocument pdDoc = null; + COSDocument cosDoc = null; + + File f = new File(filename); + PDFParser parser = new PDFParser(new RandomAccessFile(f, "r")); + + try { + parser.parse(); + cosDoc = parser.getDocument(); + pdfStripper = new PDFTextStripper(); + pdDoc = new PDDocument(cosDoc); + parsedText = pdfStripper.getText(pdDoc); + } catch (Exception e) { + System.err.println("An exception occured in parsing the PDF Document."); + e.printStackTrace(); + try { + if (cosDoc != null) + cosDoc.close(); + if (pdDoc != null) + pdDoc.close(); + } catch (Exception e1) { + e.printStackTrace(); + } + } + System.out.println("Writing PDF text to output text file"); + try { + PrintWriter pw = new PrintWriter("src/output/pdf.txt"); + pw.print(parsedText); + pw.close(); + } catch (Exception e) { + System.out.println("An exception occured in writing the pdf text to file."); + e.printStackTrace(); + } + System.out.println("Done."); + } + +} diff --git a/pdf/src/main/java/com/baeldung/pdf/PDF2WordExample.java b/pdf/src/main/java/com/baeldung/pdf/PDF2WordExample.java new file mode 100644 index 0000000000..6777ea9c45 --- /dev/null +++ b/pdf/src/main/java/com/baeldung/pdf/PDF2WordExample.java @@ -0,0 +1,61 @@ +package com.baeldung.pdf; + +import java.io.FileOutputStream; +import java.io.IOException; + +import org.apache.poi.xwpf.usermodel.BreakType; +import org.apache.poi.xwpf.usermodel.XWPFDocument; +import org.apache.poi.xwpf.usermodel.XWPFParagraph; +import org.apache.poi.xwpf.usermodel.XWPFRun; + +import com.itextpdf.text.pdf.PdfReader; +import com.itextpdf.text.pdf.parser.PdfReaderContentParser; +import com.itextpdf.text.pdf.parser.SimpleTextExtractionStrategy; +import com.itextpdf.text.pdf.parser.TextExtractionStrategy; + +public class PDF2WordExample { + + private static final String FILENAME = "src/main/resources/pdf.pdf"; + + public static void main(String[] args) { + try { + generateDocFromPDF(FILENAME); + } catch (IOException e) { + e.printStackTrace(); + } + } + + private static void generateDocFromPDF(String filename) throws IOException { + System.out.println("Creating a docx file from a PDF file: " + filename); + // Create the word document + XWPFDocument doc = new XWPFDocument(); + + // Open the pdf file + String pdf = filename; + PdfReader reader = new PdfReader(pdf); + PdfReaderContentParser parser = new PdfReaderContentParser(reader); + + // Read the PDF page by page + for (int i = 1; i <= reader.getNumberOfPages(); i++) { + TextExtractionStrategy strategy = parser.processContent(i, new SimpleTextExtractionStrategy()); + // Extract the text + String text = strategy.getResultantText(); + // Create a new paragraph in the word document, adding the extracted + // text + XWPFParagraph p = doc.createParagraph(); + XWPFRun run = p.createRun(); + run.setText(text); + // Adding a page break + run.addBreak(BreakType.PAGE); + } + // Write the word document + FileOutputStream out = new FileOutputStream("src/output/pdf.docx"); + doc.write(out); + // Close all open files + out.close(); + reader.close(); + doc.close(); + System.out.println("Done."); + } + +} diff --git a/pdf/src/main/resources/pdf.pdf b/pdf/src/main/resources/pdf.pdf new file mode 100644 index 0000000000000000000000000000000000000000..f45d226b39874bc6e8db65fde28713f2a7d26140 GIT binary patch literal 829637 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®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Ǖ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 N~?8 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%0AB!iNESYgNe__3Msr45VWL=-{_2Fs3lK9A|6rz zIl4?9BeA)TUqch-rLA^>LQ}rUCP@uj-$Z_%8So+DMw{W?R=iXF)o3#u{#~gcs3Bj_ z-y=7_bCWuqi{E_*et#ySbCw$%lRwRNhB4xaW^H}jxf7cmY57qyl|(GpqaTg(^C z=<}&68a!>Ri-1UhC%~+*t>{TRYXtt_ovNaa7sKiplWi4K%lsc3uss3csjF))uqD>k z?Bv1I-Wu(DAghi8K(1nNjS`B-+;nw0C@XrbM8VJWb{zE8+_DAMq{*TiRy`WV>sBNh_BJ4!Sri|w^>xalZCu!|z` zu)fy9nN}KL*KFy@opaAbJkE~~bI~KdWFQ6>T|Nw81=w=OEbeexVf7N1DTbPL*6$@q zsQD6BdNO%^k;!nV_YFs=KD5#*i%Lx!gUY9H%Kw!teLso~|27b00yV=Gk87 znV!+bYv3G+xBOp2VW6dm`AEZ=) zUE^C?^li)6W-wgd4a65Oh8cP4TdIsNujw;*DBR6qoblLf_bEV6SZf{ zwYF7YZKJt%Yi@0`TZ_RDt+jQn1_^U*lQReM?IVfUXXmQcY4vH#TwGdht&_7$6Nf`U z?wJKLUj*6%fHt3B5-OgtvFn%!$A@b8U2OShjkxw?%@E^R1aVfc6+xak z$01@18>~K#R|-?b!#v#`#`|KP-dof4e&?m$+ZGs9O+s^ZQW(d3VwuAJ%E+eD93+bksg*+PpB0B=t=e%o^ZNSy1?oq8C}R_l8! zSALI@b%pnu@K}?G9RG-9^#+JF!?8NKsH4sh55?~x?CE0#7joqVb07rk_2R6W+h+?n zvcv(zXM=15scJE0sIUD2sW1wN@&;fv57v~8YOWLINbwIswIP4Lmh4x}i7FuREOt#!5~n#)8TxaUga?R}79rlrq|0wfXbaK(3M6rD zAcWDo3Efv+8E)rRCEz&}!ozfx7t~i*ftbt6RNs-o6VWAfVWtR-dyk&*Zu#b}Im|s@ zU6&>(vg1>Jkd1ef8n{mjzrO(ZftZS|=EF(#RpSi!4i1fVfpv`?-1 zVriTiCS4zsG+`1cM4D>*`)Yed4t{Wf9}=;+wMyh#UzLDq+7|+1WXac&(+J4OcQlgB z&t3gAqQ5Xd1;j$UX!F0Mr$j9P5odoZ24P7ZLXan+zY!w);brdX^r^8D_C*P`5n&zo zi5gmo2hykHkU}2MM&$4j=3*Kkf&!VUWr(gJRmW~FWLSo~h8#FT*kuh8WD%R$*O|^> z?9TdmC=xoz{-P|mn@Pv1t1)3tV}GKtWcx|I=AmwY6?Vn?0w19f6{|<$Dkj>fW9RC) z$6*fyo+obP1_QW+d1*~t@WroLjb4P3^&_3il9QFy&PTj&31teggFrkn0$|1d z+g}Wta9ob2Ooog<{!rbFo=-{$kkx5+KyC zq!y)GW&Bq3B?}9)0F5Wjf>=Z$cY4XhScIdqj8#0aYjWZ;w3W0hzwt;{m=J`khk!JZ z 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 ES(SnXdZlm8qET27{O6_*0b*(rumqV}wnm+PNW zYXtxN+AiyW+H5cbMQBz^Jc30QC&=YEt%0=Io~1}fh8ZH#ur$?P>1t}kXe4!Atg|3}nH9;Y0!4CaqAOg|4WO6I0if6;9r}AYQXgMK~0V#>ng@f^cTsF3M zmvU}$4b09lMY|}xZ_?Rej0%Ay{^IVmwGb%rM3R|YfCAv|8X@i81mI+MB|{>xEWcVa zF0qY9g}u1nC6V28>}jgGN8G#FpD?_)fq;BQB#^u6ROC*2#td+Hq^^}5u%XMw$)GtW zAFK3V09aNIF{`SSF*`JrLl5iMQy;ml$%yr3c6o;D=2CA>l|CBmlh>VS>#qVE|yXcGhl>^{>6_<=&gs#CMb!AU%%26H>hSs@lNZ zs(be2)KtH^O6&-itLseyDr?EX)BR2wwVQ;xPex*1t(kTb2a88)Jph0;gG#IJ93i2w z{7BbnQ+7E=7aWiJYwbA#BWy-pC}DZvhcXtG0S_6anJ#r9{TCzQFPj^`%owXfAW>$HAd{vO~_lVKe3%Gw|j}H0=#&A&5>2 zb$y4=^*^T5;d3rsz1f_StsBJ0)1Bvwi*fB=TyzQ_n5dIQpb{Sb#WgGs1N$31^azUk z-$&OBk09#9!@Q@_@Y-}mDQ{VgWS56|of(oen`Oo`-Ad~pu>ammn|$srss}Y%<5KSw z(eKWk2eg5i;c+V^(W%yD6ZIU#pmxJ!+POO+*;cg)jggMAz$Ika2qaUrO*5WA6rjQ5 zY-?Yw`CyN(r_R$2RjIkF!XMOTVzJK~jn)8~O^18Y{p<~io_Tu=aUkrbZ%mVeqdt)b zV@^*_-#I+naesF#CR_FPt#xP~**Re8#&bk^Ai2i?`*_VplAuQvAqrMR$acq5xwfF$ z@&BsadEg;reA_lM_S(BS-d}rn#3#@5RqhhPQtmtm+_|5O##QQO>*5>^2va~Q!>e$j z><#_i?7=e+mK$aF7d9bV|0uhJ3Y|HB?k40KL#LivHTpoFMoHzODx~m8WyZDU`j2U{ z(7V0WjY4G@qJwqNwi9^h_nmMAgkcbrF(p zz3NPjf`(hEjR*kKt|Na{gt`p5iY|Ti4zduXB<3mtBXdl(TlZk+Kt#6M+pn01WQusFQGap}mvwHq$|Nu4 z?>x1gWW^$}sUvONc4{v?sZu0LiHnpFe#vErb>g{<5h=x<>2Q8wBP_g$UhCv2IiAzD zR}2T#Vs+fy@&*Jv+KXGQ9-Mfu#@Ezm$DiFqHGfl&*yv}=MEOT!Ed0sEQxWtt&)6S~ z<|+VU57n;Vh3_`{rjHepbOO>QMKBUM2cSBx)!$k?xw@})BgX*LIs$Odtuv==r+d%E zjMh=KV8N^=btpO26YY_Eyy!uvw2sA)n<0{ms2SMo$`GeL?J2$g_k@Yp ztc@gf2PZ=`V~?Ve*_E8$oMpG>brOkb>7@IYHX}$z*40boOu2S*8-RPXSpbrxm&rk=_rihDU;uy0aNuTmawBELs9q0uora z#Y8vk+~X#l3zOTx@`R-t)_+>*uU<>?d-T$b(!#kzbYrDL zB2}Q0;~A#;BE%{%A$nSh2aeru&eegGVxGyDzM_RdR7lZ|{re(mD1PkSyU)_=z@g27 zOKwS{fSw%)X}?maB_W3914&^e5ZO~=$xDPXATdTEKXuXv%?ZWF7Lu+r#Ua15j&c52 zMD!WT@W`W;rR5p9N(LB3vM6tUN zhnrk=jUC|W*xzT8i3o+Ft}u3oE^pWTyAx@i))QPSkjGr>V)ypMF?yJnEm7j_JkBqFvK#bs5wodsUE234y$~ zm_AHi=6Bq3nsB!x04C5;2v#n^?8`DUu>YP@7=xy;AkqP!nJ8kq7LYRHj=tnRrpK$# z=rkg>udz#T4^MjGGsflUH`h=;P*GV3wsnV2ytYh69Zf5poie$vV+GUrh@=^hvaj~e zKdOTO=&k>8#>POlgYlr?XjAVCE76=o9sK{~?p?C$I(BW_yi2i*Adw;|mFHylN!|Ll z_Ie)!n4h(1Tax{5;wIdz1;z(~e;^PsdncDxsi~q7)2!3rog3+;o@W@q}8mtCqMjyf8E3^G`My)V^5I;P2^1AH^F5WXv05#!ENmWprA2?iB+mz$4*OOw=COm~wElyFI%bYuyOn@Z8UYH8}FYDq{?(RF$i_X4n&dTJBZG-)G+(xgn7 zXr}^3a%r+mv{AU2ZYXNbdrydpYVLX=>fEaDIofYCBw4aBgeL{UkS6V6QP00UW-HH< zuM=&IK>}gAk=B)K5H@xdNFq4^@0R>Xd#vU1F(>JO^3+U7os=99DzWlA?|9`mYc4zd zMsJu%0xsOhdkl_DA!FHL&ez}go#`_G<2T18O(8EprbRmD2|Y{#-@MD;UMy-XlppGq z%OkD(&9584KIA=8SvPzKJ=rX~ZhXJYgdh#3+cEQpxg3Rpw@4HO7sNNHxOv(F-f2)gEom%}oVd2SD z7op!@>EhY*w|TLI=iD`%$gycS5jlqyZY-pZ|KJ#^&Z zx2mgw9qfs%bs%_1y;1ZvZ#G70%6OG?^ek@(Yvee=tWH~ug$#)B~JypkUp6$l@8IXZB~Sk zV0&r5L$(B33khv+p_hVxi@cci!7mGml3rr33ykS*Ha%$Hy+rP-^&~PiyD!{wXy9 zz>{l@XZv`&P4>lVueABwVi@Ue0b<0i8CLm+-HDL<6l6^Rg47jdBU5%&#M$;ns0ScO&q0kM5QYY)hov@TORw;ijUW$xe;^coEFO6%~aD?Xw_NONGFSQb? zsFk0GNwDC7jlM4u#wHVpCng9AAdeVJA}lE0jm08sql9sKI@B_QN`~_AV~e+8P!cgP z1Jf*7VbAO=e0w`9jdIao%5QxcCQ>G7oM&IEWt1O9&y~f&%EHtE$uMMU++d^jI>xNx z40#WwtTn#sWZcPWTO(c&T)@eSXV`;EW}ur&Vu^m6g;4EgSiy;{r|J1>VrIjzCUP;* zg)%moq9)xUf?O819#y?d1{I=l3A9XYVJp5Y`52XMdO>xQm1-Ghc4cC!V;D-zECW$c#q`VTy2rCy^iaDx7dYgx4u9MKM6Ap#H*WIV!i#Jsbdx!q z?-nMR=rpwD(h%>C&OvL>C!pIS| zi$Q(l>_+x_G7sgIoD@^7Zd@k(H80`?)j_MWeX{Ew9Y`%B_BxN(cfUeMNiL zo??OI1PYpK2H`2N?sm{(H3Wn`Dpx~VXb!~Ee#SD|lxjpVr8DgIAUVuwJs{ljBuEHV zp5ZatS-{lP$Yyd>KL&Qay9 zXF3ZS);3l_U;B=Zw%5Z3^>xA-4k=3{Cfaa@vrJ*cOudl=-ypI8UIZxH`qr@!%}3Qd z6=Z^%_p(>G#;hjbbs^C?d~lDNuKuCuN1xN4Zs6OK~--Gf93ld6A>ul7Q~ z7$Kc4s#_W0o}KhG+=llmMPGOW!b{hUzHs-IrldUEkK9N5<;bueA*@nn_=gCQsj#1h zVPp=Z^7LC6S}afYJ+ku?ZpL^rA6_%Ma5Wg!k)8}>^6v(6Y|DC;OAwOsDkvDlb z#_i;x*#tQln@t5%oR|h-c!42~_MsxJTS93#2MkN|v}ah@abcl;v#fy1Wd%9NDmz=^%5(pi-@#g6T&U{k_mx zM%IVqrP}yswxi|j!N)xnGKMZ2xlJUOFo?}V8J1)q)T2)v5^s5ZAb!^89Lke^0SL9? zqKGC4n7y1x00vVz1y3j2(g z5k7dCrCy_~pmPheT&M*>EG(hb#o4;%AVqr` zXJa90B2_hU;s8R7+|7f9-+FFCJUp3&CfnK@FL%%XV0 zOulQyp{0DMkONr>j1v5MQp#&(4jgp9t7*vB(CQJ#e8Yuorj2j_$^M^JjN7{_{77+n^&feblz<0k?LJNOs{JcGvfIGdQimi6qkfUy49%81-PHk zNY;ssJIi1`=VzYbjCTzC`WlnJm!CDd7`Sr9ZE94MeL){AW0F=r80jDlF?t;q?GsXN z^73feLf}!&THd*d20O0>#SkM_ds7rxOrxNLTmaS%^B5YFvGeHRnu#%Ny$5a{7*028 zULq$Z50!wI-S1M#Jxim&O$-r$TvSv5R!&c|n}uBkVAgdLfOv{wZVYjHUAcWZYy+PJ zO6hd7#N%)-HW$dJdi$@#XO!y6M?9Hq0t#pu$ ziV%97b2-%bWa4UeZfD&sZ)OS;$C=JlHzr2?u1rj?D-%D}V(_~$@uJ1U=!+JA8W~;O zD(L;(HU%QU%zCyfGq?63FR{p8*xYcDOz6t{W}xQo8HAyDR#r9zKl-5IW2;TbZJOB)C-uhuRviPWxgU^CUh>eAjXb#EcSMb!n-1YTw}+=(8#jBF zahrM8&Jf=vNIyi>TFaib_Z7_tEe0Xf`p8*TuKy;OVwpc3Oo7df`{UIvDxAG@Y&cZ; zEHJ*XA8dby{ZTI1AAhgSK6Kd|@B+;8g!?QdkheK|K_E^L+Yb|0SM8qU0}p>FHHZWb zR6E*@65LnYYu8(5r2!c(nVOPxNK;sA0kJ>f;z)yI7GMLuiZdq%OmpTmQW`q z7lzkwQX)}xPlavS_a(LX>TXO6<-O*{2^Vm<=^>@twu^p+{`yl9V<5*VE6>#@X*bkY~deGmF3A5yUA&^ z+ogQ%d&9?ukOB6s9Y52XHWYEy=fFoc{LoAxz&AWH{qgrH1dQ{!5U|v16u^vjdI0@| zA4q}=A^3F>0JUckST7(g!f{nR%5N!+5+H3c_#54(V!5=%hpThwL+gr7|EmQAR$h)t z)VMsy^76i5tRQn;+&%OU1YEG;tV*` zqI0ojvwE{^oV44|?W{BMU!5(U_V#z#m^>FwXunT)^Y*{)&O=;unRIXDHcwoKkqA{t zaImtGn`E9{?`&sa z=Qq}QHZJUZ>yFc;8dfcfb?;{8FiLz6=Q<@P&6)#|LnM{G= z-E=Jby`D~Es7&q3xb8AZr&7KowI_FAd;z!05;hqPDKJld1zGSmlkM3&A7`upygoxb5RMU_=!-R?+@)7S6&IbI zF>1SZlE(u@l5EO8<|ay$O`+1U%0{)Ti!}wui25P!1GisZeich#*)X%COUTUc6i}d| z^Ysr1(z8AE(eR+@6yBbwzUAS+=$0fhDPG5oAE}Ar#9|$ApB&Nw!;tZ}tkmCO^fd|_ zD*p0DJig^B+_5~jtymzpd>N3QQ4pD5o$%=qemeq(C~y$t0t48&YW4!LyhaEHbRf!~ zEJ3zoT{HzXN&P;Wp1vO_G36DPz{@FXIGChaP9!;;L?W6_aH!%^5E+`+W6`{OPt7y*$5-gF3`r!r$k|J=P0ggw`!jR-W5bvphiPyMHg?&_g zY}bPVB;K`E!gN()1msfB|6*QK-*&l58O_!prJovbl&6hg75129l-y_95w*y+U?HOx zeBSSuwnEg3JlwK}byBX;0KU1s%@ zcrZP0yH-};dhwKJUdMaqeH6?&?*LTfsh4CX9(~mawv%~=fJ_`X@?6W~1<`)h#jEh+ z7JlUA729k|;-w=aV3jcVf&f;Sn~4)rWx~YObpgtibR>0(8d208h=LBO!7F-sZY)Ff zyCC4*k2=#2p|KU7s%QUvC7^{M_M43mkJPV1SD*m%r?sylPsVN@jOLk!B^Cr;h6Je1ZFUir3Nm00aFec1{vSo+Eq6&QR5u8)tRRW zPt=WAO0@+@wf=ICEs>y7Z(;`0B@y_LmKi3r)o4Qc=`vO|0=T7WQpsfU?wx4k-%*X( zwta6zpwoz#L^V?MrDlW>W4@{xgFY6lw;hdyqYALZt(Zn4w*lo%szqZF&A3#~DO0Ij z<=enmJKZ`@yRN74^~fj!<8L1yjd>*!Y^f<^}wrzw=Ib4Rgr>?Y`VUI-~c5kbNNxI8*+l-{Riqf{JB}Y;IWlN6Tj+&n0>H~C< zPH4>nIH_wOf&~8!G`eBa6_Y;j~c*!6OB?Qy@2G9cvb!9$%&gTI#jL+(Z;~40yT@h?BeFPH;lph5r z5l2O0%v|TLB!&N@OgFhnx0~Dqa+90mjDo6}f7#4!1*q?bCIIM>kY;YA1`3AR^RGk6|k=U`26+*$f<4>Don1(sRAsc-SWVuiT!`qv-Xy@ zo^?d7ehWaemRPFe#_1kT5n{GdfE@uLd}5sMy)Vj!C6iNd-sgN9~p_rIcQMAvNkG)&6Cp-pC6-tt6P~t-m`SyLi#jS2=4g zi4z<95`ue7tF}@}ZX>onO}6MjV`cHT8gL0kpx6>UBuJ9G=+~x!4FX~c5Wwc!P&~hG zT>|q=d?i1hn+(Zw6a;A)V079;$qTV;)v<FN9zM zOeTczl%kfT@sA~Q>M25-Dam0szch_Ey(zCQH%V}+ul{9fZDss73soYNEnioAS!L+e z7#N7AQ~Zg7R|p|)#f$HaDVFZGV#5##-FL-=MRwghYj>fAf|KXVw-sam$-=qQcoCC- zow^hYl70}y@dVb{&vo}gicf8%Cm)aBS%&nGv- zm%7;co@;d6JARc^D)+ApyQ41&ql2x!067ymF=Ef>Zjm^%WUNniA%n83pGKK1AQ1I@ z?o9b1gBz8d4&qL@WZ(*VHVIDyADUNgyywj55NqIQwn&r&5X$3D1lU zE)FH-W010`JL2P>lT4Ta*J5m9Mr*x1p*`{n-#0C73FQ$CU|~`pdjM8GT=^$#Bcplq zf<^IUnv8K-jGWF!nW(WoM$quqGI@m4ap7a!F*f+_f$bl{ROf|7cNE96#E zf<049`Cj~ToFmz_;H7v(y&eA z$xRJ}(YJ}+^7n2s7Irc;vn2y`E&}bnVL43ylUEIXyXrCDny{ivU5gi69U%*NR=RZH@n}~Kn+$!jobf1=5nC9IfF$`ntpd4h*`Hl0fsI-JCDJgi zDKK`NUK^H_`P@@;fPoO&H!0VOta9$=zQx{^N4tVQx3J$5sSQHWcyc8d z*&5MXm&gKgxA|cOv3$gKJrkf2p-MujlzWOxUa(ir2qahbUVCYWBv7~h7un}|n~ZnMWcoWI{xRu0pFm2T`JKM>898GuzDwl-$& zi6z=*=1^_3aHbN5&(xReJy}1@h(Nce9b!R&z^HlFhW)fc8Dv(`y#7M(V^t*=r zTlS&Td|Y|IBn*sfNT=rNV$sX<@D7?6i(<65*cNh_Q5OdPB>Py1>p*|M)%QcjPIg-X zNS>>Fu zb9KT(?rS=%!*b#Fvcv{dN$P@1zR%TRM``k!T!$T>fvc_>iOta}$44g@lCbPRRnYqy z?liw=0^7@E{PM*${LNdj*T>#Jd-*-Kk@ugm#^95OprIT5%j4&S#K(*3dBk0s9?zo_ zob@qVQw7`0Su=^Uh)AtJ@W`CbBI$nQ&`pZw?%6NBNm9zu& zJGk-<0m26s=s=Iu`|p2_7vLjYM}z4j#t(hwVe!|zO2;30*$`2;RX%tq1e4_NeAB|; zW*uhs{mz91FYWr7M2?PZm3|pn1l%K>^9LntaMi&&1D)kelvN@Wd7}J2IbGx}8F)|9 zd@-7svQzmLrb2QoN*l`ju^qI@YY81+SUB!$%rjIvf>C0(b8sMe$L$%d!TRzD{5dL1 zDWN-4X75)(K^uWdMP41W6X{PxQzF3DI#3ezMY z@U?7Be5aQy0BwJFTmh6L`}TV*l6e3j-sx4(DLqFmTa zJ~&g5SefMmS}L9eW=VOKY5%ljQHk8 zSL!*@A~iUlFTs;t&=z*kqFfMzIrs3=50He0sVZ^YSNei_Rh2tN!S(Ldj|Q_qC4XRpVLAn71w^AZ?HH|mRp0@VCvvk8 z+7tmk8%ngNf3h6IrEE`Oo*#5{Lw+Hfk$PB5wi~ZMb{p)dZLd-kYf7CL!_|2jLu|-~8CIDu@#qOdto>f1Nb6pLA`ZqBOduJYM)L><3%j9J8*^-ucBUCsq!+Zj z?@S(ZTm=LhcxG#689aLPgmhsH&j)x*>h`Q3ZjmiBrhZW*JlQ&N7_{{*c0=3^c2=@tbSpre;m2p@haMHo9=N~ zD5ZPOuqAe3i(-kL_p}zJki%2_JNbz_FOsEP>k@@AKKxw~d6Vu5V0sS8A2|XF`QMbD zlHiKhpuHznkHZ%2+w^))rY8WvPwrBLv>xRKInUIXvuO964YYk=V8&`sVT#5%x{HIL z0xqj%*@N|_braGwIL@;L#rkrh$Ed}+A6mWQ$RWaov`$6E%t`$sogx~r$?dC-)PBNN zt~)l6*`D68I(7$M0vW-+jar-oTJ)RQLLPKYo&9Hao>;U$cY zl2R+f1dl0p*a!w0`_lY|PAPnpA>2k3)c_WSPGL^$B%Dp|M^1W`FR7y3e&V_?a3dV8 zAh##j`J!JY>oel~<|FIcj2k{94NKU^5ksVIt`H)C^^QTu|%!>1d=BNN?OfVl_ywVRk0txs3X4Qd9+nh7)g)={k=w5+eYy zK6D!?EqoPd{Y!UX2aM5^^DWNba+oHpFZ=A^LRvL?!wOmz>05@@*doJbOP-k?!wtqw zDsaU$II?3tsB->1)ZXcwRl*jr0CF*CwqfHSuDO%*LnCn>WDT1wgbjC!KLauAiI@jar-v5tv zolfmU832b^8eg)nP-`bze1@cF<{FvpNS79i@s52#_yTG-20Rd0lxCfnFsb}oJ1`KR z9oPojw>?nSiv3UZE2e68O0xqCLG%#!-_VSmAx+rp^&uv}l8^+HQyhNhl*=8H&-$gsbowHh6(mknbEIV>VM-(uV$4Il=?Em3+9hYk zej<6&eUnwqpoaA`Xe>C`XjvDQiHLP_9&0;N8zP8?X|xc8T3z;3i2#IvG0XHwX__p$ zyn^U#M<xi&*=Wq z+F7IBST`Vswqn{R5p3hGvABNCY2Lz$tzXL)(taFYkpvEEGxi;yT5S_b37qI6G6Bgxs^=M%k%W~);`Si3ZbGZ8s_96Kl zucE!#RA_94Ojenxinir#K{2q31fI8&$fmAHzNPpIB>4nPA-*7-v2uYCv@u}lWtSTm zV*$$+;^-(~v&$V@tgMMX37}xG!40jS1})NgzSu515v+et-xsSxi#4)UAq%Xe{+?^+ zVx&12#~CA0~qboxYy^8N>T3^m9j>jcczfTbQKn*arl4tos{C zeCERRM^N_k?zcZcYB+NYc?2SZ3SzMYy`y{M!y@um=$=t%oM*iC_G9VC5)O3##KZ3r zm8aWE*3tRKb^--&2Bb~wCbHKmOdVYseA$u}At!o@B?H@O@e5$CgiMIMQ*V<>f6q+g zfSqLjSX{5uc9Op5tqXR4>MVSuB?|JRHXeXivDL9;OG~Jfg6-HHDg74YK&DKN`2#rd znQa+fc74!o#9|xJ&f7_d7Hbo}_gO$38=f)P@ho8Q=k%y1;lq7!(JgF|o1q>Ou?&T# zo=gZWoNc=eednv$Ebt}i*Zp&GE)1k8U>Hxw2OCRKD$|Uf@N|bC&FMFgmO#=iPl^=j z!e;mxt37v0$Li=e$PKN*`gHaVd#@(@ z+T&mY7Z_-}El89*@(q#-(1DC>tfO~?b5vvsln)pb`)1JGnf6P{Jm`xZr_o2&N+VwL zfb>FARVyT4U^^h0o54F!Z!s;*eqIedsdgf;ZA#{gpYKHb=i+>sTz)ca?^S~iI#vXG z_gY92&$M~leEHXWuH%5r*fSDo-BVQ0p%(!mca#R>)5kl{xx`|8ox2!wVWiURwc)v9R4X0-MW^D>MnG4DZy1U1uXy+ChqUW@QvSj-cxKWu%JqZ)`yW0ePQ;Y>dBcx~ zMhFFu-GBGC*|j4_)0RZ)ownm+qjda1#NuiAH?qA3#?W@h8j!?&Xay)od*RM8(Uvob zHTP(~axzcEWpK*~Ppur{J~bFx>xGcXck8Fc znl>2G1NP#!7Bg`|D39fY4}q9Apyfqy{lyQjb|c#Z;Z%a{7k@f_^PWO>6i1Km3z<>> z_KUN=AcIZ zgj~_IpV_x>oRqvqu^c6w13U#PE^Mi-`N7V2G{-(ru!ej(Ql|B-P%EAKxkv>3=x@W(EG188$k%W!ULUaKw zPHL=1?rgm5`~=$zCS!n3)CTYgwtBdy75o;qjC7Cb4-${Wi}RzxIlCu2YKm*KR3H$p zNe8PGF#5e`G9hd3@V&bWR++IS^5|Cq!QzqF8NCB~wtVeVP*@^0J zBZ8U4%_QATybh}Qf~Tlipka&NgAtIj1|hYQM%B21B3l@u`h}~)5s~c)zGNLbS|aB8+VHWt<}4e+1IZVH%v||;W)Ut3T&DIh{fs36 zwfNE5^3tx56h8{d{6Jji5Ew2P!XNX@phfsP^_YI-QvsbA{_q9A;6toLKl-f~6!JY6 zD1qb&#|M-+2@&JxApVap(2{S#;3xI{Klq2)>;L}evr7$K>$(+;k4h=Wz!nnjIQRuH5h3({!0FMKGu$Jx$9SJp^Ushy5&Q2Ilixu0 z!0Ex2Kdny!Kdnz=^24Ihtc;yuotoA_2oI^&5~F_k?T))6@9)Kb+9Us$zrPcy{&D>c zqbu@kn-zl_mR#``Nia%DiSt)Q@z%`V8O*KN#sYg&P*0v=X+M zE{vXo+dz10W3gX|>&+&v*THV+X3!$6x`z=nkqC0*un6_80gxP_fpba_{GE)efF}Mg zgc5?TUm@Poy8bqccKMx|2iaCQ_K(BK3|M5j?}hQ$X=}3I^L8C($Cs7Fo*kbo2cSI& zB*)@FxI>{6zYJg4LEua|J#VcX`~v90$7oM|H0fu1Qorwvc0XBq5vw6?e516v{w(&@OZI+TMiBx41Il6oHGxcxc97VGQmGZs{%BR-ukP<*)o=fZd=d3bQ6>0BY zW}ShR)L)wbAaZc;E!H_=m(*OcsDOO2US7zX13b_=um@UmZQ*8zXY^;hhSr3-cat$w z6>X;v+A~!Gh`jjx-km;U1@?fpJ;!hi{T=--B0~bH zJ(Z5n!-{sN57lNWVZ5g$O6*qhc_<)+k4g>qxpHEHpZ?K>kaROhUTPb*&?>M+JMw1F z!!{2jPdOK_k;x%Jgru(@UC?$|XeQcDZv>L5fGH$|4s{!Z4sOqcU>DPf+D!Ly0F*+z zQT=?%$O&1Tk6uI8{&v_RG^=Flk&PDY-ms$D;geBz>F84!b;@TR{uH9TKI;+@$V#+Yl3=S^9S$M)$6`+LX<*~6JRN$4rL)u zBMeb$UcLG1w+-@%IlkXF7Lyv3RF`%9KfKm5cP@SW%92OgVCJRQu<}>g>pozQ_Q^Kxpt5Xg$5OxA*m^?EJXnQ2`l9uek$kVs z)CmcBNWf%*l8gaFs#YZDalQ|aq^+{g@lvWI-h8Y-S$ZzkQf6uK-y0Pmygyn7d+;bt zOfyQ@7f&RmnxSunpf~x1aj~e45{yi%Kf<0IU7h_BAomg6jta#?dT(3|NAqO*!47$x z$67;TYF_CNs$4_T%og8+d{}iW87Ac->z4#F1R2)Rs~Bv z1dll4#TX?d%s_Z;A-RVvaY$uX?%ZaFJARo#EMZPJoE+O5nk(g0kGYjZ%6+HK>3q3Q zULe5P=^#;@TgySe7#>-mK&7D*B4vJGp2A8l{W28P)#Sv!jc{v;X5rc}F-73OCfJXTgLt4oiTSaUmkTtIZ88PP+(O@_7s*9ilH^>Zjl@DHVstox( zv_jM@C5BIdR`%X7>zD4wG%u&t}jD>8M~)FwqocKjC1bcq-bwYJD?%D#9JvaugxB><-KmM3q@hO{z{5 zHti9u^8P>Fas{k_tR4n%Ox=~WatG$R9;-=u08bMn9+`!%x&MXgv*jPT={c-!W(;gE z48SwK)CJDU*4ihY4Ox->nz!B~Z%RZYFtRlgxH1_bj!af$KRBFLWD%-91jj_NY!zAk zZX}Nuh)-?{MSKi9fUr-g_;}yVVH7s|;5P6hS)^*6oyEw`TVBdUcF4(R*-&Oq)R7&t zZ#v$|uHcs9{ICIBq}2Hldh`|ei>bf}MiFEm)|BZGrwA{QMqNmgCb*p8!@2dN`Ji*; zz*pblr(slnZxY-Ji|J&97USxj6=(0uvkDLI3JLgDD-FOPPI_Rv@-+#E)))n1`GdVo z@Cx{zt1Lpye_(@zWh)5Cc&Cj<-m~3yV7Y(b)5+eqTP-=Qrm7&HpLdwPO3GZx%C;BT zF2}~eL@i)qKMQ~^e;6<*9lmmo>EIu*lWs~_u1r~#XQ&?tS+~f`H!~A}Vq)1n6w z0kM?;g|SGY3xgw|9zX)ZZAbFIa>-a-h^fUAjPpUqnNtKU{>x%PQ2Qf(@j2rl|Xo;Cnz8%4LuHIRu(Xfp8_z9O3^Mw)uc zPa)ZIr42?%n&_k@uQ2}@NRdX??Cnq zll~c$O@v)(wCd1ro0XpjjxISkE!& zr?!i3e85vw_+#qwP`WR>xp|N3XiH#^-Hgt?vn3_8L_)r@X=dg40xf=AY3`ZmN)ulL zb9bpmV{v~d=ZebVN=Z4&9F6&SrMPM5BX^Q#oe{CO9PR+AHC5;=!?g{ljHfcY(te~r zM-5fY__MGOEv#Q8isY>AXz5|?2JfbL}g^lK(I;@W+K_|$twf@-MDc|-}z zZU&N|*dk{G*3_-8*VzP!G6_0tX5}^4G=yv(4w2A?rB!Vwg6qSO4&9Bjc{l|Yh(=sj zN)+s?ii8w~bf5iZ7i$+jcjh}x#SdD#czZ>42_~D10fOtuFwIg?%)@ zSSy2Vkl)`-GhKf3N#ClV@&7O!GYH|x$#}XP2~ekGcW&G0&{FW_nvsSq8uH~!dvb*Xma`y}58MgwKX{XK_$hRtL!LQnhhHS}5dB8vM#!W(K(h~czHp9k`T6Gc6_6)`)`#Wfi#OD? z1BgqB%+uQ19f-^;ZZH!fqrI-#a54cZts5Vis7N;x3$g~$YjU)t8gWd$*^Mv;7E2aM zcM-SX7((?esfRz4Y5Emu{1ZZ*rFX1wcf%*)UQ;EByFa3Yyy+kbumaW6JWS_`=TxGq zlIRLEl59m*7;8-IXMXeG_0ytOIHpMB{|Dh9N;lAL%ZhaCXI%h(Dla<->mdw9 z`Iz14KsMC2=@yOhsr12vHxGkvi%c0JYBBX`-*WcmPH%%|0}iJGvnK7ll^7J+F=y|i z?KHg5f%Ejlh;Q{)zuy8P^p*%$bl7^Tws6%sBnUg?1|EqBoK1_S@DZMn_NkhBn;~@d z1jKIUwX#18^@lT{HvXXbV*)ex+~tkf!5KPtgnp?J2wy*`?@U@003lGQMP_oNqJ(_e zbLNc{%y#yy;Y_osaG~i-8I$t|ATALeWX+t)HuwS1)IMC%Tf1hDY(od?90^QxBa>Vv z)@Yv89XR5xV;O&|z=U_6heW>k)*kCio45>F*YBj!i^I$McKYqMAd`eKWv8W9zSCf{;Ltm?3JwHl<=s?zN=lqsSXGpoJpH zZmc;NkkM-j;Rr$vgWU)x#6stcEnNi8qq|wLirVRUs;v2TOBLGbut5p^>_$k={)C|j zm)&b;8=BmJHbzIIRB|0m6=y#?=TzFA=E#xnE{`BqCtxemo(dcgkFWyS_!a?e`7&nH z(<~G&4<;l`Z}93_L#A`yIRk}uk#DP$#}pB?mf}qU86oK)B=-n%zl;{1@TbUa-sT7d ziUxA94SqUg!fWrds0>6c3d!8&^}ETk0^p@LE5GnRF zHNhIMn>ZO1D1n$U<=emAB-{F+H1cw8|o-^!V$ZZkXo|k=al-WPvAnBpnKJ zx>w(df=0g8RACxhl4LUQCAS7(Lp=hJS}|)bAc;*l&=4K0VzY8s0>rAkTbqg`)hN)9 z?Rj_{Z;5GX!8$?ZiY{MZb!3ldj5R{{97Tj2l`%}+crh(XIJ35o4E^@%yDShfr&IJv zjPLJtVRwc#$F?QSp?P$z+nj%#5kQD@oWCK0X<+vn=kMdBgpgqq(ZmEbOYB;ebP2uY zEU(+&Hze;-n1x9h4$YLe*{cb;M?!0u4k^ZL)tdM*kQ%0>+(Q4_WFwJ;3_p%NNlxw5 z!#z@F9uzm69PJ^%9}{Gx1R`Im-Q?{s>|>L13&dsSgMxaN?=)o?^MnyBWjMABF`Z%< z0*0wSG?^Ez_bSAQ=+_*+84joR38A&rs`e$X#Yc`)F%_4jXkl``^k@s2C1Q!pW-HNt zuc@@6)wg7M5aik3kgRJJoB`69TmsxfCUYjFbnoT`r45ltvyT@ai;+U^%70U9nu8uC zFm_&h6kt8X`p+ zRgk&DDB51}omNRwZJUe~i2V%9BM!v6wNB*H43SMnSm~j=`ML)yU(X%tmsGGpX+D%- zE3!2E019acN%pX~73h3*I+V%NE6OGz+@w<2l?~Z@e9H<;APnqUB0nS)*2H&~6LXvo z{|Na)cWz{Bt@3_|4vGi1>XBkI?WK_$-Ayf$kXm5^Ad;^WK0z-&D=S~^#4_uh$q%PO z5C}V95i+S9KaX9Ga%-2}LE4X9B_SPSVVbQH4n%53q-B^*YD-|ax;5Q4zn&NH+X|ki zn@7`ubkj*c>nYnW!fh)EA=;D$x_)mlW;Wb;qeu3##Hn^7rHhXMM~vALn;@XX?zRva z95;|Ny7rnvJy|psq|c~8es){qOk*qrOvJ)S-Sf(SSW}6pVQSie7A6nD_v}6OJHk=)Z^GbhIe;GS+ z4Xo8`@UjdLvLi8XbYCIqd}6Yq(?`+dFFIKV%Clt^f{0L9UPj^jI1FVlD&l%#N;Ezt zH-v9_(iooi91c~gzME1=5CFp(F5&LRr?GV`Tc;#%fTkvpg29+w65u8rP$)BRfTbrOk7>Rf_q;d3o{jII)-_g1q zC?+bKh`CNcdp=-MnM!_T#ODKkf^gNNi5AugB>OZIZSk!D4*5;6Vw-o5pCfY3&v^!( z5DAfM-jNN1rEt>ALYx>3D|+}%%CBJ*CLzuiiECjG5(oW8b|4ZMB0CiX_Gj69RAJyiVOohy8=TZCvm2&PS5JA-DVpAP%IL290vmX188(~)>Ouo86V*~DIZ z=w+B1Yew2ckKEuZpROa+GF;${g3WmeV_L}w;M(dhVlS4Oy!sJ( z$#D9oP_f!h4QY3DgeLAUN@zj}`3mAaxss;0v8&i3wbHvn<>x!EpiJrVNvYanH+lZiB zjRevPQcpngJ0%)Yih0*Lk%p?5=WLc%MCf0d-@skv=y>;L_Jc7AiWe40qNTsxuU!mA zZ?&uF_@^-#_3^;s0xZask^Ih?CBMgBtmWdIqSeNxN5ff@2T?1%PuA#pXJS-n9AaU4 zk&u!iM{7C_3t!_ka@?)vkCWg7inYneTFn(PA|#1xA>glh;DU*EC&^&O!Q8BA0#q-G z3vlBg*;^z7YuI7QQF0*ehs2W8{#D_xR5macQlAaCQkmK~>7jXvQg6Kw?>=uo>h>Iq zRvN0b>efTZIFrNj=9q9p01_}Y;;CpWPrhzMIY(_UVGYoS2s(Z%FPg$vKwwMs$NjK* zBiH<+?h3X*>bkv_hhQwNnzkR5?cp}kYha+enBI+f zFwqTgG109C6_TX^Im|>pPihpfCZXF4AXtmA7b_5Ex`XdjzQq;xHU=X;ZBaOz8&~5( z`9QV^6UT^z-5^i{RW}YSH7wD1%cN0r>~pu3K)m(PeqS4y0Bhwb#3#TGb1h_Xpsy*o za-a&ThHN*`)M)z|x+9OGngOGVN*Jd@ejrK+DIC_N)`N0Rw_K)q%yNb%qakcj6q0sQ zXDCeZE5Hl59W`gQ;#hWkbSGpz&&5>QD@=Fe^Sv7lb z$qo|r!9ZG)D_T)uAZsS6i)e!CxH+l`ta*5?l{6ZY=}4s>O$^lcV1QI|>l&HFi^&B3 zQ7J_#tqoK#E>hXRnBJ|G^S(pdaHmS%T>!YXvEwP6cOcZR0`E7M{QaX{x=;7_5s>&Q|J&V__u_ZZA)uxCTln=ev6CXZgb zznmjgAl*7EX{QRL%ny!zr&&Tw(gM=MR*?6B(;^vB-r5p{G1fovUyrsC9bj+*(-_B& z|9o+K=(XD~B&2Sk2F=3IYxrT|+pUrD$P`~p%yQ&{pjc(&2uM(dT2^=K;VG$+I1-T5 zzj+P?;$6Bh*9oAzC|9zO+u9Bl*aJ~hjx5vbYj9l^Fk=(R1=dmlAhDF)iIu^L$pN^T z9HuYmN4Iaa1v;5ZDW_&Kh2MF6&tdwt7(f&{GP8%uv0cR0mTcqB%wlNqxHvf)12xnl zVvZ)QG2cBvMQ0k=^QR;OX~WiNT`U1&O?jT;RY&HzEL}r19f(ERTKkQX0mbB^6pB<7 zAeF{!0^L+b0rEVy3b0uRoNlz546R=LVne7B=!pV0WWx)$pe=r(YCHsjB_p+>1Cc$n z$SB>Z0a0AWhV7Om*B#R8t0u%o$XNgl^Mu6cn$U^JWpth-@2(tBqa>r@tQMBBf5~7( zA+7|7={>6*#@i7e$HW6ep3BC0Ff)5pI$@#{ZbKq^O{ByXnc-uu;$iz{^F{2UCyj@0 zxdeYQQgpo-%AVW#c2#b5u!-NJmzUjJk%%oLbHAbe*h)Je%=M4qWbY7~D#y!*m5llh}s}#f$@K zqLMb)o|3;L0TRiw6W(_W*=(%vcOSX#wH~lOnLwO{Q_5(COnmaYXWp6`hR`LeeF+%M z1F>oy=bqi>dXkqJ+Ba!2VA^c8YPaII0kg%#mygbmsBLA6H2I#mml zNwL7TwaS3Vyov!NDJ` z)*Zu#0ywRtg<0LYa5h2Je~itBdwfK-?ijCUFLzAgKJL@|WFm->+Tfl1Qe|W^4WN`8 zqfxe51l1EOBN}H{b_H$;zig=({<;#V|VQRezk~AOooB9+Wtx5*cLn$DrU`C>} z-xcEl%@oPJc}NfgliLe!fa0>;NzvBH48MaU1|qouAch)o9o=5Q-h|;;952q4Ew7ae z{?^H0aBI!5ICW(1d*i`@ps2&nmmHUCUuyG-|6F9=y{1`B%Z zAZf?m%v%*g7@+;~7DyOim=FdupF}G>f5^tNhe>g`iFsIWVqZ)}bH#);z+fr|QoSom zqQE^eZ#xk8D*adrcYB*tAlG7z40xOntp4zw)85F^rl)wvVBgZH$XGjBd^} zUq~9ishd!(Sg&p3A!vj5X30R-F!l(hfWI}2Y*`;n^UP+v58bGnNvZD}Q6BVSd@EiPM`gGIQ=M|N`v zq^DXyx_QTW>J}AKw-S<6gW8ixRIs}YQ%1=Pp=WjID51QyAOB2d#UM-Oo|*R;N_Or| zju_u{7fBO$Sy65nB0bdh1f1Gx%qMyV!U)ea<~^$lY7{80bVu5YiUEXUD}4bU97 zR`qb4rPY1q31FEuPanElNfrl4Ev82UBf9STc28-9oCBK>jD5(V1>=P@0D7v~8}6zJ@5(ENTzSr*Us; zq;`belY8`NNmJV3$NqbwsV@pD=TN9y-9}psu22StkI8eQL-zM@BYOm@7;0n4+FP$8)J&NM=XfDT0_n_n{UJC81Es-3VoNBt9KFQ zE)69voh1M`MbTTI&W2XkYCl_LEL8pMx8&Y#yDgz~cpU}LcGRMAmA2ALfmQwX9E>pZ z#%a=~Y~6RX2`BoFz#6lOT;w#NOVrUegzcC&gGU`EkiK!E>C8R;z_>`m%(U`?;~Bch zZl$B43k{l4m8TD&0&>}9@v+Gr!za1q`8k*XdA(UvximLb5H>>UP70Vt-FWGkLpZnH z6ZBS67z$J6A9+0#(J*>rEX5$gf@&u(4cASLXLOSIvMOQFu=5p_4pyxYHjNNA z>fi!5Sz`oJs$1CsGr6V8DjnQ%7=)q^9v*M>bIIjM9eHL`oY6wTS>8 zh?-H9xe{y3WxZk910^<8P{^ZR_dm_8qL^A#&$%sG$c9KWa&tS1Hl(`2QnPb|{JAUg z7$&Sa9G1K5fpF?iBoCGo{CGZG2OunoP(aF-D_QS^tPJE_n^@+xX7&^tQSphF(k`c{ z$_Y%UyT_||ClvwU%fuCvymk}_4l5eI?tw;IhQs46+XQ;yLAuMa#Y8YU&8%!qO$j>( zLbPsJOa&_zI)u|2t zrIZoa7HQ1}OUT$7WM8JG(SrE@t(T8A1ma#G(yAu6S3VD*0Dq`{LEBt%AVwmAT-SDG zc10|=Vpcj|rdFAqd1%L?85+vlcMQ@eh5xC4|?`p05=;PuZiJwGJ-Ii~loMjqdl-KB^!%eyR? zkXuMjlx>CC2!Jq+pZS=Kzgyof#Nf&`KshNn5UC9WAKfoa>L&u>XmN&pB6g(T>eE~p zd>pZ;I&VjG-XfcC;$>z}3Pdh>3C#PCICLP*&j=~9dI|L|5Wmv!107BNd3yzt8Y7p) zz>oOUWbTLH>Fx5ZiB6i73rWJ$#ktJOgIizI^iz!d@+n~kxHg~CuIV=ZKry_#AN5#y2 z&_aljpfmFfe9Z)*Z*~d`E6$)CW~QS!^v0q?sT;)#hkGowNbg4@>2Mp>t-;gm#rj9o z4}{!k+Nj@oW2RQ$VpEc~a3(M8j8w3nE`M@~r%1QNZ+nVkt~q77jxHqi1vGK}45icD zufOxx`=}!QFngo}STg1egSINk1_fr^9bVjN7wew14$QBofYED;AA}|IC?rmVZJwV*vPpt>m*FFN zF>LB)an8GX;*0{D9H%CCO-rVf{Ei(^ys7LUvrX!e`s1WjPERlF4$&Mqs zJ3#g4ax`IzM6b{9xN7%?2{Sp6x^wuM!-Le9?p*(6W1Fv$9If{+zlEwH!vkXf5Y;p0 zUD7_C814GRxCB3G$?U?e2PW)4fIJ?N6-$8Z~SWYl6U?7CD(p@#n|CP2tPKSFMzR1W*;_b8W7&KBu*L}TOU&%uRg(F3`m zHCVsDZY^m)C{G7REz$+8z;veEZe5VW&btQ{<k+E)A4bF2^!U*?Ki}Zc=BJHJullsntDZSt*q!k#uvSM8r`0zf($_HPbFh~Pt zHFL(w-A^H=(}djdD%zV8Kc<>t=L*Gr`l8KCNeI%Sqy?BqB6s5=#C+toQ9TbB1W1QDdBvS-PRFPMt?ydNa1`3=e?=pMAuP^^L279EyLn{PAV3X;<`oA zHmOlwKyeO;xmj^OlPFF4(a{4^#g59}mY z=jk!<6~mn6T>+0Zfes}MdJ#*iTpcPM1trhoeBH{iu4JX3usWnUHhM-4Au?)_zR%v7 zOqLxq3_4d~3B4ZcbeHQ7DWX^?&Y+9vY*L9HH=~yWv*u@Uk*V-jBIXmoN z?J4AeVzKrZ?;HNN?jAOjv71?KP?o*62;RX`~&uu;QxAUdZm_KMXYjZsme z@1y3m#sd^|4xT0-+jVF}ZDm?!8wt1^n&CM*dST$q_a@@Q(=jnCFl*p5R7#9(m974P zLe`pV)SsTuW!U)e`|Oae)ah4SuXN>9?1A*$3_1BTNDFdsjQ0$bgGoUKU|DP~f(dD< z?q#7^i&A+{n8Yqw`HTr2DjJ0?1!tl--GybM!(b2H5zhvjlE3K}X$rX&iM9*rL9ZRzr*se9B2U20a zV#P?;WU&aEe(33VoG?NI`Y+#_0U~Q^&l`WYA+=#iFF5^tF+9p@OV5VE+HalVG z*xc30`=W~h$#M&vA<;sZe{k9q>+@g!3flv@6O9o4*Rch+2W-jF{{^;xl4ea8qSxnT zNGd|ZyrtlxjgJG#iDfoY1IS^n0HRprHjR3~O9^*PkH~NdY9~#5R0F+uj7wRMn>Hh z!q7RDoPp90Sf2dINIFdcZjig~D@KFxrdc~`gx67n@XiD_%3xvcP2a? zlLuw~r8V$yR<(F=bPJ$`zWG;ti37XG!9S9>FR$(xiSW;#ng01lqsf@GbX;FzZkq_k z&25tdn+`S3Il>N-NB7@|j&-Zw-1F{Q33?tuUc`8>-`a7xl$x#F%*{AY_^d;J{>vwr zK4JFHFh!qkn6kRR#PsIOy>ScEx67oW?!<;lF1Y813~it5Yw_LS$9#2kb!U2RK z9(vVMC?M`>14%IJqnD|Gu}yO$KynxN>}8#8C+BM2Gd9)I@#4Nwavia#US}<;KF3(h za&!u=IlvRM9-RV7E>J+LXRP8+OdW{B0I^zeJAs?UzH*n4$16DVP)_JGxWxOJK zPMI{BfkeCa)D)!p#tjqX@KYl9r6(ahHg#m5@CX{hG89Gh-s3qt0!SgGkQ~X1`~{)G zwjO-P49PN2@x9Mo(pp35JUul9!9K((q~$||YI&L+$efxwe7^~?u#)#Jbuwp9pDm6k zJ310swCdr4RgoSi{yb`tcJ^SH*^6`^opyHP42>PmrR$hSi+~JGb3&@N5epk1x!5^1 z71pt*7eC(`AM`xdg{si@nZ;j@OrM7oV`m=0%Ym&Jlb6NKXP6$D0->^~9PW{+kkrsJ z)f|~R{?{6f!bUXa+&u@Tw&Cu4QJk?K7dm9#;>`{k+1L})`{dwNq+j=FyeFo#>IaWO zu}7vrC`8Xtb7HE4;EbjC1XkJLp^uV&IubH>)6L3q9GkVe0m%A6VX&?{@37gWdpJ8* z&DoQr8W>aI)d=LEG>)94^*EEzz7D+J>sh6YK!dyl@`aoi{`T8F(gWh)&Yc^uDSEI<6 z%?ofhrA;`VHlk5rJ9>w*<0UuFP`!4#tqu$pFesny{WfYMy`5=i?@aF-@8n@NCgM?% zaiLy&^gigU)T3Z88VE9xu~W}D>9#Oib>u7Lj?CG&0e&h*wq4lb-OV|?P} zplD6@Y|}-jutldsS=oQABP(O)_2%*l|}mHGI@!UhiBry+^yTsTb24V!=U`$ zlkl%^*#OWYke#^W*lQv7>bO@(=N`ydiTzCs;+?I!5G1?NPxk6U zs9CQwb-S#&SkPi4#&*2A86m#ec2ewI`}P|WpWZ#?h5J`gcBW%)S&8f7qCr7!)}P$S z6W~)Hc=1O&U5Cc{UC2JuZxiu-_U-J+|N9?q+^}uXO#R>=%@KXM{ubKDxLCFVp^b7#g9sXP@m#}qL=T; zN$I{v&nTQ?>;HjJXVqTZ-ZBIP)O&)qPLM!r;tA)@*D-AJT?)_*o0xN#z&OlLK>Q`U zZd!fxsS4U8Ya_&zf&H@0MNi+|&?TNrZId_6%zzZ)QZIVOWZdp{X zc}W6Bj^$x!dcFUMLh<)@$sMrpl#Fx5C5LXZFn7@SfA+xw@@zBE+zv>?zOcY2@*%DX93ohWSa6G!1no`I3#CT@y6m&`}qcugit zJiZJPQI;*a=OvBjZhRs!70?qqwI4t~(TiBRe-%Db(G-VrUcM& zpG`u_*wLi^Pk;xq2_0Chf6V>eYu%?SV3evr>FGv{ zL>5%g8{@OOSv-nqk>PdmCJgyvAHkXF*8|1GwZtfE?VFwXQGQ13#ttI2Hk(#j{ zlq^`?h*zrHXyrYH9s04J&#+A9eWs&J`hB=TUQGH;6=ln@TFIIk$`fWsWWAcLN zg)BvA>-1D@rT?}rMgJhH_$ME7h2-hfYnyyf=+-Mcv5q_+sPgEDs6t9ZMc-lpqA$wt z+yWN4jD5qWin<$I{&XMk0o_b&0_TG8i*-SFh(Y-cVhA76*ekpsld!%BvnA8Ff^vF_ zh4=UZVQc3a?r06xlu-?V=i#=?X5oV2&UD54YhE@RNOB{2ANz*&gk?_Od$nK~Sh40c zm}1?YwBkc**d5pALstU4tr>u3a_iMzFFmg7Jj5S_wFw!=J`la^kZ=$TL%Y{+cUe;L3$#kr$HZ(cA~pz5SE@V zzeeVOD15sNIE)YUqE3+}Q83;YSnP&Ze+Sl{V$laRcl0N`2JMM)_%q>Kmzk*+?Q`;# zjY1Z^{Njjuu+2}?88I1qmlyn#;*h``2_sc5DZTu?UyX^qC?cICYtExbE;;t%amX8< zJ4v`5?~J0KsEz*^k8<zR$U7}?DEtd`>uPJJz z>~vHtl8G)p7a9M=EsL+T-E}H13xgz9&h4^nHlTCpqeg2cC$38+8xH-3&f(5)&|gCG z45t1iB*#UaG+S~$xbj_-*j`C2VRXMybzQQDML=FTrh>abvMUs_4`Zf6TJ#rY9Bf5) z$Fe8qs=$)(o6&nzZ5~R1Tv#H<_U$LE?qeeSJbiS)#0F5O;m+>(sXS3eqi=bWMpx$Z zV0L?R{~AAGQlRWCj1it|H8C*z8hk&%g$AyBy{nN$AL^Ehfe4o2Gb6u@K3esq81{WKwL{r6$9uh=D-Im=_dGjW&_}Fl_x8C! z=e~_vqzjwbV`6b#xdjA_U2n-s;!?5#$(>2Y>SN>pd<3kb5fBvda_)@Oe!_A&mwp{v zNG|6-VO6B}a&9Ne8gu2hIN#y(kbg4eCKvu##GejuCMqy4WOA=bb*jKC@9%LAQbSkfu_-$*Ai_* z?qG5`7AzIv!WexoKR{?lI90T9j{-kLUFeR1C9c z7sH-w1K|@G#hHguyVN|zSDXuDc<;~7Q0*x!w{jUPg9GTL+&fmN{g9c+V0|MqWsQ#N zK9DZ=*-L39Nu;q>in31_62}SQl4p_rV4ok-Q=qz$hcHOS{(o-e9zB8eS}u?b4${4q zI~bf;73sZ}%b)uR&>gi%&u2l|ygIu`GhSxLxlyx*HJm)A-Yz8=Li)*3AjNnAj7{13 zdcUMUQ=7(HhZ&b>-QT^G`-IU0l^+Kc;e|PKn2Dxj{{X;8P}77Xq6QcVcnE7G4rK37lveDV9Zu`sB{$M7BS0Bs?=rV3~?|xu^Ob;YK)yfMlGRZ`;XaY zraj;xA5K0>eDW5xI9e1Tgq$}LE@Zx`bHGHAHO^4!CD@x9GEvf(F`i%U1nR!8Gb#g3}B5^LUm0HReal?!8dHXu7x9>o-d1ZABj zzy0ks>2u+OQ%QVyKPFCXT1Je$5HiSR;!@?i#W0`}Ye5r>JN=ymyM%1{8W5iC99&y! z#>hTyFvINC2XlkL&C(p2bVIvy3sHs>`R_g4%o6i6Lk@ZK5h8Kn2&A)+Lh*NA$EFva z$|S51_l82ewHkt}>+={rFh}=J(F{dTv`N?qQNJ<~hn5;d*R%qJKSKH1Ty%N-p4@M$iRW@fF6 zz+5a<`3hj0^@j^xOc&leRKJQTbbH3?w=i`i?}c75En!EHy0Q@RAg%4M9Wp|4{VvwA z0_j7p>~Bnf29jfW+Dzg!V;>ntot10wv1oJswo6YT+q0uTQCrEM z4eVxOZ^Lm1BNv5)nK%t3H;#m8$%SBtm7qyy{?8wd%{x!!>ZCIRi^V^Bir#)}#;0E% zQ9|my9NM($^O(K5c%QpC_gzBqaW5x^NMR_I+-CqinVt-(a`G~7Qy)oFLEjP@Fj6}T z!MSEAlcvu|)g z(zu@rC}_m^BNg2app}yvujkvNZ$x3DN_M`xloAlb|AT@2V_#FTHd|}T~N$3pxUqPNF(}{aveNaDVxXg zlbmkCw1dXv%tXbx4-W3+#ktQC3KK#6>3;Ls1gL<#`p4fVZ|c~5%%oFKN;9xseEQLd z&xZ%Sn2Y-&r7-ql(x%TNitT;khy|OhBxCVp$(+{THQK*8KzOhoalH!IE{IjfC0;-R zs2p#9?HNhA>77C^MWz6yFpCOlw{`&9BnkFu}ENLLe zsBCBYUdJ)B@VaW~+Z@dVPYl}|nd zViMJUe0a3(u1VAd1;a_A29`=nuuc|L2&rl;l@QBUg!mQ26Rp9z8IcYfEg;|Ir(;WO zBAXJ;*+m*x)<^d7Tx3!SL4ibGSw=FcLdcBN#k_S_dBVVFGO1@zVcfLtSQ#CNnbZfY zu)KqGb5GBsigag>#Afzl&0enyNiNk^^Bu#K$DsZ=3dzw0s`Fi4Xsh*-}=j?hf%)7+hi&%GDrWKwMu`YIh}QbR7;B484!HVR13 z(L8GVDG8HC6~MENm5t<4g_w6xSb|a!o;2#ym?iRU<|3TpQ(d)5)VSq6;!F}%2-R62 zOcPmo0>F)!K__;01BPrmyW@h~BvGI6Imlb9v6JkWqPs9Bj>!O!eG`D>P;HX$*NR(m zsDYSe7cx226UN|^Lp^&6Glwdqql)q2c6E1#q9Rln+)z=(QNkZDP=LN=7ZA z3)|U?G@pW@oiKB#4xGZ_K+K^A(jvPfhkC*sKRML1qaZdE0c30eZ(YNQ6Fy;3rh8P6 ziTAZThb+c|N-snC!Fca;a5cDeW^d6oB#Y|IeCM~aJXzF*!A8<#hcvgNAcz%=GqwQJ zsDWIOD#}fxW`&(+#w^PBsf%(FbCOg~5L}J}ds3+#DPPpK3DNyTq5(O0Q>pD}+#<|e zY9QI<2qByLjMSjKu?D2+3z;+O;2hXYJ}7%BC@AYsGtpkbNJ6y`k+EA7swYfzl2F}_ zCA?XaK(Z;ek#;?h6RS1KM^FdOeTX50CZ=1^&OJEiO_0DU7~gwQ8U)R$W}e-R_}S~k zbPUxG6EJ#ns%h8PM1+k3e(!@LLK1r{3R&v;-X&ZaalQ{bguYHc@_g<=7De~tt|F;N zrTLm>T;T}J$x(t?{uR{4Vj|OI6!MOeqVcb8y*4O!t+V;U%+5B+Wh^?wow$y!0Ez$5 z)2X)Sq8>q5O*W`T3&*%0m_*NBT2687Ym9Lgo#*Y>{^joxtwLQ8|7VDz21nh85!6dR zpD?h;Em+p3o7+y}yIZh6fE_}92BC(G$?UGLY{L6kc<^!YLr)g=^=a0S$ zGt$^z{!VVvsT}xD>oMS)OU;NoYo0!Wb|9Oitz*tC!csgc%vbgR@LF4Ao;-dONX#5N zs2D@W{{9MP`HisqJDW2h@vY9D#P5#!giZ}%GpT=M1Yb(Zh$ZXp8<=v z;*>w$2Q9+4$wy$(;7*jck3_mTP$ue!Uw|}G3S^%Daq@5bArWDYB`kN>j-EpHBPso4 z%oAP}hE1Q&u%TF{D%$tyD-+nTqTReBNM?J>+_^;II(XVT*GUs+XxS#7%GlLsbnn*aPMKNr)jvAU*E3xB|Xt ziSV{eLAC>X}q^QwXKPD)Wj-Gxm*{m%NL+Z(&-iO6ph&Bi@eO8)BktDTg z&RJgGC=&A8Iuv$78kIm$R_D%RM`Dea!SiLPz{DEZGN~Pb{OHT!tk+#|R~x?~1wd=C zhF*H}40}vPyJFpJZKek%)}}k9hUGvTpIyB2c#}A%yWh)F3le2r;RPfh*D%kKMQOGC zHy%Lx?6Wa1xm5Dqgmf5RbT|xt^?RTf5GS~gt@N>Ex{ZCdIoo`X&Y%ZFa2u!h5EsT6 z$FL`iZ}5F!0M?T4gNpAkEa&BVA{oXFbu3Lty^vQUjT|8lL`)XO%T&FnFc9J^A_Almf_`rZ zoboWBKZvCBjKl%CP~_6>pb{@3`7X?bY;4m~{4!0@g@YjSsGmhR`tKj%(FY-CE<!0zxf?<7|T(l(82O(FpkhvsK5);X?{G59GQ8+6-jFw#(AyFMowA%dOo0 zTe$Ly*~G91X0R>vyW)B~32&EB;DWM(jX^nvfl?0RB~{lL3J(--A62{ z*GWs%AFV%Yl=TPsPYg_qS;(to0NJn+VlQFw-(7TIl?2`il#=Zk?D&{d0eQ0Hj?rK{ zw}trIeMk}R)S=r>11wg?Y5IDlkl|?`uLSUtTr*83fRT1?O)^wq#h3si__d=rcm~n2 zamIGLV^ySy-{P_|>d;~0H<8{V_MJ#j_n;t@n>Ij>t%vbj2#={QNhg4F_IXQc;x{2p zZB5u0K&pIPYla@2&Xo?zb6+T94x1)?6J;WbQetNU_RT6eX_4^FR@`TAtG-?-B#*Mt zW?!$w;x^efAnD8&X+z9JZ&}#p#}mB;(r2?~@t3o22RO$}=oVy{I;)(}P1w74=R`Tt zm5_WhSxBFt1VXYUO(t}6bYDoxP!qZd`^a~VkB;InkF$2{N2G?#m;zr4m_cVEXj^eU z=LVz#@@|DU(~j`!F}@kkcZq?tYtLcPBgi(q!7VZVKla{bxt3kmwyV#tSbtziL(j55 zWrt7P!afz>|BrBM9bl5oF*NnsVLRfeu;!AWOb~p5=m3aplW>UC{iIPP{+1gC$vXm` zU7&T5g70mm&{d5bEOzV^6&+gS$_%@r#FiPxn%~&gd}WA^HwSGpf1r<9^M?d6RC0av zAVnxdIZpNcFJ&ZtB<`On#;_Tghbz%OB`&DP1e2X@9f^pWH*mDlbaPcPJ0uQbfZ;fN3(;CcuF@ z7Dlx+xR%U&>(!Eu4n@SNSbT}D6oD$q8L_%jM7+vO$r`bc;GK>(A76t+znYJXB~Tx! z27|uOezw5nrM5pC&yshxoIUG9l{JMh$^V8zN{r%H4Q+o<(iiwp#aGgXgd|D5E@^#B z`IE37zGyTF&d)B*;he5OxPP1s(aI(2Y?eY0)y7lw82b+o2Sg+yu%LslrF5dbg9_;ipKEroC;nLlLcy3&xR=UX$*&(q=!@lzcL&gP&rFqk*mdK62t(_mc>zQBlfxZ5}U=WqR_<5v0|G#6QKaY zt8pC8{7UUg6JBHv0nQZFsr@_Nfu<+gCot%0p1}ger20Mts;dFx4$;oiF-GpX{#@;5 zGVznteLd_`*?U}2whbR0N64eG94QYK(8rQ0SbmT=?k>2G!m3`R7d$W8vO$?=#NKLO z4-rOBPeVLf3fo#3gM>Iwcn-2KXw-<6BI19wB@wiPBgJs1lu9MmxZ)AVxJfWa-P95r z??HRa<$F1Wx0G^A3<+AO(_#)&x>!uJD7qbFNz<+gND0zO^HO>!*+x<*&dU=|r4jih>-$$koPEOkruF zSRYZv_&c@XVrM)BD@akBw6viqElatj&5M%MKH(JBQa~}qY6!#(_UNMZv*&0yM)ly? z@`g6rE{Un3XtojZ=zq5%+zAnRtcT~iVvpC2Emi^-3Fa?myELP6IBDducEczrKoN2c z$hzA+&JNO$o@Fj=e4DSn1|TJMMR^KWK_0>T;w(V$4uX9E zR+W{)579@*Yskn$oGf9@5hG?GISSn(B~zS!96J;5NLKmAlqAEffYFeR>(wur3Hzd* zrJ0Q{V^T`mEt=ACQigMbjTJO?&}g2dmuBUQk+EQzLcpBC=LeDF-dDw{y*Wy=?p%?u zMtZh>aclC_2qc@_oZsyMCY|0mf6uqHq$F#&2DxaggWTEyq{zo}Nmy1Lud6p=#*(!f zP8SiTWu5NQjbpEhrR8HXadtT6NaGPsvxn0VbAw+y%>cU@fLFpw%A&omYop^O#ix>R z`WUVfxcJN8H))2j(_6Z6ta07it$~G+Nq`;t$rg3L2j{vQfXdzUxcrpo^}DY9Agqr|1qcJ+X#-EH#j z_LJIqG~b~aXzWnWs0|+L*!!zd4 zMDj(HSXV#xi+!AI@V$DvWnE=jLs1X zKi*6rHE+sY?N6Y|*dN?m26*8m&|eF$rX6Q^|7AY?HHoKmQ{vgLuSqfzZn7Lf3U8<*6(&-h8qYAFrjRsIL(g2)>1V1s|IxE1S$G zxWspDVOE*p|!>xd%IFG=)UD zTfV+4AHl7oMlIM{yDugag_3aVXum~n zKPfM4Tub7u@m?6%0gCe~NVNwbJ$EG(9pX}QVoLGz#}OHGJm*)_vM#g)8M*l;F{e9y zPm_Cu%08uE&Qr-eoTa=lRz_MXnV;fy8LihSM+Zy7&``qi)8J+Ms6R#Na@{c$p|cde^IXq7vFBUjTwmZd?Bs+C5U{-b zIum^lLM2QbyrDdo)23OL(8D##pZ#b-`k00sW1kegrX?D8kU81Mf&jjj&~Hgf<}~BN zKaV{1F2GAzrEd(E*1~L(qs;A{;Tubyf|Q5cdZf8x9ig;wBLG8n8t9cPYeA9IHWJ$q zBqfHFOVZHH5{Unbd3DO6)G+fyuJk~8v{x<+tN3T>H?4%O@1^&fg#VGjg!=Fb>XDL- z+9I^f?diYbT0+}8-JC5UH3?9~_t7uX*^kFMWU&48i-wZo*}TUWg(5Y!#a;3x2Cbxi z8zUemWk~Lf?S=Q1R4sHAMMBv!O(&^eFuc%wfp($QP=}u#NrHhQKDj-mJl|*NQO5Na z7ZY>jA@cng{LtWJHv|E`7JVThd!;zvkf}v(H|Z7A8t1+75}Av5HTGl^lohx5GSL-w zqPGq|=-Ov>$UhZ@l(60X(pajQ$GCg*)NnjL$4Pi4SBX75rDwK+*{kMD?B_9Nu|o4y zX3`%CHKhhWSBL#BqKJRzUzhS5_lmj3ZLi;pqKVZpjx6EQZCU z_h3e{DJ^ZXuWZJQg9yiAo1x;$V-Iq?7CzIJcw;!7z`~{>82b9g~4_a-Mwduj=h5xpX#Y| zgQiwol3D3xkitwX#yEl3CKnroL9Y()f6=SQ6dgRz68GTWlK5CdPREdLtf7@QxPznh zLEe%$=h!-uCGqZ6J-USJQ75%J=b(+@M*wMl21#qO(nzEj#0({=CQvH>%4aaYd&oK` zt6iJTD{t!V^yr%0rD$4D86wvR@~^rAiRngLiI&R1x&17N@;g+j+fwEn}Y^(b11@TyeTcgQABvFn1tgHd*Ia77I^@% z;+j4tGeen2OURSf9cWh%X^uZ$-X~!yP`du~QTe2w|6~1s>LHwGy6;0lv$%-GQc_ zD|`%^NKy%pFoThmZCH&k%&r{Z3;x;?R#HTZSEt0yd$e|+fVPan8p=bgt8P8=#EMTU zQ*c>Ct7c@-Wp8<5X&Pawodoa|r_xGzs;)^vVXkBK-wD)xBbDK8b2pzo8O;}U3>0l(fdU9s+44? zl+Zsby1EY~}eIZ(x#}Q+dOoC8R-n#oK-brXCWEo^}#QujDi&z~IkawV@i9 zHd?1CpBn&%1Fi@!Wqgu0UY1-!jl9H135Q8o(MO^XBI4$gPwH{P8}2B^J{*0epm!91<^>EDeQezASjOqsZ*0(T<49VNYO&he$K6d5F2KczmU)9-(@0 zEVF|KcO45QF*U21Qz)A2wiefkge1#JSwtG8Wc%nlv#cTBS{}`qP^G~9*Jg3HkQ62& z0$1841h-|4F%P@skVaZd?2nRMlHg=+(ycF~~tOKqfv5fICBjX_uTq4RQ|RbjC*ml2}e+jheC6tN9gQ$5lV&Eq}1qF z@NbG$QV*oX3l(b{Y)fid&nS+T5GV!~=Lklr*_PBAsEXI1`*^OP&@Ttyz#-eH&K9B^ zF7u|9(ClBQ#5Vi-z{N%R{pDnk-^B!u^sR4w#! zTfj9RVQi^{-dnGg5s)okt+|NET;)Aca}flmKC)gG=)E6W$=sJG@|yDH!_b4Vgsq<~ zFgs4T#h)w8HkxUHbBBG?RzZB#p%le- zNde{ld6>mUnJ|mlY-C_B`E2!tFFQQ^L*^uSD_W6au=ohkd${-{8;k)_<|J2H~eXn0>l@${zA)mc#&~=_rLzZ9z`LH z2l?y0DO38D{ggOo!sDO+`~PA>p27I3jc~mE-~Uh)h?+jTgwGsisabbC_l&Xks=5Pp zW!?W-C`3vs%)8JS9dF|DDen2EpMh{HS-4bxtZ{lmk^NcPV{VO?{A+)TuW#`9!HN0Q zEw&IiVwtdiEmBcJEN-n;g4cT#6ML2yak9%23U*5<%)T=9_+uqAGGz5EG<(BYdq3W! z-W9#c__&%Gi|ZnHy8gWIHa$Kl3splJx#)nxhE7?#OG!}7C#yuoKV zJ+ST!HgL$IA0Kmrx(Rga6^NN{@{EW6L9JqCIxDD&XV1Qc0v@-yfBl&>L~LdEieEvs zw@l|G9lM6ga0KTvCq=WHlQy~8N%h~#?x3+cB8j^uZ=26Bc8#k;S!`r%BpNwL$0}Xk zyhW=$h`u~6~p}o z?HHNJ!Yz$4FtSrTNpm^<*FRhl(-41}REqWSq0$#3`jbYHJwEvOO5)r>`*Y7n&jJg_ zQNc3@rALZlfRlC{6$`D7itr-T`UZD)u{Q70-f>j;9#6gGsT>uPQy&$Bkn_8I6NAK1 z97n}M>!U)72Iz58a5`~h;I0@W$VN~oa#ZK2G9l9Ls6vo8b5iv1xhVUn7!-K52=dAx z`_!@Q`7REAPn;&VX~*Q&q;X02kWD!p-)9HsP{jWWsvH6F#~L5gOHRf?^KGShzF?~y zi+p+a7Of8-7ydnNc(Sork3g zmYcLWhLhhy^D9QN^_q5nhY7;Bk~5dFDHck%>0H)RTVIbi+mfR9gZr4FWjuP$;MHTf zT8)D?$G1iuz5M2C8H&zPKWMGt@5#k^y7>Ldq0lKdLIqLQ`az-92UgE|4nV>8ys7v> zNiR#qFHcPsFRyz&TkGnaw7J?bT3PI_;w#$rZu*37Seh85(Q{S&{lRbObH?LnchFdc zlQ!3Nzq^j`HNT8H5w2XHIQE&XFzO_b^Y*d#CT&@V50yL+J<#Vq0qRO9SQPsGg%82Z?}P_qMg!~}dvxk+*VNO58V`zj_fyXA6FP~(`ptx6YR-L19+q;h{MN;3!J@?EC$oEsL0U34J@nH8@yd@@txxKu{VhO)aHg+NWNP zzbQXCl@xwg4ih;P)^DcRM`w zpk^KU<}KQsByhv7Yt_C-8=P#kDZs5oy2OyaJY@igUc z1hh~F0-`kacxpnkg;to9B?fmR2lgnK^pN48D1(w#xBH>)UL(@(8@uxWq_evV6rz+o z9>}cnX|2KhtmBKcomI!1%b9l2hV7Tl{z6&(@{#qfVeEmuTn0T@QJOUHYa;=M6utg(+;B#Jijy0wiNXkXy$>XRhd`*gG z8V5!3>ZcZ|2$UK@+aw*dx!i2w(b8$lz&+ftstn^1ebfm}w1z(7t*A3k^HajT={h+l z`3Qwl_&Lj#)tR+J43}Xghr+rk{Qg+ZLi_~@a!v}a8ODwP;Ux70xmdUbKDSu0M2+-A4p_&{HHUK&=nxo}kBKdhkaR?p0u?M9y2YK- zP>#l&j7h^{v#bZ>0H;g5-WX3O8r)hrJ6@`ql0CtKg)}wEoAR`rI1iIn+6BFYhswNO*6h?c3+>R|ge5Q}4@`)O>j({6 zs|Wb8Bp*1r^%#sL3CLP#V@W;;C@_iUdIQ^{EhfcH2DSz55M?|TF4(l9b;qill*5!l zkM&c_*5^YNgw7n1*{eyLYX-@3lV)8qQQMGYlnpp1rCAluFAX=cvv;16nL|0+En0=Mr2gN%TaUCmJy}}N}wN; zm|;V^rjv*MrrQK?T+|4t{)TXgmr0z1vUX{yfzx1-s=OB8UsZG2o2tR^Q-P&}oj+P|i?#EDwrfStFh$7VI=;r8%L( zk7*js`Pz9pvnj!;7fp%-XEDi5TLgRZi%>E98q<;aNhoNF0Dp1|m=*Wm@r*H=>{2^O z!Uf3zO_(RkL0k3}2?&n?Jhx~)OKvQ{^FEbDSl_aHy{=K_zEhMjFbo26;ZX7>`nu95 zZLD-W52*QNT|Ydt4Rrzy?XT{@b3%d8NrQr7Nw&suB23CW5e{1G68i@)4B;Bm4mmEg zxiaybiOKE zU1-&NCv$)HI1WNquVbA>uAFRz-k+W z!vS!R){gd51O9U8|9$_@zy3EjvK~lI zyE7N+aGMbPmHSSd141O!3G?J)@##EMjM!l^ zVmi#nzdXGh4V~VgrE9LN&y?FBbsn9F#-$~P4reVrrb#TPbK_WR)flN~ zh4klRbds@)#mMh|^pw;)eywjmfpReH*lpCN!XKv6;$*=n;a;pe)J0Fs#XK!4?vUyq z5KlwqxR71g0;N|9l)3PB*wtT{?r(_t=PW9X{!G+4c9kc2tW#Gi#lz}fR_k?t|NFXE z^cTAn!#?K@K?7l0(F%An>t^v2CcqGluEFkLlCHQj2drY7CxM{;jSy$%H-ww4!BAq847)wBgK1& z$G;Iw=0Tv%{VRf*-IsyDh-LB>%wWAJig=2*;}st7eo2}%tE=uLRUe70Vo?7^E_p}O z6z{Ky1@bm^-ZMQeTIE6uCg%;>UDP2I+|Ujy&K-i=k$vsXF<_5mW+52=MliWEz6bX& zNQOeq4J$!r(58~P8#7I~6|~Exl(kt6L7L>xDa~<&|V}*^7N^ zfBre|&a)yhpPl4S>>r2J@L{b%nkz2|W{`1G+sCP4egj?v(>bpt8Vb(3syHzC*CE}Q zGbK~*Ra0N-H`g1d*?meYV~w-2qTgVb(bD)P4y9xqeb$tWvqW2cZxT@t!8jt}#J>^j z%>65pVLo_84}Ud=V;#w;H8qH|fC0sS;%njv`fB3lb$1TA&U5tRBmj@PNhA(x3X9x=I2L6FQPEF^8_UlYuHE7EzZ z1ecSGDsvr4BR5eoK-hO$kA_e*NcI+a4-bl6NNFC2Qk z^a%*Et|U>sT~q4;FCJpi|H!oU!m1 zq9!z!5o!bqZY!nKWsOCvoUClpv-PDX5^g(#@P?sUsl9FpUlw#g_ z-&%U_j~4HeoR01U{8=frMD?3|WD;NSI4LF8j89+?o1Ad!3+)|ZaqZQ-s(eq+#}?M; z=f4crv7g5Vn1q`ai*Q#+Z#}F&=O85&2>XvPhkF?c8<#~Zu(cM(E)oj;P?E;=k(_^B zemnPV`K>mK&jF#CK#&rS?byiDvIhWSkC{U#I69nF;z1gvgFk|m^tB1v2XM{xYTPoN zc81s#tz(+8asqK^3)_RXG>KzxDo^ffgCSB>O#Z8HK;0bCH=Pd+wfEccEb_bztQ+b|NCOBjas_<~>>@#qCaPtjy0B^Qkq+MPLuYumcKwzK~4 zv&DXU>qaa?mzcXRocu6V&#|0xe?GQVi~>$2lQ4+;k>ZeJVQZ1qI0RF}EqZQe{uQyn zocSISVxdt>FiZeZn4$t8v{pz@W|Az*@L3dT!Mgx0gKr$lAk9 zo&9kZf%dt)uH`WdV+#ByBBS(;iZl|u0qlefZ?TFXpmE)rwx{ZWf|@(lmG<3YICbA{W7C6^J~7$g{Mswxgwv{a23UHGG%OJ5eHDyE;verL`J_qX9n zgB=C9KB`W#v#L18&yfNRPiTA^DE&#vA_=c%B&COOU0;dim|jp>2e=&4U$IknJWPc@R``_b(awKDgpsb_emv2qOQHWz|9gCHG`}tnO*+) z2k)_gBQ&{~6F-Ax5!6C~ZJaCK8VSWMpbVsgKNh7N2azgvY+@THac|9&JLxatlF#s- zxYh2L#jRd$;+_UuOK6F2q{Hj;bI{jw>2JLtB==!20GK};^tsqr7RUPf)?!N(lDf(O zl~ndOLcm1Rae~J92w5TEFWl)Y2XCFQn&QoJS>OUDg3LmRD?VR|#U{WZ>P=SM$gVhm z5HOp~qZc&!zCKdr#Pp^K-dKC#MAh3dbg6 z&(|bCB6OM8pm7lb#~bG)<0>02Iy0({lfDl8U%=%kYYu;pTHfNYFTBMXl5 zMz!EFV*h~!#{$_-SHh=Hq-2 zxQMtoT4x%Om^i%2F~O&W8YeK!MMRY5nSy3wb9sBjXS`CO_9ZV97c#tXk>!Keu7GDN zk!q|FPVngUpmlAvCdzudbsT?26D96th+jO(@vEoOV;(}zYj$ovXQqkys6!1Q9|a@) zm@F~#6+jTsI2=7`J@>RSagY;@G{Z=*98Y=vU?|r!K^AP(F?`85d82tbLV0{oH3#|Tj)IA`!a@4{Y`N8F1cm^jXNT;Vt~EG3<1Y1*Wvj^bNZgfLu8ycL5hzzdvAZlWRn5iEU;07S z!&9ju%&NkRq^UbFD_X;^Ah>i-NU6k7!6XuPWwAcw8Kgz9l= zK>|lRU%Su=O;S(@ugS!Mpoc%K@Iz!Ob!1v9)ef?Qaw(hL4ET46v1nPCI_grzNy4); zi4L&hlAIW7ri7uw7xQMO8=Rm;(d#+L{d;PfG1M$yKJddj<|!%cYGy_?WLAc})aA}N zS(_Bv4=a|1BP5CFi7(RQT-rd(U1F9vZEh0neGZFoQr)s@O(&)Fck~?xCnt^E;i*4E zlMpad6q6U+u59HZ;P8r2ZglH`qMfnR!ihtj6ttqTLgmC#u$EoIo~F)4XQZAqdY-|H zRH&MSEjSEt?`5c%@RDih^7vTNVRoAUM@5!=Ox}v;_g{cQ#?^W7q;VP zoI?|eteC}2m3}KGk1>E$xR3Q3+{c`8sZLI+AT|f@ljT|ytT$Rl^!tG&i=4gu-~_Ec z&I#>a&j8hVInThDh=Op)ge?FV^fk&pTVz6340xQ(^wUfBa?-%bW1gilQg2)Ep5X~L zwj8wT*Ikv>BqP?Zx9;M|S6j8T=xl7c*9vL6Ik;lA)g zK+qU_AA%J$4l7x)9ZiUnVj!7MTWDT}xqFaDbXhj87wN*>W!!rTKwIH)v>RJqMrhm= z?{iCVf|peoZ|wnx^HhcB*n%X9Wu$nszJkO?ZM7^Z8Nc5z zwK@Kr8VKARL{gLt=>>(`5yyI^9u@5KSP}Lofid)2s^N>}>udEW!+g0?3R)XpoI)2Z zuo}|Z|7c&PzQkg56AVF>=VMWN3UZz?M0$(-{h?AEV5#p!PV70AiU%k;@R7<|B9^iB z=w%#SGHwi-HgPTL1_CULkjwy=jJ6H?*nB~5XvJ^s;`0>A;qUBVEi))SWTaa?6$Dj; zB-s|H#WW_PsXRxr(V68sgYmSnjcxgw+eaPGNR?rs-kH|AJ&8?kdI)PMHV5yyk;zcW zdhyg@kKQFWjc34~5KO*t1)~XZ?9}dOL&rzUs%8RYT*b9GZ>sH6J-kY{&`l zP=LhIqd5M}g~B3#AeQ1IFHt?H;T&PS#9Swh8||g* zr`VmxQ&*h2Jp`~lmRX_{ERRd!b^cG(P_ej?;IQeD)=lY)%EWuFI{W{S;+qT_n;C*9 zt`B$sX2_Tg5{H=|HWQ;5@LbpxiBy`d|Wc2?Iop|IE&`DMwLnjsXhtP?0{1ebAtUiKH zI4yK!vK0kW??ES7vDW?$onVEw4*UR2QHCmt;tZX_>LchB2i}L!3G)zJkpt4m`E$j6AFLZyU+<%2>*BJ1glR&r<{j>gHB+p&qF6? zQh4R*6+cxOi;{p&s4q0=C!v$7=Y8mu1LTv?DV*MiPUz=PL#MEMA3DM6v(QOSe}PW1 z4nGT>!mDl9Yv=^4PeZ40dLKH$>eJ9kR_{Y6IDvFO37x`D^7}BqvVzPeUg-VQSojPGR+V=me*Cp%WIw7oZcI-iJ=G z`aE=k)5p+>y@=o+K_`s5kD(K+J^`I#M1B%FdGG^LK7dXQWW?rwflkfqBj}`R{t!Af zSo;7vh1G}930|LoPT}wReIueX$5L{M0+aUM_G_o6X1;Iw0wOYx#tzE#8+KF1D%Az zt-7>>-qZCH|ANSZZRQ7R*h6^C!JKd80~>X9?}_9efR;Ec%gB(03*f!O(9h`Q>r1auS7SaUb_HYKXoh66=L3i zO-!ltPQzOQ$g(yjZ0ZG6U<-+2dH+V70K_`EShK7pu14bR0FLk(nmEHghD`xi94aGB z^c!))^7)N8c@OS4;smz(jX0rNej`qxG&7m?B?6>=BTnzYrna4aBTl~&CyeIbh*K=% z|35^WrXemg0XIFB_fca#_$CoOF%elkWzmD1UMnDpd6-~5-jZZ9Ck&H3W1dMo-*Bjj zI|ZE{$nyolm~a!gMG&SUvP7(nz6gcLL;$7%mU5rj_i%dp(FbYNBNTHH^fb{#VD_Z5 z+V}XnNl;BHZkE+ch_--OJ}xVUs-x|2J6%h?zV(Fq9=GJM2U{267rgl6OE=aH*ltbdD?&qht;^mFO5cz>twlWdcJb zOCcC4IYA&ilb>#2C}{6tDB?r-1Azo1^z<1F#WU}Po`Q2pWcYN}9=zTOJ%ttiwa;el zy&rl?Q1k0qds$wmtUaPb-@;HjLR>~GhJx33vi8F26nY}2!v^?r)}E}+p(j{zA_j-VZ%x;eRD-4@3XGti4Lr|9sXStlkSf!RqT-d+&vw2w#08 zYtNay3O$9Dp(nJ_4?|B0s(m$U&tro@J7w*`>g!p1VRaRHf)zXHYgv18x(+=N%lt;x zUU;2DPYJMoHES=Nu0l_+`g+!$tgb>&?CNi1?S<7j^aQJKWbL6ze?w1S$=dr3Jz0C} zH}te-?WyHI&f5D8J(;linXJ7EJspO)DYCn*ZtRAj2zBY&pa9^pA4Tht_Ub!iqKUS|Phcw}0xnu2l2?1fUSQ^6$*wM{0BS$hu8OI54f-aVB8!lPO3=B}`eWPgOt& zsAz(&$cb!MUNX(nOQlAixbXo210y&s_nqh&{b=Nbxk&R#5Zoh^hV43Quc1?=W|7pq z#GkSpNJb)26i$LCA>V%G35s*OfhTC}Q)mphNvh^e+THEOldM=I%Z;ZJ!4#7To)|e< zZC9Rrk+ibo##5G3ATi-K^UN%7r%>Car;=$)+;bJM26GFG*wTxIo?J`|dSZ3DEH?DS z-a@7=0##xHm4uL_90FYZgp-eL@Cp7qdU7K6%ssfyzo_MO30SZ(Nuf)r3z^yG%#6ZdK{cH&;8RGLOCs|`KTn;kqkH|BWj zFR43EnHsY6=9MS938Ou6&zWG!FL$1ttUYnB+%o&6Cl-agw#+@AlTsf{%dIC9pZC>m{hm-B4Zc4FkVq`$!(q&wx^U9NK_N=`=&9)0qo&d~o%3N349>25W>b4Ps5H_p^ zrYV=u*nLXFIXN#osnB#;yZ0+&FNflG+lfOQff$$Nwo@&CXv=LU2fuDR!OE09rf0wG zRCd{(u~(;EtPIshPEorC#p_O?P`^!zzT@1L@V-;NvU|GkR0r&S-^tz7_nolmOxp8^ z*zP;k)yDn4Q;pSr---V9b*C~a%?zN7*GZEbils<+ z3wGWcW5l6(*9nE@U8k&mNx65z*2FQM4KMAu>x9FwTU_osIT1X?T_=*VS<@MS?W$8P zU7lI4I)%@ct(W(j21bRNlkZ-e=EM-wy?m3OSh;Lqf^Pux8 zIoiXtJ>d{Gsaat37Rxtxp)e!wa&MN6g`EoT*pV&?x0PeY-lL{*noosAS|eo^xuGG!%Y$2vcDWa*AA%c&0WE<|vPNZs%QC(F6f~cT zhP~p10BdvTqTr?%D}SMr_;X2xN6lml|19i?abgNuWvcF zFG3-g3BfD*cxq}PIc*3lYPuu{x6dsy`%(p*eqobW1BFt3p*vANmV>~ivi5&r(=Tko zMyc)p3!8$Gw0k(vu_p_l{KBSR*rfIK3!8pnlNRAGY>Fda46~Go_=QdPx{CiNz@}6H ziUCgY+isx)==6F_D;`iR{J{qZG}N%a^9O?pKpF7?URXg4E-;WZ_yo+vQt}<3F^-gg z5i&0t>7+76Fq3EiFv2$%VGL%vA5aS#^)|ri1~YV`@)Rdnfsu=!APQx|lft%uChi)_ zi{L^+G@u~rpDGk9-I`CQSX0T_Pesmt>WY&R&|YLpDdI*=e1$BislG<0SY-HBjEu6z zDP(K(!wdHTN&4s#4}k(RU{g_$FVKTbnh-g-cD1_AO)KHUB1~W0gI_Qiw0h9|g zWjz^dVm75DBI3jWM(dgFx|34!)OOtoI4f9VXtLaO6;}tTb+mzZ7NSau>F$H6f!tVg}t!C!Q*|q z3O6}fJhRn_aI~tzUQ8*YO+2*K*UL&^AFD+ZYjV)f_4S;-DzJA1oATaPV9)oqOg)B@ zxaTadhuhaB#%}R$nw9#DG>t{hBvhb@1>mZmiF)3cbsh;W}1g4xRJ`Qmoh38_wbdd#m55&g3$&IFoR8h-0&R@cL6wAa_OExJ7m z>=~W7suICY)%UU#*t^3I11A)=Lq~H)n$)hrOo-AnKFWa7Vi0Df2zJ(~$X-$nI-OV1 zOXEh_p>>Nt>W27u9JoeO>dF)QwPHE7Yy`l8zpD znP3x3_*7(10$Op_*fZxrRb-q{PR5#?cVZ4}jXe)TLrt^Bo-2W~bg8k2gIx+E8cs%< z@{lEl*aHkyLQNhOd!Y!26UwZyr$-TjHTGncNRu~iUbGX>AEv@qDkA*1S`q2P<9?H^ylam8&E41f=#KX81+H)yG zBYK+U=kZR=u47E9f0hAv0y+#8g8ocKAgucMP233%X>u*LCo9F6#r86b2Avab#%j-q&0>3Yhap@lM&$Q=IZHl9pT_jir|>cSl%c6&d+}al z^vKEcNF&SeQ-tK%wb&kyxC-HjKnXteGFnRQWhS&r>|DZ6yrmV$*dUU@C!+u$%dOHL z1dmj$4cD6wXzFQhvb0pg=Q4XKJ$SAa;fsa@RaF&svL6XMF%K1XazL2mt55YRazPvxtp4{N18hY90tskG-_b6?C#d$Kb4gut@m zP{=My@QDS_h)YZ8Fwv(>f+R1ZB+ZDE#4{4wE7?qH@ukk5qHcxu4F9YBw?ccKQRhN? zF0#GQUd}eOh#6NEe^LYi!cu52(kK436xu@wboZ>Ymro;kpkUv?%5o85Wdy1R!Uz;^ zRh>PL?gXHq5SN%$_L!`_%3c$;Dtnp|#;@V*0w#>)ArdNH9w7ttrFx)v0LFj6RfD;B}%Uz7Hd__jx%=)Le{i9RtK zQkJZ}v}WB16pL#Eu1FeKlTVW%6-pg7UT@xaHXLinfe5!PZLdiwOzxd0RDWPoP6dIK zdoq-+uEIXB{HmliX|E_1c61jE0od~3RKvfSKi-0n6@(GISg{48oGwSS4O)$>!lB}*Is%flM^lBQn2KcWWf2La82>_2j(U((ra4)A(OKlw zY7j7>N!!bdA}N+{rR}j&3QCczVCE8rj});~>9L$4_9kG8ALJ#N8tXkyF({8!%}+E1 zM6I;FyeFEfm7Mq!v?^9kL-2yePE$_`r&!7CJ-ra6OW8saa7VZYt+&Tuvt*LBM-K~3 zL6Z~G$IcC!q8TZ18Woyi3dIrTipWwGEGKrVrdl0&43L~WQB@usjedzdl&30Yiwtb@ zB;+v}b)>F|ds2i`{HZwIAD=ZH&_X<=N!u}~&J(=XaaDNA4UG&OR>;K?0F~PtomBkZ zx1Ailg*x=I%M;PzG`^ zc`tSvyT$zk(xT7N$U#twgyKU1YPmh+J1P+T9vqZY_MWWw%=^c$V zb5Gr*LdZ1m47o{g+EVxYUF=k8kUWD;LjQxET)0BPtgj%ajGLKzFh=`51UHztC$bSX z(c>CMKHQ19xo7RM`gly(xP+5C1 z8QDrA*($Nulr?M5gvF7yHx?WdTDXbDU%-i`3pw#ag$(k{{4A5pbQlRpvL|iX$CGu< zvu+;tOd>vv(}Q1WW1rmRQvg~gA|dzgV#;&u@fzx&3)QoE;(CFS+cvDVWXQ2~jX<$x z$(f_qzT|QU369Yc3?!y<1%#r@*->|?$)G*RBfhngqToYuu6c-+s=DzRHLetL{Te#a zJ7&&JW5QNIQKD3At$e(|qxSp}LH>pfpxk*V!0E*2+!|5_I5Aj>KJkBn6DO%@hstD0 z-o{N}J!zPzu3r^pzESLME0;f`6g(h>!pEgcm=wP>>$cIf1p_;8stIi?KJe7D>lmD{ z(@|~j=6$Ddii*F&P8^*l>;(5vZr*q5Ww8{CKq|F53*y#&Cs=LRi8U)l>=afg2tDXm z*h#TA?BwqTpfa3j3XkO&`nu>{Kn9@{ou@uX+~b)IIi;;aPFYeSC*|a+4LKEQ15W+w z2Aq&Eu*lrZ#9ZC^@Isrg6cU1R2TNIzQ@^%CrzVM=us7H%N3{rbPoPr^ut6tP2BWY+ zr^ryy307aY?*yw8a$>Pc<11uv+KNRuH;F-U=ADs~loN1L_I%?B!{D3uom_eWPMkJT zr2w16rM_|BNnQa?3~mFb;H0nLcM2zgQ#cuhasmUKG^AqC#_G84o2kwPV-Ao zb^A}85riX8RI593`Op)8D(uwHY~V?$3Olj2w~7%_IH=u^?mNMp$=3GcL@4Y8E3uQj z1D$w8=#=hm(8-ZIAt$@L11I67c<17>;Pn3VeWw#}s$T_#9^y=N%k#Q|CM^Wozj@y& z_Q=iqP6<`5sA+!S$rB)`$s>G4O(<1=pQx#)f<^BF325>a<4wF9%;erbVWzCB6KD$S z9W?1cJAo$KUolhOI$_Gbr85>A*&Q|pYG z!fM4#O2rYnU?v)autFvXEZ*(DQxuvv@Cz`xiZ{gc&V47I+98t>y%T2Qj7F)SP?IOd zj+zj215M#ns7b>)s7bZ3qbAqaj+$J{8*HK;bDZ)Ua8iGskW*s+8*<{26*tZAI${4R z65G?zeIq9~>KE=iagH-9+;@@{Ap8gSonRH@)SONQs9AiUy6=?hdToGXNN+~Er^jx} zv+$4`r6Kn4fW#lc>d}3XI2{KamYZroo#Smbj?U;O0%8$adSPd@f)yqmz2-pLoN zL$_l*DW;S0^(mPlR+0)C^|wlv!AWpYC}xI3)IHU%;=re*7&v=$E+It+CEy8%vv0W! zkma{jIb&py&(p@_JyxU`=b^xzTpy#E#v8 z6OXVsw@MMX*nu|8QpJR}+&$*4B2K~qeL5e0;VCHT_v5%|3-pIE5r*4SZDJ-4OlD3R z58>w`VWoffY)hO8UDBjkB0{arOS43TA7hjfwO^2_N(?}oB_dES$;7OlNB2HR_K~L%t zVlJ~<1k=enFjAvR5;|A`%9%q0T)d~U% zpp2FWzJNhdV!UNMKsSQ*B_ssK6yRt)0}3~tMphSdd&EJcy~y0S7`-1j2xKG;{nW1RzB1|#q(D5 zhLBuK6+t4SjbP8ncv#{`yd$5Fa1f8^`btv>5B~g`EOOz!_vmgIh2! zBX#FNfb7t=FWtiGJ2)t;wt{({>hCP`>PA7aok-4w=km1=oPc>NYSB%r{uM}jEt29n5ZAWfP!x|Hu8+CsPR$JtVUB5?;oRZ|+(P0ha_4<-l z>^O>q@mugnp|;@Byuic;uiz1L$WZOY@-pgri;vjRyucI>KaO(Kr%tus0t)S zS=I$6q%zbJ%Nd@ju*FO+u_HJo?XDl$E-Q+F8)B(^NKF@JONbop{!3 zx^MTFBpE#7HCe5}BX#*6JrWjxgh#c!?edbnvr9~)D%i9A2p=gYv^9XlG!$tmn5RGG z102*Ue+H1;4ZQUp4vJ7Wagdz8f`c-2>}&>w1I?m&p@@URidoE5eT;*6?_C_k5pKdp zm>WjoP@#L8XETiCEMRw(1gMyKaVf7EM`CozPu%O~We#Fg<}uGw8R@@bGxhBy2y|c; z&0|?GPDB(Q@H1nMA^7i?ZpYmvrv}us6wXskop4YiFFik~o$c zHj;y(JhS0AtC#?CX>*ASkGz!q?$WHCS7ro2@_xpWRF-S;JTI+x@jN)0hDWo^^Bzn> zjk@;G!@0h*Utgk`zP`jdL#HH(C&46kflFo!Ce_R09G2bY!MR!MKCcwRV99d zsE@Ea+tpgVi%LMHaYv5#IFslgffaFwzChk{N1u+-_(y1s)HXwqpHoDmZQ zIr)u(V(f2MkQgeF(f9M{vL*@!<<`*8^5|G!_0^^D`cWPo#zJ6FIB~Er$yg8X)eUbL zRJw43LGucd7r#(8=BA&*L5-+b9mY@pl1Imjl}E=?z%v@uzK4U#_yfGc^KW@{G4-q) z4kuv{3+EILsx6+3f&&M!Y0#=W4&pf}=F!26&F3-jsk-6v;&8acdfqM|fkNYQ@M1&V zK=Qab-$0Ti4&os>Z8%8H3T44TOdw$42YGa8iOQo3fcZ%t9h`7BA@_(AO)%s-qf;{| zbX-0%7eHOcaW`U6GbluK$069jPy;{gOWylL9vw=T;4MC+u-bw`8O<#y)RY+&(zSwq zVLlf$gnFns{%IavFFQ{WJn_TC*r3q7f5iCwEsrj|SQ=m>O zLt!CU$x~K47E;acV5m;QTtZ@M0)~`nheF3CBsQ|ZXSsyr0Us#D56FbN+4JZitx!mH zQ+agA_?fL zNb_|AKnz$4H$RRz{u^0O_iOvLGOj>Ky{rXg366gCo0$OJ3eRawQq6OWrsJ zH2heR%-_wr;Z7X3`CV?oVe{o7SnZ)8&2vsN{l66nQdMk`psd<85R`oc^jP9RzJoKH z+8IgZnKzFxRRLqxc5);jpy33--~lgtA~C=CH<6 z-v>wCegkP@A78v(H@u+_dq_rx0$dlT8%QBpxWQB9-MZnyLhB7AmDtq{B#!w6bATl9 z+G0Q+(i`?E(|R+BeMGC-i}YA0oN*9tMHl3(W)S&U%X~M{J=0>wyG~V@cjZZUN5w^? zv7g<^PRyNmkpxo*Bet@oAWUj_G|0rjiJ^>_WXZp=pFlZzSORW1T7wdZA)kN_USrFU zQRYsG2id1stMms7$S1og;D@DuiUOfne6OCm$?4P{{uv?A9g-Uc^8XEi68%xEAg0QO zd#G#7fVR|8;dEm#=^w*_;YkPSF*k+~3yM`G90djstOgCI;cE)`Iltb2(}Qeb^PVe3 z@9RXmjhs*?@)M;Pc*X?F1qLwz<2n&)%wQ1QPuGb;F&MPKpuBg2L9ulMgXo|z2t9p* zLH)?76hqnCW&^15g}Sn@>qM{;2C;Q27=$o|gTz=ygZ5Gkp{+QG^-*bY-T_Wp90Mxl z!%_@+Y6C+3rZ6_XF#|`GyRZtSWn^aP6%gXMl14C>hXg`d3>y$~)TPO!wQ6;A3x6vEd^F~Hk|HT%LD>7AnR;w+c)wNeajLbz?E7=pFF zT#6x_1Vid}?PD}GoW4_vA%l0b6a%iX?M4xk0AagO~juUp5feD zZWP@t#lTZ55V|hK5Tvx-CgPku!Js1K?z}4EgHjAGxu77AEFi@@r5Jcf9OUV@;~-5{ zD3)T7l}Bp!l;~vnf|AFdAZH>WUxc!KLWwE&A&?N}1YwYmN-@x$`?^KnZWX}_5d=fA zOj4&70vd>;$jrDFd@IF}cUCZ@Dm{Urs1fD7R5WJ9(r_yo?C> z9)tW|DTeS84q+q=I25BAn>qV8MHaNOyS(M;S`k)_mf!}5!V1l=!5TOeD@?DCH#`G} zoN;`N>%Afkb{Fz-v*>fB7?RbqeMm_@`@JG4I4@Q>bh8u#u!i0HsZtEiaKMn7VFyF* zl)hAy&VH^G1IN)0gj{{+QVgIajtH}p69uAM@0VieiT$7y1B=8MP%K2IWBGv6T8d#T zI41OjgS2{5#14PbaQlZcQlDI=u}GO&mTLi_V5|)ZIcR;~BmvOP22Zd+JKZ6Poh~KT zyh_=(=WIcFYU2+uUKXCG3)4TbfTYe)j23dA5i zGV}XgZYc+E;1E$yveVfwS^O*jngZ8cP&H6AmQVr}1IqrR^C~&tJ3WPRyXLgD$It`@ z34sd!IC5zScTZ1$-nhqDvB72$_mg5e44ykPw5T-3s-v;0yI=vkQ7M zBP!}NRY`DJ4eutwh0|8YyI*}L363RD(Vw(gw_^oE99fDes6T>v^tPRAdAmbDkp!20yd}ZG zO3;%If(X8n1cx|+ou~_}Yjnu~J0mo|6!JbU1Es5+Ssw0*`_M0YFVfL^VG2!xYox;; zznBCEE1^!z389Y1P@s;g&$y4P7Xq##DeUPkdB|z|;bkCLZE+u2oh}3Q^e$l^HdjsW z680f*^UWljM#aK|$%a3{-mkNdDY+zA!< z;W2n(D&Pb`y|Jf5nN_?!rg-GtBsezlDG3fvVjfQ+4(p|ex68%j+f$cKm6J{qhh>uB zAgz%f^MX6{lZP&er?LV*p9I&4=kPntDhj0zJm}+-2=9`sx& zA6*6l=Ke4V4r_pA;L0l0lT{bcqbgxEzMKSyVa7RVq@LdG5g=`!Jp$x`9n8b})nwB} z%%a;PK&WO|?GYd~`5poa^N%kBffZDW4lrkC-KOX$5ERD(4~Nfuco`@{c|63SCGLqz z;??akkdqAUHwjJv6l+od#4cc-S!hc|g*vlbeE+W|!A(nCyGi3Xss#YVX~tS`i}|q; zZG1vtS)drzRo7g*pZW#Z-Fm>(otl0;9b4H9Cn3<=@Osp@rFGZI8NlZ)uQ)?PH! zE7n_p6aYPA1a5h*s*Bi}C~cl%l|~>Hqoq1eS#TA}$WsLV=0n$vL^GZM$lT2l2On*|Yg zVD9ZABFlU27(nKAJOcOF%YZ@1F>I!hJoM&Wc|rSpn-wlWID5l z;14lS*O5aBsg^}%9F5?e?HfkS$bxt{e*c1j;yiUz{}=m%i#Nk#G#Nc^3vJk}v7@5GL^uF$O7E+QR=JDV+~yiUa)x4F!M3urxp zX}QniK~n`*a9ZR;y9{9Rq9P&#o!9CqSRGGYF{;)O=xD8x!2$Z~#U(7TzWmXk1p2mqR$Ugyq7pRriFjIo+mEnhMQy;6Vf7!tlHOu9E z|5J)e)TIL~aSP^Y9AlQ_SdO*sTF|D?cZ6co7wCdkAP_UZ?S9}GP}0nyLQZ7lHVzOs z>XYJ@U3oe{3szPP0L>*MA!*VQJI`Ro%hwVQEC;bh) z6%TAOzD4nM$pCNOOF9OH+$scuLN*$}3Ce>Rg;H?a3c&z<$srOe(6jjP7|oPn*HK)p zfyENabU=c25wS8r!QrBIgbdGIJn+(p*(|)z{Z>aLlF%H;_90G7pe=Kf_r$V!4P+p? z7dJk=G$o&2hQQp3cB#AGnPmWyx;qOeKF8^6L=Y10q)SOt5$)b6C(lC#cI%;QKGj-g zty^ofd$+_*%dJEc7rYNayE+uqih$ENBp6XL;anlTr%>pj~o& zgLa=Cg%jFkC-|1b&WxTe&hf{j7W=)ikv`g?)7puw{sr%5^*QQH>FMHJD5r~azx6}# z(2V5McfP~LGOP^J0=W1splspO_PXH8zOeo)g*4$s)CS24MOwaLY?3DlbiegO&L1!y ziyfyQSoybp$SH)1CMDQpSe4V+n({2ICU|5fkCdE`Ce1ujRSs_*ifVqm__uzDp6TEE zAxkMmtP4(~EsK=(!I2j6w|)rAhLvPW z=qw|j)h}r#j+Wx>%+cTaA()zEM$Ru7qeI4bxExO7c>iD556Rt8!c7G{W1@@40J-;K z+cM-iJT>h}(kl34u83eKsFpnm2si!XH2gZ(2MQkTfhN zZsV!PT)4yB=R?zi3!bSjP@$`Y4G>;0fv7Z}6fdu5fLzI-fReJi=G`=;(4xXm(qPknZb7RCK+39DU}RS<;t4Mg z(ijhuFG^$l@RUMx{BQw~1+?Dh_BxmmVCOT&25Ud@V*p*?Z_HjO`G%)ujqfeM8mwvJ zDi|C*7|`myrUXqvpGHK*nm8-$EYrp(Bh>HDuB=3eg;od&jXMpHw9)ZNgy7}X43T~1 z2@s=f#Ci<1Z;|B^R|Lj>ZdrH+fv0_qXt+L-WbLN2JiL6&tZFUHr#4OkvK#Fc{3Oo% zr_*+swD>&`i52#myNj&WOq+|w`;12a>Vw%VNG>ZP68Q7UTBk20K=Pe~;VPa@E8dIy0T zS+NS|9mb`CWrm9F%Lw-!#!xKW;w-aNw+fbFwdL=!L-zDtdVb2^jXK`0F!Buc-Tpx{ z-Iw4ZD_F8X^+d9E&0}2hcT2PHml(_D+%GZm+(4jN{-3X4X$SXPjHnz^YnMxm?!Y~P z7Ybv=_N0s)+qC>$;e_KD}+Pg{v7*Z5}sZgr5S=OsoRZ3<;J3R(dr zVmgMuAAwgdFiAK9ukU{enuOsG5a9s-SZ@<9d5@M6`b^acCvy$Y5wkg;PJ25m;|*!}(@r#Btk?=RL^?e`a1xBK-) zcWO$u&=~?oso0XbCda4DvX8)sOX9BYpk!yP)oeH@%iYB~351p@1L-}MQWTQjL7*u0 zk1JRLQ`u%202}0-xKY6}$HQkUSf;!0Rj}lI+6%WB+}I1Z-jgM`!C*hN_>=ZLWWdFo-aSes4&V(MrPUmEX{hWl5bJzS%89H zRkE6a390Ifk$QQsXyUu%-N;Y2bjCs5i$uG27))EDJF>}DL> zP6tcjEt-Nui`I|{-gV}=7or3SLl$ghtoXbDYUL>rI+PG*U=1Tpg9_U1M2x6#$66TLroXX1pZISQbu2`Wp%XyKGU3F(6_dS=vUYnpDZ>I zs;z`s11qay4ngS0%SiKOnsPvC65TiMya$Oheg9)QlSo;GHZn@K&s|AHMuhCpr>rk zgq*Cdx-!Z`@CoM3i)vxd(_l{D+aPBJ;P2G!>{WLKN*qpDN6waD?9A? zW`YjNx-&|%@Um`>I{K^?rO#qmqtn2%rEl)Z7ht0%+0WUPGHB*!dg_5a<)l2jOXSm|=8QX;V9!L?ut&3R1w$omu+vH0 zaHpe;I=BxM2=J6}!kw%qkGDttVud>;pc-ejP$wSBRxQ-IKf_MOC+De?S$9W+-Z*l} z4#HF88Q|(e0kYj|PpEkF6uqnRhJl@)U>q^ahZ7u4C|t8a({t!hM6D=W$xx?n!=15u z^cQLm74GzeLcjavgt~8jL0wA0pvmS6?nF^s0nc!cUT@@?9vAY26=z13K0O6Lod-{y zrDmunAg0VxGt@<_akGX$-Ml_kP}9q!^-vQSpX>)8v3uGBO!vT=o`pJnpfP<8)`mYb zgTbF1Ni?kX@evd_jIe^L1Ui%gpd3KN7cwjx{+;}Fbc|1oQABbY-jqJzbSp z!dtb_@M0?_4Hd77wKvR6%w7%hbUFs~gpnDOYFk(EQ7n{20&kQW0SlfHe3~q$4<^^3 z13rBTFOsz#m58&T@WO^Y<2Yb{uH`~O6W7sCdW_;;>V+!jiam{7TwzZu8tnx`U0Yo+ zG`)MyI_B_uunc{DJwe65!FK77w=igxKmE3!HUkXV3cevkzy!j z*a})b!JV8%C*bLz9R)*qN*lb-?uyvOPS1R>qS4 zbD0pX5Kyq*9L*-Xo`%F%f&J3|!v)IRq-u^SdWF(t;sbB5YkaVWmDK&dOUT zquRMRV%R3>NYuNaruHeCiefoD#ScPxH7lXF^0xttrLZ(LRy}6XfXBw``zqr-`qlw4xd2JWv1Q00Wo0RO*F{rGQiHXuAso-e?d`KSP7^ zYBZRmY5Q&jTlDj2Fr1uz?Nv_35Dl`bMpQFLV zE=7YJ33x}7LV;XFlIkSeqL4X&(4e=`VCp7`24VG6Gzc#ZV$C9y_)pLvK#MbQltY+N zNN4psXb=Ot&|u&pjvf!dZ=ykX6&i#W+x#bJ5LO&}u@!!Z2H{j_F!+#K)pqcEXb@Ig z9MV%CieHdu)yN4@w2#nWf{fc2B)*LXBUR2qwfcVo4d!h7MT6y4Kmmgc9)8gvN5(H2 zSQp)d{D7~(M+i3+ zt`lnsG{tZS);d2VpLk&pMp)QuTMf2|I1aD{yI4e6(mDbxuw&n2jQFyyA3amSg3Jh? zUuSq?DmWbgvDl@+pO`YvViH?}wUPqLL{lnU^o6&Wd!Bek=!{moic7G?#D3z+AXi^a7D-&kjw*_!S8|G>*)IXa$zDINYw!e?r@T3V^_R>j(u;G0eq zqDfoyjRkOyzOhUNHsY<0z7^70;1=`bBU|td>>}-*gwG%_QDDEip)Hnkpwx)HnO|N6 zcS_KfZX>wgfwnY_gSPs$HTKq|CH7XFm~lqf`i3|0-Mn{Wnh+XezIInR|%gXEd^T_=)%gEzZ+)eKI#@zpmkd{a1Iq=5PKLy_6N!+lOQ+~!;&iXm>CYn7bd}8%)Sj%+>1=q@qyt!Hk zpRAF$z>_WVW^&PvwfdPY@}^Xr$e&F3?7*82&NI}K^!0?#V4MwS*|k0B=0Y@9cI(Qa z>lcTYR}RIUmm%+0N}#oXL9d(6%J4FVTy(CzbA4pHh?37<)qSfXx>Q%*h3$OQS+ zmZX-SK3SgQ;da7jy8HQ0mUA4voA4RaKS$UWb5mJ=GvO11aYI_#UEfXkgx3~%({#|< zt)P~Hw_zpF$`+z1!@Ttc&_y4%NVQD+H*@pwTq zM%wr4DR>=EU304Tc<*ShLSdYU6P?}p!E}+KXeAY4SmBPkgGL;V(cowxD(q}zei$7p z2GzXY8}>pT=Dt!x+M3;j!KXA*8o)pporBX)KBd8OGYrPA zFJRV7&@dRwK-%x;1b;s#IDpw(BPF%0u`9fQ+;VIO14e$4Jf}%1`YzE!4FCfrlNRF}7 zJv`uOWkZ&cK%6h?9A6cl-Le}z)rDLdMF%eX{hVNKO>m+vH}X6gH+;sr*Q6+X1{5?U zvi1VBuYXDdRt3;tWm073#SFE&$tOP34#is1PN}R&Ef~Q5L}x4uWx`x2FS+Opdx;r_ zhWEM5Gi(XoG}&sRvzVQpm2P#j#~{E8YZcRr#li~l_Kd8c;YO5|=**qH!?Q47;TaZ# ztQLIcsso8&P5ypP(ETSUNMI+akr`6&^I(OF(*B2(KdlTj4RPHg+Um){*H+JGkYdrt z(lBfx#I>di?y9yM6DH&8jkRM;*Tv7D_iX5jk+vG{DZ|E?3(N6Vy-Gfie<~{ z&YT35k*3Hs3{85`yR(AcMF1B*vjpgH!)O<~8_CyqYp?}vM>|~$Kc1_6VG1aOw;1P^ zAK*Y=2(Gv==$3|A2kfL-fd&%$2FBL}@Q-?6KqA^gihTM(aezRw26=eLO8kXJp;J3b ztBtuo4hNh&1m&2rvF1-hlJIDls+>8_my^S)C|?d^Qxo>411Yf3sAzF| zBbPQ%{<$j%@Gi)k=iS{GFcDKi?&`f@G^t1>5Fw&@6R5M$Sp1PYj+~((D(l+hX?l{imur5}5lwlhSR?#U z%;5wqw*H4MkxSp!;Vj4}(kq49y{2Q6K`l>?M*$R8K~e6^5oItrdy?{ADb$QAee;0w z2uKQbt`Wsk!HO?W4u2A4bMZvv_2_)$y{f3HH-q)Fg+LSjSmUJN^_+){3#E`u zNA~)X8w@ppYnX9y%O!z}?e6p{IepLPbkGUZCSt@nYl)vbDY|1LCGGPJb7?@EKe>Di zd}a**d@U*Epw|aw@H5<*V4D?P%T7NKoP5tp!g{cYw%rj2hC&8ve8{K{qF+jYBZ*KB z=JJD){Aw*O(sDycoCm!BikUFITpmwCp!5#6tEmJXJB58Unebr}Y@HodSS zV(%hWI=W2d&PeI|$w;x694g1tI0oYhCelH|DD`mjdj+qvob<5e6}rUXh3^gz!l&FL z-O%6NBh2k5+#@bR++82IN9gOv?vb$CN)@Tn-*J!NWZ-X3|ZIeMZ+yMilE7g15bTcHHtj&@rK}Nh8LSFDL|idkHG5W9*H-^lc6Hk zPRXa-BRE4&?h#&OJnB9SYwh#y5m*^tR@WP|j)@JWE}WtDE-}N|8>!o0G3yL^P76=P zgscn7LBnWfVDvesvMcJ?vte$AJ zl@zMh8M8`JO`x`-XBmeZ5*T#)aaaL8B%*u49V*ydlB)~~& zU_3Gpw?}f|*0s;c*u?#_0h`YFN7#g57^19bE|{Tp{vY<2y3vijjVyx%7P2kOulMsr&Z?esRz_C6)#U@wXt2BcTi=W? zGb1wM%{V3h#!tss3}lxj;K|Rk&VT-Aol)h189H#X0S}|-tHUieU|Wj5)Ydq*-pam| zl`?<4gTh4KPl%D3uG&pPsvcqR9&$JV51vPRBOkqXYONkX^+ajsI8gnK>VX^7CtiHQ zX5%nVUAV`4bUmM9({l3JjUramaA81?CyaZv7%K2L(rd}7D}BwzLekxrj1v!K$-Pz6 zr2tCHGjI+te2^o|eo!YaKN3q>iE0g`xzT-7O_$24h~>H^XV$uD8(!CqV-3MlcGPWc zpAR;?%;%o7a^b*33WA8B4!5G-w^_M7W8%}S+~>0m^LKh42@B9-$RD$E3)4=sa-WYj zC=5wGgnoy`dJO%t;txj~3YZ^5zve?r>EU!!Ook12hZ|*#CzUBokkzbQD8Y`G)Y>2` z_hwihvT}7ftGi#0DX%q<-w!u3;_-BI^K3nwZmM`3QME->9e6&NmFp@z9&Sc}3A#Sa#s`&o-<$WQOhM)G?BP zAC5S;V_jCN9A@|xz9%&f&1-@Q(oL8EBEP)^L)e+{GyP5wqYIZ zaI~#;z^P*i&W7&?9IY*;8Be2@R4h9A#23Pv@<8RwhFtlUb}y)S;$eQ0{^ zJ6XBorICXR8s*e}pQrnYtlYBm_gT4RJpSKo!#d8EoFR0<>nJ3I!!F@3R(J3OhmlP! zJlo6v{%#LEsGx_OClbj(c&Q7@lq>rEpbSp>cY`wJ z!M=H@3luXqyV}fyGPev{muDK3sd0ZiD1)bsm8ePhK8GMPR*Q$u0gEEqe zf-=zJGz;>*;a0@$0k?Y4fO|nuMiFKR8@v8g*0F9^4=R@mU$Nkuax9@)=vE{P1g0gA z1VFB~KE(zAY(bwVj`gBQBQRBg=mFzW=$@^lM_J+FZQsEqE!?P3%P7;+rQ-qMb_7A> z#u20s@#cr5@f__GMFaH-q=LXH$4zv^W%g z4Bi)|2HqDXIF4{W#x90bJ;QrRb@0BHYF>1wfF?zEh(c3zC#8qb1zMIdJ;pA;*iW$w z1Y57}UF?GGEUAa!1-e9955WuG^NB@wjLPVRj@HNM#Sr6XcrUFE-rs^3nzhH^1y2~( z6TB}t|Rn{npM7 zU0z!0q1`28#Ov+Zr4Bf}^F4x55S%k>1)Y(IyZ$E9#uzq5cSY*M@E%G%yf0D@5sVv{ zzl&hpo_x>nG!aF{s5<3>-cN$)wC1E!+Y>2@Tkn%L;S)v zw?;H@%%bI0MY^99VN+Pd8gGm4pk+RP{qiAzq1-(NFot*JF@iC6!w6tN3IkPH8jk@C z{jdZaan(BnVc!_mLj*%%fwy<@3*h31;C-o^@9_(kUQ+k*3#M{|_XXYGxn+SdI-!~x zQ1LFgQ^LAaUSk&{sgFnh$=~y5HjY9=5{+pvbtAJ_fd>W`I9L$)tCUCayH_+LSLGGc zTj8^U6g;UgQ~j>M5>Gakkobg%*=R5>mK5p|p17KUX_WkG>_Ew`+$LR{72B~&PCUft zd^Y@^%8;3TJmIqp09;<9t60Mu^lo~Z#C4Mz!dPPM!dPq-J|_~> zQK}ZKEHe=e?opoL`n18@Na;}F@`Z76*A4hX>XzDNw814R5YMMZjDkLdjEB!tn8fD` z*4Gol@O9m?PprLSyVW=Gc@~lY=bsWb}$CNUvJq$>@~$P&6kUcDX)Kdk5;~ z1{V~hugwDN15Wxxy&^w&QtMiP-h&(uysq3NtGh0hJ5I2!g?UAehxt^{7Xw6A2@lM~ zEO`3>>7fI;`wJ30Jyn*~_b!$7Na(9Us4Oc^Z%_4dwA+cRvj#jGT?<12 zZ%-gLM9ow~R>|L?a6I=4=y}<=L*-v8jyv*-YW*S1*HmO4MTbDxKFmv5y}-^iGgx z_a1uCF}Y}UFQ&TTqaOOA^aSB6kp`fsdi)XykJ>RyQIA?B1!r{ zvRx|45ExrGS6C2nwx4vRh;lrxQyq=ZST)4@h_@SnT?N8OH$qJYgir!-QNOaUOO?=| zPEXe|-=|83FNgw`q_rAA!Tz-MhSX z;qdTU-C_p_LfDkJ*o->tUEacT2PE4AwBS-nNZ`ol?cx%~^Clp|E;o<7{AZFf` ztkod~I;M5`015R`i8V8-teAR$$nwsa;-EVDxR>gI9o@%|hzt)xB;EKeZ(gXg7mG~FUA`<#Veb|PINa}XGWP*oQ1n9=wM@i?{-jo3maWs1H{<2n0i6f1$4k>OS;U5JJCUjC00yF!-H|4B2;ph(LX|yjZ?gSr&Am|g(w&M7$*;k zHHlNamP)61xx4NX`rk#={IWsRka|eyFIoQpq6UsUA?iwX{xPRG0y>=H&_Ysm_^3C! zoEMq;gs6G&gs2N+kD8oYCpvd?;uL4=7NUj{`r&&*KPp5@xUEJioGuX*jDuP`#p?x~ z;^?hUA!?BL8$^wzL?|nJjnC&!@f!DVibIOih0X|PH_drLHTF*NA~l@ig|gqddU%GY zdG-cTL(8@YYNj7?iUXB~Qyd{fX}%`)f5s^et>F|e;lIo3*FLa8?y~xaBeZvlLuw%E z+L3oz{i^v-ImP+eK-7S|2vPIHxl^1m8UWUznjq>`&I|hWOPu1bh`P}6hY>X)R?85b z*P&2`E*x*+WS)pynIzigk2gpcb;t9{-n83#Nf$=>ee?^C<$+&F*tqmky4Et7T7*Yb z08$v7H7xdUx{|g@Kx{@!I>Ra2S{PRfZKU|R73-f#_b~j z1Y!;hvhWkfqry+BC1H5ofH5$Z-@n1|8xrH?mvofl@#VVA!Zd#B(JMXLD(jUlPbqI* zt3X^^!fB)c)V){Q5&6<5z0##8A3C}Hm{+=-{KG$Q-%l~#|!qu485ln&O|J$t3goW7Qi&b-pw%3{}m>G@ZTJW3-Xgm!cJ9Z;WfHK_1?|P|Oy$^Y*%LP5nBmWqtmhTlYb6B5AG%29i zB$|{;yU!ypZS|Qva-sjHFf~7W!qnv?`2?m$hdyCyDSZl44|QzXlLwNY-JQ#Jz!Fck z&zQQNJYZ^<{WF-l5at7>E=oUusqehh0Cv31-z#Ntq7HDrOf-3U=RVP-DE$zoE|V^% zu2aMhVQTOK!2fE4BA8HMbXe9( zZ^lCM=+R5P!qh`8qZ;qC#z!9c_?cQx4+-$cZ1ns4R0phm^-?1xRSwSgNuwKAtOAY8 z?Zq?ud$OfGE*6kAoa_6Qprfn97N~TV<%#ZP@PnOXxLv(^oq&?JReTDcD|yUg3iH;( z$C+RF0obsgO68Z`8q|tN^xhRB;T2C!0u;Ew;{j@g&~JRppuJb$@&h>4wT#BmMUCf! zh9d%4vr!yx$sij`XoBFl1V|LnLPTXVTuChI4H; z10#o3y2vvc>L3lUu>xPdv>)e^OSLI54l=>bj^tS- zHr87jZ=dXqeAg3i04qu)w+~7}2X(8VTVCRGXT!}Z+tWx3Ch}n~UtJuh^0tBx$e664 z57_wvUaZWfZFS4R5|TL&8o_@&@;SjL7t@&wpNyXsh^d3MAchf$R>x(Ez*h#y>5wN3 z1YA@2bvV2>-;7wi+@tn@MzF#+_*#vj!LQ&R2#a4q;*3yi&NqJyz%rZxU;&@B z02YAvpD%zlP~y2{GY%$3$rVU&K56V?TJw5+fDg+ULE-hi5Zp(g-5Vb(w160S-306J z0ZNB6v83wC$nWZzXIY+|E7i7y1gWbhn(nDGb8Lupp&kTrqt~dD*t>Lq}?}-OT(*~=9 zW%WAcXM0u~IEJma2ntdM-Z5fiu<(rIipLEm zTkN&>9O+H;o>S?im0iOCj+Wv04p`%xPj~2wTg;rdkco9=7w^1@nL`WgZy6|~kQsHTD#Yrl_~*ONSEUZjS<@-=2&v&&=VMd}IdLF!X6^P=?>Gv{3KvpGYB zCtll2tI_dA|Np-^0|`h~=`V~UWR1I$jI+vEE3gL|GZ(XJ-Fd);jAd?3yC!;FPQ{~k z*E8yMv>)IvBrFVsSZ=qg4cOV4gusti_ZW!EL!x~{spl3UAd17t8q_YQA9&!FR3}0K zH586I?F++@5h@_iHI3HkU4^{$8tJ}Adfw>?Iw&_qm3NNrPG$+;g6!Kus~>@SZV1cx z%Uk~Bc^}FstXuazmlom(0_uPYEv8Tc%erDOQ2fi%84Jl;( zXDfgY1IC}N0IJwENwU<^8h?7dj^y**yx7`LfU&g1Lz3mt8}BArLh7BuB?wiLWg)m_ zfLn*($e%P*N5xF|x7yhoh#tNRGzpPm%(e!{3RvOb#W0RR(4j z_^y7w(JT>w$(8cMKjaBYxZw$Yz;7pKLzB-m@YYMAB;~9Z{ zS8Z#ZjSogCmFsADs-9FowR$pKg$NbN0`;>aq66R9LY3%_>OUGUE=)H(x}3|s43Dpg z^C}9=No17i@StvT@%%razrNv$8|yqQxcc3B2=q*_V2!=Qg7Dx|&O`X{#(4-WH@ zc~{(n^ROI>KMQWe`wyL6)h|4IXbbhT;6{sNZu8Q4$Sb3W9gsDO*a3MQ&ECa={P2TV z@S)%aeK+bpKzXB298bnYhCIPzhmo;S`uP4W+lqYW zlpO1>YIfz`%9{Z<%E`nhE?V+JjfFf0DB&IbPXbRti|))v5b2L@Hx$sO`2|G|L7xKpmiVpV!mXS1##-(Lka`DqXJgJH!t(OsS{@E%7H(tiUjaaV1CE2m{)Wy*27AS9 zxb0v*zE(?G_!KW$yuzv>S>q(~=&|LadCd1V-wLZEF@ngK-a|D%M5LP6ybs%;^d{yz zgKa!}54J(doQmN^v_ZzFU3e9={MpUZE=C{dJyfgpvzuqsd+4VN58H_O`EbmaUJ$6` z_`WT?D_BIcpwNY$cd^qyU3mWqyYP&lfnRLrsb3N9?g(JjGtfy{a}`nFo%|O7oCZt4 zkX4xPLVEeBsFVtD8yaeM;Gjz6!UCMOIu8(ui|&}}4nF#RTP|RHhj(l>SUz`5f$2j&BYKG&g5TBX z>dCfzSBOiEn>OR7l(CD=IuZfljPgpsO3|psFr-eL$_1vIN}q-9rjrR?LNJE3x6Z`u z|3Xq^{1aH^0e^AOW$mj$wC3L56e4hdA_8j=>PdOYc(OCkuAa>5W_Q=a%MCks9aH$8 z<{SS>wOb^S*S>c?p#2NqVQL}=eNQ9;nss7x6q2vTXzrS$Knclq%>1ofM*I&CbTl!& zQD4A+^2vi!L}Jc;wyv{E~>hg$uiyVZaXG2 zz|hlVYBf6#5l$R<{o(G^6HtTL3{X@4pdSJ?kSb799*!RZH3f4Ne0?h3$j$@g=B35- z=k9wcVju2KjoZ(iff)x389+(&v z-hc0Vshm7gT6yqZV9!B41@2<jE?i zEGu=Hn@#wsfC39Aj$$!6+yZ}n<}#~=IZJc|IJzBCCCB{K+KB`*RGn>^J;1L z_Hi#;tcPhBY+tdN8T@<+g^`)|5(*Phl&z%VuMmaZfM382O`D}6aJV6eF^OkP;Uu*D zwEo4s8NC|X@e`QhMv4?Jv_JZ*3K1nv(`jeIQdP>oPs}V8)?nseGR*FtRR~G{#-;M$ z1Vo~x@e@<% zC3x?~3s;?;{u5IWeoztKy7T_T6lH0_f*^!{(KJ-_(eR$lfwZRDL}F}&30U7bMtXPR+Bso@C}pjdF|Mpnck9O z&l62~p$X63mC>TLEdVqw65j1!@^fzR0{cH)7Iieozks=w4p2!{g1=&Xi~piG;f;Hu zpagCp0DVD;P2C6M?*@?ARs|aW1`Rnc>{P)qAj94!zLhR*N;v?ia*iAiF+9RKUj5qC*nUbWeR4f`zU$$A6C@?{OZHWDYJMAq~PSwi?OW3bT{ZpR*&Q7Cv{>ZWe`iy z_a8S<)uM`?h!5bw!$h&M4wfDJ#0$-9^T9?^Z27Ks^|m49M?KT*)LWXOdg2`@^`x8z z{EkBW+I>iZHzwiS!Nk=Om2}$*BxscCf}5%cxfwhB5tVJEY1gr(iDn~19A5*28=ZwV z==w@lpoV=Iz=M$vts7?3yV(65y#z)y;Hm}HBv(>#g$Ee-cXz`tSayy@=Wkf{`t$Fg z1oYX|RXd=}twnc)F&NdR`snNB^}Y@soT@lXHyCb+I@p>@fl%9EfbU95%;b_+w8ufY zu+?44P-5i+<14=&vBni#^mIQ?wiOEEC2Db4a=bD}z58`*Re4}I#9nnY_&MN3u?hpl z-Bd7!H0X-0@X}FqK^T%kLJyu0+7_B(aw0YdiGRB;$i~s_`tk(U8Qg;H{9aI0Yk~~i zmIN$SD|g@^@md2Nu8AEVxbxjiQ?05c-uMwLW_Z{H0s<(JXhc8D?T&z-008$9bMDI-82@M1>_|@3`Erb zu(NAbk*Qc4Q`xxP{1)x2Uf6<UVk*@eD@)5&dsXV7K} z$|V)vr3#oZ9nYLFQB$HNmAq28-+cXgpx2Q}I>`E}y8yW~ispnlf{Yb7s1kfKT0gi1 zB_}mGhCP-*?c@^p=if;RDXQDkc#U?()o6hkpDQhmF}VL+0$`i7(|w9yJw9#mRD|gRIO@x zsV)+;D4|YewcMrTTqM;Yledjbbt1>o*vc0!DV`9HHPqgrQut^laY(0($_l|)x zZinR7;SCn}rEeHd%KFu_+Pee_@UxC}tEf4n-Y8}+00Ho^a0bOoSE!|B5!#>{#xehK z#~SlT)r~RIP;jgp3s6mCYPv|C3qbH?h~QRdwu7__iSyr=M3f?=5azZ3=NEa~c&e;r zvT2=r&OX$G1*MScLDee2rV7pZMjhJZn+rI^ZFI)Qc-KMK0a$9{e35Pk#J$e7Y!%p+ zk?hi{ieTBU*2h#qw1qD9BXbSpbzuml__j&exZ`3tP{B~uD%je#I2gQOd2H_5lIC<) zW&@N^VJ;+ExC&(%(WcIs%7{4HF=9O#q)$c{|q;{F$AbZpMpd_b_9Q%x&*;5|FCslq~TcUbVUO4YWA5uHTF#U=N>^LSj4 zn+m3{X_-9!ysaDhaR>paX+s5>y;Qox4ebiBCg)O=h@d;Ps2j**ZuFgE0csO$D(A_? ztj47bim2<5?~8iXg#$ACgjG@&#tK}jw+hd81L=_mT>e|0Tq_Tl`5pyjt^v2fzU&Lu z>o#(S#5E3}8~xv+-y@ z3| z?b#k3P?(&<>{Xyd@#N^BU^gs`n!^Y50zj*a$IH)HdM=V;_{2dgRgxk-@dytX;RqLV zGyqxgghENb!Oh7aJ++!cGh=H{incKD{zo1y)fSvXD_*=O{tP^Gmtin8S#O{G4oc5& znS4^7REbw}S}RF0qJ9p+DZV@eZ`Fj98*=3%il{n>v94g+Vav>e0O*zCJ#(Hd14ZnW zkUB4+FV%V2+4JMS#C#XJ1nZOJ6>pWUS8yJY%qs`QHAPe5#{FMLp<`XDno;?w(4?L6O3$AEkMo;si34iLx z)O)U-i48Myld&;{$B8kz$wJkLpFZp2J&%q@Z^+d&o>$(FJg>Y2ALlWa?_s{e2;O_7 zH<;mVF-Vqs)k7bLN0lawfs7qU_T}dw*ilU%eZq;p96iS>@kT9h+cmO(!se7n!2Y^S z^<-AiP0wvD12*)suX~W$pL>7-zrtZuu^_dY7q0VdbZ}uE9KfWc^5k)ZXp`R|L>~GT zm}{NK%P+u9d9`Vn2<{d(D-SpUGBaoo0|{KLeqoLgOW~fSMRgr;^+$2JbDc_24#))C z9F1~Rd8;lc{N{<9b(BxBEynpy9S5X=*5gPS0&D3Y-0u|=bAi0FX7odcI_h#LBRn-W z&gAaI(}L2r96M;WJ!);-eWRMI{!GFWYkbN>21+3Pxf~y}LA_n%Vgx(?J0l*sMQ2AQ zsOXj+XZ5Rk%br%F7|k<5;cnKJqaM2omt%zm`CYZ$@fo|%BTw}*;+2k#2w~<5&%lQBI3Eml6(Q@@T|cy{ zc+d0<*ra!d|AM#1fQFe_jGLbezZxdv7rS5{jFl)4SPq!ja49L658sj?g()4`HA9j6U@~Mj?;8#=cLL~V z&KRVbVd2a9rD}Ke^(L2hRR(bfrkjZcx^)YE!y{;6ad+>p^LcU{&L=Yk4ji6(|L^0bBrt(OQ z4eYCjxGFhEE}s5`x4I79fWWae?{zJd5FrsVl-LRaRu}YKlr*3!=!R7=reW1wx*jY6 zqG+bv$`T+pzxzc7KQoF^sjGguJsV1ZNd=Ri_i-eextnJ(bFyos0hPD4?m`X!S*+Wb3#nk5a^MI*Sb%QyK0oHfl_kDUI+J zXaQI&t>gs~a0GN+Ui~wP?&osHk_gGw@?(rxbH8sz5c`Oc*7k7#4Enp-yAdJ|qypNG zxB&-XIjb7gY5zQRZPK&Ndl^ujdg0)1ocod6a+sipsS;p7Gg{9|k-4#eqamS((DHSm zr~nIcgiTj+J0ta$Z^hfv_bPAEvp zb=lnEL*QjDcws$JkCrIl_&}kQ&3$91phI2|$1y4C`IeHm!<2fXtejpWx5f08JDGf5 z6^Dd?ZmUzb_2`E&ri#Qd$V<6apNt|5epF?$1aY&`IJgdv3|~hjBb}V6-TyP*y0UNC zwng~9bM?_4Dp|2TgbxoZIuIZ*59`SuGJMFQ^KTgB2I81nfTfxvu}M6wAHflPd$xGI zM$05Yg&9w*HfK|OeIf*CU+OwYh+l`V`ews=TA)`*p}I!S0KBdGC)TOfP!k4a@L3r! z=sc+qIPt7z@KZe~qUU)qROk$LvCU!E3uHv!Act~vM7IlRpsjhJp!ut36UV2@PxRdi zJ`7N;Tl%V2msP99&{HB=oOp_xn1sXg9?xC5}DS zSrXO9#X}lCypV$s{vUW$mPb1?EDv;^Ou@~991G`qCMcM}H#~u`{kbCkc^!w+clABW zj!-%_f)Ee+Wyd;6n{emKshpuACjqCGD1hE&+=?4EsX`pQ#kebi0Zc9Mhg#K5$)*~y z^&*5xQrHNc7E4TKW2zVj{Af%Sv~YAo)&)^k$W#_~xeeX#ba`ahyBK-aixMz1U5p!L3?(aYcWiDSd zd9?~0+=sWEs0s{UM)86UpCN95;mWorr@TCs)|Po;m`0vZIbUPbm8vbXUmm0K9UDdx zLm)n^Nj2Wk>}y9@5zm{(3hTTn+`xB(gr5CuHGy*cfAfuXG%J%GfRu}21eyiX6_LHqw;oE?#4G?M`mq(RUsch z4+miVFwWy{V&g%@bsi_C2EU({8tr9Pe2l%f2Tx!Kjry@&XPF=Lpu-`vvV+%#3E;m(6zr3dr`2L>Lq(T<%I8lV` z<+XbBot#V*uc&4#Oz8~3A|8}XD6SpL&?-8pEL5x9F@t+?(PMekP3ZS7W-|~<;iQeA zh$J>bgfS+^USndi#r-!T`!ZCq>fMao5yG{X9f6x`>dN&yO^ zb{7~BysW-`lmn(BeOx=EZ!zTbLN@O`$;(@EUn#)=STmaC1`;@t;W75F)gWY=_(@En zSdEZ~){+NkiT&lq+G5xcHx-Cm_?d@Kdgje?;!{!rpHxe>uNYPBcNCJ!<*g!pVs-Im z{>=w<_RGiA8R(0BgQZfP8}FG<@`x+taz;0rfHjk>@554+zHZPLYIiI9vSiQixr`P3 zV{>n+pEpm~LT(R1H&*4%v_GlE-<*Lfx8y$opYcy$Z#mR~$&{9$aP_2=+v)Kj`u~xy z_X93k&alHp%eMb97cEFlUxhdn)yjQUfEi;6JvL1 z`79s8gHZaMJM^s=;@M9Df0ZPkzZXffR7qb>3NQ6DYhU}$;7 z?9!O!TOVy1k@C^9u@fKd18XXE08b=cbyyVL+Xg}DuBE#q7oRr$G=qMS^w83edM8ai z`HFipWBj;M+)IT8M9~&E%=V)z3s#8kzwA~KS+F!HEPc0+uZ5BcQEQbX4=$Y&RhoHGHc&f=v#7*gyHj_9Q9yk&7c?Ow%(9^%IZRuHNG#Sxdma7ttFX5@6BXJZo6}pKjj&BoXNTE5c_|I?_s=Vcnd|Y8K;;$ z_C3PjK^x7a`G>{0y_Sr4zjpEO-%WE*v)IEe*6aCM)7tC#c&FXL`<91WivZaYW-krH z+WvnX&pRGpixZVb9|MHm=w`6v!q$?io%)x$XULf(#1yEJ`;fW{-obMTE=?q|62?gc zPrbwQ+zT4ZV+^>7Wsh%Rk8AHU+#T2J&BhZ$Z3zt0Yzk2Re`+Md5@fByF^Z{Xo+JDVB(4HGY z_SMyy^{!ww^)*p|EmifYEz8fs;XvxZhje8IgJN?$=#LP6ciHqCgH1k*-*Dlib z+#zm#!00xED?hpRXIo0FY!V0V0O{qm^ET0auk6Vu%=h*RR+aV(riEcb; zcP{#HKG1|>JCrMBMYlS8UjRr~qzUKQ6<$jMD&s{$b~fIDmSmFQAxesCnGPT&K<)vtiw{D}-! z!ZrHdkGJH*10EdD*_Bp(AfKQalNs&rv>GM;<%QkW)BH>kPA`9WciE-X@(TtJvHOD& zs?t>N!uzLCXHkbk(g`~Eg37{u2oe~(4fQ^!~kmrW{y4mOJlFq}8JlUz8 z5WGx;i+$9UKJtg${Ei;JiGqS22l%GF;T&!XC~-L{jBz^gbLxBf#Fnm+FkwQC(L# zd=JkhqJU?T;F}lVA_cfMFv?W-SD{bE+!Pv^vg>R2+PScoMe8(4)%(4zJntUY=`p(t zP*BW(0|j9^jtFa4@;vPzdnaf<00lRZdz1I+h2uHL?RL%fgN{^F=f7!rOm!QbAdK%f z<_MwcraK$E+Fs$7o;BOJm^Htq=YuQO$qcqv)LGk=93zwZ^)GstCWU0vSFLp6e97F`OCR1F(8kVvoH3<)#qFIyW4z5Pmu-PNa9uJ(41EKQ1UDXE8#K$%l%xLyFj+a9rlb5;d0JP zuT*H^t6@3bT8fti9uIdNs|10A^)i^8va^ceJ)Z7ti;Jwyx)8#sZZS*Mo!%QQ_WnnS zKumRTzKR7NcSG91$# z)IYT;gmx#)TJ;6Te+x1J|4VU-=l(3z=x_}&_pT|&w+TGKZ{$fNPJ{HRx7)!LhVECY zDK%>2)3O|Vo@Vj6lO{!LJWGp8@pU@<2l2xp0+J}?LBE=DxKz5AE9Lu}rn(SfW~+Co zycIpou@D1E8f!zuyhK&H{#}TEF$2pz^m_0oK8Cr6>s}^#kHh^Hl$VI1yKi8y71HzL zJjD1*v?K~eKF@&;u7X~DtXxsmNmO_bNboS-m?kF*iJc9RkA{UTcawJwv>qW5=G zGg}HIbr#>QuM!rt+tHYUN7pg1`+GZ3B_r*Z?1j%gf9hjxXhmY@i0e>9^i|`EC)5YJ zyHU!k`ZPpzg+io!YVn|6(jgj~1n#Z2i*v9v@y1~ zDMVX57MO|?*+MYF3PFLTC zs#gm#nxHNx^to(tq))sAu8?edLEV}x-6*zbCxeyXWZh=X=}{W#@?BaOPsrEYxbVC+ z@Au3iSg|tX`b%#lOEn3fxHwx^(U!28r$mN?460X_meHHipBJyX4PbgpiF5sd?(G8m_E>Ed1{ZL5qm@ ztb&&DBFG6&znJ84$*q-V1<8N%M-t7)jzA5JvsM+E7R-O6s)%f(NuR$J1#@y?ZzHnT z+v0+H;2!AIO%{Y{xx;=>z6KYXL_jPKl$Z)w%oq-lUqVLUY=VgCeg?5U1kIbVxQky! zX(Uz!2Y<5De2c7NT?J+Ijx*Ah4RX9d{CaGRl3T>%X2a}){ZXg~S;f{swq^@STX^*& zX{_int*Rr5%+aQ!l5flx)xW4Yt&PS^mAfGtWC}>TbykhUP zC8G36>gHL4p(!ZG(*=nttdXuHLGe-$>)(O!7vb{_Hww%vdy3a9UaT&fKQo{$6jFxQ z1D0K9;n4uWq*CUq@;xbHo07NTY$=!`s+9r`qZedcLxh0SxX4l5}Ff<&I5Qj_I!5(_Z|Iqd>0baMO(*>{AdoN0H{LGdhp$x=z79T_X;QO6S zgs})Qzl%%yvPI6*qI1e9?XAboQf}O(#({G{xgIj@z(!U8Zjy-wR$Ns0cE;>0gMPDA zxyapWa7)eENw^HgaNUwR2t*-yuD%8j+?4C#w=6}_$^dJkU zj?iRmbA7&u1-2U@BkHS$h-jcq*w*+$=idF49k+g|&A{461h*VJvVfMPQ!E6uf&BOI zCpr{277K&d9={xraQVXm@Vapudk7TH)8F9D@$taOC5j zB4QCiCsoiXqNC$3lpzcuw>jq5xrXtt*)#s=n>A`;hs`VqD*i(KH*fugkWOkzSfY^j zWM15>XWu#3Qzce~K2hQ1ss3u0>2Y@JyjVKOnsA7qKX`G!i!sDM_IJRAI|!yAy4WJv zWQ`voTniaMdiH3vn761o=#JI&aXEbo*$p|1w~7O)N)+9_2yky)CZAz>md-W$US^(E zmt3qr;Ys_A-9=P-p1-U}-!QLH>San09iHqyu~6=aAP5t@iT=4wq#P6XW@7m~TD3_# zOLeBqqs`S~VWArgnLc+Qii&T+%GBKwC0l2Ar2JV7S}l6QzAF`FUMculJM1`)*Cnn_ z75)2VgUg(BS~4$>6UU&Wf@m|E{9DjMSPL;&xq)rmjY(6Q<)1VLIti~41k1@P!BAnD zz;mYtMd%p$^!*q5`pdQbS^2P^BMXRd8vNZg?@=xUpFg)g;1N+Hx>2n|em;p0-^Ct9 zxx9hkEnB}bDVqNYUmrysS&hr0>8vdUv16hJCdoMEB-l#N4Kb@6?~e77%JvpMhon~a zSxtO^exCm|u3Hc$<%p>)|I)?><7Hiz_%uX;)E_ZvNii9up!!hm5FqU#^t6=eD0v^v ziYZ+EXjw%!`f_>pPot5I`){#s`b(uB(L>io*Eapj*4iX$>^^$y&d#`)=fm)D{)fsy zt%lK=(1iT!r7nPb_&*7?5&pXcOrBM-#}|jL7r>x6aInG8FH|DoRZOZ{gYv0LdHH?& zC-zL`7s6XH(0r+DG-jmO!8;Crx$cUYx5W4u@EB55Di?(5bo^#oS-JP$Lp<)B#mHbz z4qXr7{UxQ&6GuQo=l4Cmz;~kTs#^z{jsLD?4iFHI`;`#%UwuiQ#U7M=P3Jl@_uGsd zd*nn+RhDf{merK$J+r$y7BA1$u^(W0pm_)2PxUm*8+KHkEg*B>dZL)roKRW>-whBjw=I zFF1$VBzWD$DvECabEdiA?o9olNQgT-q&@KA-o)%zs#~#2!mk^%>t82ukKu-${y7+g z*Oxa4?J9IjnV0%G0;B8ZXWR6e{&|1?JRBCti;AW&$9A-yq{YWuVxI`LJ-jN{3UAHm zO$_hp$-QA~7}^2ax1;6Vr>%h4J+$4@zZwJap8ven%2>OIYocS3h|(NQEDPmD1t&uU zqFl?<06UiAsBOma8w$&&O`IUs)LTq zRumXsq78kIe_=F!ySuya9UP*jm|XbQHFU61e{j&(`Z1rRva3@m>moEWaqgUN_InA+ zruFeQ{oK20*?Ea}Vxuvvg419_VI$Ivf{U7f6<)-dhmMFn#(=oC=I{h+)12auc@&3L4*j9cSqP5b1&RW<= z%zLc5NR2CSTi|@<&i^TtD%{*BLE7ceO%oELC-b@KSLsuw+NnS>g#xGz&R?@fWbQpK zNZu^{nEH)5j?!O~9#>WD)1tbI=pxYj9l0`%`GEwts9Fyt3#VT@h;(1Jm*^m1CM7D& z+rmMDBi#n`aJr~rh{5O+Lcq20zI29zS@IMSq6=8ks9xt6noC}9ps|e(LbIYPqUjl8 z?p$V_U%(zMG}DBK+zjqSI!Z!J@_W0~cMV=J^6Wnt4ag<)BT+Yj$k!{L5s^Qh=30nb zl>?bk_l9kuwVk^qPT36&YIrdln5Fd1ZO-R89L5zGi65PrSr4=DpiUuD1uVfZ{cKf@ z`Nwi;OY6sA$QZtGdUlNX#sjjc>mNT>`QTc?Vk0z#!n7J<8Y`V(qvn_nf9Yl`P0yQerRo3#x zSgB?*&1e0bQZ3ZZ1aov)x1^ULj7)0??3O#4Dq*Ysqnpasn#@UwlZf=&ao{E}mMIr; zYMpbRvVD(;t#z@VjZD~!YRlB@U^(1j=n~EhdhB}&WqO^^*HIYR(oSnk+Ga)^#CNiO z$V2(ACJus*1$&nrSOGuukYdX2M3gQMU9gPtvE*{C0}`q{Ze7=5-DifL7d5qqneyjp72Xi0CLDvPzBIRaX zEupazCt-G_fFr+-U~p|_v$UlY=PI+_q1k?~9V0FmNsIXb^YsNv@NH%NFVoK)`C!rP zw;lYmJ);RM-nCzrYJMbiU=0q?He`7`7rKOv)-J0ncMc(p5`oef>?6C}t(2avf zCdR=Vj1Ev6@DgQWEvzbLI^c+xMJ4wk!%|r&AbfgQ`kTcOSMi_ z%*(R>5~SN}A6l!}WV{>=Ojf-OuM~$_PSJ=gj1HQNGyE|Xmf(v*sO#q`Qr&`-GyHF; zUuhdm@bXhUzI?Aj?w=UW8YbwTXFX&4yqC11WNQ-E(F|K(ErDKjkX3K2E)fwTnwHMx zF~p_(X=i(DwK?iAYzPI_=dHCg>ls8=n6|%W#F4L=y0=97bUyeC!C`^Cwi=pZA z|8JlLUl^{EK)E{FiH&WGg?DQsjby9aF=R(`25bK=ne4&BiBEVKGZ0KTICZe0$-nK8 zjJx82%enpbJF7x1WzM(1RtkI-6=R|c++xOxMmkViO4Eod&u?E8JFrYZlRd^2EnMbj zLz|g%I-^fNqY1BHkG>GuA2`aQ4ZG9s4G513vjl_XTM(oC80T|h+~P0V=)|OS zij{0jNR36!s*Gs-I*N#{LMKBBI<$Wz5)BE3X1SzoL*_5Pz3rY~UAT_kovpl$Kgo^y z@@1l_m9rn6K@Gg4$^AUw%DA+)ZOsxK&J4q!JPqR&VM{lqoEdu`__kZy>x4;fQN?0f z@gaVbhYnLpEG3N@oUr6{G8ql&yg`?AB6Z{2$r-*?>Ry<`8JS@r3=`F@oZq&Il+wY0 zmfC(lj4}Xbzd0%q=^=%EssuU)jB5g?$wwd@19*!tqA9zJDJ9WP19zN{j^oy2w4p!h z_o#(9AyXlWfpbd0@`j9=-tcS;149`TEeWIV_RarMU3L$kD;kC){F+U<%_R=*&ANRU z$MRr9S&4;#jjD4=LA4g*74uTk^I}NP{QGR_MjDVQheK6CK}&L$b{hq{>X}bNCKmQd z>%y%zyLp`lT*ZIOrlh9mSCd|kHhJ7>mPlHRLA7E1Z;hkM)cBo6^YRp(Mm+(>NPm%} zKdY6-Pzl?aR+31oJCr}b(Ys#cq*@f6e4U)i|PtI2RW|A zNoYfhs^8typN$7~!ze0JD%^8o{V+4_DbCs7qxT6Fnv^S??`#YAM}lg=5P_2sL<*Pu zR}*n7*A{9b#hK4#o;P+=Nw%v%edx5=nFUNroM6(b<$)QTk-3EJTHwk`=c^(}zqjG+ zsxuslD<5#ANT34WTexC2g>OM2#p79H24fcv4kSS;YVAA*8^?ib{@5FQ#zs!s#vBk# zWgJMW)yHcC8n7LuD01v1$Tl(!sG4JEN8ZIW`8KrtWp0#zyqIP#rhkbo*%WqbA~OG% zOW>C5)N-bY1|*Z(fwKMiD8(Mb)J%esBSYb;NE+SLvcAYL9L+$lq!$vWL?9mw)?7>! zmaZNmwC{J%TS7`h+-mqno-Q}xM!B}3-?giLTVP?PBf+`G?7mMGQb7wsh#;S#*o(O% z8ZRY7bH91rBWa0)kRdgdF@!+mQDS1!@R;4vzQjI)N;dI^pgqqc2ony`&H)I zk>s423%aI4eZ%%|L|aD)j{)FL-%fY_g&WIzJj8?UO#*Q2mp#@J9p=?tP4i3b6h2or zK~A2Yr-JC;zeHUGq?pWo9Q1fRuR#q37a*+V2dfF^`HFTK^_oX3?5PcIqa)h&y+ zVTpf?4;)!X1FD~od?UxIji-hsw<0F2!QA^awlz50yDZS*8K_b0*mww3x_3Mp#Whr* zanIq4P|~e7_+9Q@PVsoX4*)`5h=Sp2Xh3ZN736ES8XvB3`di&>dMfG%P6fKP=YVhE zTuQObc9mp=lNzQW{xeg+o)`~n%h}pff1S#p(m+M3jTu5sA13eiDtaFYJ7<+1XHWKy6%_55<2O9qCRXj|!KQG3ZPeZLx`n%;h zau;*hC^9*W+mo@ro=~>@sip;2 z?Jd$k4r4C~Y^P2G}E#HvQv%j~jfQp3=KQSa1 z3%rLa6DU7pK7z746y%yr(0#w}S-|Qp#c9D!k$BQ)5)ZUKMIICM&RlaIN}QtVWKq0% zShK+4{d!XA{C2_Ak!#n^UY&?+qKiq!FkqFqv3I3Xv1Z0`^vjj>Qt}c0R6OV-W9W_v zrO5^<9Q6G#m(K){*Oz8#@yBVgeQq2_KF64i_up^2rPn5G2o7bowmWBd*A={tI5V!k zwZaZ^21XMxccguoyxu4GI4p?o7o(IiR(Nt9L`8?D-f!4{W+$@nx!J$VPa1~Vl;&-f zZP|&n%DeXNtH*ufOO7T5c%Iwb` zUA}zVkoc z=(h{Gw|F6^du%3gQ2IZ-?eJ~orR(sX&l%&hKx)k!L(08>VIUN9eF-+KFt8o1FG#Bs3TnK#@90~3KV*96u;u`se=n`>eyt`{h zj?8;`a}I#AO#K7!3$p1^L*Igvz|nCAH~k*hqqi0t#U7%IS)@oI8u4k9KsShLA=XTa zGp`P1KRsFF9q{vn#u2Z##EJTHAnoez_rg_f+#@-V&TzWr3gmu6+Uiw7Ew_KZp-u@D zk|I@JcC(yKaJPkwY(Hiq1jL6ecm>~dS`ShEYn}P3#6elG!~g5XKCpI_`(F-AW~U>{ z(PRR}+_tkK`1NKIZ^RA3GS`2KZ607-E84u8nj^3r7Sd-**FuLzt%{nmzT)s^GiTwC zKBWor%k0J@$sGofe7tY7IE;l&4W=6oZT{M@hOce|?I7jQ?erZ0zv{E)&UNS}o#9~Y z1$A&kIaj0r(7m~h4iM3hvU`5xkt?s-qK)oQ2lS(~gfY)D-OC5m-6zEHp{mbaz^J6{ z>l$K1*``-jHfPvnfuYF65-f+QwwgItRE=76UAMB#p%>Q!6OhI7!-X|QukTw^JHK~7*ncPa&@K`VObmR%wngrpI72cIn(ro39HQqFpP~tl z6V2H_v}n1brE9T&;2o?EPXp+Ha0w9+s95743_t1c)77%3Ys>nZOB2zh34$ z(W;HkZ0B~>vdQ0B9)7HH~jafl{~EjQC@)(6&(vDruSXhr}K4bxIr6NhNpe!`2JeP8fW_ z%SWN#o^L(AP;OAXwh}aSwc#9^_h0aW5h(B1aG~E9k^B7RxmV3Yo!CT)>I8qMF$N@k zj(zir1zD5nPxh&zH>viJ;ozP+1+9ciqWl)e8h{Xq=Er3 ztc`%LC_cen*r@;T=iE&#S~C(u+`CC-Nx>Xjq4!dGCi1L*=XZyy)7Hl*8^KU z-kC4he;o*!O^EUH^(k;vW+%!-&=_Z2Y~bA*E-iOn`K!@LoxzQGh6Vp{>zWjwP#))A zN-?!E(8*>-p9P%sw5{Mgs!cb8La+mPrio>Ts)5 zyib+h0aJgUv!Ju$hXdq(z=}t~NK(bZFf!rpGpj%h#IoHBH>ogn+ffVqeQU$i|J#!H zF3H4Km!SaNv?ZvR)U=|ni61!)-^Ea!SZ;%bsZD1fhx;q?N3W?d;wOOz0kcJ-mzWJ}2Uj8b6e9%EgMe`9ed70uk6I(u`h@2ps7AiBfdi;4S!4LtOi9s8f;$Szf-O=(7#B?G7R25lI6FT1LyOw zN7DCcZ=CMyx~+e{)%4!fzE_e#{P_Jl=O#_Sd(~S2cT`W>qBr;s5>7( z%5OqXw+Onm+ZAQ1{n2tc`=L#ypWUeTnfjr#w0^?5-uMJtbs~F+<}YEte!{=TB+Uibc3#eDw(vOi30m-}yrFB2mPk(0!K?SCd7XWvKZHSszV%+jQ+W8se zGI8BS1bbQQ3FUOTsQHn z9mP(Lp{Qw+3;UdZQLk_9nz8HynM|ljKv5-9z)22PQxziM1j9Mnf#TIv3 z=tVgn5uom&`ozBlI7nvj(NVNfS+;W(CWqnC-^t-dt?vpqa6);t9TbrcO>jcHQU4vj zOIxfIC3L3OOTj|gM($80@+)rV@#9xtDNfNFPq&SmY1&)gP@ipYaZX<58Q?1moT7eO z{=0=@Z+Z_CMu?wbFE~_264yu35YbQ9M|mb|N(;UI@9kssaG{N(L4o%N6Z!C$IGQ?E z%ADyEG-$x&5NFoK>E2o0A}i-`mSGy@ITS>ysSR!v*fY2Ig)|{q8q=e$PyMbYBL(2> z`*tjb@qe?iI9I*yd!qg|UvJWe@gd-P*lKaEGP?0lQE%Ay*YY-`zJX^hnDa#u6UVOY zw7dc=h&&MR;z#Jzw?prbKb2c?cJ&#y@)>;D)GwKrBI1HJ^@vS&P!B|zssoyaW;Oe$B>g3eMz4&CJW|Kpi3k=In<2edCfLVQ{pY%-KH z$<*1~_on$RKC|-{XC&p#Z~<+t<-H@%3`N-3#$fT^9pVgimX9s=&SwAz&;n_8B zREU~Mf5DP+Ne&PBH$y#v6Ae4ZuvLP=o0!hEg>IM>ok1{6l<=Vuan ze~k4si`Yv{gOp?flu0~DvkC69t^hPOghFwX2@q0+!U&P|oFxSXMl#hfY(^+D(A+!2 zKW+|>L8gH&TYUof#}6cLqMUv;>5r8vASdTNvZV(oj>iesSUHa_I1M%essbzLb-_l(Ge}OVIs@N!AcNe4K0D zmh@igXXZpw(|nuo|EWApIq^x~>4(bI9}sr*?hi@7-4=H}{`389^L5jZW~b$grCLo_ z(>^_KdJ~g2;Pu9|u4zrZ9QeBU&*wwdzNL35Hy%)&D4;zm<++^52-}Hs%=sJ2Hq3R4 z7<6S&B2BQ*(Yh~k@a`eyAfb7Km-#2^cC`7xihF?7%iqk*2TybIACFu zYHBm;;-8>d1Nf?FeTOpmn)UwR_DPuZ8RorsLg4U~lJY{K09AALRM<5%&ZNTRPtA9P z5cs_ZY}4!po?wHA93$z8{qlz#m*Cpzlwo^u&TtfW%f8{5tju^$=`uZ~%m`}*Zbp#H zLR-_AM!zs)MjNx$b_48iAPaA#6#A1|GujH+f{pxj1D3tJo|-lwhvu3PyAbG(m*(Vm z{!t5INz)l&?jQ7`^X5R=4QAT>NjCd{>{2yx0Q^ON=#M%2ZqW2RX$ZR+xv~ju)_}&6>S9S%QL`_VeUq=TJza!rvr`9)R;_|_;rf$;~5@X-7`X?s(j>@Jep4+_0 zv1rH$zE8ZS!?l323B(kY1w5`=kjOo+h%Lq_4s-{GwAX&`G zq)yws<)sBO&@eY;ptYebCX3^YpZyAezOWa^%0@-JgA(UzpP~E!`RJbwU@n*~vCe!q zZ~=7JrY0R-Y^XF68 zB>$q?sueEmhkS4V1ztmO=(*lN^1WnJBeJ77Ab9Kbpv=VCc80^WU1)?%OIw-uOk#&) zY_`q~Mr1&gj8Mj$gS&a05gE&b)>ECVcuw~@l}(p65d*gD34_ui+4iWQ`{?kFeY zUINM8)uq-{ylYJ0x`ib=S8>j@A;RTcwvXBIz}B*(7tO>!1;@6Il@kI4BwD!ZMNd;T zL*{<>1sFSXzmHVD2)M(Y*d@4ORQNC7i5Ibvy=)BMTK8wz+iuURzh%8S8GKNGVxWT# zsn8CxA9_F*&nd0GMj*Gu54CL8kHe^s#b7FRfRQ=uh1`)FvE64m?By^^6M#%)IM;m4 z7g&)2>mQWSkgI9CSz*6Oql2(UGRfby0ild}+dW_LYn*DOYn zI_6?RQNRKFv;qoII7`MP@1=ZB$$BgS2hncRm*Ld zf6CxHHHcEC+@OCBw|5V)an8PWjLp%~PmiXU?)2@zfYqn8pmF3Y=*j~u8dP$+gVSZa zk-qS{W7@dy9HdlIpMdfNVLTRp2VWa+9tZ}WA;T}!(Usxc1KUOJUrv2C9y6Ue3Wii+ zs8;Je6OH2b%Z?4>$%$BnF|7W1%uz+JJdJKVqQDx?JUssIHeS@&wzO8!f^4)VInscM z@8f4*{dz^LPTx93IVr2ye&HBapnnnZ0YKh2;T}yyw#faY4$3_(K!eERIY)h4rtz<~ ziFf?fd9_i9gVOkBj1i|nr$?Lg(5w_qj)fOYa$D6y(48|p4Xy-OMelz;u^!BO@6M6m zqsBA-%UMUHh3`2qH<*3bCjah{MjISEpK4zp- z>3fvm83-9WV1zEEutkAC3;=G9Pv*0+Ai9+_0D{eVR`cA!OQUS7`QrjdW z@1}t8w$4&i`12yiH2&>3fzum$-XqYJx6J!ZK-OtmbYiFCojA(#B^Lmxkj|bRX-90W zhjEwkg&(<%_bw_Zzb2VfjJobjEjO=m*Pc?Vn=67TX-^AjD^c~lM!Xc?jJZ|Q-VD=` zmDdz!TxH!KK{w^=79A$lNyqMhcEf)v>0_rb$L28H)ypSQ)RV;3KbvUXpvx4Qe6j(c zMx&T3!=*{qq(Le`H~Ro7DE-Lw4OqxU4|z&Ssd;w|8ipCTOJC~$Xd#-0nVOPBZ?7_) zrUN!QuZ0@YbCI(r;5#IX2)g_5ssp&655~;xQB^+7fsn;r+xKC3^tb~ay@gTM6-*3q zH;BGr0|*tUPJ{!ke~O%}u!_@MrE!(*c^4qKyQlO}@)7OJ=f)@se|nk(_7MIm$36(2 z83Gbo>`0zIwq6UvwHi%gyaqL^IU$C~{Yd2q@MHgl7M3I2zR61u07~4Vb2htntd#Fna2ULJL6Sn4Y%-?W70%6;y#^s+n0m7 ztbKOnSAY93vny-}DXwoEW@OpkGyf$3^ISW$IUC$5oB#45w>n&= z%e?NJ-^l}1*S8gX@vIN7Cx+$V@%PBxTkmFZkmsG}R*fvIZ-&ef;<*az9)oGqV^D6t zF%r$;AJ-6yz&r;IpGz1CK05O*cn)}T(9UuB&k(XSd&slL2`@lHhbE+#c9P%D`0O3I z9+(I$Y-HJ&^~sKR9u;&*;|(zQL{uFO_L-5l#&dko%HS|)H$8|o5h~%>LiCT#(`RQW zE>p2ykTpQ}aQ_fOXZ&-+wj$aMwAEvU{}G+Q!_d^}?+fP?BMej&V`Vx6iq==*N4Iq+ zUmlc+uwFAFkw_dyInj`QH)ngW$<~HMc(-kG(=cE&mHbq#rmZg%O{>*^tm^Y2bwQMV z_x4%6H09V4udKy( z!|5MHyA8h;=~3)Gg)YTZe^>^hJIa~6(LO(^go0sJ-6H_9ev%kA{k#Aq249Vb^~9p|!lr zsym@u(O09sL$$oyyOThSgY@)=^P;DsF8A;GZ^xDl(y`{lJD_lt@;W*Y0)4g3xBdD? zFQBiATGW*i+yi)hb)=Y~9W6k1xckgwiw>{KkvG|Y%Pkxp0eZrq956(8bvj`E_GK=5 zQL3|1N=B*)Fg-7`kGB^95xilcqK7Bmt{L2YQ@6nYmv^LeDzNKgSYy6E_}1-RUVD`r z9K4df{Hj43wz@8vs`o;Yjc;E%Gca>FH(xxl5g^C8#w2LND_8<7EaioxtoK}Er9?8e zm>;YJ94reK&^hyJV@U?B9Qp*)K9Ta|DT&xe@~y((d*Aezn-A4m^K0LBQGtYzFu(XE z87>aFDJ77lO_endT@*$vY*O1HWyJ7&7kE0%;Y~kM#-66N{bjAhIa`&AC(%+&3-bAk zDM`zR1^|$1b%k-cjWbM|6j18K<)RG$0kOo9gUNXXAzQm@a3O`6Jb9~L7(7MLanDpO zmZSS6$8dIsYEAj|JY#@i0YE5O`(bhoA(77j?P4uq&-(oa%>uaXY4gQSQk+em9~>I7 zkw(uoXqPoARpdD}d3de#V>v}tJO!|;v~CA|hhS?H2z{AC3#7rY`2+@+8U;(yU&3N& zXx?-+GdNJ5*jG0}@@86Ss*S)rpr_{TL%JwFIs>U%uTKngHuGE$d{&$eF(H5+D#~LI zF3i~$xb&S#xqvhH0X{?SxAcq|$dg~ts~x=I$sGd}nivz)A)vuBKKl`)`(I#|L?#6z zy^vQw?yhc*`fm(OBf={on0p+sb#C?_!pO4rxQUKIwz}i3B1@3~v=fp3m*jguu7#6X zJawam<{}6w{`xPSOA=-9hZ0yEXZZTZ{~d4vXV>mfwc)IkATj>KF*8OH-L66i0M}Fm zc6atT2LfBx`5hC$HSA8Wq~jxP1CP&fzN^{6>B@)`VFcx?MXI{s)P`*X6y0F82ulvv z3dd;-A6F8%05K9Rq8D$`8#vx3W;!8(-}We`D>X9Y?E5>yyiUGT2%BQc-8lx>7xqp2 zoU=TxmG?Ja59jrfO#@?DzDjZ2N+jXRb`Dmp(8E-US~U?}nyJTjMHK7W=todCF$D~~ zLAXegcDgMzAcy2jUJhx{nQ1nmeTz|qFz(XUC(^v8QKp9ixh|%Y z_Oohq>kKy!B~^X>NiW$3T)-#wGH0Xx2;ohp?`3*ITN(7TE)?;zy<_Q|gjuvmXTz`4 z@59Ap@4%}^FSAP;9e=MzZlsh~kF;UGlc!)wpZ5?=Z{oSX%5jPgI$VT*O!VWTG#*J| zd*IZn@7cTFBtF9YFU@h0R@JqAT!6NR@Qf&))HA-=2E>zK_Fy1!Eg%m(3A``{xS>70 znsa@9i@DWVbyWaK@Ey`_AC`;ZqugLb-h35^oZUkd+vqUII7$&_yhpL%wrQctaLII) z7=i=Rgf`j>EF^&sDOb6l+SBsr*!~N8F%v8>=%xVK?VHaI3-sNd7#*gOoxLk?SHwk_ z9u1HKAVJ5GO%4R9Nx}g%yZp$SmqL#HSo!r z0&oF{z(hnO|ryHryjKI+@q0xP_BE{@1#R8ym*6&p7HV({QiCa3+;N zF7rSWRT(^&XW!4JzFBY*l(7#)oz3)n_lDkN+017Q%j_4J>78I_d%MgZm@h{I9o))o zgNb0k(gh!yLEiE$_){q3^y20kz+)DJlCdgFEu(>;^35D!i7ZgAWjfvJ^V^d;h>cH0 z=;+O59ASVmZgwbe`W5n5GKzUI+iu0R9)$LLx@(;88pB`R|Xz*p^kJ=LcQ%LRDUY0Gd!N-K)gy=W|6uRpj zr0uVMc{1ZWP2XcX(woQuMzp>5fBn?Miu?pyc?*Z)bxRZx#kETk7T^Z(+7lWz&F)om z@NE(EnKc}r8Hxn~;E4xtV0>kbdPCl6n;s~zYv6Q0e)itMMsC=0f_c$%O&+LCr(_S7 z4aFk+o~*3ZlcqI<9ua-X^lBU-|M8SSTR@xJE;=;i``a-fjDn}xEi2paN8zix-kkW!zv2FG#deb1xSwRZsk?7 zpY3plHiFx?ZT)NCQY4hujwEI!IV6YaUVQfowiIK2B4+0`trO+#{ed9C2^iXX%W4ry zfLrIwP8C^Mkk|y=-hK5U+LU2nl%yj>370QsV;it*l5)Pdh949Jk^ye*H-I@8N$%6q zBhOCsc7?8!(yO_k+58A$DP`Gpvns3u=n=uA7vW1na`LG!6EW0{#(@TPmdOlL#yY^w zRvC;Y`f<;7_SdfkmEe7K@6~(dTcb1p41`)IG=>4=h;F|=eD^Aamtgy;(W?AW0j=Ug zOf7QQ1*-+$*oRSY!_)f#DKs}g?HD0ww18#P<3!gH<$Pu`9KiYZn*FhBFSzk&WzCR_3ib2FONf_t=C-a3EXX6dSVI1;TgmB zw4Dbq?h^d1vWB*?YqxeVLTU`?7(Hwl2LyY=eyuk=uAg&fvn0o(QE+E0?d(#n(yjZD-{DzSz%dT=lgy7d888#I6Wsr)dC$So{F^f?_Imi zzKA8zmDxpKsvXB^4Hu)u>iDQ20t^?{96R=#DW97Q=+11K-%WMH#r5fIC$zkSO&SFL zRpNIwzvz8~=y%E$6bbEVzBy;Q6l!Xj>#p&q6oly+nY{S)qRF*5@Z3uLqP$tJXM2-t zk0v_stPl0@DtLcAb$_03PQ~XkM1fzACq^*3A=PoZ9gI^V)(j02^1Et3gWx>&rx3sq z7Z6R1X+S3>v8U<3Vm(FHC01)55wP9gGCIaE_DrVJb>78@PQ@ha5+rNuFXJy+bcfv8 z>{SRtoAwqLGn(OLFVPz6`C{zm23OB7P031L0O$L-Tz_$e!@DikB&O!r$!&<3gZVI8 zh!!_R)L>E(#9{FHc0Gh*V!T(cE|^ZZ`+`AZa|4OLq9Kxek-|qH0oPO;v($X5)GD~m z$ix5_+fRW97cHe9yw z@23W(MBxV>l;3fAu+DH715en(k?sOkybwPVcGM9eY4dINn>|Vny3}qI zK)t6bT@~;Op65z)d<;x1S0S16b_zHEH*v{TbzwNpJMwh)X}1%_PK7Ufc^!a}dKk5_ zA_uQ4f^@O_bL7kq0Tay}d@goHYvd;Ue0qe}=>7Av zY_XLMB0)WUQ4~Z4lRZ$&`whW_cm zm@d<#xvG32isG5U(x^;!85NG27EH# zlygdGoVIW6<4QuqLVX(rzed|x9C2%<^DT8x$11sjY=j&eMaD&1BSTi^dc4RpsNRd) zY`C5?4XoQ&Td}8|9l+y%>X1vZF1uH~jfZPuf0e8utgNwFiu+r-By0x2Pa=xjfpfNT*PzZWC z=GGw<``LU?W_tR*-nn9HYaO;Czi(Cxn5b9lF@|K#y#|BEBj^~sz1|ai9=ff-iRynX zko6WAp6TI)dq>Gw!qYkhn(FcrXO=+IK1bw|uLe4j2oG@S??l@GPi|eUsI@ktiRv@J z;J2J2s!oexHVc0#3sm43pI*vFo(v#<9-KNH*Oc5&HYh}^9ZB_e&Hx5{nt~{@@mis@ z^S#=#5LCUvdyi7L)ExQDg{`xzIvp6j3xNJm-{O4HlM=#x1>m5rUVn4*OM;rqtjA87 zY-I-7g>IeHJXnGN5x2%9z&mL{w1e2Li_~H>MZ>8nv=Dr8(l=O!50&>iAGS5^R?l(b!TavDSear#Z7?(9?)JD*#EZI!`IRXt{qstgW z48pD}*67`S+=R{b`buw1CW9><;wBbVJIrRREVx=>m2%N8u=s`)AqnFBN!YuS zb##F1&>2!S_kCJ|f%E8TZwS*|=2W4}0%fviVkr+yc=?#`kK#jpmOJO)}&A`I+wA3wZv9zu)O`CO6m9cbThf z9^xtbNHV_(#hreMyaBO)iQ)jU4Z8ZsLa%Pr8%5B0)9yN9Qn z`J_UdXHu^MbJcbzq3^1LPkR7VGpxng^~6ASdUo1X4NV>5@qC((gp!@m+D5fOts%_O zIA`^3(A6C^A9h|Yr!@^r6^!bRJE?L3nUVC^s`tE8zWGLS3?_c(`(ibHsn|C2W;LTV zC4p8j)m%S!mFGE}&`YGwu&Mlhpugkk45yjcY*WcsR`eBM_~ga(`de}4P1esoiiw@J zy|p@l)9PW|=nS(s$>>zTWajwBEy*9$Ku_PJE%_J{BTw3 zuH3h1Q1%YAPdPH=10j0Wq8GWl1sAzoa3?ftD^lO0^=pFkNNTq~C^so8q$6au{QBrr z%SmiADOOUG?xg4+OY|`BSY(QQ*6NeG_4)-#8sMC9v|EV9R^oltDXpEm^xVnNDMmY* z8CCtJ7Fy=#ANEq6;Y@>Z!4okWR3Qa)&Q%?6Y>=ThQoVfJ3lkw~>QH}XRM3yM^s32W z%XeI_s&epZ?Bc#)To$+G5aGQ5gi!E z2O0~Vz3-BJYUJwdsDKwNaVu$sMEn>JJ$kwhY5|%CNsjG-%i>ADB8`bV@Ce#Twkd(x zI%aZX#?s6QR;wu5YOu&6^>^F!`It=Uul-jiqWH7%F-q!Q=tysU9*uBXNh)wiie4z8 zcc#e)X7rn}2s8*C5(M6g@8;|@@ARgOM4TX4!<606?yv$6vX7?3FimJ`6MZ${ea$j@ z)p^(^XS-9Wbfe-~hB7xZ6csVNvF3=+SPFGN%3>qc+iUIcxY>nYCS}0$1F0Ouja$^S$y0r@ggz zm0=Y01V3xd#E|QX)|hs>gq~?+OmANrRaCY8a++827f7>v%<0N&>gmbj)uS?}#~&!S z`89%^>=eGSVL8ku^5$s$7B5*jdA6TR@G00njcMy{7q<}H?~(QMJE4BR{>)>DXH$j2 zvjw|3tSvmb6#lLWv@XFTUFE>dWBh_df$c@&x{6;t9ZLp^$6VDkE;}@xmYyrpu6qNl zW!&l)*SnLNT+cll-{-0zUR`5x(lAfkRBJT4k8cL(?TdUL@Zs&!J;F50z-JRLZeQkw+LzR>oE;zyjkbDsKD2JcsP zIc)+lp*{5WF5~1NPq}mn1sm^5>~`Zd5;Sgw=tVLu*wV%@ZFQJO^_7)L+$iXF>@+3M ze5~fYjjCpH`#~}AvQbA*cu<=-VsM?w?L(#l{;83RJ;nDPG^3Q-$no)aUc$Nk+vnPH zip;f{bPHT{RipVkw|l#hgfG4Tle}rJp|;>T7guS^XJ1Zm>8OQ;^!1x$L#5#0#9Fq( z@P#Qwa89xs1`BoL)2U`hh+HOy6AE-(Yjw{#m#OKGspqVa{mNjTyC7RkwPjEEdt!)% zmYI4B!{#2ybtg*-ld9OB4h<syvy|i(L>s89~~rj`eJ?>T8y2G`h0`65xWd zyl6hEmJ#$uio~6 z(X#88-K#p>vNyi#l`o2g1zLny4OXJ-vcU$bXLF(-c@eyoMIo-I*_GwNrNBvV`q)Oo z51{Lha$I*Sn<&?JwEgG>!5)g?y>ZH)BU&j2;y!TlD#Cs+bQ0 z9Xvmbr7SWY%ZtjQn~`eAxR!oaaCCEzRb_bA}sw>^Ys}Vhv9#Gm7Y;=)y=j`u0_v*q$^hDk9px zR?m2Cxu3rK0&;0eLde1zV&Z||B@Er1$9}v#a<53tMW2fQL02cz7csecvWm;?6EPy( z_VqQ1E7}&@2h}Zb#gMZPx2H$+qaLiprewH^KSmv1|`XNpxm}! zQTdzFqBebocuAnjo0*ZrI1B11W#^?*+C?;f$W+$yI&!lQRmNglzcLZ1F(@+CSM2As z^cKwfFko)Yk%0F0VGQ~m@uP2_p@)f?-95aDa5kO(d(^K=R<>2pw=*+ll+*a4R6 zP%?;HHizqxlE(k*!Xb*w6iL9)U>EK*C&cdxMzODY=4#;%nU z>*tXA?YXdqY%YfUB}4aCmF&cV%LffV<>)uExpoa`Ap$?;%keqVUG*ZcGu6wRj^aqk zoC|Se=(l_uM(~{{16r4#bc~Mq^X6xq+QN;6ki3bM7A37M4%nCUHf%IudfJ0Zt5)ql z!(mO$1l-R2WKWA!je0yU{@fR-1w0K4qG+FAZCBQPuo6xye)^ghW`~=8t#2?8IrLZF zaPiYs2(2&}nnAIeLKmzEl$-~3p?;gBkk3R)&~CPtNV?%M`f>jm-PM|=fd-E;_nA1h zeY=*Mn5b3P&vOX;K2)Ke9(~WU-?n-Rwe3WjUd=o4HhKEpkZNVLMAzfIlN8Vy`9f=HbCJ-v zp78Nw*i^{-K@-6cnd;CDyNTf-1sKlYH#CbJ1~uKqA4?`(Z{5(OhIjd#@`+p0*eOIt z%*MZrVS8o=J$l#fLYE=Lu`EmgIt%tb{CVP=b6KZX?#s%{x@`d(!#{p^^36ZHG5t1< zO~Vt*e^PeBPs#92dR!)&rSn?>wGzNuCu0$^*|P*fXY}d7*O$~RItLkVdZlOERv*{O zq2-EA4si_4jMOnThi2&}O^=2=^~K2R3r=WM3$Oaf%-QmKp|cob5Gn+Y_wCW5zmB0J z!5qS_bZARFn=+G7!|=b3`xcTQS!A-iOS9YDIm9XF4>4fl4tmr_Tq$SB7&2lxEqf^q zqtuJJBXBzKuKzHeo|81)_ef#m>`Gx=_;%{*(!p~{2+TuG=G(S0Se6G<`O*%qeb!Q~ z80L(uxSv5YT|pE~!a4G^qR*hOGU$3jcEjb-7#W`l(SaFRuO)J2*Fud-Y$SF@IlFkJ*g0lg^jaKCNuHiFz+HxNyz=-LY)sr_-!D5k<4# z@fFgHC6cWYQ5qKD-YvG-QFWEhipxs$N@VLM!Br5!|U) zm>&(9EoqfLE6<0Eq~?z^r>AJ8CCfQQ{=WSi=r3o^q(?1YW}tuC;tKv)8$*2hvThY! z-wH+PWyX04pDuhennW>7 z*)&G^X6wc8AhZZ=8_VN?sWXHoEavXAk~7cI^ynkn8xT*uYBc)2gh?^!#BZ~xo3zUn z-cySMHMf(LM55V_g0K&RnI*BVDY$k5#-Z0-f6#<$S0&R2O}?Hg9sLt)rA?d?VmqCw zI8ORv+nRngu^0`v;&S{zy<-uskJ#|!@mW8gebnYBxhm(D(d`J;Mm(}pde0C*H$y*Q< zt=!i`E>ulF9dCE@iq{UcWiDYW?sBpB9jKF4$?)I3NHacO7!6il@whs6zmi5%d%t<8a!w*&-jb&c4uoDjV{W%Jq zA+DY?#%o=y(0i+b;m$jvHP>6heXA^()@aJgVf=-U-!C~YCQ!7}iD`j!=wn0Zbf!*m zHTvA$iHq|>hnLxmg5aq+$FarP&s+?e+u=O15;u(O8HU1^i49{?*h`PMvQa z+goe1Z~Cm>Z&r%PFZ*vQl3!8QDAkQ_PRfce-y~r}9UJvISF1{@TAm!#cTzp^Ynas- z@xs@GAn-T(89o!7(D$tM7l?f#pCvQl&-?n?P>UzxH#4l=>>)XNZJM<89lrQOjQ2p#Aof9Kswo*1YOzfs~;o3%a{H zv%t-wKuL+uE_I_Tlf?OC$FgV3qb#iwcL?fQIp}_u&lcT-qw*34S6`DN9*O0klm3Xc zNjj|Hbu}8fGg7i_)C23VvPUOXrU+KlW|z9TKqij232f+SvzxL;Lm|eQ`Sw3YuhG`q zDAJlDe_je_I+-=iEd0DYTq?U@bjdP{exVSU(>P89cCFkOUu@)CNJT1lLWEq>7{(GB zok1)verjax>E~di3`x}<`EUN>0=wZi)}DDb*7trMQYS9hUh=Q=M^;>HqSy6ZQT%$g z<9V#gXlIdGba7yoBHW&`a?Iy7+Dt;v_Ete{Q_pwgco|~OVV!W}cXjP|i{j6&qK9H? zYvSbWXliJ4zh`G;iNeChNx@9H%*FCoIQ#G6{QMM5svh>H6iiBnW)HuPrnb%$ z_otO9n3PSO>|7j;O`RxM*tmWR60@^)2Cldd;rJ~?-qggxP}I&HMVlE2;ACN?;NoG` z1tQxy8#?#g07sm_xxbF?bNDTp`ztwsEB`!V=Rsj%zgG#6J8+I2IQQof5Ql~R_xlc<1El8s z>l~0f`=7Z3d9iT*1{Fw!6Oe`LuiV*yH2+EkNR#ugBUa$tA36Xq{;7rsV1KAV&eYb- z*&K++_WON#u#VsF1_hIfi;?p~$b(`inA9yy?yu&cV3IPmFf(_iU;&^3CgNysXAP(y z#o5sXFsuKdtKV;isD-nWlBuJZosGSn?Y+ry14^^71|kC6`dX|Y#SA`$z`UstZ-b#kS3PkaBm=n>V~X8l`J3%O0JulR%JV1E2c`WTDWJ{Y?BRce zl>OgVSk2#xNA~@E>44NdEwn^G}!$*7$drfT8>gF#jzI zEf`@Q8XC$KrFl1J8!AlkJ~G-_5dj1f@%ZaM0DX}E0VwyMKp!5ozXN6e<7xjN>67)} zq0irejxg60EWgJi-A;WB+W&-Z_YWu^gnvNE@h8fM0_5)~ffC|>n>v5DT0#qR^Oo9q z^moGNPtXu4kWFAgvR!Da{{Z#@!#yxI)<3~Ml#hQ0%l>=q^IKK*-xWqc5%mARFxquR zD*Roa0`or*L7Tkj4gUb~LGlNE{sr-&(EmF`poaP1rca=}jR^^n0Loid9Bw7-(L)*1_p5}ncF$rIhotpQ?M~IgSbVd<>BsA1D1zhj~~Yq5(fJk6_{85fG7(QBZ*kDltKi zU|?Y%!NJ1A-)95k1DprJVZmcRWf4KZd2NVD>43}n?n4F=m1tQjp7QV^HJg!R05ZxG zd;&ru8d|z%^v~HjIJvlac*S0cOGrvd%c!WTy;0ZD)G{_PeQRcJVd>=T;_Bw^;Taed z91pLV|(GMAAt;ket%7=JHj>9NVsM(ikj_#p7Ap4&I3;2IR_9w8v zaLt0mK#v|4*hi0G;bCE6;Su101px`+enCP(dRS0?Umia!==Tf8p9>U71O`Y04h{|x z_{T&=M#cP>7w9}-mT1r!&|_E_z?fjMKtdph-`2On>0j`Tb2#(Dj2ThmskCojQwGLm ze+(fcF(C;D6^Z+_S{%kKZFVvt{>t~JpI-*+&CxUK=t#46Jl%yKa_q;8xh@DhjJlOU zb_rdL!Mt?SKK%Z}Wf=;>((EzJ)vTH}j5Uai3_x1`^zLyX@*8C&YD{xjqVPM$#=8_j ztl3>&9hPlu0y)pRKEk>*?8^9QYPl|7k-M8X+*~>m19iFrce-4by_S@e=P^y1<+8E{(m>P2w=2;B5kLb6D1~wSn{*Vw?q$7|QdS6UsLh zf@+JMQgrJ*g-{R%q+bYQ&$dC*u25Vs&+_Ml4XdW9`}c6vuzfDX<8Z1vSyV=Fy~Z<} zf|^{=?QT&D)!u9A^RI*D{pqVcwKu|u83P8b=QoR?o}C4p)zt~CgoQbA3!*G_oX;GR zSE)!_vWBw>b98xpK$8dX12Y;WQmfQj@Or23zJu?Yd#&)Cp z=iFM3$%|6o7w3xmpEHz?36ft{%ar=aT(@Mg9M9^KSZ1 z_}bC0CK_{a<1bv0mE+ZA92{)ie#i=cE7|sZlT&QTc`XrT^%4x84OZJ8YVl1lSy+ro>{?;~eO%v$t`aDl@gBSTcC zKgN0y1-9uCPc-NkPrF;SRY5^kW0lDKxs(eZ_8r-xM)1^@T#Vqo2rNGo5%flEC{GvJ z`4rg<>KbqHl545q|ET8Tn0#5}wP>ZS4K_v(KNEW5jd9t!WCLDlM%ek{{rW7a$i$o* z3i{qn#CFNyVe0%QgV!!0OUu`jaD5thWt`&7^7GCtuZ}#XMqPN^*P5iu;CoCN@nAqcGu;lQ1b_u(xK(C4+WgyC6}$72gyqEQnASV?i3Lyf~8E)Ifw(+-KA< z&s*p&&zqTDR{~>i5O2HmhcM;cdPfuM;F>L8@r#~5f~1CSM}>n%>Sltz!^QT5Bjn;& z%*CCt`?2=<*`JePM+vBkEgLTa8Wfi=Z8>8^gXlQ7CaSxuF-m&~{o7SgEn zif~x@#US^Fazj?$^UTQpiT;m4!Q`@T73yH4XqYXTQn;nb-bHL7i)QRg;;sdXL)XOR zc}g#VC+A*LCSSqd)unXu6Q`XcYTgZu!w#Wbd5*TF3dqY0s#T8Zy_8gslz!aj+{d2Z z)3Dw;2r^i^Mz?w{1b_KeGj(S}6Wi(o|A%hVL{{nNkM=9MN=X<{H0c|#~p8v3ng!8d(k8i?^e67Siz4`V_O~GsX!)@y z$2)A~vD9@InolgAu$#V67#fh2BjX`aLY!^JeWy61xD*WqB@$J}=m~ASVA!e%t0+PB z4w}}Wr^cyvzW&?;!in}mx&1i7E<_gbOYlasDNcKuPU@we_O}y;v=kX^S$Md>4=vPg z90jI1-l{dhX9Ye++t^YDahg#ld05>9T@Cw#s0m%%h?A850!|Qu&91alR&&3Li3}*H zTWvWF$CuD54W)9|2UfSXvLRt-nsGH@ILmy7%Pj_?)rAv4#0iH-mPs)wLYmgmC6x_X ztW!;(NoKQT#C_FL<~V!gk0|t7&t?UGf?R2!-t%J8SL=xfjYX0OaX^CgDdKkrVFH(} z1(I>5TmGTBDZws~t;&T4nUvw2-v>QMZl2=0-fOhhAj8(RwP)JT6w76soW`0P+f!YTKRf)-1ID1 zzi2QP3bMfnoly_>#nijZ$atN9X&SeJTy{c`GEN(rwjVoNcDGJ;c8IZOmP4C&Bj-*z z@(Mk`D@lrqBFu(1KJ8|sY5uMXkZpnV(nF{%LN+*2`v^Hq8aq}C^_2q^-?iOyERh{l ztdS;~yU1IW40oaPsKeBv6`qli0g2kmldPx8JhnD#;jHb4Fs`WaEdz>pcjBjSv)_m4 zimw!>?=0X$v^&p_H=0)l7rkG!ZM;65WK*M}`-KAOaanhU^zLo`vfV$QgM>Pt`_UAw z(_~c{6B@^9fKbY)AID|kM6-REX)?Xbg}{3YTt*#Mx6f2U;%#h-x8LA%O?-)Tc;SZp zvcl$>`Ul~c#Ne6UX#yTtdpI8^!IvdQ^;_{Uk3*wtX<4NOvx*U^OHWG%^=D(wQx7*o z_=)qq$q#)_-4>`OR;{#8P!Y9>)mKzqNj%DnRm{|sHOr3oA-gM&CCF0IGuvk-JOxX# z8wLRn0?9FXmAKtqYAsqOhh6)l?MI_88;(`Ud3xLXU$m-?k9fnMm2AS^eMfor&0h#Q zd|&j2gU)OuSF+Eu?Hu4HWWKF}dD=rkb8N8=F-z#ekffX)KU}}cy)y<>Fq=W5b+EKXybt1o7@f1sTW$X_-#FK@Ge;2bXX8E^DP#tL)mG4mWhe+E0w z!4!_OQ(#cd>lstJAm;KZ9zKYnlx}{Ns#!>8IB?~3Vo1>#ApyHrBR!b%1fWm`1|xMS za#O=bXC)IIHuUL^M_2lspQ}r- zbVici4j3ynGr^+1`*{+hqH(GOqwvPW0H_eQB;i!d(=BFIWlrRou6qa}Szp4#>1hmm zZ558)NTQE;dx&wJDFV=us4@^5Q%BDuE?14eN6{{JdiqzRRy>L2_xF-%=@vpLdGf8s zVfqa|Ze06FB)FPYVIh&fu#dWR755Emq@}j4d7k#j_EfcBuKrGSyd`gTe`2EBV?E99 zu5psaV?S7^(;O|can-GjzQxIk4F};WN2neAO7t-IX*yP2)B{>x%nY{H-fcdkd38 zM}D)OXMhF$D=T#LzmLaIdbrrONao&2m-f?_bc`b`^93RJrD>9g4tA|L6@N7EF~hFV z)b2Uw5f_-WxFqb%zRvGmMbgIwdFl{)CeE}k#NG^KQy$!?L!@&Ug@ROmts)KhhoSAp z%Uvx{Q0M~bIKRNMR~|*cZZ8As3sys|=}bB&O#h@FzONgtof@!5yUHVH0z~KXTpAT$ zI`?rxL)>TRF|S#f;e07`C-*Oc4g{b0wTd;7TWSICvPgIL>qx+oD5H<*8GoUx6E;Ig zC61$gggUgiu)dq1_r{cjTKpeKvU}9j!{i@7O5?mlf8# zBZUZO0{cOj%nxvjV18c_p=1B`-D22|nJzfjx{SDyz5KkrfM0E;i_$4IsXVSL5;ATg z0D7y)D(AhRmAslJx9K}T{$ugIkU0h+6lAI);`#;s^RRS*-i&r-f5Kt6l-jG;{V|nQ zuq~~0-!bNeDkeL@eCMWzdqO{|_fGjmmbJgd(5%j<{XjBEE>!^?uf|D#*I|=W>}F2? z5!nf|o(5_X)PwZ+VR57dkQ2PfI3f={1uH)qwDQ!@(ASjGqo+)G@_gvP(KI*|Ev2u9 zmHh2pS+n8gnLb($81@iR?6{E85ML`H#*E$V^%Xp7#I9u2XWnvulUFY%J=biz24*n! z46fbwu2u#k^@&O<$>DYq@?)~vT+I96l8&c*GVM_ z7GNNHzZyT&^hPRNkeN|TDE-i5^oHwk5o-0~>&ir$p}<-l*s!}m=Vnq%p$aG{aGxL5 zjAnI8Zger&<^zqt?hp22chv4qM_KR;s)4!#6a-JMh^_@0dNcDT`1|*G2g8i*qs7_m z!I^NKrmL!YljS%bEPHfj+-NkPcSozM_^nLSPHlBTey~IkCPHsvsmfq;(*W*(e%&`# zB`>+I+{sK>3P6yzhpO1xM`k*c95L9t_^A{}@N0D;*|{>Kb2Fo<>{LOhGKUOT!O$Nz!`E}RT)sShVs3={pyD{JphOELJnlI|p*&4`tm;c`zSCK>iqILe_pyAR|H*7+~BqI2YYV z`@QnKTdkSqua^pQr%`>VA|;=GfH7utl}Lg$M^|j}R=C8t;ed3d{h)z@LIfGL#a5u8 z_f2ep%pPdvE5t!JQI=~@0%qo82A}HmI~HbPMr_Yi-{NYw?jHVZTh$@*4P=Uz)v+ku z7VGy>z_m;6qN*@Vm=)BC+*#J~N9-q5KT=;YYab-?);s#1xq3iu$&_b#9l!5pi_K2% z_$>aLL}2ji7P2d9*uWS4j$L%`2Gf_6UyFl)lKaoq4?6MBw!^T65#U!21$CCpAQxv} znk}C5B%L)yKJoFAy<3dbDCke5s)QDRt-PhFiFcuVjjy6QL$v=f;)B=UM(@`@S=M@bY2K z@?dlm{&sW4!B1T}m2jS%Fui$s)GK^WoHkI1vn_`zCzVZq(WW&f1_SQ?2Fub0%MJmdSVIw~otL9w`LK8!{rokt=cm0kM zVhr?c4Co?ojz|T((b>5>7v(!zm1EV_ZivqD3SjDJPt%n5)OYeAOO*fzGOb80>pt(R<#J7JU zt)jVoV)(4+%|e&hPy)j*(ZvB|FE$r~j?;qI$9 z&I<_XVQy&<4LIeS#kLD*7cH}WpcOOa2kG*3jR9`LN7xo$9^Yf}B3s ziyc@MPn0Y<)2th-MssHHe|=bwy5OPi!ijtB`ZyA-AJ1=dIC`E51qIj*GKKpRxyL}T z6+xDRL<>?jVb#(#D2zo(S;vG;JMtuHTqym>D8fQ)_{$g3+8Qy!L}&-+LB&{4nYrJ- zut)0d9KG9HCE3Kgz5u@eBYH^;1;O17`J!J2wsUcjy_m2r{5jRdxuv#QgMUng0Jj%S z?{FNO{ejmEt!q2&@Xa8xmX?le?&WjhJCV$3^xehhGhEz#6&4^1Ui$#dzWN$}%p&!Xs@oJ+H|b84y`-sC1NX?hBz0Q(m)7&;{%y9P|*T{{6aE5bw*-7UkV zF3^xcxaB(}Z4Tf^bEOQqP#&G(q1CjBps6g7#tsQ~edh3#CTsqOeOrOQ_v8`7Is0Y( z4MPJt5d_nHVXz%-IS;8EH#9^`{JpXM>@_;LxTL*-n-31y7TBED9Abn zO@utsc@U)}!kd(G2iYv|y-0{T4(0Wf;Gr=hjXzyq%K}Sf3@o6S%bKH*_lGzg3!Im& zSt35mRy15+bSJV5@oD?JsMSNg+x(`hY*93Vxj(4bQ)9FbVqErV912Bd9L4zWn~W6i z*^d+S*0-_Sa1S z%E~_NimOOeq2e!p>c@^l zczk&3i92)t6+fIVbymVFEO@Ufw_Jy&)?uSUYF#avQ6@l`uE?J=ZH zkYc1rd1RX0nJs@o-ts7k@v(B5a`iwn8zI8c$+M{&dzj;kFrlU7Gz5+qcuO4bXOp)w zO)rMOKiLFZ!1ur1w1`DcuZ}VecAu@`R7zFrrYwZ~A}75iE|zz?VfCHR!%x-6x7c&u z(pr;gQ+g!2Yv%;Z8&Wej9rZJfLyCmN?s)N%CZ|pDeYHM*B~v)_Ami6%dB&NQQRNej zlG&Wkn6Z2O)d{QpW>hHZwvO`NMK|`|5{J$0F*BhZ5XQq7eVoa0vsztl$SpMqy+}(Q zpWdz6iDHF5&d_j4$0%)H%EY{tJZwtIw(vze9A6B95a~}(7wwgC3`-YRy{D|KJrR@| zA%k=9XI)BIS7lmz>6>Z3c&ID@yyo6^QV_>m{_xh9>4^V)Rk5P60hOkxqcB_~?hN_y ziJ1TE#5=<_mN&|SS5CtBZMgqx{j+_?uzfHcf3A8Ne52?dw<&j6tIH-is_t@LU>`Yg z$o9xM5+>l7XDj`XwF|bSpW`BNkMPJ&<}jumO>EgO@__LrKg(*3cSzj)IN8EAy8~)o zJj2b@f(C)X{t12!F3@Zsfr5;opy=iwx8-w}gCbUqSm^lbqbE*AlES(zXjlS4`9bG{ zT8h(OS0|DV13P4mSLa_gNG|y(vgl7EQ%f6Y5^-8Z7)5`MWq)0!19X|k_C_{mK|z>) z7Fl;`z%WIGJVpl;WP6nME-T7pc;EW5tP_dj&zH0TULHor#d^%|5FXpA7~>nYlO3#F z?5W&5ztt{pK2i^=Q<}W1y!ICgw1T|Q#qPeXgM!47!U8Wj3w; zUB@|^!zTW%?*F?laDNQ@N2~n#uTSd>DIN$JhHSI*THWOxFH8!u!T?u;Bmk+KLn|Bv ziD@GDRzDowzrEc>gE^(8Vd_sjmM~dGOS?*IdjJcD71IUTrO&iWlgwP%^R5;RRbSD zpfg_*A$ewM)L|_0GkpNp73iZDSse@$WWP*Xk-pVmy)*K0(x_FHtf{fC>h2s@0>P-F z`-6B>vnEOZ^Rn%aGVXp0^WU|{|FfQu|EjU}pT)Tk|IZxt|0>Qyyy<^n7(5UM?%4#~ zEX;p#MIK0if9Du*{!3hue+wPvckWL>9qFTYkCBi~tcUGEUm;WcTbOzGgppAJuY00e9Eh(C>G~hwJxF~Ih2<~i;R9jw@9;SPB@WlW zg%I-xhs%WzPIL$W3d;Y8TKo?fA4GppA=~}g2ec0~)W2io`d4U&|27qV*zZxi*aKK7 zyvqNm!Uw4zK>ek{2VU*p;Q<8S|82Cb-2oE$vMlrO!e^B3p*nh+Kz!d&FKF)s$ z-@k=S3E&$8SfeA%{;|RcB!Hnlnij?emBpdJ{sYhl`R_ro{#DdGkf8q#l;dA1YW_WZ z=f8l)YqOK=Te^#4#-d3|*3rR&cZE%@LdbQg?LchP6z zcFUczK)2>yvnW)Yc+tE7CFBjdwdZNN>&gk+4;}4VE~k9n{bU%GcOiYXrhZRwzdGAX ztZIJqg+7HRbartu`sU_rwN4)k&mFfQcMP zh-XQuRvb!pWuGqE9gThY&D3Whq$S#qf+gqf>eNA(a1IE=ca~aG2)%)6!T*Ec@kifp)ZHj>Sw0v;@7+v zV+P(DzAJhPOvgq>d$oCUcj?fq`04=us{z!9>cqEV=|2WdS| zs<+Ud?ZM>9`l_Qq!<}w=+rBsQmg~sk&E2-D-=ewK0?RMqV)A;}k3_@hN?P-7)uY6B z(UZo@wF?-c&g-EpZ#->6LPz{6i!;C*p-|7dpB1p$^wuY;3*j~|hN(K_;4wR~AO+(# zOqs~L`z!Gx7eCM}e&CpND7ej+t91MJ3>=~_2k45S_)=h-QHM=GbqT!*PSVS6W9*6; z_F1w>#=vAm6m#;h+!$wQojGtN=cCmJH@+n5d=(5k<%<|Ga4V+LylTGp;e>&6;Z}s~ z!v|#EIU#^6c%gnK)?JKdH8-SFl=}4NnUor;4wTj6<|bl7D8p@pbNep5?z=%%(y2l| zq+GrF=9!51R{I-oN^Mz=ucl`UaIufhkCPpS*nh0T6OPNwG2;?7h`gn*3EYZQMoNU? z*!Ti|lw4U;GP1l>&()pvLM zjlR5GzaGh72kdy(9nkg1e>$G;H96q(d-8hL(zlxS*=A0QuL!)VJ!u(K$&Wtu?~vv5h3&NTvtg8E`0GX+ zLYIR+VVU@GzalyW(|i&BKLANUw!dzf+5RLW70BVR-J0FcBcfh{n+}UA*-%BBBKmZG zE22HnmgaTrP>iVzeLG?r4Rg4&^~BX3rW4K|K8~kI_-@Bqhhl>obs=)Uh8dGl7sQzM zH!-8z6v3B!b9sX`Ox}#0flfPO9ht8?Dna8QHJSndl(Yb6vDO9-gIyE{=AlbntK+>l zQ1Mu}w>+LSO%{W+SiE4hNqQJP(hNZt-2YfyD~ZF$QQN2YQMsJ4qCWOelr5Pf3SWOLe-5)OI{pD8D{4L9v zj$6iF?k7;0#$x_LR`J>)9**L#T?d@b*WTpmjKia?Hw-+k>l5sRQ*l0)-p1(5Q@rl( z&T7)Kd}Zf7e?RI+|1u!?a#sd!woC?7k2o$!&$|BMF2ZL?bc$qa+4DR+u1~1w&#EANT#aWay4-{!CPM@FAxE z5hJVvnxW&H)&Gr2WL7>-pcR)M14XH-+ z_<+XDw$v<4@gDtDpbMUwD1gOag5td*z%5OCqY}ww^!a(k3P()xIyl%&^9AJ?f_4`W zD|FhKg|eXpErQ%g8mbMle#aj*)yG{^&1zi0r7^Dqc0#xW!3t+02Nd`-S;Oi}x%0EJ zdYT6bm#JPyhj$h7F?=Y(V-t<{dq>zv-a`~D*46DdkAgI_R@u(j~ z#qpv=g4wtefoQgqu8r+ihb>yit{&bbdU!{m$c0xQl86kXrqS+ZKM=-pOp35(YG{)p z`$TLUf(F$m{#P?0>X7K45TAk&VR{|_3Zi~RHN%A2r;AlC)6}mf`glfi%`*>fqHCnK z_7Hv6GI?s(BjO3#B51*6B#k~iOtDe-fvKIIJ5o93$abL z>}Lc4g$d(1zc`|p6Cs}WM+HQj9WZ^oAy)BxBaWigjScXAzY!gxu7I48=jsOu*W(^s zz}jUxGp@Rsvv#YFBA|Vt_162)cfU5dRXTWGVL!e!J3mXFuzBgxl@SYqwL?aSseB~`4ULa6YLFJ{pbK9P+K>Vz3fR! z+C*-64bO%mc@XF? zdHpQVllw0O`j@(lEK167GV7WdM1}U~b)Y?NBFjdkUUz)}e1_V1R z5MCk-=ND|3Oc;EVJ|P*L@8Ce zTqttV^5f?la3>fsfY4d`LPur?&Ru9C`I9(kpP~dTMm~HrL>{UHOOCVK99z`DoNo8h zM8pO7lF}g;tE&^InifaSm*k5LiHY!?PxnQTpQPx&tBrx*KesXa8$r+DudPnP+;aUQ zC(nB2gqbffI`6O3X(zF#F2sdeBH|upCtgE1jgP-l`MBsBWzB6e4jLaf2MrZ~)KF%J z4kZC>x z^!O3#RK6Es;NUF+j4)uI)aG!tpiyK%X5J9av?MQ7Vki+O86x3%-zm4rJnhjih0DSH z)T)fkNpX%wyOL!qVb~{{Avi4GgcI^uBC^`iMKf77Md)sGwGpAAi##_c96OA4D$Fv( zva&w1GPJS`IrVSvRS@XEsW|3QhE`Zoeb(rXXG(@?&UAx5)0Pc1;sT$QFPRA^LHy;3~n{G>h2!hD9s?ANYg8LB!7V;ZO zbsFKA6>go43c&G0Fkjg`?sUc$6o``}+Tg>9XfPvg>U2iX1JLoHJ6)&%uY3(*ZmbKV~u@k zlhpJ$?LgelGGOdj5BoPvC@^ejVB`kqr-YGoEebJyF+z57H4{3MG6Z-cQy2>5WqCLt z=Myy`_PQ%abjC`7NSeYtu`lMM07-WaiKvgiD?PRGvXuJ^pe(_$OQ*JbSUGg%-1rPui_WkoGIvn@MWpNj7yxlfpnK(+*@!_c`)p-F^OJ$=ib( zUI?b`Nh=QBg-H;fX6mMnvo%1-o7J8oQ&Rn|@@nZvnN~xPWdZP*f*Owpen}K47?Z$I zT_7i4CuqB)5-Y4c8&TF0gM^$I!nv7U7aWxnWfG?Hi0ZI)LSe|iR?ViQL(6{XRDXT^^9 zHf2Zr1V=s?+AtA~pppQ2gg4eBbCM$P%rRKZoHqPd6Q|M9Ok~L@)?hoG@doxUraqZb zQ}2q)PX)S|^BJXF zYk>#ad_LW{ykb66p<-F3VmOLk=d6-vu3Jf$p$fE?5onf3;){olo?*dsmZP)(-nrS! z+8CRyj69_n_fvVU9^a8?F-(rCT{uBhpCbr$2I)tWC{p?Db~Lcv z&TV2;*#TlKF^OYW*iX>{GD1yUrKA*7T;=y_%AgeUsl4mRk*yTwTeXY(K&twztNZ^` zxzEW`6e1?bVoq4c#HBg7q9lf)VWtgZX`G)r+CIWCYLLBXxJ9f%Har^H{p24O%)X;y zIP{%csrW&d?$O&|I;i|C>V!hSQYZ2;6sg^%k8J5AEv2Mo!xHkz=|Q?LwHK&$k(kRj zvl|rcv6XVss7T`J+DCNFKQ@xs4=+STUP%3ox{vU^-3b)TuGius6)VO&XKG26HUgqE zwm29EG)CBb9s7U`j9X#l_|Y3)TZw***AQu1mPalMx>{R4&VzCU3Vv}g@Q9_ek$8uG zI0{EOMp_&N%}Tr=&f1(}@;QDqY}YGq)%ngE&TizLvS?^LvDFPKbhpE!s|fuUO{>RD)8KCO8XH1F5RQ&B7YdKjtk zk$FSp2L^&Y@^qar_t;I10|rCD(<~_hn8yP|u9FESzG{Ny7-c^EqbQC{7A>Lp#>K@@ zbC&&rVv=3TGSccSTPTR5L_?6t(2R*M{1*@u4_#g+sxPQt(}<^-g;c0)$cC<{zY7sW zkv-8$4~6Vyc&he7_BGKSMAkaH2-H-&m>Q}vc{MXFK~YWA6RtqB<@KQE=9846D5SWc zAo!7ijJb-a(5xhI(+tu~Qjtt(UIxdcg=U=lCPU-VM=| z0Sc@4smX-ZsznsptP!}xe7W?V2yS4})kJe4x`^H)4be$8Xq`29h&~Q3s>&1!F_A?x zfr)A6rc5BtbDCyOvY580LFtENsz-{iM6+Cchvd4U0Lco3JPBoUJPB2Q6sIu=AzC-5 z8!G}9qW4t)nqy9HnP{%v2@Mn3InSe7c-06SqEssLKw~u3TINvA#UOG>qFTy4GLvBO!hjw>+PZFg#{z(7JWOms|BCrTPS9+7n(#e?VzbC z6|zuTLW-xOK||{vsWWMuZdfYN`b9m{2>G6@$S0s|VsU(GRPC`4dxblpO)N1L+D7J= z(h$#d6@yzUNRf4WZKF`V9X(XUs)?KjJ>fI~PxDp!OeB))F5Wv8 z4dmK85(OWf!L25b4b7^y49(8BcpgfMdu9kSte3Va)^CYwvDjh@shdH~Ulq?3W%AZV zD>oQRU>*4h5@W&|C?RAjINvWu=&T^L>iR<{)9w?k?BHsp@XpkW^`@RQM(a1y)Y)|$ z1#|~I&q&2Oy0wyNj1m?_utg9wXHl(t5QZ$?eo4hC>kaRiVu*J5Z-RJ=29mkz&=adU zOp@$pNKKO>?`bF^2y=CbDjQv-T|RX zH-yshW&kNA>jN%sG`GlSzM!i`!6CfoC~ToNhZCj@Y@wF)W>LcK77Gt?G$3DF-;lV@ zK$7JbGk6@QShhor6tQES6_={joRaLgA^iw~Cs})Kxc4Zh-og+VqH%OeSocLTHoHjX zLcJ*@A>RE;YVK5~KkyVZ(La|(!D^B-blYIwLnv*qn^@z-Z%1#-M$W0k0=LC`pSq#ur4AlNH5s9rg;vq* zW$ev79heD_y@9)npc+Ms27>E2^oQE((>M zj5J(Z!|Do`)EJw)rCJ-skPThU;sslCco`IR9b%7T^?BYeq>T+IH7{Z-x`S9!`Qh-j zWl|^Fpb{ON(uIB;rBKGZCN-lpm=hEpdymw7)qIR8T-^*9I>{;)3zh2@RXlppko?_F z0x4Yt!OY?+Tal#W>X3P986{m{vMw#6T-uHxY-p-93Wdt07I24GtRcDLU3jF?L$gi< zvdF605zV?9nH{M+;D)pdOqqKbUuw~6D-)-+AP`{IOcbk%-4v)qTA5ndy``%e%nN7T z6KtWD^Vy;-7SojIOwl5#YAGOxoa;(Rb&zLB2O#1=B!R4Jq1TPbu$WWaBCWC|ob9)4 z;BAWfEmckH7MW?)u~F#Km}V^dwU(YtnuXzT>%}LTAwsWIj+pgiu39U|;jy|xFP6v> zOg5-=02O{c9sVIow=@k(S7ae{8M7?|v1jQAk~pRm-=lW^p#ro$*P}zLdxJ)VuW%Xob?Y@|)`;*H~47006UWrvt zBTly9DlU{bs3wUSK+Y}P(4c1kic(&iYM2y(TD6c6!jfkYQJvDprX|ndc0D6f_eE;X zwmc?VCZwvYr|3YDiLzWZcB=?4Wrd6#TA4<;N*PZPMu~2?$|dCnv7Jmq%fwl#(U3XE zgbW5wT;LB|DOasA!4Ua;71~p4wkvTZJ^L zNQ!)AOrGhI45)4(Mhw0St!pehg3{JJ0#i|eS zCc}Gad7#dtU`ip1NTQL3$YXq>t3`K#R>5dT8 zqHtRvlpPI|xfD`#khu+yD@mpV3OGd?K2x#G7FUot$tk-FE|%4_u45vW=Il<%^-!i& z7iFni6ZI-uH)QNjrLsdSZ+L`Om*f<&@(Sd!AaCL9aVU-*qGa;NPIHO!>f$n$L+?0Y zO#ngWsky1qLp7dQ$wNhAI}Qqq=X=w9#p}-+$RjJ7eL5=olspN|F2ypC7GK2wX6E}y4OPQMEN-TKEf?nqesT7D5cAZLuR8B{G z#M*C%-t}y}D6&H<5FYNF!mwZiMQB|H_0}+H9kc7?UYZQ!U)rHO1fD4-qN_$&T;8ldR>L?*rsfHDwGeSCgGp-@YQcNL~n(!VISV-l8 znu3+K;s~l}Cr-0q;4d_!Y{V_a2ijgz9Hx|0`<7X1#Y{rmGbenWi7GLu9GK=m_L;oB z(7YKuB=e)ru36%W8!6Ce(dECA0t{P`tj*AR=K6V56FWQa_iNpk?HHgGDFtN;?GQ8)=M#KCV= zijK-J3&NH)q@w}My0;v4%j*Ea-# zxO;JlxVDwVEJTyODeh7VDhgeP<5_5mf{?>4d1#GG;Zuu){t=ofr!AVxCU9IiW|2Ac zJ|lF|377o^`YR;{$y=lm2#p=-Wb9DPL0N;O3q;`9m1Hvo;OtSWqo=!|AlNCpEb@rx znq*?duvr-j(*S3}HkHvnQ`P%zi!HP+qk05W5?@i2gjPO<(4=Aa)g)zQCbmf(n@wlI z;qFN9lbj&I2)j;g;hfqwWKOa47|js8;_oQ+!S-1BYH;OP!YLYt!E8M-7@EaKlbCHO zNN9$I-2|?N!FpFZtW%I5sz(;zX?+ph#*T8p2=n5#%xpo!oMD|5*TR7@%v;5A)IBUd^tPjXqZ~=f-b#ikn~72z zXBN2ik?NJEBDjhiSds;4D+)3&Kdmq)2XTb%<~6~c+0A(%^0eqmT^b8 zuncdym`M0iL|<`@i?K9Qqx;yYcI#vZ(QLEmI!>b4A8t

    #ZQr1dUe3CGA)k*yR^m@n_okhbTZZjqh0jP&ysZOGmXA1_q9vq(xIuwD}^0JMr|o=RlZ#A_vE ztUl1&MWCWrDis;<*r5lfQ=yro$1Jz+0+^_FT`BQzTUc-I=x6D7Pf}Pzas|#cxW$9| z?v__4fFLn%(TPOmSpe)??60bM3C&8mSo(OowKpO)4h2))r)g*n=Vu}efzgAi;xo=~ ziHDy!)AAW>h_2|9TT7|9fg)9sgst44@MWLJJ$3LVK36_=<+AZ1^8AKZ!&NJ{Z!$9XHG?6}dg zghC5jOg0gJ5yV^O<$UO^!Vn3<5a}GVgqVrj!P8sd)kYT3B0|My4ey%XaJ%Z~7_(Fe zXIr%^}iiC81mRYD@S=Ze#Qh(eGm0%ID42sY)v^@=Pb zrmEkzNq55ZkQT}s-61aO8J57HyI{HOfxA5+x^=^G+Jxl#hhUa|UF70Tf8P>ON7RH) z=_hWAD)UL2Fn4lD<*6ah)HG*? zAT5FcOuA7-cze=b{G>=!B!s33| zPy_2~TH_4Gc}u89u3^r;;jxhFL9@rj7RQ6)N> z1-C>Z$qQMCN>QD#AwyBR=nnEJLNz99At;RI<5J4@EM!xC`2ZnCdQusJnIH_845-HB zOgk_fk`Ni}kbP<45Di5aZ9=wugwoGsDHKj~TUTg9c3@4ShT_0%*@0{&+zBGHWg6Uz zysZyrNuC=fE2uj4U?MLa{_~=X-Zd=Tkf6u3Y)B zW2iz)>fw3#aEO!f#hp_tZdffu8p5TOu_E}O69#^#LV^qRCSyXDQi&*!XzYSu4h%2{ zOcu%~%-%c}sgW9MsOFB*99??|8aY8(V1^K3&kZ05C9KO14b_2x-$mJli_#B|$$58V zgjye#QdFn_N4P?R>B5aKvdi-rLp9ovy%}C=R_#dD4MrNm)uac=zMrPFUmmgpBMg+! z9#m9a@g{~q=&y-eG${C(3}~u~=mcr{SxA|skg_*I^fGw#mD&;87SVF$fpAyx5kiH3 zai2CJnsAF&;J>B>Iz9CS5HPaCAu`wnvB$KfYp}ZfX^rjo;f$4)2-ShD+Y#SjJ{hLh zM-;f^v9~rn4rP{a447&;MuLIALW9v!Lo!fM8Mz=*>z>$#Eb;ogVH)fC*@wPl;uNMq z4}>ZHWxh`^tN;6qwnCw!w3>$2gSYC|4}MCBu%Etuf`m9o8&8GyXt}np2LT!arl;|r zgS2k_f?8`_^0t~&4=bkI3k}nMM(w1nsh!+KQmrA11HiGANwl&X9&#b=lyPl47Z z8q-XM-O~z|f)@h*ns`FJUc`*TIX? ze!N@^Q(oK@vgG@v?~tKya^(5ayqe@qUsXeyE`df?{;DZr4t3=S+L zb00GtJ1eIzM(^}I6hkXg_TL>y>LVZ}8?Dz23dO!;Uj0lUpXv?C!Tdy1NbVSopC{5G z8C;N#664Lys5;I7>|5~8tIlI&70(=bnPPIt5)GDTupw&YGII>l8mPFe!R-)fpyDzcRaJKy+^=(rL}n&71K|n_ zxCnnZr#3`)JBnzIEaE5|7NYqsRbcArX`J;ub7Ox&*N|sN!;sBEoaB<|NJAkU9=?3? zF%fl}86>G&h+tD==;TLcBgrYDA2xSX~_$hIp1jQaNRIT_20BN$ zfboUQwI@_?eX_8_JCVJmtH`cY+7sF^do#R;Qt(mh?@&ub^69_u%!kQ_5J-6NI%pJ$ z6pc(!sMfn1f$3~Vjga&N`-S{*wxN22Xb)IJG-_&&)S=Ez&&$Cx`za#vn0Nq)UZn%T zxx55~03;WMM9$Ij7mzUl!nOpH`#}NXu%dpTsVMH~%s3IS8YUEPhmLgcs;wxdof8@m z$nme{1w;{&NamYH3d|L)lxg8(X_T|Nm0{sCwP$NbzRMi-K9Gy5vlw4w718b9Jz@>j zsANfNjUKAG8xk7zsYt5}YEsgQQ+us3F%x%!-S4VH-^ettTZ@T=FoK0@^l?C(n1Ko+ zxMP_Cb%os!>h}W)1AJcDt~B4T<8iQwHB{>@cTaSTgpWijH0_l1NOaaAfa=H$c^woO zRR?E!{JrMk+qEK*x50~s;C`e^tafn52bO>R73NQaGkx+h<+v~rdeA$7bd$WK!C#nU z*_oi%O#YC+-WQ1W0d|lNC!^|lk}md!rSs>K@xPcTj8fFs5bzX)bI|SEUbNy&@d*aR z?-hV6(Uy)Bm!n8Y!{bCi6b3#0FlXpRV4Z042QwV=dHeGjg3B{hdB8VjxCsJZeW2RB zq^x_cLh-lX;ql5maGY~yEy0W@ZTN&Xgalpn1o<;nMRejo{k*}-Zhsy-NjJ^8O_C2&eCN*)O#W-e6I7lXRM)lGdg~OC~}F2`0QX!5Wl}K zh(kd^@HxUSw1agm)ql6QA-nD+ zRwx#-{ZO}wR4fRQJZe;%%rTuHlypY!D;VU1@?5#EH8Kpcxky7end!MFRImX{WE^Qe z(^X`nx;g(c+7x0EP%1_;+0^bsnMgFuWK+0Q+Cf2^^aT$rl+98+2!P1602L2{{!(R? zoNXyaG}R;`ibkD_(&#uMRtJQpDrHecL5Qw^@Bu3fFwq{}5?c|WC>ohPhlD`Zm$sNL z5ZqHQ^au%045~-m!8JlcO!V#2o7fvwU+CqV3EAih37^RttkwaTv4({e|Cws?fH+SX z31nt9nG~;T#e~>1UcG9FVnRWdd%Yk4zx-=|$pfk@P}66XRcCDcjtQZH*w_iDV1Mh` zP8zm?{e%{>pN5BQV7lRGra2}Avfd<<)lm@LRkjrqLgFnB9OqvO6Oj<2GR2TVrI-*1 z@rT8)VnQGfvn{F<6Fy>+hHJsXCWsw9dHEvMP^TDC4C9+j5QuKfGONktGalF z_OB~JpZVivTtYb$*`ZPq*&~{uf_-+bhD9RZVj1E^`SSZdJ6FqR?d7F$X6Vn_Q=*EA zsuzWL!vraN+dy>6x&WlD5DuQqRyUs?aBVQpc?r@_qUeP-ZgkMyh&Xe7d699zzDM&?WB7iDL)x`it z(;InCWQzhnA;GA+`9&*U#bg8dDcKDqR8q~X$U!yQdJ&u_Px?aSca+KOk7C)KNddoUtTRE=<)*0e%iL8bP99ACCMG!#frY%mTlogm^+2ebX&W(J5NRxZGXIS?5 zS>KtgR@V3Obq1vMy^WXjy-Urc?>(OMy|_|zf=Oy!$CC~6^mrApY**Vi6v6C98<}`m zIQw~etZ?;n=?tw-!wL?F3}p3FeUNbZ)h|&%oZ6m%#7B@`sgv&3r5~S1tbUX|a94(A z#N!3>Yo|cQJ4;jxdS%WW2BeK2K`^St%}{E?xRAR-ub>Cyd}1K0$H^>25nbuy0}_La zzNrNwPN6t)ZA*eh1rab_i7c48KCY{tS-v#I()%5X!1zJ{K_xKX+mYYI zDFe9tkv(7Ap{`BaR(?~qpL1ODuYp~ekFK37@uSwp= zU2BbkzECWSDIwu;$yUVC6H|at)KD)|IjLYsi;iFMFfQEq5+@xwsZq)W_Gt=ntd%L;XSKLEV(jYC)tw1SOO$mMW_nwc)Q*TKDKHf2b*IJOOwEh)s&RKE`l>97jcpTQGeA z%H34HAPBFF6oeQ=m?(^Jv=p`0{RS?{9IYs`XjLa$0E7%^SsZM1=^JkARx6t&c^*{Q zK!CP#xgryQa)e4b9#%n1oQanpeZ9t+%_&Eobd%!|d8t-W6E+d0ry2q#sRR$#FlZ`R z91ndLY(fY$Vb=h(-(jNQ*o-qhocxZ8Gef1+MrsO*f^*6fDLggnU2(HA=kNeNY}u{diZr)kd7S@%ow;&?~@Y*V6bLGx^OX`uS>f z#-p7uk-ZNEd=$hG90SV^%1x(*#>IzPQ7N`4*i<$UJ-JX6iFO7O04eoY9a}Rw9rD~H zsQh4}bMxZW9ni!_CC*aihXiBn0?xj;?S7*1b7RjBT&kklKc)3x89(t!fJ!A z64^Yn1%&Sc0wGApRtG&)sOSh7-@3A*S6(fx>RB&sZF)&Xv~>6Zf_6L-!}7CUa`yi5 z1s7`&p7pXAfYghJ;vnmuq4DIr$$2EMAUY_379}9@7(m6p`~ZO<@gRjj5++E~tAgWn z^Jgp7jU=T>#x?i&=mf5nN%0*0S!)RjXJr+;(ApGm=pqUGG<1Qh?Rsbj{YmHost4DD z>Hfs^sPx1u*P}E~g*<4L<~YlzN|(<<7YofcbnzPeM(E<{ZCnp9{Z{B=OdHoDn0_O4 z2~oBY)RZc8F{k;qr2cZk7Ub`N_^pnuVs6KH$N?rUUbOGIK*TZSPSE0)x zn~lw`Lt%6ZABwexXSe#Zs!|dP0VE4b&oW0P{Czi43TFFGqcsR3i_nTmXc9KQB9DH) z%PLn8Nw`JT2LR{-VB;w#N*5tUka)6EaD}Nd;y?&*(oHYV7*#7QJ{DUlglxAp4`!oW zVm??^s)q-QT7@XOW;mz2!L&FbYyMlqIm79>eVOYnW4Fn5JCNM?Aig}j@j(oE@Ie+> z1uu?ehgafcxA?vElLjeYX>me~X>mg0JZ+tj*lCQNj+2=#2Oh)gvng+Yav$?}Bd8R+ zv=h=_*qBbpfaJ*>BX3>L2fX5h$ba=7mlLBV<4xGr1)JdjcqD3Sy-8xKSk`KSeXAmwfF$hbip z2SoQF$^#K;I23k!Ru3c@OQk;eiOnEgldORBhkQ*rHL98y{fakazIlhId`4fWjQ)_A zDER?h^C?n2aEJzh??Wx+xfJ;VNRKzUU$5`Y>VdeWTdIH$IF$0D#>krISm_XSkpmkf zR1jmLqO$vyWJqIad`{!bvC`it`&~QB^*vi)mtE)I{AfN9E@Re2VTOGfp6VSc29?Ns z@pH!4Gsv(RKrKzg&7YJ}lXHA2Rg~b@(G8aHB9~fm-9WxU7+^6i1@Zuimb1F@WOXl5 zy*Qc!<#1)Z3A4kux!OqK#^E_q*1UCihH5Iu#iuqBOQ|AYbsn>UL|uWY+H}k`)YWi! zhPu*HPE90zWnLD@)0+;@R9CH0dU|WFcECoi1y2i1tHaZ-GgbU!ys57`w2HZ;-^jHf z?!mM;JngL#b+y78=tr)$>N|YP8jE1TwmuXm!+ER$12ac6foS zwG~QVB*R@awv`p7(xr6#;uU+0f}IMX^os!`<}IfbI@X3h*PG&~Qy%E2Qxyd8x6d6m z5akW526%YIa!M;1T2$4cT`QhWi(b&@t};uuYbl+XP4>*uF&l{VG;zG$HiEb;8+)zntXXKqyylWR z32omlS)y@>g`!#@i$5mC=vD>mLoAjlkQ`LcLo8b+A8duc*qfP58i!agNlGwewjY;F zQDCbd*N{<~(6d|pxB(k}94l9Pu{B<=r9X^gW^&%ytJ!{BB@`u0tQ=HwvnN`Ly^$s0 z-8QciZ5BUnV3!oDV`T;r^-d;@m69J9TpVE)1*;#YZLoTAy>)dm;sdPmtK!KyZ?v3X zDFYO}I8U&|gKY*{YD2lCKAUnbNvPI1u=S!IbNANV>Eo_f0o?JzOt)HeRS07T9pwS#nc&!inDQ}}q%g7X6W({>F z)w+=zWaY`#5fREoy4T8)4|0^sMNGXrskpOB(GiyjWWVwLRm;8nt?O#Ijjr=P|4i4dnyrw3rR%`;nXUs9PT;q79hjDwH43VA zofSmszi;ch(muoOo-u2$`HWcyWQkeZK~T(UWxJfWwXQ2!Sz^|X7B;%Bo3Z-Fv>dlZ zpw{F1hyi)9Srw?m=<)&EcuP47*K*$0+Ah9Ul${mZ_mv%spq$rBWhYdxl^s^hk?az- z&hvUEIFwzV*P{@IvXi&?Ep2B3ArdWZH&5&ZQRaLe*>~K^`(oYzWmcu_R6F5Wy2@DE zj#`WOQBsH%wxX6x+4;JFW=E-w!&d1>zh_`r4*vU_E3{IWD*WDfgIR)KdxO!C z*%+UBgTeJHZ}1cSxbX(Rry!lhTj~*hs2~?_u)I9oaL? z4$n0nhl?GWlVmCJsRAilDcT47g#lv={0g+ywx*@+A)S@DS5wgR3X*p=UrWg43DWjP|2%!Z?q~hH^5q)~DV!7FIl^>si<-9tr}{{ElT&ZxKIeI!SdtAE2&Dpot4qCuF+^&x;& zMx(!-WE6~&k0@B16G8ZzSBB>ihzM>K*3eHkajhKdoCZ(U=RoxH)2PzQ>V%ufOO-L& zJRNT@?NHU7QaEx7MN+4T_0F0)=>){0HcGmsaxJlINw@ZaJu;PfM|1EY?s!|)3Cet( z^oH}I69S`E!IBO0In{vZm;l;Fo7N>&Im`y`x(JV_2r-60Q9QZuChNkF#0 zgM#vQNL*_|%7?-CM3UTvlNc@PL;;ill#^JUP;{M*uag29N!~=b>ggKMZ+k6u!ZW*p z+?>>w!f5T_*sk;mbS6M#j$E0uJ~_5J>0H=ReAX_jb46H^72)=h zg4*P+c_J3yy27x{AwGDDZ_=ZWvQ)I-0YV{{N zBmT?UhT6uP+J@Thd`>V2gFmQkNDQ>rHY6kdT-$)_UmFYG9k!zbsIMp;;F1n>z-U7> zB;BFfsCtA#J_WaSqu%^_N`j!$-)wRDwK(KaHK12TD}WuJ!9gm}ojSnvhQ9NJO*S-! zC?YWK`hccFgx8s0qe6n{_M;s=_kHhGF#Xn!p8L0B1Tg*4jt*D6e?7fF*wNXUbBAF9 zyjKV0$2;1L^Nu#A?^i3i<2>bJM+dT;awRM$9$YfNNgl4}T#`AR|05TlRV$fo->+5@ zqRo!h3e@3$R-kpmdiHM(X6c!S|M*Xx_I+Kg1iFW`MxXwpM%$*3)BnzDtUKCPeaDWj zNzxB$vFduyAJ$;iZGhQwb;?3TfUZzv%hs+(#mU9ij#g^8tU8}x$d1-~5^QMYLE3+y z4iSzk$J-Dpm<6ck9vGNMW2_8W!IBHikxLKoJtpu@Ck;?KQ3Ji$f7~kvmVKEc2~e1fE?R-b^MjB51>`ZRRa zAnVzYsQU8ksN90@pB=FXpPU`FTaYX|5VAecxL{jkrA19Oo(8pS$R`^1wLyENsQm1xrRw8)^j1D|P+)70EOwl5k)yhoD zY2Zh6YaWt8e)&2nw!xm zvQV5DR<9B3kLOC(SUfnd)_7^YDYhOz1$tS>?SnCna!&b^hej1Pym?v$IIU3r>& zS*s3F%U&iYY{)O}ZFi7A(3fiVy=`W^2Kh;A0Fei164ry@8RXB+Y+FDHX|3*v@;jhh zqkIM*4S@W%J3)^{w_$_O{e`&k?c3s-`c$)}+Y~+sIKe_p!u51cSY@s92h==f# zOWU|U?cL*~Yp+vzQ4zjBxaoa5YMJxgrMGe357WGB1X=J7V>c^}(Qe$@;3;$$wY zX&c8^(MvvJ_Ff(b>&Q;`vzCCk?8%IiV63g|svhMz@P$Yfa@!-Ch&H0@X@t!(4Kc*wK08Va#_{k2L3IR$xFD4}h(1Tr(>m^=_}L5`4#Yu$HXAObkvB zpx0pDcxc-`V~Cj5C$0e@3MnglN> zXQSo7j@l7KF0#8^x}1r@krwDyDU|baq8mFg$iN*$jKmp zvrYRyQ-g^HaO6ReIimhxAW?)pC&Bc#sWr!Pft%&AYG_^JRC`4cdDdM&>r>1|i=X34 zIo3rbDM$v2Naqx6VMx%QK7`;;ZnT!-(6hXdqNAQ*F_Rwtmc8Q@^s$>U0$%^)z4yFo zHfaPcPv*aC)?)s(kmIqg#s1U(!2vL2vE|P3sa3%$$G7+il@ZW9mVVChMNAeSz}QzO zpmpuy1cdU{324Z2YG}29C6(DVQ^+J#=rf&wHkNi5Dk?F?;%LX5r{&ug{ zOneBl(iwQ&t&urs*+mfGo zoxdzIHomd}92~S4;Uj+tB}>`N)>#wz0iL@rh>F#aB*JSx;GreMFR-6L5SEWfGmHvA z;p92TH(<2fY6*xH?3F1CflzBv#-(;jbOS+XvQB)t%|<|RL&kCh!?pW;!~>Hj6JpIV zE=)=+qd9I}ktNU9nxpSo4mV&FRSJ^u?vIM3;7DwI6&#Gq(=h%IQvues>-!6d=@&;} z6qdFlFlP6V3dkm%CG%xqrz4;Rvx#3Eff+s|R9l~Y@@`*WeQJI4{Zv3H4tA^+$BZ5# z19Ak~UHDZhpcIFV(m0J;{DAML0>Jc1DnKIkzg-zAwP>X=C?L0QFps8qOV_@^D0la} z2Bkvss4OZ3hq9EY?{_$%D0NnP$WK49;dPE+-qD@~WxEqXrOjEMhE)g;C)<$otKNc# zoqN9rE|)^CCCb51oy(`-ahNb%w#M<4_BKuU;G^&|rfm*hh>pIsY!%ki2FVS`7dQ|v z7l)ZX-m{PXsCo>AtCe`bth6)YI$}JJV_QKx6(H)ko)S+A3R-_;?<|goNZuwM04(l< z+zz$bcpXY948Z4!2hVkJI>Mfpi3ia)X3~o&`Dsu~sFuM#g8tFtPz+%@k{( zU<~1f2NTD`4#l^-Kfun`)@3}f;AoVmptD<}?W#}Ed+8a+8iV5{G=>D^QqRKx(c20@ zc<|baXtVh{g5@a&TetnV*grRaJK=_SW&b4XV6tPsZ{CH4%AbWDX4_N&i6}O?#||=P z?y(`S!;V%RX$7N3fzgZtvW-rB$g7=)*I`FgM`wP?RyaqqKAez!f}&W?B3~32)MNYOU0n1c@*vnO`)-e3I^i~s6y!5->$V#3;EGhP@{allM9v_w3C$n0gttE> zpOO)_zifkcyFT<#l;J1{!tq{N_I#biu!|Lmti3md45wp0dRf)^VOoIO~{QK3xV@$K8g5@a=O)V_IAWtK;7aHjL>X zdS|V5U1uHVQ3Za6mv(pzNKF+Zy||tmZ+Rpgx3_a`>K2!wla8MqI+nsf?mFo>&ML5F zopc;N0~@t-6?Ib^EjUXTE~+tdrf7YGqW1G@iOSD76wGzvU1_Rfs9p-9o$% zMn&B89gfk(qOvquD*@eCDXlQ)S`6beh(BW3o<#m&4_OMnh{)aH0kLl3+m6b#IB02I z!dI>}b6!@!oile%cv6NaG5a^CyfN6t9%YAQ`&440UKI0MYjXHHm;)=lMJVtHYR;p( zD%(fLxMpo1mX)^xl!+-}v0539iQ+;ZZFSMQN>{w`#}No;*Ks+jRPl&J2xi3 zL%fCfqY`VIdf<=eO(&G-AfKHQ>=HMU?Nj;I4o|R}Jl#waB5^Z>4Wacn5xiSrGXhMR zH(F81Uv^I4Xcb@t&rT*sv-MyCX>_)#RxzHR05!Q6t{^6rbbq(822s7vfPh95W5-MG zXoo4Sg_Nsgj#IYbKs$akZT8aI;7WKLTx}6r?xE`38UEo}pBvGDD3LTVWvR&HWbbi# z)RgjwLqp`qK>_))A_+5G+&#Ji+oCMlvC2~s8g*)VAg6nwJNt0 z&F3v6<61h6xXFjXEstAJh8JDU2Z9oBO9G9#Yx@N#?Z~yhV5&Bh)8~}Wcia#c zd`iZUXjTc7)m&7(1r_Dwy}7%WlJj$fw$D03p$%VF_8yQv$^LzSM8ohshxprm+d=&} zPmUj`yodoNWuuoSZb#tss$0*rLeocZGlh-&SWo;EOf#vgjtgYDQAj0ovM8trs;NWtT8FAWd+@jEO=lt%)z_mm4Cym#eYGs(@iI+~$M==wml=Pj zCp2-~ z%PEw_bv|m`rE|m8UCZu8kdo>%Hf~o}o7kAvhiHCKr0Z?BExRvuF+5!^bVvTJFyayS zL7hMOYA)Cc6ZA+d0333$K>HN}%OxZ1|B*|^hYqGohVtM;+LZf1UwO6CIeZXYpPna; zEUPT%luxuoRrv9BL5}&3gI?m2M`ksIJ`^Shl(!_sR9AM8Lu(9W%)RmHrZC=1z;_Rk zNOkjvU|1BMm8n*^*A`#I&1BPt(>Zr5Ur!&o^H9lZORe#X#@?j4%aO2ClEskh$9HpP z(P~W(T*GKS@#t-b-{h+Sf~05|)uTK1mSsvEORMSRz}<#->Ue3~n7Bx)$ z%HP=NC-2Nnzu`~ufw<^`0b#dK?`cl2Cp}(c^y)=L@kDIv8W;!_M*@g~MBI3cr5z4s zM>6Nd#b_njDk>jFV>-j1adklYEzS$eQ>vy(@Y#RqnkHg7`yUR|IQwT=B4_1!wWF)8 z0r4L4`+0by8cDbrRl{X4sgeZg{B|DRr~gY#9Y1?}e217ZU0_R8-NEvv0C1fDkD$8a z=U)~8GD2Jf2Uj>N>`n7Hk+3q-cp)tO>dH4d?Z@kLmqLU4UEN6b zh;w!)2q2W0lT;+uVNdDj?7VWloz-)I!t+zL^KhUd!7L97tHC5}TBbGB+ z%ckp?q%TD90aS2UxsOekBh~Gu>lxx*){y^ztF;nb)p-2*)!Ja<{1(HeO)Vam`JEMX ztW98)e`W8l=U?BuTB{(zBIzK(^rLd?T>7Y5Iu`AoPdP&e7xU$&jR(=zt=Bs*9yV_X z*Isn$hfYV;z-VRolb znjs+US_QN1`wo-Ti2amTiD63)VN&~#oCy_+qMTVK7(yXb83EvC0pGeFAUf?gB4RY2QX|V{$7q?r;|BUzdgT45q$X!Y(C<( zir~1~$xKSklk$wXDHbRgmlz7hazzCF31*EtB(UpCZ}OHSf=u5VT}4`6LM~C65p4Bx z?s?0vTJch}T{PsT^?xD^>3DDrE!)yIR)?yn zi$GO5m{eqFCax@M{E(uoP1`ViZm`66CQSU07p=y5i9aREaBB*s6J!KcMS_kG9ZZcR z5)qWBv#v&Lz6M3>lq$L`P{EI7zd_p*`t@Qvk- z=aN9e3ir#y0lwd!$R@3v>&C`N0ycpafrXR|q^bhZX92r|7^3&g707V1CJiirQu9gX z;9Hd91*1u-{5VN_*1F0XWdNYm%U?$jV#~Y%0ZOvbW*y}Skxm@0^r(0CphJ)8E%Syy zdXZ{@^o)FUi$|$?i?cs^i`Nc6^bRLuWs&E>!Sa)a!=r5(??YNLn})ymwClm72*)v|_jtM*K$m6=6?kY*~s8DT7&^|L~s-`}fGmZozaXpip(8FQ~* zjc&CxbKoiAI`GD^u!N$&;)fuP(a|KvoR_ zP^(?*4__7pLYkxcIdK==Ahl7>)vN9i7r?3mMS14^PL!&b1c=_X-czQwHCaYe0)LfITAfffd5n|tvj$N%N zo$Oq&`vXJFW+vyf4^_C<%g9?wtxINt&J@Y?Ot(q73Y3<<_!05t-nSu3dX7P@$JYED z$8@)xx_fW4o(c+~!go2^4B#v^~!=!`?pdA5S$2P$}eDq5527Cm~^?f~g zCJK)va}BA9F^S?=Yry41}#kusRI=jx#Yx(&1RJ!uVmQ*OgXnyk4Y%qZO3 z<%1to2TJBOdhtmnHpKS3?>CH|W<8z@@WG2GUH6z}bd~6Yaec&ZjilR*t+%-8Y`rCO zuT^5*w1Jm-v$h(kAyY=es4kMC*%HWsE6(_}O>RA+a;y*N;WQ9mN{7IW)`dQWm-ycK zuuGQhtV1nkz*lbyfDnone^p9blgA*2L$mV?y+7fJ;zlu14$LBoDNEuEM;TGG*j0yWVZn!FLItZ;Ak?925|m?jVuHB#TcGGY zgVcuOG;a=2U;Q^V3eg(eBhyH*wLS}ta_JIf9s58YYN_HGy~3q#x;4{wXu?!`Aw;9m zt)9f|PF$Y1f4^x{uXQfHq*Jzdbfgs`CvHVX+g2SH%{FzLelwmT#%(`y#N&IiH|?Lt z(a^iwPU7bSBwD`)Gb%qNx@m>>dFa=lYE{41rn|De+yX4`65STEN6qL_g~TCq!lcS$ zL+hI(*xI@gyqv&`ouaC~Q$m}Z##w#GA+~gGN{BvFNUGdHBo>{7ZItY9bP`#AMe}S! znI9=75|dE`+!j6g_}GSk2q&Na^e#%B4=`;$K}w;cK8RffAP5F8&mT#zXP;5j7nhuK zX{#<|T|?2xuQv|e{Yw1x_0 z!ye)>cQ`S`%lj&IcZxK!r07X)Jn}%U3C3bvt3eIXc3S=rUeKKq~B;5Iwc=*iW_cTQX~V&Tc5?+MXlvUN>1z z<11PA@Pub8StWR6-RcNXKO?DSEhBg%>b>|AG(yq?@zvyzw}oU98%@+~XT^bA>I1?bM2Vt2k+Q?B-!XXNMQL<{X)LG4IGMz|q}C(pAr_Ld2j#XNgq zP8L%$t2-blhk6?VdrJb8zYj#US#{r(@G_HNwpzu-#(S~f;dkgI8;U8^&G(g}V_G^; zNF_kTCZ>^-=TaX;IRzm<#9|;q@%NYs5@N$sFd*a(8AjNBkw&vsfWBGh0$^CZ;rq{$ zjQVq$)B?0U?LTX`)}L(o2vPlA9(R?lFnk{#Pl!s*OYr*q+F$+CEL8OC-OBr#7R8ox z)`#`4p}H)V=uH##lfc^IeT+B?p~-JGeZ!QTY~~~%jYgak9zNZtttnM8rLJBV($DgE zx0(b4+)^h+E+q2^Q=XU6cF9SZQ=#H$%czF1j zA=fmfEaA$lXdoFwCMu}}u^{>kjN6dZsCivlUSY&f7%Cz#rsMV5AZ2=j{)EUt6G*pEfXMgV0TUn~t7VNCdo>|5hZO!TP zcyp3aHM1BcZhRM{oCSod#Dmz%EVBL!rttdKcVGSJmM4J#W-wPnGKW^0I*%@i@<(vJ z^vB{@J!OUMQH&?HI-{&MdF>O3Dn&iG4%4DY7MLAWwaQ_;Y)@fYAX=bYPZ*ci6&EKj z&Mmi!r_2nof0VWGY+!Bsv90E5Z#iQuH&PyL8TTv@FZbMh62OSb_(qbyqN(vlrT@r^ zk4Gy`$>XWjJbNn3Jre=)+0>*yYybf|Ju^-7a9NUJJbi{Fg%HRqrN(-;d-Ou7jRy&_ zP8Jg8XU7-gT0ZSmo+>$ssE>~%6Mbgv^5`Jhrj$vHB1;1I?l;d3Dlm0MB^yZ`^5kcs z5wvH#$s#@C;Z||08L!h*y7&-GGPKpN&j=^mM_9ISL@9Zhtsxqj-8ud75o=aZ)bn##`b)S{@7obGk&<-H2 znNK08O*EF1Y;>`hHsP3rqKFw=rj1|EX;j0spN}zKw`^f5rPlhHtr%4^uPWs(miKjM zB)EHD{Z_~W$7a825lV-SkbvA%DgTuv^)Bqtj{O{?EYC2#RI9{hb(;7*A!T_5V48%5 za<9y=j`Bbic_QcLJwe34I}j3;bKSSbJ}QanZrm()_)4ozw&|5i+e{99+^xQHUqoh` zbE-MyeXJBFwibN>WfM(6F?e!n1RYc76R{;nZgDH~= zu6`Y^&DEN8!o2PF*FHhu|Hu2kz3=${-`{a7^(@bYKmMA3kPhl|*xmc`$G^P)PxOQ< zhY1OFfW#7>Sqm!(&aJ_vqun!(ql$tA;cyn`4u~!r8A1tV+K@TdG}MYid@@qB@+$&D zuCLP45BX4H&BJjLW{8GUHz?4dR8!C-HQ?%4h`()7rbGjOxwzn*yVa8DE0@rShCm!kf?iF=xVt|Z6A zAH?LfsQ+@}d1ulR@=Hsbf3o%6*vg+Jzp|dw(gkF zNLzR*er6wz^PP7s=z*_;W&P z#kV%ad6=s6H?vFkmIj+k=1z9cRyK2e$*uf7Q}^TgT_ECfP?4-3Ah%iB`ULn&EB|tj z@@4n`1ka1}b0z?v<%(+?Q27%{MI0h<9A1;thl2@jH7imhSFBQE0Q#XzPk^D&YE3QNhEx)*I4U;^g`;6u*Av&gc?TAe(L3Y#?f z9a%o@$$!_ZaQBEC!s*VkCG|F^#IS zv;#QZv3XX%&IRcG0x9dq+5CkwWyVpO@7`V!dCk)FC7%~PQDF!t4{4>7;V^s={94>E z)k``pd5jmG%BpNg5~1T7o#wIeVoHy5$1Qrn*<-cxg$(hV3MT%fKBU+!qZ;N?{g6&a zWkuZzCU|iV5k{DX<8OAuTV;@p+J)r8ts{akcOi;|SkX-Sv?OWynJ$S2FCjGE2lbT~392x_3#mNZw1lBzh=j|@;loWYTlMR6+q8KOzd*Jvmf4|Y3ys=h&J zz(c~tY$vhx)fAN3i#|~Sy{6#j;NXpqxH68#QxK4am=~>DtVzU&Jg5nM$zAg2JCQEe$2nqy(G+H3+ zwSkmox^gBV;9nHc7hoNDfV2on0}eXR)a+&8ru@uPAM(Gd$r~Rx*A0jXVR8k5|AUZ* ztphgkiDX7c4`W~rgWKOQ3_#V!}lmn zf-ix^+r!Kzy**bLw3(~!V{IUO#DGmT*bj#eNtz2aPdRFn6imzpW`_=tJBqXN#m!nH z53k`@@!IAe#ihOYgz|x45B)$go+tZrorL|04TNt>TUmgg)AlU1VIi60XlX)dmMSt8 zwg~{VWuK@@(Axg@6VgevXW0X-BvR@G;uYc>2V01;-(d<_Z;9(3ApjPlDQgSS=?N7# z`BQ2|4T!1U&b6rK6DGxKVRd_Bom5ZQ1FLr`J6UMtVu$K$wh&!264htdpi6T7G=7M_ z>kgq|x^phh-g)jT1Mb55EmcLd-NR?38=B`pQ(Dn52;YXlo4l0C`5kvPm{lmIrbs+3 zm`LVDbA9VbFn83n^ks1agxd40UUyaFgyMF!gkVJ~qy9AbhRqD_V~@3!9hgl&ZnfBG zf}a{&ageiD6$AQ zp$7wEe3Qa9DNhi2RNpp-DcB#_pXd_V|A_NG_B(dgnvA7pdA0^lmUwtEZRejLn~B-i z(W1^~aepT26NaYLxQ+ZtuZP8X3_UClO;nTiSDkB0F)a?k?-9CPfl&2(gl^5a39WOy z&L1|tJvULjOd(waQf-Ybo%NysE@zeP)4d`$DO(tqR!sna7(3>Rwxg3^$CyhrsG9hy z`xx28pd%ynoN5mn-w4@Hp|nhyE_8b_vC}F}u`$!RxNz#@v4Ieu8glcc3z%)ueXF?L{Qw=bq=p!`AdZeSp@pI%w{r1?6Q|5Li{8!18HPloHaf&e)oPf#N_VvN z`J#)afa##T(z=n0RiQXAGY^-v`J0{^(f3V7gD)`(0$X~bgQy}IF4(khkk&?Pn8@jY zfT@H@B=UL?NjgaMg%(3p189h2cbcd+G@8&^6NvG%FPgskfk+_L279gwasW^s?LS>v zs=u{DA-F2d#~_VSG6BYATrVY${JZWRa<9&s(TETInSLj8)r-m;){-VlIfUAPKu(#Q zA1ZM_*=%4c-&4O_Lzkr}& z$mnZJ0@3B7P%N0KyXi(=aHS{o_^ZgCs&DH9@ikpTsG-!POjMCv=f*YC#2O}Nq#ivZ z@%2!1kn%uMBy{BJQD(*`6eWF%?G#qhjf=!hbYN&(lIRiS?g>SdE=RtMTmZRYTcYeZ zDjewQgfWnjvQVK}1DRvKPaT?*a9~HPj7xa^1b`^qtAfeaz~6uZLSb@5gE-L6oh*bR z_@MIRo>ySL*)Cj04gez?%H;vA{5is+1Fj(K#A#C0QIkHYL;wYvpjJ8I!E z^V|Z1_hirQ$pN7rI-DLbJw9)mM?WsS`-a-Yz1Jso1_20%rphczI8a&E7%NU)UkuH2 z>>4ItSA-aD*UDQbF{cZ=BKW9V(T4atT0jn3M#(d+0y|(YXqCxVPaZUoTc%bw7hI9P z*eNCuqzGW5BI-e)AJK+p4aGET_!`QAj$nEVP_6>SUg7iJuQdze3$C;wEful@0~ar* zsw7dklEoG%l}MVK;#@;iQ1v|9p*a$E32SvQR#81*HF}NYuRDk$<>%Cj`->V1h{VOFw;mCJ>uS^ zrYLRqB74IA^f{aFCN=HEPhoHds zBGgD8%QA5w%(5tM|Bd!5(xNz^jNJqICX4AQtmwNef(pq!j&DY*NgF?~2gcawz=6v9 zRWNTdwbIQVPpl+sLsijCW9zpKR)9tH96f%4nmL6kf*3I*4hX{V3@NdgsaF(tF?xkn zPixDX+QI-q%KSaYS#LkCtHfb+_=25vsH5q2(o+_|FNsLLCxs>OD}b4e&{&MdEns2~ zpe6fb%&hcm@f>M2MI)p7K&nFEB9$%mN2IQlh5CguVg5F$|MI4i)sD5ErYDjg7%l-& zuqC~qu&A7N?l&W|_$0n;t`>enLXcdC4u$ey8`d0em^N>>GA_TaV4A8)1-J4^I_6qQ zmRyHoAEbGlNGzd}FUJei;bBsUK-gWLlV89Qb-c=Gow(u_Ov1l`+2*bgqEWWi24YiS zic2rnub!bt3d!5i!)2=8rM4BG6`T2}SQwA?(k3PpLo*u}75297>*$6(P@SHeR>uBB z*VgcCI%uent>HtWU?H25 zR$I~xn`E2)Tn1?6QSun%QK zsS*J=bBAMm%gcx5064PE#E8frwjx27V3XILNO~3x#%0`3M196;VTDl9ycr#35t^MW zhs3Z|v650b0yN~Nmm}mN;k{0!=LHIEsOnm@^fZYLktSLJChDbBGshY!H1nXC=qXre z=2a+h5g4f|P3-PNEC4yO0>JVZ(?0hWmsO;ZU>iPH$H~<~U4ThbkzDzkwY`ysWDRce zdLUdRiX=kv9-rPZ*Uq1)g=SQpWZEZfeqm(5qHXWL&Jli z8Pm6PFrh_1XGJwq5p9p61}`rA?xYFoPNR2tO?5ks_t(Q#I|~ivkL1NM1D18Fc{G8=?^@ zVlXwLvF4?qNN7m+#|ctcvMdf`U+MB#lY^7j(e9uMdzfgqAPe8R#HbiKd7E8k{x{z~ z;jO)wZu1#$SIR% z35&lHU*`BEm<{=v`1(v#;`|G%7{es05&J8iuR0=w&GcT?>iv@_A)e#PrO51%`EseVIYPU8#ZSoSTVE*>4V1BC$ zAItat1n}oTdo-ph=NF8dHI$FEAyO(4zpJ}3T0zupqb1#Hl{4%52Fx|ws7YDJDXo&T zjmu`hmcoE0J>JJF$zElL5BiEr-{}0l5HQ8hgg`6$i3X+DXS;mTN)xR3B$h=WWR9&E zyI5h?biB0Uff$XeoD4uZ03drZFbklq3 z-u8Yz&xmv`=Wcn?->}LXI21X3M88lfu~Aft68#q0GA}|J-{qL|l0=l0t_9LlbClGm zjfDp4e#1b4MKXdaTc`ofwe`Y*{>*+r$!DrVdu*#ZSlc*X^!k?S zIQS{`$zJk~DsbsZN11S1DE?B*qKg*7%=1=iq-sO{#xD4704?+#NCEtmZ#waLn+OES zT`6MLKczk>3db#Tbe20u+&wKJWY;INjy$DdYsS+U$?OoGKoj>)ixGgcR(Z*DfR(ysfT!h?fix=Fw!MjO;kq*t2@=PZr1mphiNwu zuJS!O3}31NC~Q@++763t17th?*N0gz4okiefeN|45`lk!2Z034E#}4b$5ECgKq&Os zQMMSx_3-Og5u4XQui8J2X@s#o;#m8oLSrAJbWz9l5O$a7H%0+r{mEX~F^Sxg| zSV}z^wv5J7RyEPosZrMtYdO6-@cf2X_m5di^n-4*4sQJyuO->$jg}+R!Yir^eTamd z6zvqs1RUM5;J$^)PPrtfiG9}1ANvM5_S2`MJHN#8DOZDL9(%?2exyIQ!KK!XWqR6{ zFU;(+xWBQMNWkO19Lu|`&DZ;~A1YYaQrD1NtFI$RIN*Y6AKFT)^(?4%yFZj6ZgEK% zsn-5aNvc3TaTG}Bd}@UGGrcbO)!z!qH32+V^Y}uTtSssEM1GAcp*HG$!o%@YRz}^t z=ee4nrGX+nfxtR&oGkUsF|OPrLAZP$h0QgDY&^NeS(#gWavBY5XSWTFsk@<3p@uvd zK*OXnL1`T>54|1X5;`9*mD8)?6k@Kh2{Dg`)m9relNTUvP~XB@*T*-meqI7U`m)3^|tSTHy6WA9CJb?b3$ zyLz-DnsD-@87{d24=`MK&w%0n10G{eQcG)}h#Seh2Ao9{{_}B*5=BuIGiiB!s>?&> zEFhDxT?-ePrhZNA0k}4-gE%?PLS1SAA4TdqytVy6c4dYYf41WK*BulIn_28xnRz$i zUKw}GEKCjrFnBas26On6YmL?0U=-w@EwK4*b&vD>x@Uoi z)p#(tLOfM{E;LX&D9iely>Fz;bDx1GeglGu656wxRAPAi(z1O(sx2q_+h=h2Jyky} zL2ZMti0W!6-iogJ$+nZt`@0c70t@*rmV1IIRZKx1(O7iBCmSwn%q=4MS)G_8Iff8Cj#A{RI(|iDhetu1Fn3M}QAL?-aYUC3tlhMHFtGCe z!*`m)W!;&G`-U8-#4sN!jLjY{vt3*q80ZJhsznO;;o<6Ftc|B?HcBpHMQPa0Hx7m{ z_}#39V{e057#PdM28|JzS@#lkZNaE zVSe*rr3!x>KbdJgQu!NyQBbdesoeSYwyRVTpu%d)KlmQZAob(BG~#gX0p17?fosc* zs>r3cdVJ`6qCi1z;KbGZP#^?7mSHZY)tV=jQ3xgri>hyBmuuB^ z@e5pOgaNbrW%h=es7i?hQB@amZzB{=P9C}LgY@o~+=I#v+E9zvMY_whfoCD2lqvyT zga0cv62a>ai^9hy6`a3SGVrg|aL>CWJXV8NX0`iV5XI1`jgKK<6EYF@k0BgrB3||PNrJfw+(XUa6)kXkt!(+o92$TKf z2aR}BVs=g-yjjCFGQRSV+0!Dg6#165+$aYB_!`Jp0swJz4#b_EirImT)Umez?XUkU z`)ySi7G=)>l|#MSK=3FWBt;--&QQyI(%f}e0B0~yZ(qL|SK&H;H(KTFroTk5{)&gh zXdW>0`_R+hwC4bQhp$=ro*PqO;%|M1wOd9yPNj-r#q?6D-`VHPQZiMHY%J(;^#e;-onIZ>4*3?0rM!f~o&VgFp{-M33>_=|wwd?N&`G-8^JaSAA(8=%qG*217-^I07sIom+v`w&G-b!P|5Efhz?&h7Dn2UoIF zJL_<Pyoh+*3(of-)B%ZzAeVg0Ko$^Als`1*)h*T$qby?=JPW)QVS4+Y{U)?vnbF2o~$A^br7XT||k60C8T* zg*XFd>PJ^Tw6S7qrD{Da^Ba@{Vkjr9k3Rt*8EV&p^^H-F39d23EQhDxa%WXl zCI;f}#BLfMZ19J*+6Dm02*6eU#-f9X=gRD!@ zMts4qfX|lC+a&jtE6m^HjVMbA{J>RGg02lV8c$RtlTF@fSe7~1H(er3;VZBYN9^B( z=z7TObHtA8@f@+%Vc!RAO#44T;WJTz&b6V$G7_Tk5@qD@d82LoIrYrSt*?1hllHsi z!0@yT`(X6P9R-5PIFstB?Dl`8C3_u^`YU`ktQNNBlA)Wxmnq>h)Sf9t`F(7e3lvUkgk^5> z)dT2ruJDGHdr|oW-1sX)WgSwSAfuH`^oM;U(&fhOZEN&pc7-}M&y5~=nz^f<{v{D( zxQZAPbvyrOM63pyQPlX~AE#CkJ7F-(E56o>6p}IG~-<)94RK^yO=BMKb?ATkaR>uL|!}gORgiKFP@`B_*Uf6rZj{;}3m#S8)K+{K< zkd{fYT-Z2L>Fg@~ncOTne@gI&zkX49v%0kE%zxHjFif27!usNovEF$e&UuqayXIIy z=VO--FGfw?v+RQ3kUuv0k@P?34T;(Xmo`0n99ZU^Zx7Mxw?}T~T{E*&bKbd#I8H@s)uhjd}q2BRN(zH_uR9|2{=$4W~VBv(bY&kpYF|89r^ouP+8jVoEikxfdl~p3wiRXZ-fnW~o__3C#Q# zEj1UuT#iW0SwzAPiEsT&OHEH0Ww9{3jBKg&{Vy+ddTKVv*{bQ8Exk8Sx-cQcQx&#p zCFEBg0vSle4cHpq>C09VQaE_19$#HLJpfohr@u+N2b9XHjUY;2(T#Iq@x0+5ScIc4 zSnfR!S7vyE(qsg>luoXL{a|+Q&iUBo2M8(PYr4hz?WN9(D3by)4-T1Fz%_3NA|4Uy zT_{qBkS{)>X*9h+`uL+~rH_PZxuMD@tK#`B72jJiV=LYAwv+e!_?gBB0R z!xzG`u=DB5Rz7TdWBtJt4lqC3eKo>n(iK@qr2a&VG7%@IS3A-=lVfijMHGvJHp#c0 zo{ERxdJ%35-=}g&K5gPq!mi08Nwfs)0ciiM%5fgZ29b5smVQM|#uBgw}hyICmKI595lL z60oHJ#|De;Y{Ybwqve{2XzX#UyQeE5dFtZKMMz4N4n#aQH8m>FXl&m{qeS4`z6^WX z6zk^(_(lp%^xmyLe`T}Q3a>P03D~TOf3|WPc;t{Y1H10g7A^vipD8&X!kr$l*WMtuhJf8W zTFBSrx_7>!vFk3@LDLtu^u=)jDNDGKaP`kY8iELJJ&JH3d?9epNFa`dzkBU400hZW z2Dp6-NviE|O*BIox3UoOBL&wtUf%^=h}zd*v{gb z`F;0eR_V3e^u!sRM?IDRA$hX$22g5ou~r(*F}^!@%MnmJ96(EuFS*tztYpi@XE{_- znUN>pp5dtQ%=11wTZiLdeRc|-G}&89*Y{*7;L&CY@X+M@W0JKA*~B5RzbV{Vx#pO0 zAOer)e9?0S;C-6VGQZ>aE+it%ethhQX+>si*Ki7&f2 z6@U*t`SFU=wN#Q&e(cDgQASJ9ZdM?EIeYz)Y#`!!<7`yKw;Ze|x7#@xQaX5}@+|j|yZ&snb3ZDx|~wPDyg`(5<@ApSDCGX1fqJW5?Ex7foFRp`k~Z z5FT!NS|wvtKHGa{4HYYPPcDTfXuirXzryqB{0Tti3xn^SV>Zq_8 z9_wt6&p;f_YN**$!qOAfm>+sF4{>vZ%D+|mr|-Uaw5?oxqVYXp&S>PVc6SaQV)KDX zR@jXFa^aC*dM&};HMqy?cS088>^O*aPP z9?=C2SR&ttNC4mWv_2iNn=TP38U@qWa_W_}+Vttk>k1$7y!(7Fr+BLPhbSTWg5q}M za2!5pqiZUhGxy4+NiJG%8&?3dW1q}iG&Jv>X`6f_eevWa>M-}P7KR7pp)m)^^n`!6 z=RzRGn`Go}PVinLR|jtmmxG6j=bhZ0uufoayxfqVYY!GHJ(0$HaRvA8*Co%)1l?3` z=ZuASXFBW}4TVD5_+A0j$7%p)TmbfS>O2=F#LuSPzcKeN!7Ua!s@F_(?%qV= z+>M8FXk@42-rjs8S^nCW`h>h%e|61px^l1c3IGX4&Ykl&9#RoK;FVF7F*{fTL7p#zb0z|@imnD2GHlcKzi5>&IU(U{JWY1pPIzPeMVQ%Gy`q)3Qp9P@eh zaA87{TfYI{Frzx#2kj566C&o*tr$xy7Hlgc7iG#q^8Mb7f6#vC zD+hsb*62nVY8|x11a!7mE$UD^oX*xRoUnRZ%cTME68;6jV8B!Ag|Rc7{tfJ#;WQ0( zO2)>VDhl0%M^U(igpgStIax?952RGA#KE--Ftnnt>&Bk*Fb-Y~5rHm@vUe0%|VdfB6J zYs}TDEYURG{opoeK7tEuWvif?p%bemgt@l9SJk^87S0oB27?qTaZeB z_t7g?Ly6;XKIQuchd6d8=hMYIw&rX*dliRRWD0l=4(4YoJ$8{ezShYHDa08XdFV|q zUh&*H+iRbcxQO#So88nIHL-9JXG;8;p~R6@*jVx6{8)!!0Y6g)(1Ai6DTUR^X@fcW zdA+O!Y@poV3`CP}8`;_>NbbcsS`ZI7Gb|3Ni)+%FpHB;INU}ob?~(>+gH9dAc;>`B z7x0KJ0xgbrhaax^n>V?u%!`A*SkvK~!LcHp-BgL{9oX0BTIeAV%Ak^j#_k}nd8+5tfM(n=SqiCE2 zi=DM`szAhIZ|&5!5oXcI!$SD_c9#)=5^ThOV*%|O+wR!Ayxgn_f>a+hBt$%-^y9MI zh|?Yua3#N3Sb%$cED{nrQq(5aBd^*i1i8W>s17mrduAmDeKvr zi-+PPIyHTbA+ZkE6f1EE_C^g|>r*hC7D0^*_D=8So)g)VoUNJ&R%1qm3|b)-@ zSo-DAf%JWOc4r_=o>qJWEG#>Xj?z02&$1RP;$WHdyHP$?{z5x0;Ta9hvWJtf^fX0p zXH_r_Hve+)@NQeMeYMITcRYF`SoLb->=f>?Jkngq30EBmuT)+f7tegkYkI1((OZLt z54-`=K#G>Dkrz?;#an=V@CeU6oCA$Ro_Op96T(G=dm8}Z16)-(I~=fFc|0ox;Kv%I z9SsN?=RKOW2y-S)Bf?c{dmTtVL%0)Bb7)1hc6!$U2#=anbsfAsQn3_?hT)JaR|^x; z>(UPdjk`rDb`+z<1jd^Mc+_jx&v0nwHF^Vaytve7#x)Aos~9xZ_i2&2p;&$5@XXgh z6rY>DI48u<7(80X!BAk{Y`*YJdS23$HhJRkv?(6%DBK#1!`lx>okls}_oU`g^V*AS z)-@JpDp>IAtJ*53`B$Fzo}LEJd*p{q&nA!fBNqesy{2e~qbqjZ=2imBng3{u;IYGw zBAC&z12#S~Xly40d{`GW_S4ZRMdOVB)C(5MmyLkrlNM!)F%1RoFt?TgC;UT^Z4C14 ziu5<4JnU!`1XbCBa0eo27zZB%IP}T8R++B?@Jr#WnI~?0MlyZTs^@ELw>>)Jm0u7A z8Q5G0-B!^`l5_x`t}fXCz{-JpfpXsB!sob^W)2~2$q8iA^LzW_rzDWAU)h=lCo(y|6T@(M#6Sgee6H+Gi@r9|7XF=dNu^wjjPYx0 zl?H>nTvsB$IYc$Nb__5$Mc0j*7GGXtx{h#7ip1)h7_Xr1W^eWLoz>nU9Suk{?V>Qm4 zF!VRHDF*9c{m;7vFMK?c#(`dotwV5lUCsIRWs4I&|3*9E6S#XHwgMr8-MubJ{LT%G zY2j~QnlIe!nYgs zG;+}s-~vEf)cx_NY!r2$WiA>!0rjA(dpZK|513kLEKEoDz~QHdk2U=f8B%a zlg3M3EHqhVFtDig^(GJG`_?7~A~}{qj%=P*`A)Lyejv@=T}Y<}TUbs6eEAQ}S)E?6Z0*7j^UU(Q@7X|jtDfWV3_`O&wPjH+JVV$KE@^iNH z498Kh#Sl9j%9}k}HPco=#?JM34}?(@7m_!?9s%$S_~oSza`5?viyeH|Tofnxe~M`ZNq zBVUkP6*l^FE)%NrY9Dw+GNbCxe7@XC3Q{rh%0SPA2huX6X`_&1=~lyEcs_a(Zf!>t z8a@!$6g0jY`M`jv8>25yN2?pJ(a?mwj#C)(MDJDaUTDPmocjy!hX?i5W@%Y2#tg12a(@44f;+#(z&^WX0C5C_)T3t@UG8hG zLL1?rK2$K>`bJ1xnDd)YU9P+Z1JC4WED1C56Ad~TXvy`o0(yx+C5A#|HDiWPLeUe{h6jkIhKB=*{S&2IM15m6hxo^1tZD)%1wka7ybXJ&6E$@mS?n3lf%tST*^(r*lEkTPT1q%QgYb+baIH8|?Zz zI}eWU;`%kJ4FXVk+n8qCt&vc#XGgw>>+z8(v;FZNPHIi z9tkDZYZz$}>U^GXG<~Q+)exqBrmZgOchE*Y7zt2bc3z3$HyOZZVflS^S%hCr(hq6s zulkk`V4nbj3@M`tk@t&n0JtS}Q-;E;hucny)NkG%(ohX7$VHoVoTCYbaj3yQgLokk za=#cyi(b(?d{cR#KP#7g-|~mq@GzHViOm0|L2TlQ}vk{>%rnEW&z}hf;M% zJgam*m~&A?H_Xk?7X;juQoui|RW5n_Z-4n)k1GD_-(e&zxm9R+jZbZb3H9OD{mUcQ z)&2lrO$YRspP$ix`U3l_1VPv4)3LKvAgFKWrw^90`lIDe#wPixL?{SSYLV*Qs% z9Zl5pa>@GlNaZ9L+J{u8+-vsk%p3*x+{R+QQOYFF*>U(#yyeIbYu&WNe|T&-PIfB) zF}@|Y3*r4sf<^lQ^{9!Z)(Y->;J3=JMS%)Q>(Qx>%A63qyFdHJ{Qwm<-9glVaL? z#MhKj`uafD5RJt-#z9|bqlffb>tJ4Oo6)73(KmX-BdV?@)>c(n@^kq;QT9C8UXqEZ zhGG5qAq;QgSM!`^+C-hg11BWE#*VxA;|CWzxugpifU zvsMD|Z&Ycx%@9|53xb%hR(W*d7+ICW_-N@VnI&3%Gn6XiMbl6`UyjQ_ouQqM{dHnU zhc6Vi3^mDefi~A>Da|+O;xOMi{&FZ$zc3UF3O{*dr(a87MCfA!xF?uuI(J@qm+2!- zL-CK#D->6+90X-@VVriqjiHw}$J@pgk4#`>ISb<0+8GXwvhC^1t3}ln3xk}*o7z<| zf$`~+7I&m`0oF9`^k=S6HAM5THFGo4_FAGHJsivE9jW(hIg~ZR?3bd0677@fITLy( z44*~6RM9}O14B+ZCyYtAC&K;8x20SoWa%3K!Ny8Pr@us%X7y`mZm;Pfy-M@K;9*90 zBn;^uzXV3Qq<8@h6muZQ34pHFP8gpWMlTF{K7S3#iw1-;R%gFm1Nlx$d&hrf`hm@_ zKH178`HY=ha!H;$$0kWq&1^b+tcoALVB}D|RHASYW-~8cMi<6em>VhWtC-OE$@dJz z%vWq=eQs$8DGfj{0{1Z4Pk5f8w%d~JP)NrNKSMQ}0j&B6A?@=QK%kkQjZu0x9J!R{ zh1ofgjOY!~lntee9h%AJ4!RIa^`Gf4O~dKc8}=HJYp>ySVc}RtmtIL2|~#}T?=68I#c~BNp_|~GTJEeoXwlR=2DwX z9uPc6g`Z*6#6T=ONE6J8Q1>lHu}Cd0z;H!t54izJiq$?tZ{kM6Oh%@wqzi;71!sH# zs=gBZZI3?(D!o*34Y_7X99JcWsL`Z;EihfkK$3z3kedTEnaW8Z#!gCaVGNABdb-Lr zbYb}z%IRE)e@f>MMMLdc7&}h-%zIexp+_y#%rn+WRKo#i#tleqA|Vi(HfD~8;=t@( zwwA-i6y|F=(#M51PjDg8aX=E|3svdM(uQNk?NI5qH(?hfg{D_#q~=bAVe(`olwQT6 z_9A%JVTNjbx}iESyEiVqeIX*D(E`Etr9T%Ua+od+fka=1>a~=2sC3Jim5pn7-0B^Q z&0La}>i-C^G}|VfE6WkHw+~R7)tB3<5a%C=)BjsO*T3?ReV@hl0de&NtBw(vxoVPs z=|lF`PWZ4rA9);@87N; z9dmKOeymwwaD#Baa{L|$H{lz#SO_^cUXpKR;KJDd6!6lIA9m_LeXYXWHNz}~!$@QA z^AD)*&3)?_^iFuIo~I01NM@>~E7AuLNn|p~S_)w6%H)Cl{7emTQ9i}upc-o4;73!s z*12;AR5 z|9~z3K~-^_4c-5O&{`H2_4OaAs((&sj|9$FEB=nqevngIapoesWGmH{+Wcr?0A#X> z!K=449XM2edr_UUDNhS1@Wew*n|pw1<=BrQ2VXM+_BAF45URHAnSWq7u(i(d?){5!G7hIe-$*armJT zCnbhaItm);Qojp%Al>1Vnmr)7#FU1}j^;7xgR|37v^l3QVSoiOH;Y0ncz8xLiI8L7 zi7>vSQ7wp>d|EMGvIaa3a3C0AseSn}A-^=}4ppWq^Ip_6QA_~!Mb8HfImvTvHzZGJEI>4@t@s$*Rgyvper~H|v2QU2 zjT}y|5kHMc;>;H8&cT)N%Z(4;MAPTg_Il7*$rQjp5Uxn)1-FHWM?Uz?IYW!N#<{J` zM)O4CTbfNkzZMukZ=wzwsdC~K2_I}n4oCGzQl1MF(hKAd1U-~$-0ev`7Ahr8Pb(HG zZ<^ka#99su#3L(siyc(4ds8%e@GS37jmSd414j1tW~WAOLi*Dx4?;8xeB)uXrHpN1 zsrt_a=^K*UfD1rhlAfn-<=!ut(0##lTltU!O8>osxZ0OE;M0f{hm})@2V}aN#X1mY zXFT}Y(}BRdYl(d$0jJ?DWWaKx@$_XYB5*H0aT+{oR(;9y2j2-+R0met)kv{$PF!HKv>%R36!ws)5UYthS6AcWAsy(m7naBBx= z=W`1wupd0!7xZ(YXirb%Wt00~Nbz_?>gF7Hzf;5V^yG~ZgN8SrrP`)77e;`33Sw^v zar}q!%#UztO1^Dn$b*+yJtW&xN}~8X{-9FNlKrr@3p(*0KV>(v)LsmVJBe|kPxsZ2 zs@WZ#@RK2PK;nvgOBxzjs;{V69BoX;zpN<`jf*9U7y52|YG4%NNjCg4%pyU*ElmU9 zB?Eu+WmFlW3ap6&*6-Z^W_7Skba+wN(R@fy&ZP^Yn>=`@m5#E0K0Wd6SHue)kqb5T ziW4t~A(k}C5IyA^R##bN7_Ui}mKAAXM^2pm7Q_Z<{Z!rKN&j2ssVn+lWS;($KGi>C zo~A3!Qx@pI#ypME&^(RdInk4sd5U)L2Jxt=rAu70nyg<~()9fPqgo@+|7wi#Mnxq* zZ$`jPU>tJYGknMvaR9<@-&O;`6eG089!eYWkTD)OWyS*&LOI9~)t-*i`oiPE=BF#s zc&hpX8n(~XwZpNK%w1f=VWOVtbvRVun7W5b3ic>wc%vc3cSl&C?AoVIY#+|S)n(-h zt$wUdI*=A1Ee9YI8?_<6fnhaTlsvj@@YvL=rIt?2&(Y`8h6riOVzzG$RARC3HNYYr zPhzkvz#CKdKz^qFZTpc%4o_2B4~gCOnnc+)khN^&zd9>EU3lD9pp zHLy^5;OEr}UA898^o0H+|M&DHoNDG;AUIJY|Xp(PF*V@lKv>{oi z+!VfBC0BcB@|tSW->bU|)!M`WIusl$YA9sWNTTzlmqiiB!I$tz-5 zC4?W}ix;c)7GF)5B>bP@G+NEtEJUtow7&KokaeeqP1>wuj~*(uTE}ibtv+mE>>Fx{ z&P0?IKwomxVkwBx`j)U5tv7eY(`daXT%+~kfB=d~?%`tD{#?(jRMKkQh5=}@j_J9R z!&pm-4&N4+ARyDAz7g-wd5-X|We!0lL$|3=KkVIReoU(T`3T)#+$#R+<~{`Czj$#|}5Gn%t>19)~kF zYpmGYKE1O$YqJXbV6z(jdmF7`idn+%lcN8pjn;g|T;)^)RY7N`p5)ZOo(Pa(Y@&ZT z{UgILs;+cj3#Nem&6sM$>Yt9OCdm1>VyY9HL>JeFBn~#(XH$nd1*_foFBwry)I4qC ze$Xe2iJHr=Kz#PFki5Yv#9ADuhe+l_4ZywWIfJTeoD80qMdtKA5NpxSJVdir zdQ_B+Ac~`M&ALJ34#}K%0f?qEuG%^*0fNB1s5CP7FikA9-^kMR%)z-v-ht%C^Y$wi zHV?CXdJ>Y?O16>4X|HlEL^KT6Tzy%X5R%ppiOiLAb3@u^YDn;FV!G#J^$m^e$=vAQ zo-tlDS98;3VH%>Tg}YefORjTn?r4~zx3n2h#X-9#tFfBPpxZNZ(^}0%?}Z8Jm4gSu zLH1&sc>49808cACkF`oVJI&QKf)16`5n8Qz;aP4v5xBv#nD_46@mRV%9JJzf+ooN zBej|bPm47-nic|?TC5wP?s!0m;M^jHb(%+~ZZy|w+@wKct#ZA5TWOs3n({&>$hr}* z!NXw9>AkHIWE~@OXUEC@d0odrW81NTuH~dn?j3GFP7ZtZ#i-b;DG1(HwO6m1*6K$hJvYX?mPqVnt(Ci#XJ}v0-tnbUbM<4Zz79RD=t+C^QoKr-QC7^Y zYbPYi`syk6>co^o6L`S-r0CKRgY~@zF<37=$BV&wv1OvH@A0%)ugzJse8c7$O?&kg zUrkZovp73bB+b>ADh5J?<(@5&pYJnOW0eq8drF3t>W+Ri8*7zM9%*zDwd|%N$HMMs zFhJvaAZDNQdy)#~)U1Y~MZaTCfy8f3OR-QgK14(X5ZemAXb3k0$7$yUrdY;FZN&;U zbQxoj?lj2gJf%$oy2OFR}Sm4}S0 zi*9P*UC8+Z@hSD=@J_loKn7;d$A$ST`&Kuy4G%9i5O@PsXq%4ILO> zI7>k*F0ITqjSmNe+VV8vTRo9)Oms>MYDNa8Al?Mmi%kcTHk2KdnP+z1C>$HTWMZRY zMP5W{+m6azEFj1HIaqx)5%o3@UWdqq*@b9Yae}Uoep=y^JfmUk`BvE+A7?yF+wo-v z4K1kus;)ec-+51MAut6)mM8mOos(y3(&pfK3E5|LZah?CHR|-uA-nd_ft*ZnAdbc< z3k6S4F>W_&H+ZPV4PG5QPT9QCuoP(Ba?DnL4<6)h5y!zpJEo%X!9#lIuo^Vg-o;A= z4D5Sb!gI+ z(bylG;xAfk+c%Y(wz=heCKuE8njJQjrtM@h(h*b|jJ0b02tn!x)*zhWF5C9t5sYPa z*CH5<-HiI+5scl+hl7XJ;nlfoJdNAej*4+RKHb67x*hv(dN&$-i9K^+-(3I~0Z_i~ zehufgd&!vA!Iq7j;WTd_4v%#^_TY@)VC*v!hr5EYr&YiGG3zqc?Y$AjGaCESVXTAhCtX@xA%r=Joe&&CoXuzdLF(6^4bgZ#7^IQ z-5KwyAsDK(a9_)yg}eE>(Bya+iDNwHVuY4gPDvvJL_r#kwHpk>PhKhk$sE2>6U2!7 z>orxi!DCM8p=dnzML=cNfUQ`V2`Li?=A*Dca@wYA>^b{k#dD0Y%)UA33IO{S`yMI! zt*IRwGZ(M)qf)`B6rlNI9_!PGh1~w$ zj~4Lz^W^Q!g4q#r#fLD`=(CSt3n2_sd*whlVyia;DITGx3nm_QKOcG`65hk|!u!R; z|Mz$pn`?Q@cpgK)YV968oUrddzenevR*YA!90*C!3nHDQc$ar=rTIBVx&UlOj;}cg z(*i8b&#_q#((erm41}=Si|ksT*j^U_+L}|tgQ5?637PU`p|0E+4i&Y9d%~c}YSp`y zkbXgf)jW8ZpZeOa@bpf(>SpAoCoGmt2_8JF9^J?f9uEB;anln~o{g@iC)vV5m?y#> zJa2$Zuwd}?&F6?Y<8czMIg-9&fUcQ5ciB@hgz>6xc{mVlU^d3pPWU?$vnbj2>*vY{bK({qg21KFh1 zAyRW-T;6G<<@u5}Ezh;}51y9iYkL`lVzut+vf;SL`tZ%^vEjA`bH>9U$TwJ?>7g?= zS8>MkG#RgV@C=iW?K==HksIQ8=>B|}=jq)-fblQ~&&cYvF+6>=JzvU6NMGzbJ!yMx z9qiHx?07TnUE9+u3y&B8@p1PD!g#Sg?=21hx9nY-0 z7cV8CBp}gvSa{l+pHdzWN}6bA)!UWPSC|;{Qyp&Kd6x(?lBxzF=95`{M`O{G3BmmI zRk&E6x!j2OL5A<>s| z>oD6-;+*+l zQM2+bk2udd=-C{8s$6h_=s}VV&d#)HO zdLI`O>ZA$egM{6w>wH>iWBL@xf#~RJcfJ|IDVXfn>4)Iit7oy$LU}D?C}64_f~`(C zcvzja9xf^^e~(3RT48ruNVHVa6Lx0}$P14n?*krsTsP+QgV~wG=0Vcxe2Fc9l#)GI z8lAOOE;P=qUI^O04SPP^uGQJ9$qS2>ZPnz#Vr6TqU66WJi&m?%*4k;rLiS+0AZ+)C zMQ(2G&W3N>ik^&{y;y71v$X*`9(XKV3tms}99m5Qo}SP_w*)vG8s}Oh0O*ppj9P%& zr2mcvP1q&5;&7J9pl2(pcYN*6TS^%%cIRt2AXEe0DoDdKAK%@s#nU593B&1}O?gWf zZ9JP(#j<1u#>bZL&1?XvR>J9tplAKM3$Kx=YhQAxQ^S2NRjy5aU}iG<@9D+WJJO6T ztl^n3+BMoSJP%D8p4Wb6CK{gC@c1==v^!7dY1GQ>)6X$GuhEX#d9@m|^FWT-dEu$f zZ^~5oUKb8G5I(5=eBrl`$hSlg)F5X6`6nro` z=efhbXLK@y8lABIzryHb-TSCSMD{=Pl*kxn8l6vH|H1wIZri_Ubk;Jw?&tfq4yNIc zT5npN`TdQ%Cv=l&LIagwd%&~sCMQ_n{l6>$aAST&?yO=Yj%EsaClqfoC8%W z%Dy-m{2&E-nK+|Ad9Fxr?)=6RuMNWAi_kZ!pBCKHJ1y*i`sWTJMzZ4+%Uxq2-K|2O zF$`#q8k{jG3;og~JVfCMV+lV*A*Z}>utY-?W+8^i8Pwlj_jtDlepA$U{ti(gkcxfV$h#^V#*>685jCu zi8f+x<`r85aShKwU>)yR2qwkp`Y|`d?H~5X9oz1{W#?`blClNIEo@ph> zxMsUUYUnjf9U>tL$ZyZgRYfuKl6mbk_}wIE5$FQ@?uDRrmw3`37*>1}WfVVwv1#E- zJX`W**SQw4^j>?KqxaZ!nZ{$$i2zZTJvR;3n)~&W{w`Z?5U}KYiT6yq;lt;*R^0is zBQ$dO@ZPxLwKikEZ3ke)czdMY-!f`j_#4x4I~2i0^&|BDJ~o?^;&)3hcPRkOjUge) zYft@U8I2jnhp=Xf4xpX(2v~!I@85~Mq&M5=8H%A;$BLS5_G#H-F`Cb4eXFWMMOu># z7O?NV??u*!#sb*u>NiA33rgh>kA#f3aX69CaUl&pds{6=UF#d^#XARy(dBeOWW7)=7Wqo)pAuw1JG_8(tzK%9 zFr^-BuDTDTsKC-rli`Xo2eA-r{>^%Y^Nfag@y4gE-~|^Kv`_gkAaaM)_E+yOD#WxC zg%+fhK>-#YQlVT z(m;SdO`e9rHuI51PPvE#R+EKgt_xh869eB?_Nw4(1|9*(O+FX&9o9)LV*3zm)8HW6_9YL@>j%-OMvd4>oIsf=UIc{mHu1Edu7M%Lp1b(xM8<@9#d~ zAv?1VWgiw7(kO#vx>(jjNMK<3T^r*1eJ>RB-EWEhL(h&L|AA-cjMFCPZ@gmwUUZ$) zjs%PBu4l)TnU3*F&{)vdEkRrkUk%O$J#G#1$fFB?z+lOmRAC2UNz~;FR9(L|J zooX2L zhRIGFS|Hbb0AYF&i^9H^{Z3D?0)nE<&R9t3h5`>C+1q{O;o%4oWY zEn!$J9mSS#T#%`m9Ef-b0B7UVmk?qV7u!R?`TIB1xSy>xaUapW(u9S&W%VNKafPn=L6#zO(!8&Win zhL-{`n{YO}yVhjF#Waz~_q-W`OS!@RN)5KEFO5A+0}U9pP#60F^jta{Ti3G16U!0M zI4)kokJUTxinUR^$+=f>q3L11Bv&6ZC4kFEoy^zD>H}(Gy_8Mz2=9*YHTU3JQ8tml zODt!?^rQ!11oxR;YQ~;6Io`}9+>FvMtwprkvYCVrywormXLdM_A*Dri4aXkb=t#+o zOX|}z?^g3%^SO@s_7)29>CZ`fnxq-rIzJnY z;TN4=bCGXXz)E&iK8@jcR$s{yb}aqX1pbns2oUZDrU}NcP4plLc@}LxErWTW3b7-u zfg#JZqJX53Tn7=Ll+S3|00HHeBY%t4jzx0qI)^t58VJ zIUp=lX>6$-Mv+aB7hbm2T-Iex@B^I_+rUtx=B|szKkbLb=Yq3KM287}0O5A!bd*^H zLXUHMmW>_9UGsJhm)w0p#9hJlSGnidiC4cNE(uC=wD^P@7i9yIHx81*LOm_!DWnB#(DOktEE*%`Y4WwzKM#Pi8g|Sx9RmrK zzqH{v{p{-}+#ZLnfmKDz)mJdVYSJPwuCXg+PQ7f@PfM%Yyi zQn!WVsU2b=2LySTXLSd*7lm$i#FA%>?pXjW!Ndukfw-KI{qT(ALf_oxFx;Suy=uEo z66xRo;-eeWY4Rm?z=kl6vmZT>9}KHQ7b8Zr&lkP`6vW(2!#t>3j8FdVx6YHVu#!1H7_+LGc<#=l`miFwnePZx`J zkuaS;(58of_>`!?ynV7LY?cNT3y?Tsmc7TjZSYESFaP;XBHQ%ak}wzDfZ+nSLv zU^ZUfrzuw<(CkHNmI1>{`y_?#TiTn)^^!xH*h@^4NjVVuoRmZFq+{4{IcIEhmKNC* zRAN|d{S;=xUAr34lyKVwy{-;s3fNkCs!b4%Uw$JGv8gEm=Ood7&WTIMN!p3UDePtk z>l2YSe>d0eSal1{dnge=_$)#nH^hX@lUrC1zw<6KehOD@-3x44r7m`Mi$zfm>j)6z zY`wI>2jo{Pt)Fz%nDwyN(4LDlI`hoLd_O#{tw(F#Xw_>K68mEf>6f}K|uHfa2uZ*q4zfyK=RR6mZRq3k1qV6Z2frfb8|!=W7~A4OmN zoAPB>l<<6x6va`;5@`Zem1l6VG`fHrRQml%kz@IL;2}<)3xQy9WYx8#x;7-#3ZmPz zId6Hf1VZ#u_Nr0$AfOeE&+%IT#Gj1lCR!k*)(+z5)^RYM%_tKyUI*lF1qg<6_}y!>3CY?PFVHCDI#xiGJt%4 z-X!&4iM;jYa{6h0AKyVkQ#1@_=mYJyE8$>Be3P+=X|Kw|_!#dB8Hz1p$C6aHuy8UX zuYJyEaZ$qD5mt5#9??#>&agr@q-uTqSri8nXAOCrZnSa~b?o3j+&U`ll^tt5qOfSS z5KIC$aUm1htAl?U5k_db;es&ggOzz#6OoC&25)U4xa&w6S@XaIVLUT)v6_Kt*L#w1LbZG)G z5scH35-~2;K|{&h45lM3*sJq6fla2*BFN1+eHS+aVV}7>&v>|f>-&b|;^FtT;`?gV z=);4j=Qozsp_2pa#v9-79u4Kzs=Ddf(JXCQv5P?I{jHakzV!#cV2Vao&uGX2(s=id z3z!0)L!~~T=if7$E+8kw)02K8D(B{jeqheK3(cMPVjMBUiQcwV(lB3psp7(8GdJiz zFw-~RdNbfaFxKwz+&?;mNZCWWkWV=o4;mifI!ntFyhIlBnF~a*PA!l+&yTV zD=o)7jo9T$ARPcMMyjU=AdSYjZwfhQdiES7OMb>@I%DBMpee5f&@=R8Kg(pnXrGOI z2E!BN6~0#^w%mH_c8&w1E%ssW=pK&s918Rg=XT6ei95(;*sE*vw;0(y*-k4~X~Rg< z6Kk{{?at2hY>l_#(UXrS-9!n=wYqC^9@Z$=ivt`!dF5n9SHDmj=iwVG;1dc>svIiW zV7Jtm(oQ1y8jMtEY@F#D5^?Z*`k!vxZ`amxEY6e-Z_WH!-J0wNjSYzQc+;rby-C9R zJE6691Y~MoA1Z+v+<3auBjf;3K(D{Wibu9_VQAiq@fRLa(GQ3$QMCHvr<2cg0T7G7 zxXtWv@kkJ!Mgj29+#A5Yy(WT`=qbJgRS32DH<}h{>Lo535x9P+?$C(YMYQ~$E#5;b z_Fs6s8~N`1bzDL=#wMR#I&IV?!an6r>@^(u;EMycp~Cy1d3xY6{)!#M&ck^c7qTqr z_iy7wgHl0?E8hVnnGFe98+=;AGH^SieJ z7z2|GLFyPA;hqX0)mJPuMC~jwZq5Y>ul{1Esh)Lf>@MB47BbYv%Z4LfbVxxuVci`#|o{X(8ids9FoiNko$rFs3Vp>zXAWY2Pj0 zgC_nWRvbE)^~(||Y|MQ2V+Z?$8P0~%9}P?Br~z*v--pB`G}R38u49fj>WYKaj0%>2 z(=OFoSpZ;($zv<}q$0~CM5))stMktw@rPqicD-R&oHfyiBqFg&svH4g5KY1Pt+wWO z-qWsd{mMh$!n7o8M07(Dl*PzW(1>RuwuV$kB)MN*G0l>;>+u*Ois?reJ7TMeFryK) z=mxNonz5{yOdIDDNOOs^ZMv(BjAmDHk|m32l9j3GB0I}$G>mkYS?3Ao-rayvk*pz* z^Qade@sScB$<1OOl2`(Osfog&mqfPU2F1dTYISS7ZnbZ^M4yB}BABs4ek}tty&UD3Ym+3%`%M^%s zFvBIIYe8{+j>|M?=EI`n+9pzbxlE_kahay4%VkO%hr3*+!6Rh9KFom}mnl7gryQ=~ z-&R15%XA>eWeP+*I5x*;x)N|)ra`-0rh}%-G*OnBFw%F-5l?8nNIu4R`Pm1I+QKFAKFW^B)di)Z;N-ERjZCre0;) z&f_wTO>5`48En^&a|1^3;c$eGI620u?92enOa8lX^n}WB_t9b$o*vWY4+hV3F7b`U zqjRkBp8ti>lgH`3TP(vvsXU96*|AI?TCq;o;3 zGDGn^JwYc<(!^!YcC6|Kv~L((RI=~1NDt*YQ}d|u!9)2H)qLj5aQHw;5(ow>MzZ%7Ln(~FPNi1TpKk8isB!E5ikR5-Ai=$URqOqxY#QvHb5Q02!0AF{z zn$&e-J6>Jsf?(i%fN&+~f;b$u_1y}h@Ra`OiKqMT@q$Ni=7Nd$iwylp2byXBGy{Gki^--H|8{XB$iTiXz%1wm4WZH@lnwG{WmT`@Y1dKQZ z0v>fjx$t5Z4%<*8y>}=vwT$*?HuD0dyPWl!GQNSaQUlvo{}IH&kiz=r;KkJf(yHhV zYm1jDHLe%M7vp-7qho6^w;%4hNu>1V3b3(-t<7p9?I}&qT!a^EF600r?hCts_3PR| zDE+N1Y+6q&ZksrmW;Z7^6Ts2>(I^cW?pUPQbyW!L@CNufn49S4ADGFmDIO-DIZ{42 zSz>w1!ItN!=Fk>;UVOKkCeVSoBe(R$B*5H?#e`uE@sdy`W66F=^zcx85bjv40Js4p&G13n+b~Xl?JYnc%_qAdl3lRP;C#uf zf)yd8%_Lv!dEB{tvnli}H2K?O#@G7voW2Zn+5{KCKeEry|aZc>i!f`+pxr`6dvzEw}hv0f(>GCO{3C68UID@77Y%Cl&_%;jlGQ*;w02j9Q(VJFl8XCm2rvSY87{Zv#WP5r zo-8{SfOpg;Y^~#|Ngb;q+<_+||LsOLbA)xp=x9>uxj|rUS`&>IBp)7^PR%8AK9307X3W7?^ZogI00k4ipQ&6 zECTvhiuLQ}4ucxGTRXm~q9Q0!2D4)k-U~8ik3?N^r#OyYB=xi*Ic6~F>gV$G#FJs* zooJt<#X~%fz>M#vJmU`@I-%$KX>(Fz2f~pylbzAx=Z#CzR`K(CIvxO);zBwY!p4If zwI-*PeqQ#|PM0PC>T5)J-6^-g5os3h-gWck;eGI7G1p? z3rDZY>GY$cHwIvtLQg6j#=S;Em+jr;63HH$>u>f{B7vRsTxkM=mvi?NPwzDzZVd}+ z6~i;0u3j$}l}@~|gzJ_AGaee!dglwz<9i#qp>X2*E!m|qe%(o$&RjT;$FUp$tJH-3 zqR|uUw8s0i!dIZxC1HAcr=y{fgT?}ci$?Z%wA)!r+`4(Hqr+(|=<2OsIm20SclX1- z>|M5tNF2RQp^Alvp|SN6R2{u_CwAp@^jgK>KV+Pa-c}z^Pshl3#?#SjSpDF!$u@8> zJ+Z|$Derjkpfqn@Tp{!2+acHdfDkuW&Xt?y$2Mm)RB<9~f^x>=08brP_&azwdSks$ zBQDKvJ;8zSS%bF{)6rWWby{Hxd|;=?&j*#MqX+XY$pA86ZaIv?)AQJ>U<{dTywy~hEc54)00NW z)x_bjDlmMnB><8f%*7O>@TqATGPPpIVVmjcusw50B8xYlE_Kz}U5*zl@F08qE&$0} z%_cdj~r5{kxtH-V## zf^{=i7*BkS6^6mZl(cZvb8Cf39x6Nap&D2yJzXIrH7*sj)bAn=uFb?0X!Ir9k4E{J zvbHS`BDbU5U(j88LhYxHQSo4WYm;q(SHQdl81B&sdy_aWAY2+3P#-RdhJ3KFGf3P# zoJZru?%h1vcx70^z52%LcX9iht zymI9P!AH~wlEWWJ?_?R`3(3x}-_BAc;vu$qzJK4`a&xTJ>sh zi`M$Bxf5ucN!SYuRp?ZCP3o=*soou*>fznVc7oUiiVSYoB_JpGmoEswR zzpxXH?MfvqZlahyoHA2nXu=v^K}2p{+1@{=NB2t?`$s!R9~<||^0z1wh`KkBdiO#U z^K?}`2#`Kv+e?YkH=Q>)jfxak1@HkbISPt5g62(<}M4c_7V<`Ym zGrkb3#<~^v3pT_VIDqU`RmGmHKQzUbgfnDeUNPB_>2K?o^oLF&NEw6}K<5$|Ak^6H z4oM4u^@aw8=^pbcEpA_E04BYdA><#V#}k@1k0TVo?FS9g;|7H^efhOn2Sq0+e3)@w zK9Fs07ifN)=(=eO+j|1oi|5Emb1i@+Q5?>EuDU>)V834}uHxLD552V@!6OcsXmh*>RklG34@_fXVS;2S*R*TD0V{ zHVv8y#lOksJj-e->wzS-_0_=TSu&lQDxn9*i?lgB3Q891ZlfRby^-7pi4}PUVnR4J zlX)v`xHZ?`VI1iz!@)}mw6Rk+15=zmS)Nf)d-*2qN*pfE6qYZodNgY`594%b)`gY1 z`ZJ!ShY7kfh7=b7b$T-wZTy^j`!fz+%kP*9&lb{=SHIg(*c8U){9a^CSOYoKyNh1{b5;y?7CUbL+CB#^{Ifw7@ zizgP(6!l~2H8@-^>mq3g-&4?8IgtfdT3-cr zzsS=pzNSr+z6Ub$!*9}9PXmebPQ%0AB!iNESYgNe__3Msr45VWL=-{_2Fs3lK9A|6rzIl4?9BeA)TUqch-rLA^>LQ}rUCP@uj-$Z_%8So+DMw{W?R=iXF z)o3#u{#~gcs3Bj_-y=7_bCWuqi{E_*et#ySbCw$%lRwRNhB4xaW^H}jxf7cmY5 z7qyl|(GpqaTg(^C=<}&68a!>Ri-1UhC%~+*t>{TRYXtt_ovNaa7sKiplWi4K%lsc3 zuss3csjF))uqD>k?Bv1I-Wu(DAghi8K(1nNjS`B-+;nw0C@XrbM8VJWb{zE8+_DAMq{*TiRy`WV>sBNh_BJ4!Sr zi|w^>xalZCu!|z`u)fy9nN}KL*KFy@opaAbJkE~~bI~KdWFQ6>T|Nw81=w=OEbeex zVf7N1DTbPL*6$@qsQD6BdNO%^k;!nV_YFs=KD5#*i%Lx!gUY9H%Kw!teLs zo~|27b00yV=Gk87nV!+bYv3G+xBOp2VW6dm`AEZ=)UE^C?^li)6W-wgd4a65Oh8cP4TdIsNujw;*DBR6qoblLf_bEV6 zSZf{wYF7YZKJt%Yi@0`TZ_RDt+jQn1_^U*lQReM?IVfUXXmQcY4vH# zTwGdht&_7$6Nf`U?wJKLUj*6%fHt3B5-OgtvFn%!$A@b8U2OShjkxw? z%@E^R1aVfc6+xak$01@18>~K#R|-?b!#v#`#`|KP-dof4e&?m$+Z zGs9O+s^ZQW z(d3VwuAJ%E+eD93+bksg*+PpB0B=t=e%o^Z zNSy1?oq8C}R_l8!SALI@b%pnu@K}?G9RG-9^#+JF!?8NKsH4sh55?~x?CE0#7joqV zb07rk_2R6W+h+?nvcv(zXM=15scJE0sIUD2sW1wN@&;fv57v~8YOWLINbwIswIP4L zmh4x}i7FuREOt#!5~n#)8TxaUga?R}79rlr zq|0wfXbaK(3M6rDAcWDo3Efv+8E)rRCEz&}!ozfx7t~i*ftbt6RNs-o6VWAfVWtR- zdyk&*Zu#b}Im|s@U6&>(vg1>Jkd1ef8n{mjzrO(ZftZS|=EF(#Rp zSi!4i1fVfpv`?-1VriTiCS4zsG+`1cM4D>*`)Yed4t{Wf9}=;+wMyh#UzLDq+7|+1 zWXac&(+J4OcQlgB&t3gAqQ5Xd1;j$UX!F0Mr$j9P5odoZ24P7ZLXan+zY!w);brdX z^r^8D_C*P`5n&zoi5gmo2hykHkU}2MM&$4j=3*Kkf&!VUWr(gJRmW~FWLSo~h8#FT z*kuh8WD%R$*O|^>?9TdmC=xoz{-P|mn@Pv1t1)3tV}GKtWcx|I=AmwY6?Vn?0w19f z6{|<$Dkj>fW9RC)$6*fyo+obP1_QW+d1*~t@WroLjb4P3^&_3il9QFy&PTj& z31teggFrkn0$|1d+g}Wta9ob2Ooog<{!rbFo=-{$kkx5+KyCq!y)GW&Bq3B?}9)0F5Wjf>=Z$cY4XhScIdqj8#0aYjWZ;w3W0h zzwt;{m=J`khk!JZG?$uHu|PO#UQGp=zVXR)4fc+>Vs{?}*XfbEv#YG36&)-SES+Ue zdP4}Os^KqJzPoN$=|}=MKD%yAvEBTT$u0oYCQ_*c>^|iC4rbexiIJd3NP?yWQO(hy z6=%h%DMQ&HLY!i_{&EK!noikWPE&&{5S2C?_6g!_6|>fjnj@{WZfJE%B!AP2o=#HG z-{JC=6%4Fz{)WwtpMI_q$>PzIG6Q$7(F|LyGg>@%%1x20ip|()_VjJgDyG~S&1>vA zJ_iEUF5NR4klKWc1|a6^Hc4EE!#auP)96YOc6`EG>?39W8jU!&cHY7g#d_SY%*_hP zSPKY7dlrgK(uuRsb(SnF2N4#rmV+cbww z30S?vm?jA7doUwbQ?T8!3|Q?I-vi-1x_V|bVo$$+5XJHpTn$ zWkNAoTOv(#bkUTU)!dHDT*X30TAy@ABjHs);(~A}eV`I=`CgR7kj@)1GdqOq52m2D z@0Clai}4;Z(-YHu?>Itad?WpW88jnte=Uk3tIv~i4*?h-hOCG^y<7d9%kD!ZE)1W5 zI*VJTJepL4Bq^HR?*XKca;YAhMPuSbU)u^zb%OD}YTIhdxjf60k2Msq4fnNFbVysR zP$riz+GWhJ8ODjlmmG6BFG1GIrH9(fed?U!yEUZR$9<>`$QWK<;y2jDJ5J1nms6;fWirdn$2p5a=0VJRq zp|oM)h47>)M|vpa^gYtN&L8Exjw|aCnUUs^N&O?GG-|{qWM<=LbOp3=cLBI8tH42i z`F1&ae77fZTz>!!?>dxxGLPfRODkKL-w|8B0pQp=@PXj@S+yyaf@~u_4EQ0S`4WRU zP$!pjhDpM37fP#of%)Z1H=*t;;+fZB0@>IawiNWWr#MTrnu=dS1=-f#v0$sEUlvYY4oX|%3^g>-XbI!JeGH##C6lA@Reh6c1AcNMU?kBZV=iwA$Vi^a)THT~t%QpUC2% ze-IBtSP?@PGJy~Nk(ZI!f!q5x$w-}K|#sIQp^(uh0=-uUty0N2dpIJoWh3Sp`w|nu^t}JPkE=UXi-B$L_ zl1)mAIj)YJw;&CWoe5keBBaoO8XcA8f ziDX8}$FPzKnnz=3RzoX+WtMi&H>bAj_}yr@!NS?I)#UOp6tW|{y2Ub7GrEymRX#EL*O`>pfsT(&*JEtv6 zMqo_xWtx383O>#?X1*n^g2O^PMI~Yu=(jj72Mb1Jp;jXB;aR=kDoQ;{o zBysRQ^^47@J18XC8`p{@>%#br`>dX?oIoM6R>?r|a}X5Zesb@gGj<*fj)W>JVrBL~ z>@X0{h)4==Rju@Jlc9a}b!mxqKPU)Hv1bQXv~4(dVNu!W`;v5(ge-l#f>mbuHbw!X z-oCqg#j+9Ius|jn@;jMGA*0Lv`c+yGo!yblyb41Jb<5>NwIGE)H|})Hi0JVOuZNLn zDAy`-1iFELVAe`S#QO~nAj(}J**XC9;Wb1Q83wkiDB3`3mJ^+fwP2heT=eo5J(oo- zq|gH}MLRVp z$zagh!a8K8M?h$G8bAzJiY83f0n$zlAQq_*6-*#iLPAEa87(%o0;u|uO5Q54Cj?uA zlT#h8XE($qE<4VJv|VU`!nfCV24r!Z| zT9*3OOrtQfEa>Py%p?m(1p6WaJISa~R?{pQx>HGESJ^j5dt+?Khpv?zo=`cg-i$e0 zw?`VyyPkS*(OgJRb74qNgHuS47KKzYbYp59D_#qB)zS1-3+A;V8JN!zm6ZO7W}_^i zZcZixq!$%Di*kkmDdU8|I5(88Z#EPnW!_lv`PHMInb-8xzYH_cIa!&m!ECa8hde9g zl|5JGmqC+2;x4&%rd7HI)S-2iu~@ei%aPUevr4 zsTwku=K@KkA4t@%3?+R>QgcFOX`^o&ILKG$gnTgv=CQ(`x(p^RR&jI_;d@rupmlnR zqCn?>g3HJ>^W<+e%-9Pl6Ht>zq;+&723XmNKjQDeqizJ)8X?Eil0-zcdQ4h#*c8$> zYvA0lyp}3n9aHeU`kJ2L1QI5M1=!&-HDH|@>9!UrzzHMR+4*)5OVPY~CDW&8>5G$O zmM|q1@{Ku;K(DDB-8cf>yDzMYtdQS7bM?ZtP4X8&qx?%Z%t&lC={yae1EY30vQj4=n6_wSrO`wnR@4gNMu_qRgrj$KV#1iQINXGChDe;N zg>Tg2ER{w$7Wbqk22zl6KabNWQk;6 zrQ-SQT2uL=Xcv?^pb8NC-l=A>U-blgLad7~bZz#_(ZX5TLw{UINv;Lwh5Eig{Enx$aFr$Le1d0$2^5XH0Bqs;V z(vz&*-sU}c=+kcCoNv`71{&2R8jw9SiO!`4N&lw=3Q-(@a0EGt17Ryqyx$h~qXm`Y zxNVY^J|DW6e#leTl$w6TGgGbJKV4&-^}M(sPx18*=aOYvuU6ya9tfM`+^<+X%vz*? zeR{Qe?pJiWL?~*2PaDW2!t|u((+Y^Mwq88}dG1%tc(3~v#WPu*eYq4QS?vN9;KJs9 zMa-_#=)Pakj?7hGiy|5^(k%7#)J*le9}IpY2RoW;=kJn^1I9`;^!k$V;|q0dbVkCDSTr^m`^&>UFv))(Q)WPj43JZ;27 zAGe6>u!Yq$6mVMEX5z7J<0dzAUHjwU83cRna#PnmR3CPly1rEiiBxjeePD5W0`i(L z!B?+2AMd$GLqC(> ze;|%V>e`gT!#W^-GT}gyg8uPw+tG^0+poUtiQzs#P{vnJ9S=wN)e05zl3?@Hzx@Q? zp-DX4s&B7-4g~+|Lr>HJTyqf*COmXvE;V}{11Jk*)pqa9&Umx|4;bYM+n0Di&IS8? zH^vIOiRsf59;re`s|i>L!~OxVj}9jYo_?AtaD2vU6!SPz4PxRO5U;HtwMD0?-HhSe zgb_yz6b8^(1OSy9WMB$5a&I6dHYSEJe?vSli}IY9;g?qXQKYQ#B^v+Kx7U#%*RJ`d z-5frc0*d==ydjn-e)y>^jN-Z0cyVA#)2&z!LEmFm`Y5 z`=v>B1Wl~^D;lA}_MOj=O5_x2IlO@gpF@%yEJs}xvCwYo2_W#}Q!HzV6%Azlj<`sT z>=87jD^|qhZVcLnmRuud5{R}Zzdgh|nD0#tEPTYGVWOf0;aTMzNR@$kkrU6RZkc`o zLskl~?VJ%X+}QZ&zEdh-K1Ju;V}N47Zmx(W3h~&v)+ouCq^ywwQs4@Y;u$wlDS)d| z&p%;DgrJcngrKoZ!;@ix0m})`kiXk?;d7OW7_2s!;_BsMijaI2FObHzfanExJqhGF zp0Gq(kWnmtdSXry4E^)W4MT0~ixt1{m~%uYI~yUPQjM_w?47vbSr-P7V*zV%I^2%0 z2cW@J0C`i(CIp%Xt0xXS%qPq;)b2SP%?iP_YApGBx5GI^TVlGFUtxJ@_=Y#xwbWmf zszm5rr}>HqRbhB^)Q|(KBao&>vjWJ%4nSu&x)fq(JL37& zg#fGRWOSD?blH?7k86}Hoe%uN!Q?^*S%a^yhkQXPJ;~ak9<`r>tJbZ#Y zwF?VgM)#8wfEx5gxHcfzCB)?JAo$jM_+>|XFDIMATC3slykExYZhk=(mjcV#DTYy^ z_Nz`6<1poZnF6)5WY%l{wXjV!*f<+c5$mKY#fwb73rASAH86wiKG}T_|YHGx2 zBz0Zn_G4*;zd3@HMu^l|D3?39vmkw$70IarMRIDQD_qhIpqI=6px7fF`g=K3lzYiW>}z)_ z_Zmt}_gCLS{*92|vWY_@M0oe&`-7+PgqmtXS7DAVs=~S77b?&!lIU$h&DT&gB zgYke|Hnw+{a&B@B%+4`IyC}SG(%E5*3V|g4;_kGy5Ge6Pl9^n90^sf%A?@A-;AD3t zLn5#&zgjacv5iKBy|~{ck==9bX{xzL+`HMIFub>cfP6+Ikh|(s^WT}mMdf1P<8VHs{_u~DsOk@MU<;tzl4}d76P*mY~llVa? zvUCV;=I7@FyWY8H=z8V`c=tdg0KF7pg3T>q0ARFs)^3mWuf6N#-ka6Lca#_)J&wQ= zQoQ-9+Q8hZd-mkiRKL1P>rDbGYstaW{Z1OSn}oVgMq*yAnRXHfi$`ib0Dv`v zN~`W1A)&DRNY`mob~#5E9FO{I?KuJ?Y(`xuVR_((G8UBq4;iJIE_EUO9ozBm0NOPf zC^aq8A;n^mjBrwT(K#x0)p>&i2&uR+JAmGhQDv{R)wiVQ zbzP~uNM9+OmIhjVu}06((68x^+b1q%I*_@KC8^p)co#%^-aqVARbP6AssFOvY5+44=H7pMU z`x`v;2#WjPN7oFGAnL=zyrb!Z;hIbi9=b3}R|xyJzec+EzVphpxT3RXnO zcE?k>wxHSZ|Ek=1;2~su+cq-x+PgX4Uwe1NC(rX$?h?XM?mP(Gxu1;2RqAHz;v5bL zQ$Q)ht8k+14gKEi!7~q*8)f$wHX&R8D7%CTojHH*Cgd7Jr=D6h`aqsWN#&v{r0_^( z#P(G-hFhtP2msTrBY#zdx(vCBE`9Y5vJj=^QK8f^$#%0K)fya>)y2(X zN^kDPKrfbj<_TZFtd1}yQJy`Vji%2e<|+asb4;~c_h9EhM7G-7ub78qig>3{e{v9) zb#A!IBroOfJhh!<#Uin(BW>JvYA-ygQY1==i*Odop3}Bh3^r z5%e?9*dL7MDga^+)vn-$?>73Tj}?-10@5Z$FcLWjpgOMA-&#Dmy03L3#{kqi0&vf* zGpB5)d(Xv;)={)z!K@~AC^^*=?U8%D=s~Bnj>V9hA(D%z8QAQ~5V9zY4_)u6&KuV4 zDZT&qgo)RzjU;skCqp!2kD`*#e%}s(0IoFpZ@y4 z|Me69{~v$-@frUFZT^=}Nc{fzE8!uON{Ih-|M;K(`oFP_tFA~Mr6NR)q!R(vq^ejD zL?c-T6#+@FUaBy@4}bpvNVJs)f92LwT1fE?NW!8Cgyu5%`_wUomWM^u0_HWTyrV_JH0a+%e6}l6V-VdyXM}m^Nvl&}l0N>6m zS^`!A5?HszL^tf*<0hR8liR@ZMRwbHFb86ECat~_AGJyBOPjdXe_H9UUQ6TvIN6I+@N3u zCVzpEA}oxDn_P8`9pLHM-)EAE2!-4=V_rQXMsha;&ma{$K~dQfV_wllR1KgdfnYP1 z-qdjj@QPXK?VH34E4`FtruX9UH_yvX)Od8KsmaTqepqlk>YtU4>BY>VUDIoI8Pp_u zRgg;wfxNevK1^QbcieKCaJM4>CeTp`RxZKp%Q7>t|DIDAgQl<`(gB~DC}O%6kTT+q zzT`fp$E(liG$OXIu}g3dPkP}q#^vZY*HAuCQCSGKb%##8woFDHO)H(9GP$o~1=IM5 zq#2L0ulCMAs)GRNt^aYx#z3}%@u1*nQ|}8a(VRma{QuLT z=VbRu-TJrodLILrpS5UPlKpPtCfuwA#s`6aAP_NoCzn>KsiG0(1I3wux-;iVw&IMe z)F=d2oL}B5xb4UYer-O2(XoN>$W@sdtOjRBAHm=&v;A{MtuTM&_)2_;6(Smh?4<>1 zq?Ee;OCE*1w4~TknevX0=stUMT>I(G|M(eiPO1pnk;TeerK~cc7z+nP{W`*Js>@fA zlj+j87myam7v8ni{OyApp}fe$IVDkwBb(t)uL1CQsW(9r_1!^?jK4|HH;sV!@|m)> z5I7EuGdN(rbMH4c#E9>miuB~8&468&wZwV=Kd&}JX^H=x)&6lq`yZ_q`ggUV|KF^3 z!nI9d+-Tu9U5&P%S^Rs82C+Y3v1WV4VA=N*ERJM6u=r;d-P?c{X<<7chp$65eQ}c( zTAcLhQIIJZ_Yi7@TS7NFrpcoNd^52SzAIZ1mi$P2tmX1CC+UFl)J#a7lpGK$vGP0b zc;z>1E<5~2Z9`l5+wz1q>Hr7EkCBC! z25esqg-Tu0UgaZSEo?Vl&2B4h9yMv&I9{&Ex#5bNH$Z&vyG*&L-V>lq$@_|btBY5i zTKzm>;mK7Oq2FKW;@R`Jd9j4&+%=rYv1vFFIfoT)EToR)b*TYWj0F**!42$Ao6Qk8 z>YA%PbmZZ;s;hw=?1`;)Ab3c!$Hb!a6c$IVXEN=*Fy|7fPX)PkTQ+8Fv z+4gmuGq{}0=Phy$+b2$pWlpaFgnMJ!9zZqB9ye{Hb-lx;bUPjL!MwjT$gJ0Rn)QET zkV``&q=zAqBSCKHG!CI|{3j~GiLEGXWM#Ug8?gmHR0)G~ughVt-Z zi??A=5-~6X(=1tG&+IIGdpj$Qa?xPQZ+#giQYL7eXJ4vilpjUUmBqoz!qfrDFl1`n zV59ar#;oEDc@L$mHNNU(+{tQNBVG_(z{!ed*n>)Dpqol!iGG`fQ0-<|!HKP>>G^76 zX2Y;1axu__GB%l_Cfy=}To$$-RlQ3F6{2wov`lSbE50oG7?o~%L3NXrY8hvCWn!x1 zl`y!f{vrgar3Zpnu9XB9RRFY;VH>Kh>|5;yAICD_hY$By*~}NTtB2WoX>%n=9YVP>Awk6GPaOY^ewa^n;4fU{;aNFyxms8Nl1%134-75Z1@ zhw~m+gmo?%&gDBy0{T^MArvQs!tR9}35M@3wcoOhPDTRZpW^z>JDR=TK30!uQ*c#5+S&^l%A4a4Hd$F@_MTA{cbS>|p zqSNiFq7HP^&@9!opu+lKXAcdv(dySv*x9J4tNS-neDYQcAt!ZY;VnrX(W8Tqa_N|gYvhud3pcZ5T@x)CGy-5_|g9pqG#OqMb zg-Wem5bgq$AhZpN_-oyQjV^Mu_JBzo`7{^+oa|vAH2!%lM0zPm zYa#~42hf9w2xD)iJl#CCBpUrUGgQb^PUTtiDNj9;xXM$mv#s#BYM9Rxj#B;IgG30E zs(+2I_CmlIA)PI%TN&V{k;Lq0*;`33y005Sm@}@Ccv}F6KrzZBoW7+OW~XVD-?{ zzD(=)*3?9edDvL?ST9yy5Oi0?`iP^QW754kF}CNU$x*h->VCV?C|v#Gb&vRKbCSBy zsjEW?bB99=Cr*=rRZGfiYOpW-3woE|ndoLwPaRzTJuBS7zccQAFsPsDAali_QmvkX z=|>g)z0g@k)`#S!+W2R-qvh@G71?G)Nu*+(W!lS&pzWI!@ zg2X}!`;3UZbp_a|^Rv=}+5Ju=`tk8eY1JTa5KtIwBHxIfe%7$K4MsETPrK z*}CQ+MSB`&VJi6$!-Z_7jc@?T)2sG9 z{&uQrBTW5$4rY`~fy6HKERbL=zwHrO>Sr7b$>bojd%0j7ppHzyP)i1mr78niC=Bc+ z2T0jK8cv!(QovrCd4Ra?%d3MuWF^Gz9tDOOlgKdiTUG$cy<;J2by)}+W#PQ_hUywA zNok&XSDBTRw9%f9%EN{{#uShE#KXj!SEi11-fZfT>RmlduWJ-D;`so2P{i>RmxM#Q z)u_$|xS!BS)`^Wf%V0j|XP)7VcMSXb8k4`5pEbG|xN^m9YE+bcK_4t*l2$$#=^za; zdL0(+6H;#S@@UyY;8D$5-noeeJFf-B5F=K5QxsTCqo9Ob0M-uk7#fqY^XTE4i7{-w z2W}o1PB&^^A}1yfm4KJs?^4M2$Ni<8UrE7s#i2{F`TOSmGv-;ImIwsJPx97;hRKL6zls%-k{`4!3}U zeWR{6b`49Q?fuc)&cr;cq~F<8j5j6THCRDSJ$tL29oq}1L;#jmI*5MjyDdyi_ziCC z&8zOMbdZgT5PF<*In?-M;%atoXWcDtW(pI>na)%6O_1tP%AdbTSwxAq|~vB+N7+;EXh=*s(MpyuuwgrRs=RyGAd>|$Ug z+xT$D#<-+`!475X8zSgqt4+vln%NB}^~U~I9RsPkACOI6^3alvJhf)3AWjh54-;2c?VjWV z4}T~%hy)H)JKBvB+*jLc*IQ<#0U0itnv!%#Q&?*Ou|MJBNP}Y*U<1C2GcEe=4v<_B zvdP{D0#>tc5E<3dJd8~zRID|aM7ieR*d}p4U%{u69Z^&J$MB!xZ~=(nLv<7owLh-u zDi9Q&9r;STZKK`(RwP*33D9l-*=gT7*l+KU*7PX|tQDS2;Z0r*k09i+Bt(NNLuFvg zBl6{zP$woAhSzUWB2jfug>BjQCAIkKZd`!M%vf^ty@^to<(0Gm4imuRIF4ka$P$ez zTtGbeki#9tH~BkLZ`vvcjr^Ia@eHC$?9LL|rynVp4K;A&%)|UT@}PM2+ZvAh@3P!_ zW$^pI5RH>;#P|KO2>>~gJfBrxpcDBoZp_ypnb(9ND~;U7(v z<;fMh$!WCPrF`vs!^eh@0rssOKhv8w6miw(z(+Rx&`cq~H#{=^@%JeNjPtn=u+(c5 zz>IbPS3s!0dI0@|A4q}=A^3F>0JUckST7(g!f{nR%5N!+5+H3c_#54(V!5=%hpThw zL+gr7|EmQAR$h)t)VMsy^76i5tRQn z;+&%OU1YEG;tV*`qI0ojvwE{^oV44|?W{BMU!5(U_V#z#m^>FwXunT)^Y*{)&O=;u znRIXDHcwoKkqA{taImtGn`E9{?`&sa=Qq}QHZJUZ>yFc;8dfcfb?;{8FiLz6= zQ<@P&6)#|LnM{G=-E=Jby`D~Es7&q3xb8AZr&7KowI_FAd;z!05;hqPDKJld1zGSmlkM3&A7`upygoxb5RMU_ z=!-R?+@)7S6&IbIF>1SZlE(u@l5EO8<|ay$O`+1U%0{)Ti!}wui25P!1GisZeich# z*)X%COUTUc6i}d|^Ysr1(z8AE(eR+@6yBbwzUAS+=$0fhDPG5oAE}Ar#9|$ApB&Nw z!;tZ}tkmCO^fd|_D*p0DJig^B+_5~jtymzpd>N3QQ4pD5o$%=qemeq(C~y$t0t48& zYW4!LyhaEHbRf!~EJ3zoT{HzXN&P;Wp1vO_G36DPz{@FXIGChaP9!;;L?W6_aH!%^5E+`+W6`{OPt7y*$5-gF3`r!r$k|J=P0ggw`!jR-W z5bvphiPyMHg?&_gY}bPVB;K`E!gN()1msfB|6*QK-*&l58O_!prJovbl&6hg75129 zl-y_95w*y+U?HOxeBSSuwnEg3Jl zwK}byBX;0KU1s%@crZP0yH-};dhwKJUdMaqeH6?&?*LTfsh4CX9(~mawv%~=fJ_`X z@?6W~1<`)h#jEh+7JlUA729k|;-w=aV3jcVf&f;Sn~4)rWx~YObpgtibR>0(8d208 zh=LBO!7F-sZY)FfyCC4*k2=#2p|KU7s%QUvC7^{M_M43mkJPV1SD*m%r?sylPsVN@jOLk!B^Cr;h6Je1ZFUir3Nm00aFec1{vSo z+Eq6&QR5u8)tRRWPt=WAO0@+@wf=ICEs>y7Z(;`0B@y_LmKi3r)o4Qc=`vO|0=T7W zQpsfU?wx4k-%*X(wta6zpwoz#L^V?MrDlW>W4@{xgFY6lw;hdyqYALZt(Zn4w*lo% zszqZF&A3#~DO0Ij<=enmJKZ`@yRN74^~fj!<8L1yjd>*!Y^f<^}wrzw=Ib4Rgr>?Y`VUI-~c5kbNNxI8*+l-{Riqf{JB}Y;I zWlN6Tj+&n0>H~CnIH_wOf&~8!G`eBa6_Y;j~c*!6OB?Qy@2G9cvb!9$%&gTI#jL+(Z;~40y zT@h?BeFPH;lph5r5l2O0%v|TLB!&N@OgFhnx0~Dqa+90mjDo6}f7#4!1*q?bCIIM> zkY;YA1`3AR^RGk6|k=U`26+*$f<4>Don1(sRAsc z-SWVuiT!`qv-Xy@o^?d7ehWaemRPFe#_1kT5n{GdfE@uLd}5sMy)Vj!C6iNd-sgN9~p_rIcQMAvNkG)&6Cp-pC6-tt6P~ zt-m`SyLi#jS2=4gi4z<95`ue7tF}@}ZX>onO}6MjV`cHT8gL0kpx6>UBuJ9G=+~x! z4FX~c5Wwc!P&~hGT>|q=d?i1hn+(Zw6a;A)V079;$qTV;)v<FN9zMOeTczl%kfT@sA~Q>M25-Dam0szch_Ey(zCQH%V}+ul{9fZDss7 z3soYNEnioAS!L+e7#N7AQ~Zg7R|p|)#f$HaDVFZGV#5##-FL-=MRwghYj>fAf|KXV zw-sam$-=qQcoCC-ow^hYl70}y@dVb{&vo}gic zf8%Cm)aBS%&nGv-m%7;co@;d6JARc^D)+ApyQ41&ql2x!067ymF=Ef>Zjm^%WUNni zA%n83pGKK1AQ1I@?o9b1gBz8d4&qL@WZ(*VHVIDyADUNgyywj55Nq zIQwn&r&5X$3D1lUE)FH-W010`JL2P>lT4Ta*J5m9Mr*x1p*`{n-#0C73FQ$CU|~`p zdjM8GT=^$#Bcplqf<^IUnv8K-jGWF!nW(WoM$quqGI@m4ap7a!F*f+_f$ zbl{ROf|7cNE96#Ef<049`Cj~ToFmz_;H7v(y&eA$xRJ}(YJ}+^7n2s7Irc;vn2y`E&}bnVL43ylUEIXyXrCDny{ivU5gi69U%*NR=RZH@n}~Kn+$!jobf1=5nC9IfF$`ntpd4h z*`Hl0fsI-JCDJgiDKK`NUK^H_`P@@;fPoO&H!0VOta9$=zQx{^N4tVQ zx3J$5sSQHWcyc8d*&5MXm&gKgxA|cOv3$gKJrkf2p-MujlzWOxUa(ir2qahbUVCYW zBv7~h7un}|n~ZnMWcoWI{xRu0pFm2T`J zKM>898GuzDwl-$&i6z=*=1^_3aHbN5&(xReJy}1@h(Nce9b!R&z^HlFhW)fc8 zDv(`y#7M(V^t*=rTlS&Td|Y|IBn*sfNT=rNV$sX<@D7?6i(<65*cNh_Q5OdPB>Py1 z>p*|M)%QcjPIg-XNS>>Fub9KT(?rS=%!*b#Fvcv{dN$P@1zR%TRM``k!T!$T>fvc_>iOta} z$44g@lCbPRRnYqy?liw=0^7@E{PM*${LNdj*T>#Jd-*-Kk@ugm#^95OprIT5%j4&S z#K(*3dBk0s9?zo_ob@qVQw7`0Su=^Uh)AtJ@W`CbBI$nQ& z`pZw?%6NBNm9zu&JGk-<0m26s=s=Iu`|p2_7vLjYM}z4j#t(hwVe!|zO2;30*$`2; zRX%tq1e4_NeAB|;W*uhs{mz91FYWr7M2?PZm3|pn1l%K>^9LntaMi&&1D)kelvN@W zd7}J2IbGx}8F)|9d@-7svQzmLrb2QoN*l`ju^qI@YY81+SUB!$%rjIvf>C0(b8sMe z$L$%d!TRzD{5dL1DWN-4X75)(K^uWdMP41W6X z{PxQzF3DI#3ezMY@U?7Be5aQy0BwJFTmh6L`}TV*l6 ze3j-sx4(DLqFmTaJ~&g5SefMmS}L9eW=VOKY5%ljQHk8SL!*@A~iUlFTs;t&=z*kqFfMzIrs3=50He0sVZ^YSNei_Rh2tN!S(Ldj|Q_qC4XRpVLAn71w^AZ z?HH|mRp0@VCvvk8+7tmk8%ngNf3h6IrEE`Oo*#5{Lw+Hfk$PB5wi~ZMb{p)dZLd-k zYf7CL!_|2jLu|-~8CIDu@#qOdto>f1Nb6pLA`ZqBOduJYM)L><3%j9J z8*^-ucBUCsq!+Zj?@S(ZTm=LhcxG#689aLPgmhsH&j)x*>h`Q3ZjmiBrhZW*JlQ&N z7_{{*c0=3^c2=@tbSpr ze;m2p@haMHo9=N~D5ZPOuqAe3i(-kL_p}zJki%2_JNbz_FOsEP>k@@AKKxw~d6Vu5 zV0sS8A2|XF`QMbDlHiKhpuHznkHZ%2+w^))rY8WvPwrBLv>xRKInUIXvuO964YYk= zV8&`sVT#5%x{HIL0xqj%*@N|_braGwIL@;L#rkrh$Ed}+A6mWQ$RWaov`$6E%t`$s zogx~r$?dC-)PBNNt~)l6*`D68I(7$M0vW-+jar-oTJ)RQLL zPKYo&9Hao>;U$cYl2R+f1dl0p*a!w0`_lY|PAPnpA>2k3)c_WSPGL^$B%Dp|M^1W` zFR7y3e&V_?a3dV8Ah##j`J!JY>oel~<|FIcj2k{94NKU^5ksVIt`H)C^^QTu|%!>1d=BNN?OfVl_ywVRk0txs3X4Qd9+n zh7)g)={k=w5+eYyK6D!?EqoPd{Y!UX2aM5^^DWNba+oHpFZ=A^LRvL?!wOmz>05@@ z*doJbOP-k?!wtqwDsaU$II?3tsB->1)ZXcwRl*jr0CF*CwqfHSuDO%*LnCn>WDT1wgbjC!K zLauAiI@jar-v5tvolfmU832b^8eg)nP-`bze1@cF<{FvpNS79i@s52#_yTG-20Rd0 zlxCfnFsb}oJ1`KR9oPojw>?nSiv3UZE2e68O0xqCLG%#!-_VSmAx+rp^&uv}l8^+HQyhNhl*=8H&-$gsbowHh6(mknbEIV>VM-(u zV$4Il=?Em3+9hYkej<6&eUnwqpoaA`Xe>C`XjvDQiHLP_9&0;N8zP8?X|xc8T3z;3 zi2#IvG0XHwX__p$yn^U#M<xi&*=Wq+F7IBST`Vswqn{R5p3hGvABNCY2Lz$tzXL)(taFYkpvEEGxi;y zT5S_b37qI6G6Bgxs^=M%k%W~); z`Si3ZbGZ8s_96KlucE!#RA_94Ojenxinir#K{2q31fI8&$fmAHzNPpIB>4nPA-*7- zv2uYCv@u}lWtSTmV*$$+;^-(~v&$V@tgMMX37}xG!40jS1})NgzSu515v+et-xsSx zi#4)UAq%Xe{+?^+Vx&12#~CA0~qboxYy^8N>T3^m9j>jcczf zTbQKn*arl4tos{CeCERRM^N_k?zcZcYB+NYc?2SZ3SzMYy`y{M!y@um=$=t%oM*iC z_G9VC5)O3##KZ3rm8aWE*3tRKb^--&2Bb~wCbHKmOdVYseA$u}At!o@B?H@O@e5$C zgiMIMQ*V<>f6q+gfSqLjSX{5uc9Op5tqXR4>MVSuB?|JRHXeXivDL9;OG~Jfg6-HH zDg74YK&DKN`2#rdnQa+fc74!o#9|xJ&f7_d7Hbo}_gO$38=f)P@ho8Q=k%y1;lq7! z(JgF|o1q>Ou?&T#o=gZWoNc=eednv$Ebt}i*Zp&GE)1k8U>Hxw2OCRKD$|Uf@N|bC z&FMFgmO#=iPl^=j!e;mxt37v0$Li=e$PKN*`gHaVd#@(@+T&mY7Z_-}El89*@(q#-(1DC>tfO~?b5vvsln)pb`)1JGnf6P{ zJm`xZr_o2&N+VwLfb>FARVyT4U^^h0o54F!Z!s;*eqIedsdgf;ZA#{gpYKHb=i+>s zTz)ca?^S~iI#vXG_gY92&$M~leEHXWuH%5r*fSDo-BVQ0p%(!mca#R>)5kl{xx`|8 zox2!wVWiURwc)v9R4X0-MW^D>MnG4DZy1U1uXy+ChqUW@QvSj-cxKWu%JqZ) z`yW0ePQ;Y>dBcx~MhFFu-GBGC*|j4_)0RZ)ownm+qjda1#NuiAH?qA3#?W@h8j!?& zXay)od*RM8(UvobHTP(~axzcEWpK*~Ppur{!-z#5ioi-PzEFSS4?GodU$AFc@` zFKT>)!Jei4Ph0IP86 zUU}=^F&ZP0+y0aab*MY@gNOS^)bIoTro?!{WCTQ&J`#w^!UF)2K0uGUXTO0l(vGc> zgpJQabO9|+YOF@?Y`pCJ1ltQHV}MT72Ji{Cdbp<*{1bdTu|5|6}-^P|E!yC*wp zifgk}AP}zO!~mtx!6q6FTJS}@>}waq*a+|plRG>@QVN-YN8yMCFX|qIn6gf9DJ2I0d*Jm+Avz;;Dh$UP90kkYkNgCfN!|0kM>< zM|1|+iRy17f|I$=VT;~_5sYMC(&zv&w8e@u3dsl5kJ+q$bd(G$fci&%cj`r_m1CQ>dmOUFy-qx{@T5y|>nn%! zI}%h$Spgtb)a4|WE_qYdFLGP|*p9(B<&Pr3&>>gLABAM$^m3IY@5b?&hb+u7W-;zO zkjlA-jXf&WT^VB1v2Xv-sByfIT)G#MIR1bzb&4M&tnDT!)sJEj>rSr}KMKgj-d*Nk zJlVP#G%Iw_B7B{>d>kLXK|E&kM=s%kU4wWaT!SkYzP=d}9}s4?Owob18z82Nhpu9$94j&}okBUqg7>@Ugk(EE~cD$rpmmT={xt5iST^ zruH%Yj3oiJ_|e(&(yovcKMKkGKwRe#7%mvXAM?zhMff`Pn119_0i78B@CCo%L##wU z`mGlf@;w(Qf#eCt2b4Go5##3|{*N!vl5fG_C-wb5_=nl+|NiH*OATG?x)qF((O1{1 zFOPiH->&DrB3S3X5MrG(N;?ASg)!8?7833__ysT#A@qO1>Cu-n+#|Bbc%M`A&yYP4 z`|lN#-$3@j>A{shtxp0!txsd}!=llwjGbYfn$|!F52@A?qkj4Aj=Ll8@5O)GBmbAb zzZ0qcas3UWEAnic6@wd=T=5o3FiJ^@^H)Xj*38}+%&pkQ0()9~&o>nK{b3?LkY1PT z$T4rU61JEwjGlwrKzM6ov0sSm%_gqb!EWeg&?2n5hY>T82y)}F2=%T3kQ||bb4n2W zos6r1CjKvk5`wN@A>Puu{x*wt`JI^u*;Y9AkHg6fSY)~Hh4I*FYqH<-b{%HNmzBhx z9iJ=*pgjmA$KpV^L!lGD3}4tm;7mC^Z>=2s0_eiWXit6P<A0;rl!GrMV+DnhdLHDs{W-%H z>+9^}%lY`tV5HS^8F}*+oT)o#koJ=Fo{)Y<@HV=zLox>G^t`por`GO}5

    |OY8gR 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 SqRYEPa?ABg$W zK+G{{aVLR#!oX)TsO@RoEX)k5kbKuL5HqNO>?P@}wrI~reTU65CxyDObNbRcsV-6K z%gIcYPd)@<64icuc(m@WNz?@e!%3nBmP$&nP8L-NscI~h5X)DD_!Yzxt--n(kq#Rz zAm8MtV@qrzn-b00MH*MuNA~etWKs!1fka+eMlz{F$c)s*ymeQ3!oX)Tsb^1N+_dgk z86Ak3)Ca7vyn}RePtT)@bZ3vmX7*yuUat#DF4b1^9mC0`3hBW;0FN{jz<@%roOfMNRujvSkFX`&`j#n+?|Ney%*(VQf(CaDjjB0LoV4O zU=pb|3P{hIHlH0slsCGu_NBAnt=UA0NnxaB?K zOcGTH)mb1+6Ipozz>SzeCw6uNhHN^!hbp9_i-MtfAbl6^vmELUn>9`jbz$f9rAi0%2R(ncmIdiS^`A(<(s-&U|vHXHQ`!Q3J`L;p9*SaG$W04^~6ywHVB8 zV$gI-MlGQW+u4gWpMs&CFmtF5oWkKi%%KL-BD*7pdcqt(In=YGAT|^MWNZO%UBihJ zK4DO%dsL5!_q98REXIOLFGKmkc<*y?HMn$UZ_za*i|WjL=eM#vS=5EWM$%-5G`FK5 zh!u=8wgA(pfn1R)%1xtYg`H={EXwz(i*gckl2lI+T#f^KQmGv&U(~h<(fvfC0XcY6 zsqJXoBFtQBAlc*yA)ES))S$ev2Bhf=nKSC(9N0`gD0?X=DCEPS?c-TC0rSCz7IQuzD_^#eC|OO zMfc;bBB@8E`I=^2;RwvhQG!|i71YIIBGY6P@{W?C@vm;ZHYj(kv-!fz&Nj(qEIPxT zxQ?y>iT}{kskY~$9zj@5HmF7m$G9JuM9*GYPI2sOjBys7=k3@2v5zwCl1}~n%YHQG1Ebuh zX=&5vkG={s(%4@9PHxhv9QaP_G2oj^&4@c|o<4$hAe*GEW6mtXQamcmSM~t#T3chD zJbn~N%p5zY7(>SX{t9OKjj;PWn=>Ktt>6@D}xCUdy4G) z7J+2V$)``^lt11FEyB0SM_|$5PL#KgM7lXpChCV@fHYAGWS;+V@^AYg5n+xcEO*zA zohE3RSh=S1Lgclh#^KG zJ?^%+0={VE_&_L`)Sw+$N&R&nmGS|ksL@wHCMc4Qo_;UctSt^h>dBwphs9ioHV83& zR+>kVB(-VISzg{K67t$Q6m~)yl|WEd=gwnCVvU!<^JS>O#2VN#sU3m*=*!`(*IjT| z8^0n2Kx?puUV8HkdrU>UV%=jaW7seRJuqTXf@O@wa){^goitjKi=jD1L8O9BDEKNwgkXIv(93c-xOcut=RK2J$ z5aKH$36^v=d7~PN0quoj>LFr5BsdAKWyiGPyA8N5<)HwK_6g$tkfjF~h;!x&`_b)% zZN7ejes2hz@-U!3h@|t3!~wZbAlDRmaHTLkczzAY?P7oGI zJmo}C$|v}ENKL1_W+}x1^+lQOCuDzqGeN`5BaK0>Zed_Wm>SZV z+$vrgq30kok(dC#uNo7KiWJ{``PU{X)&UpxL6?Y6?AYpGh85kuusDkxbm#sMf4&S^ zT%EOeWD@b%04H%)FeAJPW_`JmHa~j4Faey1+`_8>D!LQE3F&oL*F$6&0eSEDGqS=# zbuJCvM=Yw>NlVlptv_p&^#}P+3`~q!$g5-k*{~5}FJbZDU36fT1l|dhlIGl@7{tUnpY^nC6^sL(D{PS=i>s6TJn}XR~JUm$PpNILA!r7G#(@tDMkH z*t>VKcppRMe zhXgTHa((n5MJPl$PWAmSWh8zi?w={fuo;<$E73kBF1*HomAD>N2Wg7CAMD2i!xnRt zix2j0*^4$0sUmM4b&Q~tdsjTqyySA4ga9llT`Q$&f3yal+(X4GFG|XHC=cFJM8iXX zX)@L(z=1jzMzu7!mdtzW)sl`5MZ~FCe2K0Ufhx%vvAR-3yvj_;8nKYzosKpiUxP%y znvaYnP#>uVgTBvxw!r13wm%!sl6SV8J?lf2HH9$A|AsEK##8hd`w$bmmcx@-(GXY_ zvU%2M&+mmlCk;uAM*KVD&sEp#Z|GaU9P4O6^J$UStjd&J@+D{X5=)rYG7bFz9NY!2-pk`aT4zs{!K<(azE_ zM((=)TLp)jv+gccdgg8%l4ze(4)QFWL;(xUz5wwFN#c-#TN+s5~;t|KV zNiav<)Dj!-L3_;QdpU)-lyXZ930kPrVh&TfSWL4hx*cRm)2<0f3DQaPQhF%aMp7uw z%M(xKRnhiCFP6YXgZZ;5Qq3u=%LcVK!-=u*cc(tTyZnYkwJHvEVLSO_IJzu~f*irf z)y7jyVQHdRA5q2lJGJ3rXFLTfNKu=#w4o_2OSz@Zi;~nn;S|kX z!zd^~5poU5(U?MkK1$|seaMyrPQ#Y1TQW;4pPwGOZmO!v`5A*2nUtxLSy|IIc!N&) zNxv2uf}BlDZZ3IAnx5sn6uweYQs_#e7I@eb2>g;2EYl(GY`0rU@{ppWoU1%5e_u+g ziB4vN0^aWxTr_2I-8ZkiDXk131#mxy!sLvO`@8*YdHYL#HXV<3m@@u7z@aH1x~JO- zUJNOw3hbhfr0AEo9n7-QBoy!+V_Y=ZA5&GI>P(9<(UifuxS_PfQz&}cGSi!0$Q#oV zd2738GauK8fW`H1zt@V$6DMI?vK*TBu?P3~-9G1)KIT3^SbsiKKN!&dN>U_XjM$K zEI{xMf_(s1m6gH|(MQK?$jC#SEMd(NBW55u3f&?lQ=EPrI}`6nR{6%1B*UzL(U6Vn z)i0R|`=XttnT;=FQcBt_n$mGnhI50B6*P6wXr82(X61{Kv0#}(z?{M72a)66SH-Hm zIZCtcT#>LwdbWOXYx2|xB%9ov-|Yb=o!&Tq&$qOsBx|?^xoE6|+}Z)8$j5U@SXLdc zt2biClC>I67ZIjqo$k_&W3P&(2`7_Jhy_{-lnX@;=VTe@+qaoyUjfrXJuK%-vm4_m&xSc7}G3;C2rInu^w z0DP*F(t%->f;rzrK!J~hVh({k&0@X@RpZ;S?l7neCC#*C<|bDO*x&2(Ij!Uf?f3fP zOMA20GQFse0HFE^7d6H2^{Kgvf-ru5+|EPtEh$#V7>qLusTp=HQcFBsr7~?`CsPF; zBxR|^i@HsS4hkVO2ZmF@0!zvZ7;Q@TGN0?qBNC9!C`?J~OA+qL8S^W!-3TnBZ&{Oybb z2qwP6Gv?4l@L5?1KQQB5twcotr%TWaJnhX9JE-0(8}pT*L5T1sVp(xe6kcDucfA_uMrjqzJ+}S zADbpCo6IM;#)}e?a|WS!N2;U!R^gpp>ih1K^fMU+C2~pyq?tNy6z9dbkhB6xWT=S0 zAdvX&dVydK@le!7H6XcY<3o~4;EGfpFDgQT$iX{8#jjxJk)U?%sENRzE3`S-mdp>i z2Rmpqg+#gJphOxxaUjMp=JzadhDbvw4;Vr!k*R$@NhR`IzP>9T!L6f4E!bMSFD4U( zl5p#2zeR38DKBhXOX98ZUKrQ`it{Q+wFe+QcO?`Z;!<*AO7Zi@5gBtl=U3CRF0=$0 zx%nnBr#pR5lY4~9KBZsIQ^`D>rMxg!Mp`PFpW<~Ht=A|=2TQ`xP{Q)%O2Fe#6b=(s zhAz*R_(5MrQygQ0lZoITZ`pj(g$Luv`Q6N}ERa|4zxjk!#$6D)$!xVKCF>=Zk0j-2<(UgvxM7>spe*KLNg2y`R9Ol` zW_NHbN%@RP31+h;>ub<0EFOp&L^kSJm2B)d7lYiJ0>ctkKS_8)DPfti>SMiS`!BBD zVtm!Z9#(WtbQ%t~gJYZgTf5M*bQufN;AQ)$KSk+s-7yrQvlPDbT+ckQ=Ud`jU*I+D z_6MYXtB}^Q=p*)wcQk397*z)M)AZw!~#!fcYG%e=#?vL zL6Oro659|YC5Dts($LHji2sUtb;_aCF!MvM^gwyES1t^z_-E-it%R=crT3eJ|B=Cj z`tSA&JyLfbmsoGl?W2~frN(J#{3kH

    u>JIlhLYmhyvG-XA~m+f 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%0DN{cys*|NNeV_q1ZZQsqEM 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

    cw=BK#cIT;%FASEen=V-Z3B*Z+_48H_*J?%?6 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

    Oe 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

    1>+6K=>?RJPu$ze1!WYEgVa-m@2sSH6A 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 HE$06R$PiZp literal 0 HcmV?d00001 diff --git a/pom.xml b/pom.xml index ddd2c57d81..d8830e2a59 100644 --- a/pom.xml +++ b/pom.xml @@ -1,5 +1,5 @@ - + + 4.0.0 com.baeldung parent-modules @@ -144,6 +144,7 @@ xml xmlunit2 xstream - + pdf + - + \ No newline at end of file From 8628a63d955b596ba4d116091658297a7e53c3c2 Mon Sep 17 00:00:00 2001 From: eugenp Date: Thu, 3 Nov 2016 12:47:43 +0200 Subject: [PATCH 201/215] test fixes --- .../{hextToAscii => hexToAscii}/HexToAscii.java | 13 ++++++++----- spring-jpa/README.md | 11 +++++++++-- spring-thymeleaf/README.md | 3 ++- 3 files changed, 19 insertions(+), 8 deletions(-) rename core-java/src/main/java/com/baeldung/{hextToAscii => hexToAscii}/HexToAscii.java (90%) diff --git a/core-java/src/main/java/com/baeldung/hextToAscii/HexToAscii.java b/core-java/src/main/java/com/baeldung/hexToAscii/HexToAscii.java similarity index 90% rename from core-java/src/main/java/com/baeldung/hextToAscii/HexToAscii.java rename to core-java/src/main/java/com/baeldung/hexToAscii/HexToAscii.java index 4c20215288..2a3c4b109e 100644 --- a/core-java/src/main/java/com/baeldung/hextToAscii/HexToAscii.java +++ b/core-java/src/main/java/com/baeldung/hexToAscii/HexToAscii.java @@ -1,10 +1,13 @@ package com.baeldung.hexToAscii; +import static org.junit.Assert.assertEquals; + +import org.junit.Test; + public class HexToAscii { @Test public static void whenHexToAscii() { - String asciiString = "http://www.baeldung.com/jackson-serialize-dates"; String hexEquivalent = "687474703a2f2f7777772e6261656c64756e672e636f6d2f6a61636b736f6e2d73657269616c697a652d6461746573"; @@ -13,15 +16,15 @@ public class HexToAscii { @Test public static void whenAsciiToHex() { - String asciiString = "http://www.baeldung.com/jackson-serialize-dates"; String hexEquivalent = "687474703a2f2f7777772e6261656c64756e672e636f6d2f6a61636b736f6e2d73657269616c697a652d6461746573"; assertEquals(hexEquivalent, asciiToHex(asciiString)); } - private static String asciiToHex(String asciiStr) { + // + private static String asciiToHex(String asciiStr) { char[] chars = asciiStr.toCharArray(); StringBuilder hex = new StringBuilder(); for (char ch : chars) { @@ -31,8 +34,7 @@ public class HexToAscii { return hex.toString(); } - private static String hexToASCII(String hexStr) { - + private static String hexToAscii(String hexStr) { StringBuilder output = new StringBuilder(""); for (int i = 0; i < hexStr.length(); i += 2) { String str = hexStr.substring(i, i + 2); @@ -40,4 +42,5 @@ public class HexToAscii { } return output.toString(); } + } diff --git a/spring-jpa/README.md b/spring-jpa/README.md index bc768bee22..30b39e1a4e 100644 --- a/spring-jpa/README.md +++ b/spring-jpa/README.md @@ -13,5 +13,12 @@ - [Hibernate Second-Level Cache](http://www.baeldung.com/hibernate-second-level-cache) - [Spring, Hibernate and a JNDI Datasource](http://www.baeldung.com/spring-persistence-jpa-jndi-datasource) -To ignore "No persistence xml file found in project", you do: -Project -> Properties -> Java Persistance -> JPA -> Error/Warnings -> Select Ignore on "No persistence xml file found in project" +### Eclipse Config +After importing the project into Eclipse, you may see the following error: +"No persistence xml file found in project" + +This can be ignored: +- Project -> Properties -> Java Persistance -> JPA -> Error/Warnings -> Select Ignore on "No persistence xml file found in project" +Or: +- Eclipse -> Preferences - Validation - disable the "Build" execution of the JPA Validator + diff --git a/spring-thymeleaf/README.md b/spring-thymeleaf/README.md index a8ca755044..98fb4b043b 100644 --- a/spring-thymeleaf/README.md +++ b/spring-thymeleaf/README.md @@ -2,15 +2,16 @@ ## Spring Thymeleaf Example Project - ### Relevant Articles: - [Introduction to Using Thymeleaf in Spring](http://www.baeldung.com/thymeleaf-in-spring-mvc) - [CSRF Protection with Spring MVC and Thymeleaf](http://www.baeldung.com/csrf-thymeleaf-with-spring-security) + ### Build the Project mvn clean install + ### Run the Project mvn cargo:run - **note**: starts on port '8082' From 0ea29df5890af686ba67902e9f40897d9e6f2483 Mon Sep 17 00:00:00 2001 From: maibin Date: Thu, 3 Nov 2016 12:04:43 +0100 Subject: [PATCH 202/215] Code cleanup for PDF module (#800) * PDF to X * PDF to X * Remove created doc * Code fixes and cleanup for PDF module --- .../com/baeldung/pdf/PDF2HTMLExample.java | 18 ++------ .../com/baeldung/pdf/PDF2ImageExample.java | 3 -- .../com/baeldung/pdf/PDF2TextExample.java | 43 +++++++------------ .../com/baeldung/pdf/PDF2WordExample.java | 11 ----- 4 files changed, 19 insertions(+), 56 deletions(-) diff --git a/pdf/src/main/java/com/baeldung/pdf/PDF2HTMLExample.java b/pdf/src/main/java/com/baeldung/pdf/PDF2HTMLExample.java index 72877a465a..14e886e23b 100644 --- a/pdf/src/main/java/com/baeldung/pdf/PDF2HTMLExample.java +++ b/pdf/src/main/java/com/baeldung/pdf/PDF2HTMLExample.java @@ -23,27 +23,17 @@ public class PDF2HTMLExample { } private static void generateHTMLFromPDF(String filename) throws ParserConfigurationException, IOException { - System.out.println("Creating HTML file from a PDF file: " + filename); - PDDocument pdf = null; try { - // load the PDF file using PDFBox - pdf = PDDocument.load(new File(filename)); - // create the DOM parser + PDDocument pdf = PDDocument.load(new File(filename)); PDFDomTree parser = new PDFDomTree(); - // parse the file and get the DOM Document Writer output = new PrintWriter("src/output/pdf.html", "utf-8"); parser.writeText(pdf, output); output.close(); - } finally { if (pdf != null) { - try { - pdf.close(); - } catch (IOException e) { - System.err.println("Error: " + e.getMessage()); - } + pdf.close(); } + } catch (IOException e) { + e.printStackTrace(); } - System.out.println("Done."); } - } diff --git a/pdf/src/main/java/com/baeldung/pdf/PDF2ImageExample.java b/pdf/src/main/java/com/baeldung/pdf/PDF2ImageExample.java index 4cfaea26b9..d7587dfc17 100644 --- a/pdf/src/main/java/com/baeldung/pdf/PDF2ImageExample.java +++ b/pdf/src/main/java/com/baeldung/pdf/PDF2ImageExample.java @@ -24,15 +24,12 @@ public class PDF2ImageExample { } private static void generateImageFromPDF(String filename, String extension) throws IOException { - System.out.println("Creating " + extension + " image from a PDF file: " + filename); PDDocument document = PDDocument.load(new File(filename)); PDFRenderer pdfRenderer = new PDFRenderer(document); for (int page = 0; page < document.getNumberOfPages(); ++page) { - System.out.println("Page number: " + (page + 1) + " is being rendered"); BufferedImage bim = pdfRenderer.renderImageWithDPI(page, 300, ImageType.RGB); ImageIOUtil.writeImage(bim, "src/output/pdf" + "-" + (page + 1) + "." + extension, 300); } document.close(); - System.out.println("Done."); } } diff --git a/pdf/src/main/java/com/baeldung/pdf/PDF2TextExample.java b/pdf/src/main/java/com/baeldung/pdf/PDF2TextExample.java index eafdc07560..e4fb29dfaa 100644 --- a/pdf/src/main/java/com/baeldung/pdf/PDF2TextExample.java +++ b/pdf/src/main/java/com/baeldung/pdf/PDF2TextExample.java @@ -23,43 +23,30 @@ public class PDF2TextExample { } private static void generateTxtFromPDF(String filename) throws IOException { - System.out.println("Parsing text from PDF file " + filename); - String parsedText = null; - PDFTextStripper pdfStripper; - PDDocument pdDoc = null; - COSDocument cosDoc = null; - - File f = new File(filename); - PDFParser parser = new PDFParser(new RandomAccessFile(f, "r")); - try { + File f = new File(filename); + String parsedText; + PDFParser parser = new PDFParser(new RandomAccessFile(f, "r")); parser.parse(); - cosDoc = parser.getDocument(); - pdfStripper = new PDFTextStripper(); - pdDoc = new PDDocument(cosDoc); + + COSDocument cosDoc = parser.getDocument(); + + PDFTextStripper pdfStripper = new PDFTextStripper(); + PDDocument pdDoc = new PDDocument(cosDoc); + parsedText = pdfStripper.getText(pdDoc); - } catch (Exception e) { - System.err.println("An exception occured in parsing the PDF Document."); - e.printStackTrace(); - try { - if (cosDoc != null) - cosDoc.close(); - if (pdDoc != null) - pdDoc.close(); - } catch (Exception e1) { - e.printStackTrace(); - } - } - System.out.println("Writing PDF text to output text file"); - try { + + if (cosDoc != null) + cosDoc.close(); + if (pdDoc != null) + pdDoc.close(); + PrintWriter pw = new PrintWriter("src/output/pdf.txt"); pw.print(parsedText); pw.close(); } catch (Exception e) { - System.out.println("An exception occured in writing the pdf text to file."); e.printStackTrace(); } - System.out.println("Done."); } } diff --git a/pdf/src/main/java/com/baeldung/pdf/PDF2WordExample.java b/pdf/src/main/java/com/baeldung/pdf/PDF2WordExample.java index 6777ea9c45..1f416592ef 100644 --- a/pdf/src/main/java/com/baeldung/pdf/PDF2WordExample.java +++ b/pdf/src/main/java/com/baeldung/pdf/PDF2WordExample.java @@ -26,36 +26,25 @@ public class PDF2WordExample { } private static void generateDocFromPDF(String filename) throws IOException { - System.out.println("Creating a docx file from a PDF file: " + filename); - // Create the word document XWPFDocument doc = new XWPFDocument(); - // Open the pdf file String pdf = filename; PdfReader reader = new PdfReader(pdf); PdfReaderContentParser parser = new PdfReaderContentParser(reader); - // Read the PDF page by page for (int i = 1; i <= reader.getNumberOfPages(); i++) { TextExtractionStrategy strategy = parser.processContent(i, new SimpleTextExtractionStrategy()); - // Extract the text String text = strategy.getResultantText(); - // Create a new paragraph in the word document, adding the extracted - // text XWPFParagraph p = doc.createParagraph(); XWPFRun run = p.createRun(); run.setText(text); - // Adding a page break run.addBreak(BreakType.PAGE); } - // Write the word document FileOutputStream out = new FileOutputStream("src/output/pdf.docx"); doc.write(out); - // Close all open files out.close(); reader.close(); doc.close(); - System.out.println("Done."); } } From b0cfdb180e939de189fb6fec79138012f701785a Mon Sep 17 00:00:00 2001 From: slavisa-baeldung Date: Thu, 3 Nov 2016 13:12:43 +0100 Subject: [PATCH 203/215] BAEL-315 - removing obsolete files --- .../front/controller/filters/AuditFilter.java | 25 ------------- .../filters/VisitorCounterFilter.java | 23 ------------ enterprise-patterns/pom.xml | 35 ------------------- 3 files changed, 83 deletions(-) delete mode 100644 enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/filters/AuditFilter.java delete mode 100644 enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/filters/VisitorCounterFilter.java delete mode 100644 enterprise-patterns/pom.xml diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/filters/AuditFilter.java b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/filters/AuditFilter.java deleted file mode 100644 index d24c0a94b3..0000000000 --- a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/filters/AuditFilter.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.baeldung.enterprise.patterns.front.controller.filters; - -import javax.servlet.FilterChain; -import javax.servlet.ServletException; -import javax.servlet.ServletRequest; -import javax.servlet.ServletResponse; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpSession; -import java.io.IOException; - -public class AuditFilter extends BaseFilter { - @Override - public void doFilter( - ServletRequest request, - ServletResponse response, - FilterChain chain - ) throws IOException, ServletException { - HttpServletRequest httpServletRequest = (HttpServletRequest) request; - HttpSession session = httpServletRequest.getSession(false); - if (session != null && session.getAttribute("username") != null) { - request.setAttribute("username", session.getAttribute("username")); - } - chain.doFilter(request, response); - } -} diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/filters/VisitorCounterFilter.java b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/filters/VisitorCounterFilter.java deleted file mode 100644 index 0ae7cd73fd..0000000000 --- a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/filters/VisitorCounterFilter.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.baeldung.enterprise.patterns.front.controller.filters; - -import javax.servlet.FilterChain; -import javax.servlet.ServletException; -import javax.servlet.ServletRequest; -import javax.servlet.ServletResponse; -import javax.servlet.annotation.WebFilter; -import java.io.IOException; - -@WebFilter(servletNames = "front-controller") -public class VisitorCounterFilter extends BaseFilter { - private int counter; - - @Override - public void doFilter( - ServletRequest request, - ServletResponse response, - FilterChain chain - ) throws IOException, ServletException { - request.setAttribute("counter", ++counter); - chain.doFilter(request, response); - } -} diff --git a/enterprise-patterns/pom.xml b/enterprise-patterns/pom.xml deleted file mode 100644 index 036a61c44a..0000000000 --- a/enterprise-patterns/pom.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - 4.0.0 - - com.baeldung.enterprise.patterns - enterprise-patterns-parent - pom - - spring-dispatcher-servlet - - - - com.baeldung - parent-modules - 1.0.0-SNAPSHOT - - - - - - - org.apache.maven.plugins - maven-compiler-plugin - 3.5.1 - - 1.8 - 1.8 - - - - - - From bde9a0032f9f11838c9d7ab793ad1f6984e5fca2 Mon Sep 17 00:00:00 2001 From: slavisa-baeldung Date: Thu, 3 Nov 2016 13:29:17 +0100 Subject: [PATCH 204/215] NOJIRA - test and some minor fixes --- .../{main => test}/java/com/baeldung/hexToAscii/HexToAscii.java | 0 spring-integration/pom.xml | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename core-java/src/{main => test}/java/com/baeldung/hexToAscii/HexToAscii.java (100%) diff --git a/core-java/src/main/java/com/baeldung/hexToAscii/HexToAscii.java b/core-java/src/test/java/com/baeldung/hexToAscii/HexToAscii.java similarity index 100% rename from core-java/src/main/java/com/baeldung/hexToAscii/HexToAscii.java rename to core-java/src/test/java/com/baeldung/hexToAscii/HexToAscii.java diff --git a/spring-integration/pom.xml b/spring-integration/pom.xml index 251322295f..886b4b21a6 100644 --- a/spring-integration/pom.xml +++ b/spring-integration/pom.xml @@ -7,7 +7,7 @@ 1.0.0.BUILD-SNAPSHOT jar - Baeldung Spring Intro + spring-integration http://www.springsource.org/spring-integration From 455df4e499a9de09c5bbeb235e6a585bd5607bdf Mon Sep 17 00:00:00 2001 From: eugenp Date: Thu, 3 Nov 2016 18:03:47 +0200 Subject: [PATCH 205/215] minor cleanup in the java project --- .../baeldung/equalshashcode/entities/ComplexClass.java | 2 +- .../baeldung/equalshashcode/entities/PrimitiveClass.java | 2 +- .../baeldung/equalshashcode/entities/Rectangle.java | 2 +- .../{org => com}/baeldung/equalshashcode/entities/Shape.java | 2 +- .../{org => com}/baeldung/equalshashcode/entities/Square.java | 2 +- .../{org => com}/baeldung/executable/ExecutableMavenJar.java | 2 +- .../baeldung/equalshashcode/entities/ComplexClassUnitTest.java | 2 ++ .../equalshashcode/entities/PrimitiveClassUnitTest.java | 2 ++ .../baeldung/equalshashcode/entities/SquareClassUnitTest.java | 2 ++ 9 files changed, 12 insertions(+), 6 deletions(-) rename core-java/src/main/java/{org => com}/baeldung/equalshashcode/entities/ComplexClass.java (97%) rename core-java/src/main/java/{org => com}/baeldung/equalshashcode/entities/PrimitiveClass.java (96%) rename core-java/src/main/java/{org => com}/baeldung/equalshashcode/entities/Rectangle.java (96%) rename core-java/src/main/java/{org => com}/baeldung/equalshashcode/entities/Shape.java (70%) rename core-java/src/main/java/{org => com}/baeldung/equalshashcode/entities/Square.java (96%) rename core-java/src/main/java/{org => com}/baeldung/executable/ExecutableMavenJar.java (86%) diff --git a/core-java/src/main/java/org/baeldung/equalshashcode/entities/ComplexClass.java b/core-java/src/main/java/com/baeldung/equalshashcode/entities/ComplexClass.java similarity index 97% rename from core-java/src/main/java/org/baeldung/equalshashcode/entities/ComplexClass.java rename to core-java/src/main/java/com/baeldung/equalshashcode/entities/ComplexClass.java index 6329f41252..5a13f505c2 100644 --- a/core-java/src/main/java/org/baeldung/equalshashcode/entities/ComplexClass.java +++ b/core-java/src/main/java/com/baeldung/equalshashcode/entities/ComplexClass.java @@ -1,4 +1,4 @@ -package org.baeldung.equalshashcode.entities; +package com.baeldung.equalshashcode.entities; import java.util.List; import java.util.Set; diff --git a/core-java/src/main/java/org/baeldung/equalshashcode/entities/PrimitiveClass.java b/core-java/src/main/java/com/baeldung/equalshashcode/entities/PrimitiveClass.java similarity index 96% rename from core-java/src/main/java/org/baeldung/equalshashcode/entities/PrimitiveClass.java rename to core-java/src/main/java/com/baeldung/equalshashcode/entities/PrimitiveClass.java index ebe005688c..29b280865e 100644 --- a/core-java/src/main/java/org/baeldung/equalshashcode/entities/PrimitiveClass.java +++ b/core-java/src/main/java/com/baeldung/equalshashcode/entities/PrimitiveClass.java @@ -1,4 +1,4 @@ -package org.baeldung.equalshashcode.entities; +package com.baeldung.equalshashcode.entities; public class PrimitiveClass { diff --git a/core-java/src/main/java/org/baeldung/equalshashcode/entities/Rectangle.java b/core-java/src/main/java/com/baeldung/equalshashcode/entities/Rectangle.java similarity index 96% rename from core-java/src/main/java/org/baeldung/equalshashcode/entities/Rectangle.java rename to core-java/src/main/java/com/baeldung/equalshashcode/entities/Rectangle.java index 1e1423f0b3..168e3af0c6 100644 --- a/core-java/src/main/java/org/baeldung/equalshashcode/entities/Rectangle.java +++ b/core-java/src/main/java/com/baeldung/equalshashcode/entities/Rectangle.java @@ -1,4 +1,4 @@ -package org.baeldung.equalshashcode.entities; +package com.baeldung.equalshashcode.entities; public class Rectangle extends Shape { private double width; diff --git a/core-java/src/main/java/org/baeldung/equalshashcode/entities/Shape.java b/core-java/src/main/java/com/baeldung/equalshashcode/entities/Shape.java similarity index 70% rename from core-java/src/main/java/org/baeldung/equalshashcode/entities/Shape.java rename to core-java/src/main/java/com/baeldung/equalshashcode/entities/Shape.java index 3bfc81da8f..628359becf 100644 --- a/core-java/src/main/java/org/baeldung/equalshashcode/entities/Shape.java +++ b/core-java/src/main/java/com/baeldung/equalshashcode/entities/Shape.java @@ -1,4 +1,4 @@ -package org.baeldung.equalshashcode.entities; +package com.baeldung.equalshashcode.entities; public abstract class Shape { public abstract double area(); diff --git a/core-java/src/main/java/org/baeldung/equalshashcode/entities/Square.java b/core-java/src/main/java/com/baeldung/equalshashcode/entities/Square.java similarity index 96% rename from core-java/src/main/java/org/baeldung/equalshashcode/entities/Square.java rename to core-java/src/main/java/com/baeldung/equalshashcode/entities/Square.java index f11e34f0ba..b9125c3e2f 100644 --- a/core-java/src/main/java/org/baeldung/equalshashcode/entities/Square.java +++ b/core-java/src/main/java/com/baeldung/equalshashcode/entities/Square.java @@ -1,4 +1,4 @@ -package org.baeldung.equalshashcode.entities; +package com.baeldung.equalshashcode.entities; import java.awt.Color; diff --git a/core-java/src/main/java/org/baeldung/executable/ExecutableMavenJar.java b/core-java/src/main/java/com/baeldung/executable/ExecutableMavenJar.java similarity index 86% rename from core-java/src/main/java/org/baeldung/executable/ExecutableMavenJar.java rename to core-java/src/main/java/com/baeldung/executable/ExecutableMavenJar.java index 09344902b7..6c79e89717 100644 --- a/core-java/src/main/java/org/baeldung/executable/ExecutableMavenJar.java +++ b/core-java/src/main/java/com/baeldung/executable/ExecutableMavenJar.java @@ -1,4 +1,4 @@ -package org.baeldung.executable; +package com.baeldung.executable; import javax.swing.JOptionPane; diff --git a/core-java/src/test/java/org/baeldung/equalshashcode/entities/ComplexClassUnitTest.java b/core-java/src/test/java/org/baeldung/equalshashcode/entities/ComplexClassUnitTest.java index e4866d0078..680a6d57b5 100644 --- a/core-java/src/test/java/org/baeldung/equalshashcode/entities/ComplexClassUnitTest.java +++ b/core-java/src/test/java/org/baeldung/equalshashcode/entities/ComplexClassUnitTest.java @@ -7,6 +7,8 @@ import java.util.List; import org.junit.Assert; import org.junit.Test; +import com.baeldung.equalshashcode.entities.ComplexClass; + public class ComplexClassUnitTest { @Test diff --git a/core-java/src/test/java/org/baeldung/equalshashcode/entities/PrimitiveClassUnitTest.java b/core-java/src/test/java/org/baeldung/equalshashcode/entities/PrimitiveClassUnitTest.java index 603b0bfbf9..f4e9f2b99f 100644 --- a/core-java/src/test/java/org/baeldung/equalshashcode/entities/PrimitiveClassUnitTest.java +++ b/core-java/src/test/java/org/baeldung/equalshashcode/entities/PrimitiveClassUnitTest.java @@ -3,6 +3,8 @@ package org.baeldung.equalshashcode.entities; import org.junit.Assert; import org.junit.Test; +import com.baeldung.equalshashcode.entities.PrimitiveClass; + public class PrimitiveClassUnitTest { @Test diff --git a/core-java/src/test/java/org/baeldung/equalshashcode/entities/SquareClassUnitTest.java b/core-java/src/test/java/org/baeldung/equalshashcode/entities/SquareClassUnitTest.java index 0943436883..5c860bd62d 100644 --- a/core-java/src/test/java/org/baeldung/equalshashcode/entities/SquareClassUnitTest.java +++ b/core-java/src/test/java/org/baeldung/equalshashcode/entities/SquareClassUnitTest.java @@ -5,6 +5,8 @@ import java.awt.Color; import org.junit.Assert; import org.junit.Test; +import com.baeldung.equalshashcode.entities.Square; + public class SquareClassUnitTest { @Test From 8ce7e1f5884bda6cbfd2c3bd38a1d95b0ab94296 Mon Sep 17 00:00:00 2001 From: eugenp Date: Thu, 3 Nov 2016 18:04:09 +0200 Subject: [PATCH 206/215] formatting work --- .../java/networking/udp/EchoClient.java | 2 +- .../datetime/UseLocalDateTimeUnitTest.java | 10 +- .../datetime/UseLocalDateUnitTest.java | 50 +++++----- .../datetime/UseLocalTimeUnitTest.java | 32 +++---- .../baeldung/datetime/UsePeriodUnitTest.java | 14 +-- .../datetime/UseZonedDateTimeUnitTest.java | 14 +-- .../EncoderDecoderUnitTest.java | 12 +-- .../com/baeldung/enums/PizzaUnitTest.java | 1 - .../networking/udp/UDPIntegrationTest.java | 1 - .../java8/Java8StreamApiUnitTest.java | 92 ++++++++----------- .../baeldung/java8/Java8StreamsUnitTest.java | 16 +--- .../GuavaThreadPoolIntegrationTest.java | 4 +- .../baeldung/java/enums/PizzaUnitTest.java | 2 +- 13 files changed, 106 insertions(+), 144 deletions(-) diff --git a/core-java/src/main/java/com/baeldung/java/networking/udp/EchoClient.java b/core-java/src/main/java/com/baeldung/java/networking/udp/EchoClient.java index 1fb9af3a9d..916442533b 100644 --- a/core-java/src/main/java/com/baeldung/java/networking/udp/EchoClient.java +++ b/core-java/src/main/java/com/baeldung/java/networking/udp/EchoClient.java @@ -24,7 +24,7 @@ public class EchoClient { public String sendEcho(String msg) { DatagramPacket packet = null; try { - buf=msg.getBytes(); + buf = msg.getBytes(); packet = new DatagramPacket(buf, buf.length, address, 4445); socket.send(packet); packet = new DatagramPacket(buf, buf.length); diff --git a/core-java/src/test/java/com/baeldung/datetime/UseLocalDateTimeUnitTest.java b/core-java/src/test/java/com/baeldung/datetime/UseLocalDateTimeUnitTest.java index 906d641632..57e1f33280 100644 --- a/core-java/src/test/java/com/baeldung/datetime/UseLocalDateTimeUnitTest.java +++ b/core-java/src/test/java/com/baeldung/datetime/UseLocalDateTimeUnitTest.java @@ -8,12 +8,12 @@ import org.junit.Assert; import org.junit.Test; public class UseLocalDateTimeUnitTest { - + UseLocalDateTime useLocalDateTime = new UseLocalDateTime(); - + @Test - public void givenString_whenUsingParse_thenLocalDateTime(){ - Assert.assertEquals(LocalDate.of(2016, Month.MAY, 10),useLocalDateTime.getLocalDateTimeUsingParseMethod("2016-05-10T06:30").toLocalDate()); - Assert.assertEquals(LocalTime.of(6,30),useLocalDateTime.getLocalDateTimeUsingParseMethod("2016-05-10T06:30").toLocalTime()); + public void givenString_whenUsingParse_thenLocalDateTime() { + Assert.assertEquals(LocalDate.of(2016, Month.MAY, 10), useLocalDateTime.getLocalDateTimeUsingParseMethod("2016-05-10T06:30").toLocalDate()); + Assert.assertEquals(LocalTime.of(6, 30), useLocalDateTime.getLocalDateTimeUsingParseMethod("2016-05-10T06:30").toLocalTime()); } } diff --git a/core-java/src/test/java/com/baeldung/datetime/UseLocalDateUnitTest.java b/core-java/src/test/java/com/baeldung/datetime/UseLocalDateUnitTest.java index dcfca792af..8f1997e9e8 100644 --- a/core-java/src/test/java/com/baeldung/datetime/UseLocalDateUnitTest.java +++ b/core-java/src/test/java/com/baeldung/datetime/UseLocalDateUnitTest.java @@ -8,47 +8,47 @@ import org.junit.Assert; import org.junit.Test; public class UseLocalDateUnitTest { - + UseLocalDate useLocalDate = new UseLocalDate(); - + @Test - public void givenValues_whenUsingFactoryOf_thenLocalDate(){ - Assert.assertEquals("2016-05-10",useLocalDate.getLocalDateUsingFactoryOfMethod(2016,5,10).toString()); + public void givenValues_whenUsingFactoryOf_thenLocalDate() { + Assert.assertEquals("2016-05-10", useLocalDate.getLocalDateUsingFactoryOfMethod(2016, 5, 10).toString()); } - + @Test - public void givenString_whenUsingParse_thenLocalDate(){ - Assert.assertEquals("2016-05-10",useLocalDate.getLocalDateUsingParseMethod("2016-05-10").toString()); + public void givenString_whenUsingParse_thenLocalDate() { + Assert.assertEquals("2016-05-10", useLocalDate.getLocalDateUsingParseMethod("2016-05-10").toString()); } - + @Test - public void whenUsingClock_thenLocalDate(){ - Assert.assertEquals(LocalDate.now(),useLocalDate.getLocalDateFromClock()); + public void whenUsingClock_thenLocalDate() { + Assert.assertEquals(LocalDate.now(), useLocalDate.getLocalDateFromClock()); } - + @Test - public void givenDate_whenUsingPlus_thenNextDay(){ - Assert.assertEquals(LocalDate.now().plusDays(1),useLocalDate.getNextDay(LocalDate.now())); + public void givenDate_whenUsingPlus_thenNextDay() { + Assert.assertEquals(LocalDate.now().plusDays(1), useLocalDate.getNextDay(LocalDate.now())); } - + @Test - public void givenDate_whenUsingMinus_thenPreviousDay(){ - Assert.assertEquals(LocalDate.now().minusDays(1),useLocalDate.getPreviousDay(LocalDate.now())); + public void givenDate_whenUsingMinus_thenPreviousDay() { + Assert.assertEquals(LocalDate.now().minusDays(1), useLocalDate.getPreviousDay(LocalDate.now())); } - + @Test - public void givenToday_whenUsingGetDayOfWeek_thenDayOfWeek(){ - Assert.assertEquals(DayOfWeek.SUNDAY,useLocalDate.getDayOfWeek(LocalDate.parse("2016-05-22"))); + public void givenToday_whenUsingGetDayOfWeek_thenDayOfWeek() { + Assert.assertEquals(DayOfWeek.SUNDAY, useLocalDate.getDayOfWeek(LocalDate.parse("2016-05-22"))); } - + @Test - public void givenToday_whenUsingWithTemporalAdjuster_thenFirstDayOfMonth(){ - Assert.assertEquals(1,useLocalDate.getFirstDayOfMonth().getDayOfMonth()); + public void givenToday_whenUsingWithTemporalAdjuster_thenFirstDayOfMonth() { + Assert.assertEquals(1, useLocalDate.getFirstDayOfMonth().getDayOfMonth()); } - + @Test - public void givenLocalDate_whenUsingAtStartOfDay_thenReturnMidnight(){ - Assert.assertEquals(LocalDateTime.parse("2016-05-22T00:00:00"),useLocalDate.getStartOfDay(LocalDate.parse("2016-05-22"))); + public void givenLocalDate_whenUsingAtStartOfDay_thenReturnMidnight() { + Assert.assertEquals(LocalDateTime.parse("2016-05-22T00:00:00"), useLocalDate.getStartOfDay(LocalDate.parse("2016-05-22"))); } } diff --git a/core-java/src/test/java/com/baeldung/datetime/UseLocalTimeUnitTest.java b/core-java/src/test/java/com/baeldung/datetime/UseLocalTimeUnitTest.java index 520b79d4bf..996e200ae9 100644 --- a/core-java/src/test/java/com/baeldung/datetime/UseLocalTimeUnitTest.java +++ b/core-java/src/test/java/com/baeldung/datetime/UseLocalTimeUnitTest.java @@ -6,31 +6,31 @@ import org.junit.Assert; import org.junit.Test; public class UseLocalTimeUnitTest { - + UseLocalTime useLocalTime = new UseLocalTime(); - + @Test - public void givenValues_whenUsingFactoryOf_thenLocalTime(){ - Assert.assertEquals("07:07:07",useLocalTime.getLocalTimeUsingFactoryOfMethod(7,7,7).toString()); + public void givenValues_whenUsingFactoryOf_thenLocalTime() { + Assert.assertEquals("07:07:07", useLocalTime.getLocalTimeUsingFactoryOfMethod(7, 7, 7).toString()); } - + @Test - public void givenString_whenUsingParse_thenLocalTime(){ - Assert.assertEquals("06:30",useLocalTime.getLocalTimeUsingParseMethod("06:30").toString()); + public void givenString_whenUsingParse_thenLocalTime() { + 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()); + public void givenTime_whenAddHour_thenLocalTime() { + Assert.assertEquals("07:30", useLocalTime.addAnHour(LocalTime.of(6, 30)).toString()); } - + @Test - public void getHourFromLocalTime(){ - Assert.assertEquals(1, useLocalTime.getHourFromLocalTime(LocalTime.of(1,1))); + public void getHourFromLocalTime() { + Assert.assertEquals(1, useLocalTime.getHourFromLocalTime(LocalTime.of(1, 1))); } - + @Test - public void getLocalTimeWithMinuteSetToValue(){ - Assert.assertEquals(LocalTime.of(10, 20), useLocalTime.getLocalTimeWithMinuteSetToValue(LocalTime.of(10,10), 20)); + public void getLocalTimeWithMinuteSetToValue() { + Assert.assertEquals(LocalTime.of(10, 20), useLocalTime.getLocalTimeWithMinuteSetToValue(LocalTime.of(10, 10), 20)); } } diff --git a/core-java/src/test/java/com/baeldung/datetime/UsePeriodUnitTest.java b/core-java/src/test/java/com/baeldung/datetime/UsePeriodUnitTest.java index a060d974ed..7c030c328a 100644 --- a/core-java/src/test/java/com/baeldung/datetime/UsePeriodUnitTest.java +++ b/core-java/src/test/java/com/baeldung/datetime/UsePeriodUnitTest.java @@ -7,20 +7,20 @@ import org.junit.Assert; import org.junit.Test; public class UsePeriodUnitTest { - UsePeriod usingPeriod=new UsePeriod(); - + UsePeriod usingPeriod = new UsePeriod(); + @Test - public void givenPeriodAndLocalDate_thenCalculateModifiedDate(){ + public void givenPeriodAndLocalDate_thenCalculateModifiedDate() { Period period = Period.ofDays(1); LocalDate localDate = LocalDate.parse("2007-05-10"); - Assert.assertEquals(localDate.plusDays(1),usingPeriod.modifyDates(localDate, period)); + Assert.assertEquals(localDate.plusDays(1), usingPeriod.modifyDates(localDate, period)); } - + @Test - public void givenDates_thenGetPeriod(){ + public void givenDates_thenGetPeriod() { LocalDate localDate1 = LocalDate.parse("2007-05-10"); LocalDate localDate2 = LocalDate.parse("2007-05-15"); - + Assert.assertEquals(Period.ofDays(5), usingPeriod.getDifferenceBetweenDates(localDate1, localDate2)); } } diff --git a/core-java/src/test/java/com/baeldung/datetime/UseZonedDateTimeUnitTest.java b/core-java/src/test/java/com/baeldung/datetime/UseZonedDateTimeUnitTest.java index d5652430fe..5fb079b94c 100644 --- a/core-java/src/test/java/com/baeldung/datetime/UseZonedDateTimeUnitTest.java +++ b/core-java/src/test/java/com/baeldung/datetime/UseZonedDateTimeUnitTest.java @@ -8,13 +8,13 @@ import org.junit.Assert; import org.junit.Test; public class UseZonedDateTimeUnitTest { - - UseZonedDateTime zonedDateTime=new UseZonedDateTime(); - + + UseZonedDateTime zonedDateTime = new UseZonedDateTime(); + @Test - public void givenZoneId_thenZonedDateTime(){ - ZoneId zoneId=ZoneId.of("Europe/Paris"); - ZonedDateTime zonedDatetime=zonedDateTime.getZonedDateTime(LocalDateTime.parse("2016-05-20T06:30"), zoneId); - Assert.assertEquals(zoneId,ZoneId.from(zonedDatetime)); + public void givenZoneId_thenZonedDateTime() { + ZoneId zoneId = ZoneId.of("Europe/Paris"); + ZonedDateTime zonedDatetime = zonedDateTime.getZonedDateTime(LocalDateTime.parse("2016-05-20T06:30"), zoneId); + Assert.assertEquals(zoneId, ZoneId.from(zonedDatetime)); } } diff --git a/core-java/src/test/java/com/baeldung/encoderdecoder/EncoderDecoderUnitTest.java b/core-java/src/test/java/com/baeldung/encoderdecoder/EncoderDecoderUnitTest.java index 0e3ec29dfd..c944dfa6fe 100644 --- a/core-java/src/test/java/com/baeldung/encoderdecoder/EncoderDecoderUnitTest.java +++ b/core-java/src/test/java/com/baeldung/encoderdecoder/EncoderDecoderUnitTest.java @@ -32,7 +32,6 @@ public class EncoderDecoderUnitTest { return encoded; } - private String decode(String value) { String decoded = null; try { @@ -59,9 +58,7 @@ public class EncoderDecoderUnitTest { requestParams.put("key2", "value@!$2"); requestParams.put("key3", "value%3"); - String encodedURL = requestParams.keySet().stream() - .map(key -> key + "=" + encodeValue(requestParams.get(key))) - .collect(joining("&", "http://www.baeldung.com?", "")); + String encodedURL = requestParams.keySet().stream().map(key -> key + "=" + encodeValue(requestParams.get(key))).collect(joining("&", "http://www.baeldung.com?", "")); Assert.assertThat(testUrl, CoreMatchers.is(encodedURL)); } @@ -72,12 +69,9 @@ public class EncoderDecoderUnitTest { String query = url.getQuery(); - String decodedQuery = Arrays.stream(query.split("&")) - .map(param -> param.split("=")[0] + "=" + decode(param.split("=")[1])) - .collect(joining("&")); + String decodedQuery = Arrays.stream(query.split("&")).map(param -> param.split("=")[0] + "=" + decode(param.split("=")[1])).collect(joining("&")); - Assert.assertEquals( - "http://www.baeldung.com?key1=value 1&key2=value@!$2&key3=value%3", url.getProtocol() + "://" + url.getHost() + "?" + decodedQuery); + Assert.assertEquals("http://www.baeldung.com?key1=value 1&key2=value@!$2&key3=value%3", url.getProtocol() + "://" + url.getHost() + "?" + decodedQuery); } } diff --git a/core-java/src/test/java/com/baeldung/enums/PizzaUnitTest.java b/core-java/src/test/java/com/baeldung/enums/PizzaUnitTest.java index de60becfce..6cf6ad3551 100644 --- a/core-java/src/test/java/com/baeldung/enums/PizzaUnitTest.java +++ b/core-java/src/test/java/com/baeldung/enums/PizzaUnitTest.java @@ -1,6 +1,5 @@ package com.baeldung.enums; - import org.junit.Test; import java.util.ArrayList; diff --git a/core-java/src/test/java/com/baeldung/java/networking/udp/UDPIntegrationTest.java b/core-java/src/test/java/com/baeldung/java/networking/udp/UDPIntegrationTest.java index 2ca2d3a0c8..aff851ae4b 100644 --- a/core-java/src/test/java/com/baeldung/java/networking/udp/UDPIntegrationTest.java +++ b/core-java/src/test/java/com/baeldung/java/networking/udp/UDPIntegrationTest.java @@ -1,6 +1,5 @@ package com.baeldung.java.networking.udp; - import org.junit.After; import org.junit.Before; import org.junit.Test; diff --git a/core-java/src/test/java/com/baeldung/java8/Java8StreamApiUnitTest.java b/core-java/src/test/java/com/baeldung/java8/Java8StreamApiUnitTest.java index d9a72063af..73a10a57f4 100644 --- a/core-java/src/test/java/com/baeldung/java8/Java8StreamApiUnitTest.java +++ b/core-java/src/test/java/com/baeldung/java8/Java8StreamApiUnitTest.java @@ -27,18 +27,14 @@ public class Java8StreamApiUnitTest { @Before public void init() { - productList = Arrays.asList( - new Product(23, "potatoes"), new Product(14, "orange"), - new Product(13, "lemon"), new Product(23, "bread"), - new Product(13, "sugar")); + productList = Arrays.asList(new Product(23, "potatoes"), new Product(14, "orange"), new Product(13, "lemon"), new Product(23, "bread"), new Product(13, "sugar")); } @Test public void checkPipeline_whenStreamOneElementShorter_thenCorrect() { List list = Arrays.asList("abc1", "abc2", "abc3"); - long size = list.stream().skip(1) - .map(element -> element.substring(0, 3)).count(); + long size = list.stream().skip(1).map(element -> element.substring(0, 3)).count(); assertEquals(list.size() - 1, size); } @@ -48,11 +44,10 @@ public class Java8StreamApiUnitTest { List list = Arrays.asList("abc1", "abc2", "abc3"); counter = 0; - long sizeFirst = list.stream() - .skip(2).map(element -> { - wasCalled(); - return element.substring(0, 3); - }).count(); + long sizeFirst = list.stream().skip(2).map(element -> { + wasCalled(); + return element.substring(0, 3); + }).count(); assertEquals(1, counter); counter = 0; @@ -84,7 +79,7 @@ public class Java8StreamApiUnitTest { Stream streamOfArray = Stream.of("a", "b", "c"); assertEquals(3, streamOfArray.count()); - String[] arr = new String[]{"a", "b", "c"}; + String[] arr = new String[] { "a", "b", "c" }; Stream streamOfArrayPart = Arrays.stream(arr, 1, 3); assertEquals(2, streamOfArrayPart.count()); @@ -112,7 +107,7 @@ public class Java8StreamApiUnitTest { } assertEquals("a", streamOfStrings.findFirst().get()); - Stream streamBuilder = Stream.builder().add("a").add("b").add("c").build(); + Stream streamBuilder = Stream. builder().add("a").add("b").add("c").build(); assertEquals(3, streamBuilder.count()); Stream streamGenerated = Stream.generate(() -> "element").limit(10); @@ -126,14 +121,13 @@ public class Java8StreamApiUnitTest { public void runStreamPipeline_whenOrderIsRight_thenCorrect() { List list = Arrays.asList("abc1", "abc2", "abc3"); - Optional stream = list.stream() - .filter(element -> { - log.info("filter() was called"); - return element.contains("2"); - }).map(element -> { - log.info("map() was called"); - return element.toUpperCase(); - }).findFirst(); + Optional stream = list.stream().filter(element -> { + log.info("filter() was called"); + return element.contains("2"); + }).map(element -> { + log.info("map() was called"); + return element.toUpperCase(); + }).findFirst(); } @Test @@ -145,32 +139,28 @@ public class Java8StreamApiUnitTest { int reducedTwoParams = IntStream.range(1, 4).reduce(10, (a, b) -> a + b); assertEquals(16, reducedTwoParams); - int reducedThreeParams = Stream.of(1, 2, 3) - .reduce(10, (a, b) -> a + b, (a, b) -> { - log.info("combiner was called"); - return a + b; - }); + int reducedThreeParams = Stream.of(1, 2, 3).reduce(10, (a, b) -> a + b, (a, b) -> { + log.info("combiner was called"); + return a + b; + }); assertEquals(16, reducedThreeParams); - int reducedThreeParamsParallel = Arrays.asList(1, 2, 3).parallelStream() - .reduce(10, (a, b) -> a + b, (a, b) -> { - log.info("combiner was called"); - return a + b; - }); + int reducedThreeParamsParallel = Arrays.asList(1, 2, 3).parallelStream().reduce(10, (a, b) -> a + b, (a, b) -> { + log.info("combiner was called"); + return a + b; + }); assertEquals(36, reducedThreeParamsParallel); } @Test public void collecting_whenAsExpected_thenCorrect() { - List collectorCollection = productList.stream() - .map(Product::getName).collect(Collectors.toList()); + List collectorCollection = productList.stream().map(Product::getName).collect(Collectors.toList()); assertTrue(collectorCollection instanceof List); assertEquals(5, collectorCollection.size()); - String listToString = productList.stream().map(Product::getName) - .collect(Collectors.joining(", ", "[", "]")); + String listToString = productList.stream().map(Product::getName).collect(Collectors.joining(", ", "[", "]")); assertTrue(listToString.contains(",") && listToString.contains("[") && listToString.contains("]")); @@ -180,36 +170,29 @@ public class Java8StreamApiUnitTest { int summingPrice = productList.stream().collect(Collectors.summingInt(Product::getPrice)); assertEquals(86, summingPrice); - IntSummaryStatistics statistics = productList.stream() - .collect(Collectors.summarizingInt(Product::getPrice)); + IntSummaryStatistics statistics = productList.stream().collect(Collectors.summarizingInt(Product::getPrice)); assertEquals(23, statistics.getMax()); - Map> collectorMapOfLists = productList.stream() - .collect(Collectors.groupingBy(Product::getPrice)); + Map> collectorMapOfLists = productList.stream().collect(Collectors.groupingBy(Product::getPrice)); assertEquals(3, collectorMapOfLists.keySet().size()); - Map> mapPartioned = productList.stream() - .collect(Collectors.partitioningBy(element -> element.getPrice() > 15)); + Map> mapPartioned = productList.stream().collect(Collectors.partitioningBy(element -> element.getPrice() > 15)); assertEquals(2, mapPartioned.keySet().size()); } @Test(expected = UnsupportedOperationException.class) public void collect_whenThrows_thenCorrect() { - Set unmodifiableSet = productList.stream() - .collect(Collectors.collectingAndThen(Collectors.toSet(), - Collections::unmodifiableSet)); + Set unmodifiableSet = productList.stream().collect(Collectors.collectingAndThen(Collectors.toSet(), Collections::unmodifiableSet)); unmodifiableSet.add(new Product(4, "tea")); } @Test public void customCollector_whenResultContainsAllElementsFrSource_thenCorrect() { - Collector> toLinkedList = - Collector.of(LinkedList::new, LinkedList::add, - (first, second) -> { - first.addAll(second); - return first; - }); + Collector> toLinkedList = Collector.of(LinkedList::new, LinkedList::add, (first, second) -> { + first.addAll(second); + return first; + }); LinkedList linkedListOfPersons = productList.stream().collect(toLinkedList); assertTrue(linkedListOfPersons.containsAll(productList)); @@ -219,23 +202,20 @@ public class Java8StreamApiUnitTest { public void parallelStream_whenWorks_thenCorrect() { Stream streamOfCollection = productList.parallelStream(); boolean isParallel = streamOfCollection.isParallel(); - boolean haveBigPrice = streamOfCollection.map(product -> product.getPrice() * 12) - .anyMatch(price -> price > 200); + boolean haveBigPrice = streamOfCollection.map(product -> product.getPrice() * 12).anyMatch(price -> price > 200); assertTrue(isParallel && haveBigPrice); } @Test public void parallel_whenIsParallel_thenCorrect() { - IntStream intStreamParallel = - IntStream.range(1, 150).parallel().map(element -> element * 34); + IntStream intStreamParallel = IntStream.range(1, 150).parallel().map(element -> element * 34); boolean isParallel = intStreamParallel.isParallel(); assertTrue(isParallel); } @Test public void parallel_whenIsSequential_thenCorrect() { - IntStream intStreamParallel = - IntStream.range(1, 150).parallel().map(element -> element * 34); + IntStream intStreamParallel = IntStream.range(1, 150).parallel().map(element -> element * 34); IntStream intStreamSequential = intStreamParallel.sequential(); boolean isParallel = intStreamParallel.isParallel(); assertFalse(isParallel); diff --git a/core-java/src/test/java/com/baeldung/java8/Java8StreamsUnitTest.java b/core-java/src/test/java/com/baeldung/java8/Java8StreamsUnitTest.java index fc83553c6e..e40f9f9506 100644 --- a/core-java/src/test/java/com/baeldung/java8/Java8StreamsUnitTest.java +++ b/core-java/src/test/java/com/baeldung/java8/Java8StreamsUnitTest.java @@ -36,7 +36,7 @@ public class Java8StreamsUnitTest { @Test public void checkStreamCount_whenCreating_givenDifferentSources() { - String[] arr = new String[]{"a", "b", "c"}; + String[] arr = new String[] { "a", "b", "c" }; Stream streamArr = Arrays.stream(arr); assertEquals(streamArr.count(), 3); @@ -47,14 +47,12 @@ public class Java8StreamsUnitTest { assertEquals(count, 9); } - @Test public void checkStreamCount_whenOperationFilter_thanCorrect() { Stream streamFilter = list.stream().filter(element -> element.isEmpty()); assertEquals(streamFilter.count(), 2); } - @Test public void checkStreamCount_whenOperationMap_thanCorrect() { List uris = new ArrayList<>(); @@ -65,12 +63,10 @@ public class Java8StreamsUnitTest { List details = new ArrayList<>(); details.add(new Detail()); details.add(new Detail()); - Stream streamFlatMap = details.stream() - .flatMap(detail -> detail.getParts().stream()); + Stream streamFlatMap = details.stream().flatMap(detail -> detail.getParts().stream()); assertEquals(streamFlatMap.count(), 4); } - @Test public void checkStreamCount_whenOperationMatch_thenCorrect() { boolean isValid = list.stream().anyMatch(element -> element.contains("h")); @@ -81,7 +77,6 @@ public class Java8StreamsUnitTest { assertFalse(isValidTwo); } - @Test public void checkStreamReducedValue_whenOperationReduce_thenCorrect() { List integers = new ArrayList<>(); @@ -94,20 +89,17 @@ public class Java8StreamsUnitTest { @Test public void checkStreamContains_whenOperationCollect_thenCorrect() { - List resultList = list.stream() - .map(element -> element.toUpperCase()) - .collect(Collectors.toList()); + List resultList = list.stream().map(element -> element.toUpperCase()).collect(Collectors.toList()); assertEquals(resultList.size(), list.size()); assertTrue(resultList.contains("")); } - @Test public void checkParallelStream_whenDoWork() { list.parallelStream().forEach(element -> doWork(element)); } private void doWork(String string) { - assertTrue(true); //just imitate an amount of work + assertTrue(true); // just imitate an amount of work } } diff --git a/core-java/src/test/java/com/baeldung/threadpool/GuavaThreadPoolIntegrationTest.java b/core-java/src/test/java/com/baeldung/threadpool/GuavaThreadPoolIntegrationTest.java index fd13a4fd78..550e9dda6f 100644 --- a/core-java/src/test/java/com/baeldung/threadpool/GuavaThreadPoolIntegrationTest.java +++ b/core-java/src/test/java/com/baeldung/threadpool/GuavaThreadPoolIntegrationTest.java @@ -46,9 +46,7 @@ public class GuavaThreadPoolIntegrationTest { ListenableFuture future1 = listeningExecutorService.submit(() -> "Hello"); ListenableFuture future2 = listeningExecutorService.submit(() -> "World"); - String greeting = Futures.allAsList(future1, future2).get() - .stream() - .collect(Collectors.joining(" ")); + String greeting = Futures.allAsList(future1, future2).get().stream().collect(Collectors.joining(" ")); assertEquals("Hello World", greeting); } diff --git a/core-java/src/test/java/org/baeldung/java/enums/PizzaUnitTest.java b/core-java/src/test/java/org/baeldung/java/enums/PizzaUnitTest.java index cc042eeca9..bb3abff28d 100644 --- a/core-java/src/test/java/org/baeldung/java/enums/PizzaUnitTest.java +++ b/core-java/src/test/java/org/baeldung/java/enums/PizzaUnitTest.java @@ -77,5 +77,5 @@ public class PizzaUnitTest { pz.deliver(); assertTrue(pz.getStatus() == Pizza.PizzaStatusEnum.DELIVERED); } - + } From 8848d988095484c6d904ccf33e8c569b9899d9be Mon Sep 17 00:00:00 2001 From: Egima profile Date: Fri, 4 Nov 2016 10:41:57 +0300 Subject: [PATCH 207/215] FileTest names fixed with phrase method/API changes (#801) * made changes to java reflection * removed redundant method makeSound in Animal abstract class * added project for play-framework article * added project for regex * changed regex project from own model to core-java * added project for routing in play * made changes to regex project * refactored code for REST API with Play project * refactored student store indexing to zero base * added unit tests, removed bad names * added NIO Selector project under core-java module * requested changes made * added project for nio2 * standardized exception based tests * fixed exception based tests * removed redundant files * added network interface project * used UUID other than timestamps * fixed network interface tests * removed filetest change * made changes to NIO2 FileTest names --- .../src/test/java/com/baeldung/java/nio2/FileTest.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/core-java/src/test/java/com/baeldung/java/nio2/FileTest.java b/core-java/src/test/java/com/baeldung/java/nio2/FileTest.java index f1cb572d9b..64fbb4ae25 100644 --- a/core-java/src/test/java/com/baeldung/java/nio2/FileTest.java +++ b/core-java/src/test/java/com/baeldung/java/nio2/FileTest.java @@ -32,7 +32,7 @@ public class FileTest { } @Test - public void givenExistentDirPath_whenConfirmsNotRegularFile_thenCorrect() { + public void givenDirPath_whenConfirmsNotRegularFile_thenCorrect() { Path p = Paths.get(HOME); assertFalse(Files.isRegularFile(p)); } @@ -118,7 +118,7 @@ public class FileTest { } @Test - public void givenFilePath_whenCreatesTempFileWithDefaultsNaming_thenCorrect() throws IOException { + public void givenPath_whenCreatesTempFileWithDefaults_thenCorrect() throws IOException { Path p = Paths.get(HOME + "/"); p = Files.createTempFile(p, null, null); // like 8600179353689423985.tmp @@ -161,7 +161,9 @@ public class FileTest { @Test(expected = NoSuchFileException.class) public void givenInexistentFile_whenDeleteFails_thenCorrect() throws IOException { Path p = Paths.get(HOME + "/inexistentFile.txt"); + assertFalse(Files.exists(p)); Files.delete(p); + } @Test From 0fbf3945e0d3b1ebc10f28b129403918d4f9fd76 Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Fri, 4 Nov 2016 09:47:48 +0000 Subject: [PATCH 208/215] Rename NetworkInterfaceTest --- ...st.java => NetworkInterfaceManualTest.java} | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) rename core-java/src/test/java/com/baeldung/java/networking/interfaces/{NetworkInterfaceTest.java => NetworkInterfaceManualTest.java} (95%) diff --git a/core-java/src/test/java/com/baeldung/java/networking/interfaces/NetworkInterfaceTest.java b/core-java/src/test/java/com/baeldung/java/networking/interfaces/NetworkInterfaceManualTest.java similarity index 95% rename from core-java/src/test/java/com/baeldung/java/networking/interfaces/NetworkInterfaceTest.java rename to core-java/src/test/java/com/baeldung/java/networking/interfaces/NetworkInterfaceManualTest.java index 4a8ef57b8f..8635a24f18 100644 --- a/core-java/src/test/java/com/baeldung/java/networking/interfaces/NetworkInterfaceTest.java +++ b/core-java/src/test/java/com/baeldung/java/networking/interfaces/NetworkInterfaceManualTest.java @@ -1,18 +1,14 @@ package com.baeldung.java.networking.interfaces; -import static org.junit.Assert.*; - -import java.net.InetAddress; -import java.net.InterfaceAddress; -import java.net.NetworkInterface; -import java.net.SocketException; -import java.net.UnknownHostException; -import java.util.Enumeration; -import java.util.List; - import org.junit.Test; -public class NetworkInterfaceTest { +import java.net.*; +import java.util.Enumeration; +import java.util.List; + +import static org.junit.Assert.*; + +public class NetworkInterfaceManualTest { @Test public void givenName_whenReturnsNetworkInterface_thenCorrect() throws SocketException { NetworkInterface nif = NetworkInterface.getByName("lo"); From 7185c54c2b9a551528ed37bba8b1e1aca77c6f9c Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Fri, 4 Nov 2016 09:49:17 +0000 Subject: [PATCH 209/215] Rename PathTest --- .../baeldung/java/nio2/{PathTest.java => PathManualTest.java} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename core-java/src/test/java/com/baeldung/java/nio2/{PathTest.java => PathManualTest.java} (99%) diff --git a/core-java/src/test/java/com/baeldung/java/nio2/PathTest.java b/core-java/src/test/java/com/baeldung/java/nio2/PathManualTest.java similarity index 99% rename from core-java/src/test/java/com/baeldung/java/nio2/PathTest.java rename to core-java/src/test/java/com/baeldung/java/nio2/PathManualTest.java index 004aeb3deb..acfb2c08e9 100644 --- a/core-java/src/test/java/com/baeldung/java/nio2/PathTest.java +++ b/core-java/src/test/java/com/baeldung/java/nio2/PathManualTest.java @@ -13,7 +13,7 @@ import java.util.Date; import org.junit.Test; -public class PathTest { +public class PathManualTest { private static final String HOME = System.getProperty("user.home"); From a028c5c9f226db3f12f266b70bf2a807f970da53 Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Fri, 4 Nov 2016 15:45:06 +0000 Subject: [PATCH 210/215] Refactor PDF2ImageExample --- .../main/java/com/baeldung/pdf/PDF2ImageExample.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/pdf/src/main/java/com/baeldung/pdf/PDF2ImageExample.java b/pdf/src/main/java/com/baeldung/pdf/PDF2ImageExample.java index d7587dfc17..00778d16c1 100644 --- a/pdf/src/main/java/com/baeldung/pdf/PDF2ImageExample.java +++ b/pdf/src/main/java/com/baeldung/pdf/PDF2ImageExample.java @@ -1,14 +1,14 @@ package com.baeldung.pdf; -import java.awt.image.BufferedImage; -import java.io.File; -import java.io.IOException; - import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.rendering.ImageType; import org.apache.pdfbox.rendering.PDFRenderer; import org.apache.pdfbox.tools.imageio.ImageIOUtil; +import java.awt.image.BufferedImage; +import java.io.File; +import java.io.IOException; + public class PDF2ImageExample { private static final String FILENAME = "src/main/resources/pdf.pdf"; @@ -28,7 +28,7 @@ public class PDF2ImageExample { PDFRenderer pdfRenderer = new PDFRenderer(document); for (int page = 0; page < document.getNumberOfPages(); ++page) { BufferedImage bim = pdfRenderer.renderImageWithDPI(page, 300, ImageType.RGB); - ImageIOUtil.writeImage(bim, "src/output/pdf" + "-" + (page + 1) + "." + extension, 300); + ImageIOUtil.writeImage(bim, String.format("src/output/pdf-%d.%s", page + 1, extension), 300); } document.close(); } From 6e5916e1bcea23dd61da24b2231d286ac46c73ea Mon Sep 17 00:00:00 2001 From: eugenp Date: Fri, 4 Nov 2016 21:50:25 +0200 Subject: [PATCH 211/215] minor artifact cleanup --- spring-integration/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-integration/pom.xml b/spring-integration/pom.xml index 886b4b21a6..b33f8bd740 100644 --- a/spring-integration/pom.xml +++ b/spring-integration/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.baeldung.samples.spring.integration - baeldungSIsample + spring-integration 1.0.0.BUILD-SNAPSHOT jar From 8c953fe0f3c15ed8ff128dfe76978c565529e259 Mon Sep 17 00:00:00 2001 From: michal_aibin Date: Fri, 4 Nov 2016 22:23:17 +0100 Subject: [PATCH 212/215] Fix web.xml in spring-mvc-web-vs-initializer project --- spring-mvc-web-vs-initializer/src/main/webapp/WEB-INF/web.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-mvc-web-vs-initializer/src/main/webapp/WEB-INF/web.xml b/spring-mvc-web-vs-initializer/src/main/webapp/WEB-INF/web.xml index 9bebc263be..5c7a0b52d4 100644 --- a/spring-mvc-web-vs-initializer/src/main/webapp/WEB-INF/web.xml +++ b/spring-mvc-web-vs-initializer/src/main/webapp/WEB-INF/web.xml @@ -9,11 +9,11 @@ org.springframework.web.servlet.DispatcherServlet - 1 contextConfigLocation classpath*:mvc-configuration.xml + 1 From 90783532a5e91be0592fbf684733719b766ed0a0 Mon Sep 17 00:00:00 2001 From: michal_aibin Date: Fri, 4 Nov 2016 22:42:20 +0100 Subject: [PATCH 213/215] Rollback web.xml --- spring-mvc-web-vs-initializer/src/main/webapp/WEB-INF/web.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-mvc-web-vs-initializer/src/main/webapp/WEB-INF/web.xml b/spring-mvc-web-vs-initializer/src/main/webapp/WEB-INF/web.xml index 5c7a0b52d4..9bebc263be 100644 --- a/spring-mvc-web-vs-initializer/src/main/webapp/WEB-INF/web.xml +++ b/spring-mvc-web-vs-initializer/src/main/webapp/WEB-INF/web.xml @@ -9,11 +9,11 @@ org.springframework.web.servlet.DispatcherServlet + 1 contextConfigLocation classpath*:mvc-configuration.xml - 1 From d6363949475c8fbf784cc30d96bdcaf7969a12f7 Mon Sep 17 00:00:00 2001 From: michal_aibin Date: Fri, 4 Nov 2016 22:47:09 +0100 Subject: [PATCH 214/215] Fix web.xml file --- spring-mvc-web-vs-initializer/src/main/webapp/WEB-INF/web.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-mvc-web-vs-initializer/src/main/webapp/WEB-INF/web.xml b/spring-mvc-web-vs-initializer/src/main/webapp/WEB-INF/web.xml index 9bebc263be..5c7a0b52d4 100644 --- a/spring-mvc-web-vs-initializer/src/main/webapp/WEB-INF/web.xml +++ b/spring-mvc-web-vs-initializer/src/main/webapp/WEB-INF/web.xml @@ -9,11 +9,11 @@ org.springframework.web.servlet.DispatcherServlet - 1 contextConfigLocation classpath*:mvc-configuration.xml + 1 From c29601db412811fdabe60e46bd79fe3560b84b0e Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Sat, 5 Nov 2016 12:12:08 +0000 Subject: [PATCH 215/215] Refactor Bar.java --- .../src/main/java/com/baeldung/persistence/model/Bar.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-hibernate4/src/main/java/com/baeldung/persistence/model/Bar.java b/spring-hibernate4/src/main/java/com/baeldung/persistence/model/Bar.java index efc6367116..c7f05254cc 100644 --- a/spring-hibernate4/src/main/java/com/baeldung/persistence/model/Bar.java +++ b/spring-hibernate4/src/main/java/com/baeldung/persistence/model/Bar.java @@ -80,7 +80,7 @@ public class Bar implements Serializable { @Column(name = "timestamp") private long timestamp; - @Column(name = "created_date") + @Column(name = "created_date", updatable = false, nullable = false) @CreatedDate private long createdDate;

    + + + + + Go back... +

    $iVaW_*XPbJP9N6HQf$YInsu68@T0 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

    $iVaW_*XPbJP9N6HQf$YInsu68@T0 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