diff --git a/core-java-modules/core-java-networking/src/main/java/com/baeldung/http/FullResponseBuilder.java b/core-java-modules/core-java-networking/src/main/java/com/baeldung/httprequest/FullResponseBuilder.java similarity index 98% rename from core-java-modules/core-java-networking/src/main/java/com/baeldung/http/FullResponseBuilder.java rename to core-java-modules/core-java-networking/src/main/java/com/baeldung/httprequest/FullResponseBuilder.java index 394255bd70..cc9d79aa65 100644 --- a/core-java-modules/core-java-networking/src/main/java/com/baeldung/http/FullResponseBuilder.java +++ b/core-java-modules/core-java-networking/src/main/java/com/baeldung/httprequest/FullResponseBuilder.java @@ -1,4 +1,4 @@ -package com.baeldung.http; +package com.baeldung.httprequest; import java.io.BufferedReader; import java.io.IOException; diff --git a/core-java-modules/core-java-networking/src/main/java/com/baeldung/http/ParameterStringBuilder.java b/core-java-modules/core-java-networking/src/main/java/com/baeldung/httprequest/ParameterStringBuilder.java similarity index 95% rename from core-java-modules/core-java-networking/src/main/java/com/baeldung/http/ParameterStringBuilder.java rename to core-java-modules/core-java-networking/src/main/java/com/baeldung/httprequest/ParameterStringBuilder.java index bed4195faa..f91ab332c7 100644 --- a/core-java-modules/core-java-networking/src/main/java/com/baeldung/http/ParameterStringBuilder.java +++ b/core-java-modules/core-java-networking/src/main/java/com/baeldung/httprequest/ParameterStringBuilder.java @@ -1,4 +1,4 @@ -package com.baeldung.http; +package com.baeldung.httprequest; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; diff --git a/core-java-modules/core-java-networking/src/test/java/com/baeldung/http/HttpRequestLiveTest.java b/core-java-modules/core-java-networking/src/test/java/com/baeldung/httprequest/HttpRequestLiveTest.java similarity index 97% rename from core-java-modules/core-java-networking/src/test/java/com/baeldung/http/HttpRequestLiveTest.java rename to core-java-modules/core-java-networking/src/test/java/com/baeldung/httprequest/HttpRequestLiveTest.java index bd6c0a4410..77bf9bc8db 100644 --- a/core-java-modules/core-java-networking/src/test/java/com/baeldung/http/HttpRequestLiveTest.java +++ b/core-java-modules/core-java-networking/src/test/java/com/baeldung/httprequest/HttpRequestLiveTest.java @@ -1,8 +1,11 @@ -package com.baeldung.http; +package com.baeldung.httprequest; import org.apache.commons.lang3.StringUtils; import org.junit.Test; +import com.baeldung.httprequest.FullResponseBuilder; +import com.baeldung.httprequest.ParameterStringBuilder; + import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.IOException; diff --git a/guava-collections/src/test/java/org/baeldung/guava/GuavaMapInitializeUnitTest.java b/guava-collections/src/test/java/org/baeldung/guava/maps/initialize/GuavaMapInitializeUnitTest.java similarity index 95% rename from guava-collections/src/test/java/org/baeldung/guava/GuavaMapInitializeUnitTest.java rename to guava-collections/src/test/java/org/baeldung/guava/maps/initialize/GuavaMapInitializeUnitTest.java index 69a7505316..2414afb720 100644 --- a/guava-collections/src/test/java/org/baeldung/guava/GuavaMapInitializeUnitTest.java +++ b/guava-collections/src/test/java/org/baeldung/guava/maps/initialize/GuavaMapInitializeUnitTest.java @@ -1,4 +1,4 @@ -package org.baeldung.guava; +package org.baeldung.guava.maps.initialize; import static org.hamcrest.core.IsEqual.equalTo; import static org.junit.Assert.*; diff --git a/spring-all/src/main/java/org/baeldung/sample/App.java b/spring-all/src/main/java/org/baeldung/autowire/sample/App.java similarity index 90% rename from spring-all/src/main/java/org/baeldung/sample/App.java rename to spring-all/src/main/java/org/baeldung/autowire/sample/App.java index 17fc49fc8c..ed0c90d5b1 100644 --- a/spring-all/src/main/java/org/baeldung/sample/App.java +++ b/spring-all/src/main/java/org/baeldung/autowire/sample/App.java @@ -1,4 +1,4 @@ -package org.baeldung.sample; +package org.baeldung.autowire.sample; import org.springframework.context.annotation.AnnotationConfigApplicationContext; diff --git a/spring-all/src/main/java/org/baeldung/sample/AppConfig.java b/spring-all/src/main/java/org/baeldung/autowire/sample/AppConfig.java similarity index 66% rename from spring-all/src/main/java/org/baeldung/sample/AppConfig.java rename to spring-all/src/main/java/org/baeldung/autowire/sample/AppConfig.java index 8a177d2611..117dfe1027 100644 --- a/spring-all/src/main/java/org/baeldung/sample/AppConfig.java +++ b/spring-all/src/main/java/org/baeldung/autowire/sample/AppConfig.java @@ -1,10 +1,10 @@ -package org.baeldung.sample; +package org.baeldung.autowire.sample; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; @Configuration -@ComponentScan("org.baeldung.sample") +@ComponentScan("org.baeldung.autowire.sample") public class AppConfig { } diff --git a/spring-all/src/main/java/org/baeldung/sample/BarFormatter.java b/spring-all/src/main/java/org/baeldung/autowire/sample/BarFormatter.java similarity index 83% rename from spring-all/src/main/java/org/baeldung/sample/BarFormatter.java rename to spring-all/src/main/java/org/baeldung/autowire/sample/BarFormatter.java index 8396653970..f7e730fdc6 100644 --- a/spring-all/src/main/java/org/baeldung/sample/BarFormatter.java +++ b/spring-all/src/main/java/org/baeldung/autowire/sample/BarFormatter.java @@ -1,4 +1,4 @@ -package org.baeldung.sample; +package org.baeldung.autowire.sample; import org.springframework.stereotype.Component; diff --git a/spring-all/src/main/java/org/baeldung/autowire/sample/FooDAO.java b/spring-all/src/main/java/org/baeldung/autowire/sample/FooDAO.java new file mode 100644 index 0000000000..3d3deaa077 --- /dev/null +++ b/spring-all/src/main/java/org/baeldung/autowire/sample/FooDAO.java @@ -0,0 +1,5 @@ +package org.baeldung.autowire.sample; + +public class FooDAO { + +} diff --git a/spring-all/src/main/java/org/baeldung/sample/FooFormatter.java b/spring-all/src/main/java/org/baeldung/autowire/sample/FooFormatter.java similarity index 83% rename from spring-all/src/main/java/org/baeldung/sample/FooFormatter.java rename to spring-all/src/main/java/org/baeldung/autowire/sample/FooFormatter.java index 68cb7f81f2..5fdacbadd4 100644 --- a/spring-all/src/main/java/org/baeldung/sample/FooFormatter.java +++ b/spring-all/src/main/java/org/baeldung/autowire/sample/FooFormatter.java @@ -1,4 +1,4 @@ -package org.baeldung.sample; +package org.baeldung.autowire.sample; import org.springframework.stereotype.Component; diff --git a/spring-all/src/main/java/org/baeldung/sample/FooService.java b/spring-all/src/main/java/org/baeldung/autowire/sample/FooService.java similarity index 88% rename from spring-all/src/main/java/org/baeldung/sample/FooService.java rename to spring-all/src/main/java/org/baeldung/autowire/sample/FooService.java index 711711f205..a3638960cc 100644 --- a/spring-all/src/main/java/org/baeldung/sample/FooService.java +++ b/spring-all/src/main/java/org/baeldung/autowire/sample/FooService.java @@ -1,4 +1,4 @@ -package org.baeldung.sample; +package org.baeldung.autowire.sample; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; diff --git a/spring-all/src/main/java/org/baeldung/sample/Formatter.java b/spring-all/src/main/java/org/baeldung/autowire/sample/Formatter.java similarity index 59% rename from spring-all/src/main/java/org/baeldung/sample/Formatter.java rename to spring-all/src/main/java/org/baeldung/autowire/sample/Formatter.java index ab29c2b848..05cd5f1c26 100644 --- a/spring-all/src/main/java/org/baeldung/sample/Formatter.java +++ b/spring-all/src/main/java/org/baeldung/autowire/sample/Formatter.java @@ -1,4 +1,4 @@ -package org.baeldung.sample; +package org.baeldung.autowire.sample; public interface Formatter { diff --git a/spring-all/src/main/java/org/baeldung/sample/FormatterType.java b/spring-all/src/main/java/org/baeldung/autowire/sample/FormatterType.java similarity index 91% rename from spring-all/src/main/java/org/baeldung/sample/FormatterType.java rename to spring-all/src/main/java/org/baeldung/autowire/sample/FormatterType.java index d4d82dd022..ea1eec055a 100644 --- a/spring-all/src/main/java/org/baeldung/sample/FormatterType.java +++ b/spring-all/src/main/java/org/baeldung/autowire/sample/FormatterType.java @@ -1,4 +1,4 @@ -package org.baeldung.sample; +package org.baeldung.autowire.sample; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; diff --git a/spring-all/src/main/java/org/baeldung/startup/ProfileManager.java b/spring-all/src/main/java/org/baeldung/profiles/ProfileManager.java similarity index 93% rename from spring-all/src/main/java/org/baeldung/startup/ProfileManager.java rename to spring-all/src/main/java/org/baeldung/profiles/ProfileManager.java index 41db539265..b4cb10e690 100644 --- a/spring-all/src/main/java/org/baeldung/startup/ProfileManager.java +++ b/spring-all/src/main/java/org/baeldung/profiles/ProfileManager.java @@ -1,4 +1,4 @@ -package org.baeldung.startup; +package org.baeldung.profiles; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.env.Environment; diff --git a/spring-all/src/main/java/org/baeldung/sample/FooDAO.java b/spring-all/src/main/java/org/baeldung/sample/FooDAO.java deleted file mode 100644 index 151c0c38de..0000000000 --- a/spring-all/src/main/java/org/baeldung/sample/FooDAO.java +++ /dev/null @@ -1,5 +0,0 @@ -package org.baeldung.sample; - -public class FooDAO { - -} diff --git a/spring-all/src/test/java/org/baeldung/sample/FooServiceIntegrationTest.java b/spring-all/src/test/java/org/baeldung/autowire/sample/FooServiceIntegrationTest.java similarity index 94% rename from spring-all/src/test/java/org/baeldung/sample/FooServiceIntegrationTest.java rename to spring-all/src/test/java/org/baeldung/autowire/sample/FooServiceIntegrationTest.java index 6b518395a1..941fc4baff 100644 --- a/spring-all/src/test/java/org/baeldung/sample/FooServiceIntegrationTest.java +++ b/spring-all/src/test/java/org/baeldung/autowire/sample/FooServiceIntegrationTest.java @@ -1,4 +1,4 @@ -package org.baeldung.sample; +package org.baeldung.autowire.sample; import org.junit.Assert; import org.junit.Test; diff --git a/spring-boot-mvc/src/main/java/com/baeldung/annotations/CustomResponseController.java b/spring-boot-mvc/src/main/java/com/baeldung/responseentity/CustomResponseController.java similarity index 98% rename from spring-boot-mvc/src/main/java/com/baeldung/annotations/CustomResponseController.java rename to spring-boot-mvc/src/main/java/com/baeldung/responseentity/CustomResponseController.java index a29a6252f2..098c5e4794 100644 --- a/spring-boot-mvc/src/main/java/com/baeldung/annotations/CustomResponseController.java +++ b/spring-boot-mvc/src/main/java/com/baeldung/responseentity/CustomResponseController.java @@ -1,4 +1,4 @@ -package com.baeldung.annotations; +package com.baeldung.responseentity; import java.io.IOException; import java.time.Year; diff --git a/spring-boot-mvc/src/main/java/com/baeldung/annotations/CustomResponseWithBuilderController.java b/spring-boot-mvc/src/main/java/com/baeldung/responseentity/CustomResponseWithBuilderController.java similarity index 97% rename from spring-boot-mvc/src/main/java/com/baeldung/annotations/CustomResponseWithBuilderController.java rename to spring-boot-mvc/src/main/java/com/baeldung/responseentity/CustomResponseWithBuilderController.java index 9a77029128..2e06060e6d 100644 --- a/spring-boot-mvc/src/main/java/com/baeldung/annotations/CustomResponseWithBuilderController.java +++ b/spring-boot-mvc/src/main/java/com/baeldung/responseentity/CustomResponseWithBuilderController.java @@ -1,4 +1,4 @@ -package com.baeldung.annotations; +package com.baeldung.responseentity; import java.time.Year; diff --git a/spring-boot-properties/src/main/java/com/baeldung/properties/ConfigProperties.java b/spring-boot-properties/src/main/java/com/baeldung/configurationproperties/ConfigProperties.java similarity index 98% rename from spring-boot-properties/src/main/java/com/baeldung/properties/ConfigProperties.java rename to spring-boot-properties/src/main/java/com/baeldung/configurationproperties/ConfigProperties.java index b690c8e305..47df784885 100644 --- a/spring-boot-properties/src/main/java/com/baeldung/properties/ConfigProperties.java +++ b/spring-boot-properties/src/main/java/com/baeldung/configurationproperties/ConfigProperties.java @@ -1,4 +1,4 @@ -package com.baeldung.properties; +package com.baeldung.configurationproperties; import java.util.List; import java.util.Map; diff --git a/spring-boot-properties/src/main/java/com/baeldung/configurationproperties/DemoApplication.java b/spring-boot-properties/src/main/java/com/baeldung/configurationproperties/DemoApplication.java new file mode 100644 index 0000000000..011acaba36 --- /dev/null +++ b/spring-boot-properties/src/main/java/com/baeldung/configurationproperties/DemoApplication.java @@ -0,0 +1,13 @@ +package com.baeldung.configurationproperties; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.context.properties.EnableConfigurationProperties; + +@SpringBootApplication +@EnableConfigurationProperties(ConfigProperties.class) +public class DemoApplication { + public static void main(String[] args) { + SpringApplication.run(DemoApplication.class, args); + } +} \ No newline at end of file diff --git a/spring-boot-properties/src/main/java/com/baeldung/properties/conversion/Employee.java b/spring-boot-properties/src/main/java/com/baeldung/configurationproperties/Employee.java similarity index 91% rename from spring-boot-properties/src/main/java/com/baeldung/properties/conversion/Employee.java rename to spring-boot-properties/src/main/java/com/baeldung/configurationproperties/Employee.java index 52c7881dfc..20f4792a8e 100644 --- a/spring-boot-properties/src/main/java/com/baeldung/properties/conversion/Employee.java +++ b/spring-boot-properties/src/main/java/com/baeldung/configurationproperties/Employee.java @@ -1,4 +1,4 @@ -package com.baeldung.properties.conversion; +package com.baeldung.configurationproperties; public class Employee { diff --git a/spring-boot-properties/src/main/java/com/baeldung/properties/conversion/EmployeeConverter.java b/spring-boot-properties/src/main/java/com/baeldung/configurationproperties/EmployeeConverter.java similarity index 91% rename from spring-boot-properties/src/main/java/com/baeldung/properties/conversion/EmployeeConverter.java rename to spring-boot-properties/src/main/java/com/baeldung/configurationproperties/EmployeeConverter.java index 6ec19cae72..83ef22be34 100644 --- a/spring-boot-properties/src/main/java/com/baeldung/properties/conversion/EmployeeConverter.java +++ b/spring-boot-properties/src/main/java/com/baeldung/configurationproperties/EmployeeConverter.java @@ -1,4 +1,4 @@ -package com.baeldung.properties.conversion; +package com.baeldung.configurationproperties; import org.springframework.boot.context.properties.ConfigurationPropertiesBinding; import org.springframework.core.convert.converter.Converter; diff --git a/spring-boot-properties/src/main/java/com/baeldung/properties/Item.java b/spring-boot-properties/src/main/java/com/baeldung/configurationproperties/Item.java similarity index 90% rename from spring-boot-properties/src/main/java/com/baeldung/properties/Item.java rename to spring-boot-properties/src/main/java/com/baeldung/configurationproperties/Item.java index 741bbba144..d0f0d2987a 100644 --- a/spring-boot-properties/src/main/java/com/baeldung/properties/Item.java +++ b/spring-boot-properties/src/main/java/com/baeldung/configurationproperties/Item.java @@ -1,4 +1,4 @@ -package com.baeldung.properties; +package com.baeldung.configurationproperties; public class Item { diff --git a/spring-boot-properties/src/main/java/com/baeldung/properties/conversion/PropertiesConversionApplication.java b/spring-boot-properties/src/main/java/com/baeldung/configurationproperties/PropertiesConversionApplication.java similarity index 91% rename from spring-boot-properties/src/main/java/com/baeldung/properties/conversion/PropertiesConversionApplication.java rename to spring-boot-properties/src/main/java/com/baeldung/configurationproperties/PropertiesConversionApplication.java index f00a26e9c4..ccfd1d6f6f 100644 --- a/spring-boot-properties/src/main/java/com/baeldung/properties/conversion/PropertiesConversionApplication.java +++ b/spring-boot-properties/src/main/java/com/baeldung/configurationproperties/PropertiesConversionApplication.java @@ -1,4 +1,4 @@ -package com.baeldung.properties.conversion; +package com.baeldung.configurationproperties; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; diff --git a/spring-boot-properties/src/main/java/com/baeldung/properties/conversion/PropertyConversion.java b/spring-boot-properties/src/main/java/com/baeldung/configurationproperties/PropertyConversion.java similarity index 97% rename from spring-boot-properties/src/main/java/com/baeldung/properties/conversion/PropertyConversion.java rename to spring-boot-properties/src/main/java/com/baeldung/configurationproperties/PropertyConversion.java index b9c890306f..52d4925d82 100644 --- a/spring-boot-properties/src/main/java/com/baeldung/properties/conversion/PropertyConversion.java +++ b/spring-boot-properties/src/main/java/com/baeldung/configurationproperties/PropertyConversion.java @@ -1,4 +1,4 @@ -package com.baeldung.properties.conversion; +package com.baeldung.configurationproperties; import java.time.Duration; import java.time.temporal.ChronoUnit; diff --git a/spring-boot-properties/src/main/java/com/baeldung/properties/ConfigPropertiesDemoApplication.java b/spring-boot-properties/src/main/java/com/baeldung/properties/ConfigPropertiesDemoApplication.java index ee9671c755..41f26d51f7 100644 --- a/spring-boot-properties/src/main/java/com/baeldung/properties/ConfigPropertiesDemoApplication.java +++ b/spring-boot-properties/src/main/java/com/baeldung/properties/ConfigPropertiesDemoApplication.java @@ -4,6 +4,8 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.context.annotation.ComponentScan; +import com.baeldung.configurationproperties.ConfigProperties; + @SpringBootApplication @ComponentScan(basePackageClasses = { ConfigProperties.class, JsonProperties.class, CustomJsonProperties.class }) public class ConfigPropertiesDemoApplication { diff --git a/spring-boot-properties/src/test/java/com/baeldung/properties/ConfigPropertiesIntegrationTest.java b/spring-boot-properties/src/test/java/com/baeldung/configurationproperties/ConfigPropertiesIntegrationTest.java similarity index 91% rename from spring-boot-properties/src/test/java/com/baeldung/properties/ConfigPropertiesIntegrationTest.java rename to spring-boot-properties/src/test/java/com/baeldung/configurationproperties/ConfigPropertiesIntegrationTest.java index 4777551132..141400b1fe 100644 --- a/spring-boot-properties/src/test/java/com/baeldung/properties/ConfigPropertiesIntegrationTest.java +++ b/spring-boot-properties/src/test/java/com/baeldung/configurationproperties/ConfigPropertiesIntegrationTest.java @@ -1,4 +1,4 @@ -package com.baeldung.properties; +package com.baeldung.configurationproperties; import org.junit.Assert; import org.junit.Test; @@ -8,6 +8,10 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.TestPropertySource; import org.springframework.test.context.junit4.SpringRunner; +import com.baeldung.configurationproperties.ConfigProperties; +import com.baeldung.properties.AdditionalProperties; +import com.baeldung.properties.ConfigPropertiesDemoApplication; + @RunWith(SpringRunner.class) @SpringBootTest(classes = ConfigPropertiesDemoApplication.class) @TestPropertySource("classpath:configprops-test.properties") diff --git a/spring-boot-properties/src/test/java/com/baeldung/properties/conversion/PropertiesConversionIntegrationTest.java b/spring-boot-properties/src/test/java/com/baeldung/configurationproperties/PropertiesConversionIntegrationTest.java similarity index 89% rename from spring-boot-properties/src/test/java/com/baeldung/properties/conversion/PropertiesConversionIntegrationTest.java rename to spring-boot-properties/src/test/java/com/baeldung/configurationproperties/PropertiesConversionIntegrationTest.java index 53bad329ea..1bdc8bff9b 100644 --- a/spring-boot-properties/src/test/java/com/baeldung/properties/conversion/PropertiesConversionIntegrationTest.java +++ b/spring-boot-properties/src/test/java/com/baeldung/configurationproperties/PropertiesConversionIntegrationTest.java @@ -1,4 +1,4 @@ -package com.baeldung.properties.conversion; +package com.baeldung.configurationproperties; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -12,8 +12,8 @@ import org.springframework.test.context.TestPropertySource; import org.springframework.test.context.junit4.SpringRunner; import org.springframework.util.unit.DataSize; -import com.baeldung.properties.conversion.PropertiesConversionApplication; -import com.baeldung.properties.conversion.PropertyConversion; +import com.baeldung.configurationproperties.PropertiesConversionApplication; +import com.baeldung.configurationproperties.PropertyConversion; @RunWith(SpringRunner.class) @SpringBootTest(classes = PropertiesConversionApplication.class) diff --git a/spring-freemarker/src/main/java/com/baeldung/freemarker/controller/SpringController.java b/spring-freemarker/src/main/java/com/baeldung/freemarker/controller/SpringController.java index 18b42f06ea..6f6b5994f3 100644 --- a/spring-freemarker/src/main/java/com/baeldung/freemarker/controller/SpringController.java +++ b/spring-freemarker/src/main/java/com/baeldung/freemarker/controller/SpringController.java @@ -1,9 +1,10 @@ package com.baeldung.freemarker.controller; -import java.util.ArrayList; -import java.util.List; -import java.util.Locale; +import java.util.*; +import com.baeldung.freemarker.method.LastCharMethod; +import freemarker.template.DefaultObjectWrapperBuilder; +import freemarker.template.Version; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.ui.ModelMap; @@ -43,4 +44,12 @@ public class SpringController { return "redirect:/cars"; } -} + @RequestMapping(value = "/commons", method = RequestMethod.GET) + public String showCommonsPage(Model model) { + model.addAttribute("statuses", Arrays.asList("200 OK", "404 Not Found", "500 Internal Server Error")); + model.addAttribute("lastChar", new LastCharMethod()); + model.addAttribute("random", new Random()); + model.addAttribute("statics", new DefaultObjectWrapperBuilder(new Version("2.3.28")).build().getStaticModels()); + return "commons"; + } +} \ No newline at end of file diff --git a/spring-freemarker/src/main/java/com/baeldung/freemarker/method/LastCharMethod.java b/spring-freemarker/src/main/java/com/baeldung/freemarker/method/LastCharMethod.java new file mode 100644 index 0000000000..956a512f56 --- /dev/null +++ b/spring-freemarker/src/main/java/com/baeldung/freemarker/method/LastCharMethod.java @@ -0,0 +1,16 @@ +package com.baeldung.freemarker.method; + +import freemarker.template.TemplateMethodModelEx; +import freemarker.template.TemplateModelException; +import org.springframework.util.StringUtils; + +import java.util.List; + +public class LastCharMethod implements TemplateMethodModelEx { + public Object exec(List arguments) throws TemplateModelException { + if (arguments.size() != 1 || StringUtils.isEmpty(arguments.get(0))) + throw new TemplateModelException("Wrong arguments!"); + String argument = arguments.get(0).toString(); + return argument.charAt(argument.length() - 1); + } +} diff --git a/spring-freemarker/src/main/webapp/WEB-INF/views/ftl/commons.ftl b/spring-freemarker/src/main/webapp/WEB-INF/views/ftl/commons.ftl new file mode 100644 index 0000000000..eea1e6f683 --- /dev/null +++ b/spring-freemarker/src/main/webapp/WEB-INF/views/ftl/commons.ftl @@ -0,0 +1,28 @@ +

Testing is a property exists: ${student???c}

+<#if status??> +

Property value: ${status.reason}

+<#else> +

Missing property

+ + +

Iterating a sequence:

+<#list statuses> + + <#else> +

No statuses available

+ + +

Using static methods

+<#assign MathUtils=statics['java.lang.Math']> +

PI value: ${MathUtils.PI}

+

2*10 is: ${MathUtils.pow(2, 10)}

+ +

Using bean method

+

Random value: ${random.nextInt()}

+ +

Use custom method

+

Last char example: ${lastChar('mystring')}

\ No newline at end of file diff --git a/spring-mvc-simple/src/main/java/com/baeldung/spring/controller/RequestParamController.java b/spring-mvc-simple/src/main/java/com/baeldung/spring/requestparam/RequestParamController.java similarity index 96% rename from spring-mvc-simple/src/main/java/com/baeldung/spring/controller/RequestParamController.java rename to spring-mvc-simple/src/main/java/com/baeldung/spring/requestparam/RequestParamController.java index a9846f1ba9..bcb1fe5a82 100644 --- a/spring-mvc-simple/src/main/java/com/baeldung/spring/controller/RequestParamController.java +++ b/spring-mvc-simple/src/main/java/com/baeldung/spring/requestparam/RequestParamController.java @@ -1,4 +1,4 @@ -package com.baeldung.spring.controller; +package com.baeldung.spring.requestparam; import java.util.List; import java.util.Map; @@ -47,7 +47,7 @@ public class RequestParamController { @GetMapping("/api/foos4") @ResponseBody public String getFoos4(@RequestParam List id){ - return "ID are " + id; + return "IDs are " + id; } @GetMapping("/foos/{id}")