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 61197546b0..d87f0f4bd9 100644
--- a/gson/src/test/java/org/baeldung/gson/deserialization/GsonDeserializeTest.java
+++ b/gson/src/test/java/org/baeldung/gson/deserialization/GsonDeserializeTest.java
@@ -1,14 +1,14 @@
package org.baeldung.gson.deserialization;
-import java.text.ParseException;
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
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 com.google.gson.Gson;
-import com.google.gson.GsonBuilder;
+import java.text.ParseException;
public class GsonDeserializeTest {
diff --git a/gson/src/test/java/org/baeldung/gson/serialization/GsonSerializeTest.java b/gson/src/test/java/org/baeldung/gson/serialization/GsonSerializeTest.java
index 0d44b6c9d3..7d5502b72f 100644
--- a/gson/src/test/java/org/baeldung/gson/serialization/GsonSerializeTest.java
+++ b/gson/src/test/java/org/baeldung/gson/serialization/GsonSerializeTest.java
@@ -1,20 +1,17 @@
package org.baeldung.gson.serialization;
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.Arrays;
-
-import org.baeldung.gson.entities.ActorGson;
-import org.baeldung.gson.entities.Movie;
-import org.baeldung.gson.entities.MovieWithNullValue;
-import org.baeldung.gson.serialization.ActorGsonDeserializer;
-import org.baeldung.gson.serialization.ActorGsonSerializer;
-import org.junit.Assert;
-import org.junit.Test;
-
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonParser;
+import org.baeldung.gson.entities.ActorGson;
+import org.baeldung.gson.entities.Movie;
+import org.baeldung.gson.entities.MovieWithNullValue;
+import org.junit.Assert;
+import org.junit.Test;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Arrays;
public class GsonSerializeTest {
@@ -40,12 +37,12 @@ public class GsonSerializeTest {
MovieWithNullValue movieWithNullValue = new MovieWithNullValue(null, "Mel Gibson", Arrays.asList(rudyYoungblood));
String expectedOutput = new GsonBuilder()
- .setPrettyPrinting()
- .serializeNulls()
- .disableHtmlEscaping()
- .create()
- .toJson(new JsonParser()
- .parse("{\"imdbId\":null,\"actors\":[{\"IMDB Code\":\"nm2199632\",\"Date Of Birth\":\"21-09-1982\",\"N° Film: \":3,\"filmography\":\"Apocalypto-Beatdown-Wind Walkers\"}]}"));
+ .setPrettyPrinting()
+ .serializeNulls()
+ .disableHtmlEscaping()
+ .create()
+ .toJson(new JsonParser()
+ .parse("{\"imdbId\":null,\"actors\":[{\"IMDB Code\":\"nm2199632\",\"Date Of Birth\":\"21-09-1982\",\"N° Film: \":3,\"filmography\":\"Apocalypto-Beatdown-Wind Walkers\"}]}"));
Assert.assertEquals(gson.toJson(movieWithNullValue), expectedOutput);
}
}
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 a21762d24a..71d5ad3d81 100644
--- a/jackson/src/test/java/org/baeldung/jackson/deserialization/JacksonDeserializeTest.java
+++ b/jackson/src/test/java/org/baeldung/jackson/deserialization/JacksonDeserializeTest.java
@@ -1,20 +1,18 @@
package org.baeldung.jackson.deserialization;
-import java.io.IOException;
-import java.text.DateFormat;
-import java.text.SimpleDateFormat;
+import com.fasterxml.jackson.databind.ObjectMapper;
import org.baeldung.jackson.entities.Movie;
import org.junit.Assert;
import org.junit.Test;
-import com.fasterxml.jackson.core.JsonParseException;
-import com.fasterxml.jackson.databind.JsonMappingException;
-import com.fasterxml.jackson.databind.ObjectMapper;
+import java.io.IOException;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
public class JacksonDeserializeTest {
@Test
- public void whenSimpleDeserialize_thenCorrect() throws JsonParseException, JsonMappingException, IOException {
+ 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();
@@ -25,7 +23,7 @@ public class JacksonDeserializeTest {
}
@Test
- public void whenCustomDeserialize_thenCorrect() throws JsonParseException, JsonMappingException, IOException {
+ 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\"]}]}";
diff --git a/jsf/pom.xml b/jsf/pom.xml
index b80bcfb416..6a4b358252 100644
--- a/jsf/pom.xml
+++ b/jsf/pom.xml
@@ -27,7 +27,7 @@
javax.el
- el-api
+ javax.el-api
${javax.el.version}
@@ -126,8 +126,8 @@
4.2.5.RELEASE
- 2.1.7
- 2.2
+ 2.2.13
+ 3.0.0
1.7.13
diff --git a/jsf/src/main/java/com/baeldung/springintegration/controllers/ELSampleBean.java b/jsf/src/main/java/com/baeldung/springintegration/controllers/ELSampleBean.java
index a13f0890b5..16d9f80d89 100644
--- a/jsf/src/main/java/com/baeldung/springintegration/controllers/ELSampleBean.java
+++ b/jsf/src/main/java/com/baeldung/springintegration/controllers/ELSampleBean.java
@@ -1,13 +1,17 @@
package com.baeldung.springintegration.controllers;
-import java.util.Random;
import javax.annotation.PostConstruct;
+import javax.el.ELContextEvent;
+import javax.el.ELContextListener;
+import javax.el.LambdaExpression;
import javax.faces.application.Application;
import javax.faces.application.FacesMessage;
+import javax.el.LambdaExpression;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
-import javax.faces.component.html.HtmlInputText;
import javax.faces.context.FacesContext;
+import java.util.Collection;
+import java.util.Random;
@ManagedBean(name = "ELBean")
@ViewScoped
@@ -16,22 +20,37 @@ public class ELSampleBean {
private String firstName;
private String lastName;
private String pageDescription = "This page demos JSF EL Basics";
+ public static final String constantField = "THIS_IS_NOT_CHANGING_ANYTIME_SOON";
private int pageCounter;
private Random randomIntGen = new Random();
@PostConstruct
public void init() {
pageCounter = randomIntGen.nextInt();
+ FacesContext.getCurrentInstance().getApplication().addELContextListener(new ELContextListener() {
+ @Override
+ public void contextCreated(ELContextEvent evt) {
+ evt.getELContext().getImportHandler().importClass("com.baeldung.springintegration.controllers.ELSampleBean");
+ }
+ });
}
public void save() {
}
+
+ public static String constantField() {
+ return constantField;
+ }
public void saveFirstName(String firstName) {
this.firstName = firstName;
}
+ public Long multiplyValue(LambdaExpression expr) {
+ Long theResult = (Long) expr.invoke(FacesContext.getCurrentInstance().getELContext(), pageCounter);
+ return theResult;
+ }
public void saveByELEvaluation() {
firstName = (String) evaluateEL("#{firstName.value}", String.class);
diff --git a/jsf/src/main/webapp/el3_intro.xhtml b/jsf/src/main/webapp/el3_intro.xhtml
new file mode 100644
index 0000000000..3f1f407a08
--- /dev/null
+++ b/jsf/src/main/webapp/el3_intro.xhtml
@@ -0,0 +1,35 @@
+
+
+
+
+ Baeldung | Expression Language 3.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/spring-boot/src/main/java/org/baeldung/main/SpringBootApplication.java b/spring-boot/src/main/java/org/baeldung/main/SpringBootApplication.java
index 59955cc990..582d2d9e9c 100644
--- a/spring-boot/src/main/java/org/baeldung/main/SpringBootApplication.java
+++ b/spring-boot/src/main/java/org/baeldung/main/SpringBootApplication.java
@@ -1,8 +1,5 @@
package org.baeldung.main;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-
import org.baeldung.common.error.SpringHelloServletRegistrationBean;
import org.baeldung.common.resources.ExecutorServiceExitCodeGenerator;
import org.baeldung.controller.servlet.HelloWorldServlet;
@@ -17,6 +14,9 @@ import org.springframework.context.annotation.ComponentScan;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+
@RestController
@EnableAutoConfiguration
@ComponentScan({ "org.baeldung.common.error", "org.baeldung.common.error.controller", "org.baeldung.common.properties", "org.baeldung.common.resources", "org.baeldung.endpoints", "org.baeldung.service", "org.baeldung.monitor.jmx", "org.baeldung.service" })
@@ -55,28 +55,6 @@ public class SpringBootApplication {
return bean;
}
- /* @Bean
- public JettyEmbeddedServletContainerFactory jettyEmbeddedServletContainerFactory() {
- JettyEmbeddedServletContainerFactory jettyContainer = new JettyEmbeddedServletContainerFactory();
- jettyContainer.setPort(9000);
- jettyContainer.setContextPath("/springbootapp");
- return jettyContainer;
- }
-
- @Bean
- public UndertowEmbeddedServletContainerFactory embeddedServletContainerFactory() {
- UndertowEmbeddedServletContainerFactory factory = new UndertowEmbeddedServletContainerFactory();
- factory.addBuilderCustomizers(new UndertowBuilderCustomizer() {
-
- @Override
- public void customize(io.undertow.Undertow.Builde builder) {
- builder.addHttpListener(8080, "0.0.0.0");
- }
-
- });
- return factory;
- }*/
-
@Bean
@Autowired
public ExecutorServiceExitCodeGenerator executorServiceExitCodeGenerator(ExecutorService executorService) {
diff --git a/spring-hibernate4/src/main/java/com/baeldung/hibernate/fetching/model/OrderDetail.java b/spring-hibernate4/src/main/java/com/baeldung/hibernate/fetching/model/OrderDetail.java
index 19ed36eceb..91388b107b 100644
--- a/spring-hibernate4/src/main/java/com/baeldung/hibernate/fetching/model/OrderDetail.java
+++ b/spring-hibernate4/src/main/java/com/baeldung/hibernate/fetching/model/OrderDetail.java
@@ -3,71 +3,80 @@ package com.baeldung.hibernate.fetching.model;
import java.io.Serializable;
import java.sql.Date;
-public class OrderDetail implements Serializable{
+public class OrderDetail implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+ private Long orderId;
+ private Date orderDate;
+ private String orderDesc;
+ private User user;
+
+ public OrderDetail() {
+
+ }
+
+ public OrderDetail(Date orderDate, String orderDesc) {
+ super();
+ this.orderDate = orderDate;
+ this.orderDesc = orderDesc;
+ }
+
+ public Date getOrderDate() {
+ return orderDate;
+ }
+
+ public void setOrderDate(Date orderDate) {
+ this.orderDate = orderDate;
+ }
+
+ public String getOrderDesc() {
+ return orderDesc;
+ }
+
+ public void setOrderDesc(String orderDesc) {
+ this.orderDesc = orderDesc;
+ }
+
+ public User getUser() {
+ return user;
+ }
+
+ public void setUser(User user) {
+ this.user = user;
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((orderId == null) ? 0 : orderId.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ OrderDetail other = (OrderDetail) obj;
+ if (orderId == null) {
+ if (other.orderId != null)
+ return false;
+ } else if (!orderId.equals(other.orderId))
+ return false;
+
+ return true;
+ }
+
+ public Long getOrderId() {
+ return orderId;
+ }
+
+ public void setOrderId(Long orderId) {
+ this.orderId = orderId;
+ }
- private static final long serialVersionUID = 1L;
- private Long orderId;
- private Date orderDate;
- private String orderDesc;
- private User user;
-
- public OrderDetail(){
-
- }
-
- public OrderDetail(Date orderDate, String orderDesc) {
- super();
- this.orderDate = orderDate;
- this.orderDesc = orderDesc;
- }
-
- public Date getOrderDate() {
- return orderDate;
- }
- public void setOrderDate(Date orderDate) {
- this.orderDate = orderDate;
- }
- public String getOrderDesc() {
- return orderDesc;
- }
- public void setOrderDesc(String orderDesc) {
- this.orderDesc = orderDesc;
- }
- public User getUser() {
- return user;
- }
- public void setUser(User user) {
- this.user = user;
- }
- @Override
- public int hashCode() {
- final int prime = 31;
- int result = 1;
- result = prime * result + ((orderId == null) ? 0 : orderId.hashCode());
- return result;
- }
- @Override
- public boolean equals(Object obj) {
- if (this == obj)
- return true;
- if (obj == null)
- return false;
- if (getClass() != obj.getClass())
- return false;
- OrderDetail other = (OrderDetail) obj;
- if (orderId == null) {
- if (other.orderId != null)
- return false;
- } else if (!orderId.equals(other.orderId))
- return false;
-
- return true;
- }
- public Long getOrderId() {
- return orderId;
- }
- public void setOrderId(Long orderId) {
- this.orderId = orderId;
- }
-
}
diff --git a/spring-hibernate4/src/main/java/com/baeldung/hibernate/fetching/model/User.java b/spring-hibernate4/src/main/java/com/baeldung/hibernate/fetching/model/User.java
index eb98b7d0f9..158855f93e 100644
--- a/spring-hibernate4/src/main/java/com/baeldung/hibernate/fetching/model/User.java
+++ b/spring-hibernate4/src/main/java/com/baeldung/hibernate/fetching/model/User.java
@@ -5,92 +5,90 @@ import java.util.HashSet;
import java.util.Set;
public class User implements Serializable {
-
- private static final long serialVersionUID = 1L;
- private Long userId;
+
+ private static final long serialVersionUID = 1L;
+ private Long userId;
private String userName;
private String firstName;
private String lastName;
private Set orderDetail = new HashSet();
public User() {
-
}
public User(final Long userId, final String userName, final String firstName, final String lastName) {
- super();
- this.userId = userId;
- this.userName = userName;
- this.firstName = firstName;
- this.lastName = lastName;
+ super();
+ this.userId = userId;
+ this.userName = userName;
+ this.firstName = firstName;
+ this.lastName = lastName;
}
@Override
public int hashCode() {
- final int prime = 31;
- int result = 1;
- result = prime * result + ((userId == null) ? 0 : userId.hashCode());
- return result;
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((userId == null) ? 0 : userId.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 User other = (User) obj;
- if (userId == null) {
- if (other.userId != null)
- return false;
- } else if (!userId.equals(other.userId))
- return false;
- return true;
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ final User other = (User) obj;
+ if (userId == null) {
+ if (other.userId != null)
+ return false;
+ } else if (!userId.equals(other.userId))
+ return false;
+ return true;
}
public Long getUserId() {
- return userId;
+ return userId;
}
public void setUserId(final Long userId) {
- this.userId = userId;
+ this.userId = userId;
}
public String getUserName() {
- return userName;
+ return userName;
}
public void setUserName(final String userName) {
- this.userName = userName;
+ this.userName = userName;
}
public String getFirstName() {
- return firstName;
+ return firstName;
}
public void setFirstName(final String firstName) {
- this.firstName = firstName;
+ this.firstName = firstName;
}
public String getLastName() {
- return lastName;
+ return lastName;
}
public void setLastName(final String lastName) {
- this.lastName = lastName;
+ this.lastName = lastName;
}
- public Set getOrderDetail() {
- return orderDetail;
- }
+ public Set getOrderDetail() {
+ return orderDetail;
+ }
- public void setOrderDetail(Set orderDetail) {
- this.orderDetail = orderDetail;
- }
+ public void setOrderDetail(Set orderDetail) {
+ this.orderDetail = orderDetail;
+ }
-
}
diff --git a/spring-hibernate4/src/main/java/com/baeldung/hibernate/fetching/util/HibernateUtil.java b/spring-hibernate4/src/main/java/com/baeldung/hibernate/fetching/util/HibernateUtil.java
index c6b095dde2..65ecea2fa4 100644
--- a/spring-hibernate4/src/main/java/com/baeldung/hibernate/fetching/util/HibernateUtil.java
+++ b/spring-hibernate4/src/main/java/com/baeldung/hibernate/fetching/util/HibernateUtil.java
@@ -1,35 +1,30 @@
package com.baeldung.hibernate.fetching.util;
import org.hibernate.Session;
-import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class HibernateUtil {
- private static SessionFactory factory;
- @SuppressWarnings("deprecation")
- public static Session getHibernateSession(String fetchMethod) {
- //two config files are there
- //one with lazy loading enabled
- //another lazy = false
- SessionFactory sf = null;
- if ("lazy".equals(fetchMethod)) {
- sf = new Configuration().configure("fetchingLazy.cfg.xml").buildSessionFactory();
- } else {
+ @SuppressWarnings("deprecation")
+ public static Session getHibernateSession(String fetchMethod) {
+ //two config files are there
+ //one with lazy loading enabled
+ //another lazy = false
- sf = new Configuration().configure("fetching.cfg.xml").buildSessionFactory();
- }
- // fetching.cfg.xml is used for this example
- final Session session = sf.openSession();
- return session;
- }
+ final String configFileName = "lazy".equals(fetchMethod) ?
+ "fetchingLazy.cfg.xml" :
+ "fetching.cfg.xml";
- public static Session getHibernateSession() {
- System.out.println("Loading eager");
- SessionFactory sf = null;
- sf = new Configuration().configure("fetching.cfg.xml").buildSessionFactory();
- final Session session = sf.openSession();
- return session;
- }
+ return new Configuration()
+ .configure(configFileName)
+ .buildSessionFactory().openSession();
+ }
+
+ public static Session getHibernateSession() {
+ return new Configuration()
+ .configure("fetching.cfg.xml")
+ .buildSessionFactory()
+ .openSession();
+ }
}
diff --git a/spring-hibernate4/src/main/java/com/baeldung/hibernate/fetching/view/FetchingAppView.java b/spring-hibernate4/src/main/java/com/baeldung/hibernate/fetching/view/FetchingAppView.java
index 5e4ab32d03..90fd302968 100644
--- a/spring-hibernate4/src/main/java/com/baeldung/hibernate/fetching/view/FetchingAppView.java
+++ b/spring-hibernate4/src/main/java/com/baeldung/hibernate/fetching/view/FetchingAppView.java
@@ -17,99 +17,94 @@ import com.baeldung.hibernate.fetching.model.User;
public class FetchingAppView {
-
- public FetchingAppView(){
-
- }
- //lazily loaded
- public boolean lazyLoaded(){
- final Session sessionLazy = HibernateUtil.getHibernateSession("lazy");
- List users = sessionLazy.createQuery("From User").list();
- User userLazyLoaded = new User();
- userLazyLoaded = users.get(3);
- //since data is lazyloaded so data won't be initialized
- Set orderDetailSet = userLazyLoaded.getOrderDetail();
- return (Hibernate.isInitialized(orderDetailSet));
- }
-
- //eagerly loaded
- public boolean eagerLoaded(){
- final Session sessionEager = HibernateUtil.getHibernateSession();
- //data should be loaded in the following line
- //also note the queries generated
- List users =sessionEager.createQuery("From User").list();
- User userEagerLoaded = new User();
- userEagerLoaded = users.get(3);
- Set orderDetailSet = userEagerLoaded.getOrderDetail();
- return (Hibernate.isInitialized(orderDetailSet));
- }
-
-
- //creates test data
- //call this method to create the data in the database
- public void createTestData() {
+ public FetchingAppView() {
- final Session session = HibernateUtil.getHibernateSession();
+ }
- Transaction tx = null;
+ public boolean lazyLoaded() {
+ final Session sessionLazy = HibernateUtil.getHibernateSession("lazy");
+ List users = sessionLazy.createQuery("From User").list();
+ User userLazyLoaded = users.get(3);
+ //since data is lazyloaded so data won't be initialized
+ Set orderDetailSet = userLazyLoaded.getOrderDetail();
- tx = session.beginTransaction();
- final User user1 = new User();
- final User user2 = new User();
- final User user3 = new User();
-
- user1.setFirstName("Priyam");
- user1.setLastName("Banerjee");
- user1.setUserName("priyambanerjee");
- session.save(user1);
-
- user2.setFirstName("Navneeta");
- user2.setLastName("Mukherjee");
- user2.setUserName("nmukh");
- session.save(user2);
-
- user3.setFirstName("Molly");
- user3.setLastName("Banerjee");
- user3.setUserName("mollyb");
- session.save(user3);
+ return (Hibernate.isInitialized(orderDetailSet));
+ }
- final OrderDetail order1 = new OrderDetail();
- final OrderDetail order2 = new OrderDetail();
- final OrderDetail order3 = new OrderDetail();
- final OrderDetail order4 = new OrderDetail();
- final OrderDetail order5 = new OrderDetail();
+ public boolean eagerLoaded() {
+ final Session sessionEager = HibernateUtil.getHibernateSession();
+ //data should be loaded in the following line
+ //also note the queries generated
+ List users = sessionEager.createQuery("From User").list();
+ User userEagerLoaded = users.get(3);
+ Set orderDetailSet = userEagerLoaded.getOrderDetail();
- order1.setOrderDesc("First Order");
- order1.setOrderDate(new Date(2014, 10, 12));
- order1.setUser(user1);
-
- order2.setOrderDesc("Second Order");
- order2.setOrderDate(new Date(2016, 10, 25));
- order2.setUser(user1);
-
- order3.setOrderDesc("Third Order");
- order3.setOrderDate(new Date(2015, 2, 17));
- order3.setUser(user2);
-
- order4.setOrderDesc("Fourth Order");
- order4.setOrderDate(new Date(2014, 10, 1));
- order4.setUser(user2);
-
- order5.setOrderDesc("Fifth Order");
- order5.setOrderDate(new Date(2014, 9, 11));
- order5.setUser(user3);
-
-
- session.saveOrUpdate(order1);
- session.saveOrUpdate(order2);
- session.saveOrUpdate(order3);
- session.saveOrUpdate(order4);
- session.saveOrUpdate(order5);
+ return (Hibernate.isInitialized(orderDetailSet));
+ }
- // session.saveOrUpdate(user1);
- tx.commit();
- session.close();
- }
+ //creates test data
+ //call this method to create the data in the database
+ public void createTestData() {
+
+ final Session session = HibernateUtil.getHibernateSession();
+ Transaction tx = session.beginTransaction();
+
+ final User user1 = new User();
+ final User user2 = new User();
+ final User user3 = new User();
+
+ user1.setFirstName("Priyam");
+ user1.setLastName("Banerjee");
+ user1.setUserName("priyambanerjee");
+ session.save(user1);
+
+ user2.setFirstName("Navneeta");
+ user2.setLastName("Mukherjee");
+ user2.setUserName("nmukh");
+ session.save(user2);
+
+ user3.setFirstName("Molly");
+ user3.setLastName("Banerjee");
+ user3.setUserName("mollyb");
+ session.save(user3);
+
+ final OrderDetail order1 = new OrderDetail();
+ final OrderDetail order2 = new OrderDetail();
+ final OrderDetail order3 = new OrderDetail();
+ final OrderDetail order4 = new OrderDetail();
+ final OrderDetail order5 = new OrderDetail();
+
+ order1.setOrderDesc("First Order");
+ order1.setOrderDate(new Date(2014, 10, 12));
+ order1.setUser(user1);
+
+ order2.setOrderDesc("Second Order");
+ order2.setOrderDate(new Date(2016, 10, 25));
+ order2.setUser(user1);
+
+ order3.setOrderDesc("Third Order");
+ order3.setOrderDate(new Date(2015, 2, 17));
+ order3.setUser(user2);
+
+ order4.setOrderDesc("Fourth Order");
+ order4.setOrderDate(new Date(2014, 10, 1));
+ order4.setUser(user2);
+
+ order5.setOrderDesc("Fifth Order");
+ order5.setOrderDate(new Date(2014, 9, 11));
+ order5.setUser(user3);
+
+
+ session.saveOrUpdate(order1);
+ session.saveOrUpdate(order2);
+ session.saveOrUpdate(order3);
+ session.saveOrUpdate(order4);
+ session.saveOrUpdate(order5);
+
+ // session.saveOrUpdate(user1);
+ tx.commit();
+ session.close();
+ }
}
diff --git a/spring-hibernate4/src/main/resources/fetching.cfg.xml b/spring-hibernate4/src/main/resources/fetching.cfg.xml
index 1595c829cd..4a7e574dda 100644
--- a/spring-hibernate4/src/main/resources/fetching.cfg.xml
+++ b/spring-hibernate4/src/main/resources/fetching.cfg.xml
@@ -10,6 +10,7 @@
root
iamtheking
org.hibernate.dialect.MySQLDialect
+ true
diff --git a/spring-hibernate4/src/main/resources/fetchingLazy.cfg.xml b/spring-hibernate4/src/main/resources/fetchingLazy.cfg.xml
index 4c64b4deb6..1f9a7df94e 100644
--- a/spring-hibernate4/src/main/resources/fetchingLazy.cfg.xml
+++ b/spring-hibernate4/src/main/resources/fetchingLazy.cfg.xml
@@ -10,6 +10,7 @@
root
iamtheking
org.hibernate.dialect.MySQLDialect
+ true
diff --git a/spring-hibernate4/src/test/java/com/baeldung/hibernate/criteria/HibernateCriteriaTestRunner.java b/spring-hibernate4/src/test/java/com/baeldung/hibernate/criteria/HibernateCriteriaTestRunner.java
new file mode 100644
index 0000000000..8341df9fcb
--- /dev/null
+++ b/spring-hibernate4/src/test/java/com/baeldung/hibernate/criteria/HibernateCriteriaTestRunner.java
@@ -0,0 +1,15 @@
+package com.baeldung.hibernate.criteria;
+
+import org.junit.runner.JUnitCore;
+import org.junit.runner.Result;
+import org.junit.runner.notification.Failure;
+
+public class HibernateCriteriaTestRunner {
+
+ public static void main(final String[] args) {
+ Result result = JUnitCore.runClasses(HibernateCriteriaTestSuite.class);
+ for (Failure failure : result.getFailures()) {
+
+ }
+ }
+}
diff --git a/spring-hibernate4/src/test/java/com/baeldung/hibernate/criteria/HibernateCriteriaTestSuite.java b/spring-hibernate4/src/test/java/com/baeldung/hibernate/criteria/HibernateCriteriaTestSuite.java
new file mode 100644
index 0000000000..ab27a6ba82
--- /dev/null
+++ b/spring-hibernate4/src/test/java/com/baeldung/hibernate/criteria/HibernateCriteriaTestSuite.java
@@ -0,0 +1,11 @@
+package com.baeldung.hibernate.criteria;
+
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
+
+@RunWith(Suite.class)
+@Suite.SuiteClasses({ HibernateCriteriaTest.class })
+
+public class HibernateCriteriaTestSuite {
+
+}
diff --git a/spring-hibernate4/src/test/java/com/baeldung/hibernate/fetching/HibernateFetchingTest.java b/spring-hibernate4/src/test/java/com/baeldung/hibernate/fetching/HibernateFetchingTest.java
new file mode 100644
index 0000000000..94ee8a3c79
--- /dev/null
+++ b/spring-hibernate4/src/test/java/com/baeldung/hibernate/fetching/HibernateFetchingTest.java
@@ -0,0 +1,24 @@
+package com.baeldung.hibernate.fetching;
+
+import static org.junit.Assert.*;
+
+import org.junit.Test;
+
+import com.baeldung.hibernate.fetching.view.FetchingAppView;
+
+public class HibernateFetchingTest {
+
+ @Test
+ public void testLazyFetching() {
+ FetchingAppView fav = new FetchingAppView();
+ fav.createTestData();
+ assertFalse(fav.lazyLoaded());
+ }
+
+ @Test
+ public void testEagerFetching() {
+ FetchingAppView fav = new FetchingAppView();
+ assertTrue(fav.eagerLoaded());
+ }
+
+}
diff --git a/spring-hibernate4/src/main/java/com/baeldung/hibernate/fetching/model/OrderDetail.hbm.xml b/spring-hibernate4/src/test/resources/com/baeldung/hibernate/fetching/model/OrderDetail.hbm.xml
similarity index 100%
rename from spring-hibernate4/src/main/java/com/baeldung/hibernate/fetching/model/OrderDetail.hbm.xml
rename to spring-hibernate4/src/test/resources/com/baeldung/hibernate/fetching/model/OrderDetail.hbm.xml
diff --git a/spring-hibernate4/src/main/java/com/baeldung/hibernate/fetching/model/User.hbm.xml b/spring-hibernate4/src/test/resources/com/baeldung/hibernate/fetching/model/User.hbm.xml
similarity index 100%
rename from spring-hibernate4/src/main/java/com/baeldung/hibernate/fetching/model/User.hbm.xml
rename to spring-hibernate4/src/test/resources/com/baeldung/hibernate/fetching/model/User.hbm.xml
diff --git a/spring-hibernate4/src/main/java/com/baeldung/hibernate/fetching/model/UserLazy.hbm.xml b/spring-hibernate4/src/test/resources/com/baeldung/hibernate/fetching/model/UserLazy.hbm.xml
similarity index 100%
rename from spring-hibernate4/src/main/java/com/baeldung/hibernate/fetching/model/UserLazy.hbm.xml
rename to spring-hibernate4/src/test/resources/com/baeldung/hibernate/fetching/model/UserLazy.hbm.xml
diff --git a/spring-hibernate4/src/test/resources/fetching.cfg.xml b/spring-hibernate4/src/test/resources/fetching.cfg.xml
new file mode 100644
index 0000000000..4a7e574dda
--- /dev/null
+++ b/spring-hibernate4/src/test/resources/fetching.cfg.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+ com.mysql.jdbc.Driver
+ jdbc:mysql://localhost:3306/test
+ root
+ iamtheking
+ org.hibernate.dialect.MySQLDialect
+ true
+
+
+
+
\ No newline at end of file
diff --git a/spring-hibernate4/src/test/resources/fetchingLazy.cfg.xml b/spring-hibernate4/src/test/resources/fetchingLazy.cfg.xml
new file mode 100644
index 0000000000..1f9a7df94e
--- /dev/null
+++ b/spring-hibernate4/src/test/resources/fetchingLazy.cfg.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+ com.mysql.jdbc.Driver
+ jdbc:mysql://localhost:3306/test
+ root
+ iamtheking
+ org.hibernate.dialect.MySQLDialect
+ true
+
+
+
+
\ No newline at end of file
diff --git a/spring-mvc-java/pom.xml b/spring-mvc-java/pom.xml
index 33d6306c5a..4d3432d47b 100644
--- a/spring-mvc-java/pom.xml
+++ b/spring-mvc-java/pom.xml
@@ -111,6 +111,11 @@
${mockito.version}
test
+
+ com.jayway.jsonpath
+ json-path
+ 2.2.0
+
org.springframework
spring-test
diff --git a/spring-mvc-java/src/main/java/com/baeldung/model/Greeting.java b/spring-mvc-java/src/main/java/com/baeldung/model/Greeting.java
new file mode 100644
index 0000000000..db021b8e8c
--- /dev/null
+++ b/spring-mvc-java/src/main/java/com/baeldung/model/Greeting.java
@@ -0,0 +1,22 @@
+package com.baeldung.model;
+
+public class Greeting {
+ private int id;
+ private String message;
+
+ public int getId() {
+ return id;
+ }
+
+ public void setId(int id) {
+ this.id = id;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+}
diff --git a/spring-mvc-java/src/main/java/com/baeldung/spring/web/config/ApplicationConfig.java b/spring-mvc-java/src/main/java/com/baeldung/spring/web/config/ApplicationConfig.java
new file mode 100644
index 0000000000..261d5793dc
--- /dev/null
+++ b/spring-mvc-java/src/main/java/com/baeldung/spring/web/config/ApplicationConfig.java
@@ -0,0 +1,36 @@
+package com.baeldung.spring.web.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.ViewResolver;
+import org.springframework.web.servlet.config.annotation.EnableWebMvc;
+import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
+import org.springframework.web.servlet.view.InternalResourceViewResolver;
+import org.springframework.web.servlet.view.JstlView;
+
+@EnableWebMvc
+@Configuration
+@ComponentScan(basePackages = { "com.baeldung.web.controller" })
+public class ApplicationConfig extends WebMvcConfigurerAdapter {
+
+ public ApplicationConfig() {
+ super();
+ }
+
+ @Override
+ public void addViewControllers(final ViewControllerRegistry registry) {
+ super.addViewControllers(registry);
+ registry.addViewController("/").setViewName("index");
+ }
+
+ @Bean
+ public ViewResolver viewResolver() {
+ final InternalResourceViewResolver bean = new InternalResourceViewResolver();
+ bean.setViewClass(JstlView.class);
+ bean.setPrefix("/WEB-INF/jsp/");
+ bean.setSuffix(".jsp");
+ return bean;
+ }
+}
\ No newline at end of file
diff --git a/spring-mvc-java/src/main/java/com/baeldung/web/controller/GreetController.java b/spring-mvc-java/src/main/java/com/baeldung/web/controller/GreetController.java
new file mode 100644
index 0000000000..6f764fedfb
--- /dev/null
+++ b/spring-mvc-java/src/main/java/com/baeldung/web/controller/GreetController.java
@@ -0,0 +1,59 @@
+package com.baeldung.web.controller;
+
+import com.baeldung.model.Greeting;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.*;
+
+@Controller
+public class GreetController {
+
+ @RequestMapping(value = "/homePage", method = RequestMethod.GET)
+ public String index() {
+ return "index";
+ }
+
+ @RequestMapping(value = "/greet", method = RequestMethod.GET, produces = "application/json")
+ @ResponseBody
+ public Greeting greet() {
+ Greeting greeting = new Greeting();
+ greeting.setId(1);
+ greeting.setMessage("Hello World!!!");
+ return greeting;
+ }
+
+ @RequestMapping(value = "/greetWithPathVariable/{name}", method = RequestMethod.GET, produces = "application/json")
+ @ResponseBody
+ public Greeting greetWithPathVariable(@PathVariable("name") String name) {
+ Greeting greeting = new Greeting();
+ greeting.setId(1);
+ greeting.setMessage("Hello World " + name + "!!!");
+ return greeting;
+ }
+
+ @RequestMapping(value = "/greetWithQueryVariable", method = RequestMethod.GET, produces = "application/json")
+ @ResponseBody
+ public Greeting greetWithQueryVariable(@RequestParam("name") String name) {
+ Greeting greeting = new Greeting();
+ greeting.setId(1);
+ greeting.setMessage("Hello World " + name + "!!!");
+ return greeting;
+ }
+
+ @RequestMapping(value = "/greetWithPost", method = RequestMethod.POST, produces = "application/json")
+ @ResponseBody
+ public Greeting greetWithPost() {
+ Greeting greeting = new Greeting();
+ greeting.setId(1);
+ greeting.setMessage("Hello World!!!");
+ return greeting;
+ }
+
+ @RequestMapping(value = "/greetWithPostAndFormData", method = RequestMethod.POST, produces = "application/json")
+ @ResponseBody
+ public Greeting greetWithPostAndFormData(@RequestParam("id") int id, @RequestParam("name") String name) {
+ Greeting greeting = new Greeting();
+ greeting.setId(id);
+ greeting.setMessage("Hello World " + name + "!!!");
+ return greeting;
+ }
+}
\ No newline at end of file
diff --git a/spring-mvc-java/src/main/webapp/WEB-INF/jsp/index.jsp b/spring-mvc-java/src/main/webapp/WEB-INF/jsp/index.jsp
new file mode 100644
index 0000000000..2cf02bc2d8
--- /dev/null
+++ b/spring-mvc-java/src/main/webapp/WEB-INF/jsp/index.jsp
@@ -0,0 +1,5 @@
+
+
+ Spring MVC - Integration Testing
+
+
\ No newline at end of file
diff --git a/spring-mvc-java/src/test/java/com/baeldung/web/controller/GreetControllerIntegrationTest.java b/spring-mvc-java/src/test/java/com/baeldung/web/controller/GreetControllerIntegrationTest.java
new file mode 100644
index 0000000000..61e0f632f1
--- /dev/null
+++ b/spring-mvc-java/src/test/java/com/baeldung/web/controller/GreetControllerIntegrationTest.java
@@ -0,0 +1,91 @@
+package com.baeldung.web.controller;
+
+
+import com.baeldung.spring.web.config.ApplicationConfig;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.mock.web.MockServletContext;
+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.MvcResult;
+import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
+import org.springframework.test.web.servlet.result.MockMvcResultMatchers;
+import org.springframework.test.web.servlet.setup.MockMvcBuilders;
+import org.springframework.web.context.WebApplicationContext;
+
+import javax.servlet.ServletContext;
+
+import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
+
+@RunWith(SpringJUnit4ClassRunner.class)
+@WebAppConfiguration
+@ContextConfiguration(classes = {ApplicationConfig.class})
+public class GreetControllerIntegrationTest {
+
+ @Autowired
+ private WebApplicationContext wac;
+
+ private MockMvc mockMvc;
+
+ private static final String CONTENT_TYPE = "application/json";
+
+
+ @Before
+ public void setup() throws Exception {
+ this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).build();
+ }
+
+ @Test
+ public void givenWAC_whenServletContext_thenItProvidesGreetController() {
+ ServletContext servletContext = wac.getServletContext();
+ Assert.assertNotNull(servletContext);
+ Assert.assertTrue(servletContext instanceof MockServletContext);
+ Assert.assertNotNull(wac.getBean("greetController"));
+ }
+
+ @Test
+ public void givenHomePageURI_whenMockMVC_thenReturnsIndexJSPViewName() throws Exception {
+ this.mockMvc.perform(MockMvcRequestBuilders.get("/homePage")).andDo(print()).andExpect(MockMvcResultMatchers.view().name("index"));
+ }
+
+ @Test
+ public void givenGreetURI_whenMockMVC_thenVerifyResponse() throws Exception {
+ MvcResult mvcResult = this.mockMvc.perform(MockMvcRequestBuilders.get("/greet")).andDo(print()).andExpect(MockMvcResultMatchers.status().isOk()).andExpect(MockMvcResultMatchers.jsonPath("$.message").value("Hello World!!!")).andReturn();
+ Assert.assertEquals(CONTENT_TYPE, mvcResult.getResponse().getContentType());
+ }
+
+ @Test
+ public void givenGreetURIWithPathVariable_whenMockMVC_thenVerifyResponse() throws Exception {
+ this.mockMvc.perform(MockMvcRequestBuilders.get("/greetWithPathVariable/John")).andDo(print()).andExpect(MockMvcResultMatchers.status().isOk()).andExpect(MockMvcResultMatchers.content().contentType(CONTENT_TYPE))
+ .andExpect(MockMvcResultMatchers.jsonPath("$.message").value("Hello World John!!!"));
+ }
+
+ @Test
+ public void givenGreetURIWithPathVariable_2_whenMockMVC_thenVerifyResponse() throws Exception {
+ this.mockMvc.perform(MockMvcRequestBuilders.get("/greetWithPathVariable/{name}", "Doe")).andDo(print()).andExpect(MockMvcResultMatchers.status().isOk()).andExpect(MockMvcResultMatchers.content().contentType(CONTENT_TYPE))
+ .andExpect(MockMvcResultMatchers.jsonPath("$.message").value("Hello World Doe!!!"));
+ }
+
+ @Test
+ public void givenGreetURIWithQueryParameter_whenMockMVC_thenVerifyResponse() throws Exception {
+ this.mockMvc.perform(MockMvcRequestBuilders.get("/greetWithQueryVariable").param("name", "John Doe")).andDo(print()).andExpect(MockMvcResultMatchers.status().isOk())
+ .andExpect(MockMvcResultMatchers.content().contentType(CONTENT_TYPE)).andExpect(MockMvcResultMatchers.jsonPath("$.message").value("Hello World John Doe!!!"));
+ }
+
+ @Test
+ public void givenGreetURIWithPost_whenMockMVC_thenVerifyResponse() throws Exception {
+ this.mockMvc.perform(MockMvcRequestBuilders.post("/greetWithPost")).andDo(print()).andExpect(MockMvcResultMatchers.status().isOk()).andExpect(MockMvcResultMatchers.content().contentType(CONTENT_TYPE))
+ .andExpect(MockMvcResultMatchers.jsonPath("$.message").value("Hello World!!!"));
+ }
+
+ @Test
+ public void givenGreetURIWithPostAndFormData_whenMockMVC_thenVerifyResponse() throws Exception {
+ this.mockMvc.perform(MockMvcRequestBuilders.post("/greetWithPostAndFormData").param("id", "1").param("name", "John Doe")).andDo(print()).andExpect(MockMvcResultMatchers.status().isOk())
+ .andExpect(MockMvcResultMatchers.content().contentType(CONTENT_TYPE)).andExpect(MockMvcResultMatchers.jsonPath("$.message").value("Hello World John Doe!!!")).andExpect(MockMvcResultMatchers.jsonPath("$.id").value(1));
+ }
+}
\ No newline at end of file
diff --git a/spring-mvc-java/src/test/java/com/baeldung/web/controller/GreetControllerTest.java b/spring-mvc-java/src/test/java/com/baeldung/web/controller/GreetControllerTest.java
new file mode 100644
index 0000000000..0fd71a46dd
--- /dev/null
+++ b/spring-mvc-java/src/test/java/com/baeldung/web/controller/GreetControllerTest.java
@@ -0,0 +1,61 @@
+package com.baeldung.web.controller;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.springframework.test.web.servlet.MockMvc;
+import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
+import org.springframework.test.web.servlet.result.MockMvcResultMatchers;
+import org.springframework.test.web.servlet.setup.MockMvcBuilders;
+
+import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
+import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
+
+public class GreetControllerTest {
+
+ private MockMvc mockMvc;
+ private static final String CONTENT_TYPE = "application/json";
+
+ @Before
+ public void setup() {
+ this.mockMvc = MockMvcBuilders.standaloneSetup(new GreetController()).build();
+ }
+
+ @Test
+ public void givenHomePageURI_whenMockMVC_thenReturnsIndexJSPViewName() throws Exception {
+ this.mockMvc.perform(get("/homePage")).andExpect(view().name("index"));
+ }
+
+ @Test
+ public void givenGreetURI_whenMockMVC_thenVerifyResponse() throws Exception {
+ this.mockMvc.perform(get("/greet")).andExpect(status().isOk()).andExpect(content().contentType(CONTENT_TYPE)).andExpect(jsonPath("$.message").value("Hello World!!!"));
+ }
+
+ @Test
+ public void givenGreetURIWithPathVariable_whenMockMVC_thenVerifyResponse() throws Exception {
+ this.mockMvc.perform(get("/greetWithPathVariable/John")).andExpect(status().isOk()).andExpect(content().contentType(CONTENT_TYPE)).andExpect(jsonPath("$.message").value("Hello World John!!!"));
+ }
+
+ @Test
+ public void givenGreetURIWithPathVariable_2_whenMockMVC_thenVerifyResponse() throws Exception {
+ this.mockMvc.perform(get("/greetWithPathVariable/{name}", "Doe")).andExpect(status().isOk()).andExpect(content().contentType(CONTENT_TYPE)).andExpect(jsonPath("$.message").value("Hello World Doe!!!"));
+ }
+
+ @Test
+ public void givenGreetURIWithQueryParameter_whenMockMVC_thenVerifyResponse() throws Exception {
+ this.mockMvc.perform(get("/greetWithQueryVariable").param("name", "John Doe")).andDo(print()).andExpect(status().isOk())
+ .andExpect(content().contentType(CONTENT_TYPE)).andExpect(jsonPath("$.message").value("Hello World John Doe!!!"));
+ }
+
+ @Test
+ public void givenGreetURIWithPost_whenMockMVC_thenVerifyResponse() throws Exception {
+ this.mockMvc.perform(MockMvcRequestBuilders.post("/greetWithPost")).andDo(print()).andExpect(status().isOk()).andExpect(content().contentType(CONTENT_TYPE))
+ .andExpect(jsonPath("$.message").value("Hello World!!!"));
+ }
+
+ @Test
+ public void givenGreetURIWithPostAndFormData_whenMockMVC_thenVerifyResponse() throws Exception {
+ this.mockMvc.perform(MockMvcRequestBuilders.post("/greetWithPostAndFormData").param("id", "1").param("name", "John Doe")).andDo(print()).andExpect(status().isOk())
+ .andExpect(content().contentType(CONTENT_TYPE)).andExpect(jsonPath("$.message").value("Hello World John Doe!!!")).andExpect(jsonPath("$.id").value(1));
+ }
+}
diff --git a/spring-security-basic-auth/README.md b/spring-security-basic-auth/README.md
index f3c29e1777..37ea545a9b 100644
--- a/spring-security-basic-auth/README.md
+++ b/spring-security-basic-auth/README.md
@@ -3,7 +3,7 @@
## Spring Security with Basic Authentication Example Project
###The Course
-The "Learn Spring Security" Classes: http://bit.ly/learnspringsecurity
+The "Learn Spring Security" Classes: http://github.learnspringsecurity.com
### Relevant Article:
- [Spring Security - security none, filters none, access permitAll](http://www.baeldung.com/security-none-filters-none-access-permitAll)
diff --git a/spring-security-client/README.MD b/spring-security-client/README.MD
index 2a87b46021..5ac974203b 100644
--- a/spring-security-client/README.MD
+++ b/spring-security-client/README.MD
@@ -1,2 +1,2 @@
###The Course
-The "REST With Spring" Classes: http://bit.ly/restwithspring
+The "REST With Spring" Classes: http://github.learnspringsecurity.com
diff --git a/spring-security-custom-permission/README.MD b/spring-security-custom-permission/README.MD
index 2a87b46021..5ac974203b 100644
--- a/spring-security-custom-permission/README.MD
+++ b/spring-security-custom-permission/README.MD
@@ -1,2 +1,2 @@
###The Course
-The "REST With Spring" Classes: http://bit.ly/restwithspring
+The "REST With Spring" Classes: http://github.learnspringsecurity.com
diff --git a/spring-security-mvc-custom/README.md b/spring-security-mvc-custom/README.md
index cbf5fc6a97..14bac6c454 100644
--- a/spring-security-mvc-custom/README.md
+++ b/spring-security-mvc-custom/README.md
@@ -3,7 +3,7 @@
## Spring Security Login Example Project
###The Course
-The "REST With Spring" Classes: http://bit.ly/restwithspring
+The "REST With Spring" Classes: http://github.learnspringsecurity.com
### Relevant Articles:
- [Spring Security Remember Me](http://www.baeldung.com/spring-security-remember-me)
diff --git a/spring-security-mvc-digest-auth/README.md b/spring-security-mvc-digest-auth/README.md
index 21835266bf..8b79b6b113 100644
--- a/spring-security-mvc-digest-auth/README.md
+++ b/spring-security-mvc-digest-auth/README.md
@@ -3,7 +3,7 @@
## Spring Security with Digest Authentication Example Project
###The Course
-The "Learn Spring Security" Classes: http://bit.ly/learnspringsecurity
+The "Learn Spring Security" Classes: http://github.learnspringsecurity.com
### Relevant Article:
- [Spring Security Digest Authentication](http://www.baeldung.com/spring-security-digest-authentication)
diff --git a/spring-security-mvc-ldap/README.md b/spring-security-mvc-ldap/README.md
index 1eb3b75405..fe6a667c40 100644
--- a/spring-security-mvc-ldap/README.md
+++ b/spring-security-mvc-ldap/README.md
@@ -2,7 +2,7 @@
## Spring Security with LDAP Example Project
###The Course
-The "Learn Spring Security" Classes: http://bit.ly/learnspringsecurity
+The "Learn Spring Security" Classes: http://github.learnspringsecurity.com
### Relevant Article:
- [Spring Security - security none, filters none, access permitAll](http://www.baeldung.com/security-none-filters-none-access-permitAll)
diff --git a/spring-security-mvc-login/README.md b/spring-security-mvc-login/README.md
index 448c25d27b..7cddc42e1d 100644
--- a/spring-security-mvc-login/README.md
+++ b/spring-security-mvc-login/README.md
@@ -3,7 +3,7 @@
## Spring Security Login Example Project
###The Course
-The "Learn Spring Security" Classes: http://bit.ly/learnspringsecurity
+The "Learn Spring Security" Classes: http://github.learnspringsecurity.com
### Relevant Articles:
- [Spring Security Form Login](http://www.baeldung.com/spring-security-login)
diff --git a/spring-security-mvc-persisted-remember-me/README.md b/spring-security-mvc-persisted-remember-me/README.md
index 0d5f4f5f0e..f910c3f62b 100644
--- a/spring-security-mvc-persisted-remember-me/README.md
+++ b/spring-security-mvc-persisted-remember-me/README.md
@@ -3,7 +3,7 @@
## Spring Security Persisted Remember Me Example Project
###The Course
-The "Learn Spring Security" Classes: http://bit.ly/learnspringsecurity
+The "Learn Spring Security" Classes: http://github.learnspringsecurity.com
### Relevant Articles:
- [Spring Security Persisted Remember Me](http://www.baeldung.com/spring-security-persistent-remember-me)
diff --git a/spring-security-mvc-session/README.md b/spring-security-mvc-session/README.md
index 28f216c130..fc44209640 100644
--- a/spring-security-mvc-session/README.md
+++ b/spring-security-mvc-session/README.md
@@ -3,7 +3,7 @@
## Spring Security Login Example Project
###The Course
-The "Learn Spring Security" Classes: http://bit.ly/learnspringsecurity
+The "Learn Spring Security" Classes: http://github.learnspringsecurity.com
### Relevant Articles:
- [HttpSessionListener Example – Monitoring](http://www.baeldung.com/httpsessionlistener_with_metrics)
diff --git a/spring-security-rest-basic-auth/README.md b/spring-security-rest-basic-auth/README.md
index 9621773d91..3bd46bdd2a 100644
--- a/spring-security-rest-basic-auth/README.md
+++ b/spring-security-rest-basic-auth/README.md
@@ -3,7 +3,7 @@
## REST API with Basic Authentication - Example Project
###The Course
-The "Learn Spring Security" Classes: http://bit.ly/learnspringsecurity
+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)
diff --git a/spring-security-rest-custom/README.md b/spring-security-rest-custom/README.md
index 38dc638e8d..85f2b7532c 100644
--- a/spring-security-rest-custom/README.md
+++ b/spring-security-rest-custom/README.md
@@ -3,7 +3,7 @@
## Spring Security for REST Example Project
###The Course
-The "REST With Spring" Classes: http://bit.ly/restwithspring
+The "REST With Spring" Classes: http://github.learnspringsecurity.com
### Relevant Articles:
- [Spring Security Authentication Provider](http://www.baeldung.com/spring-security-authentication-provider)
diff --git a/spring-security-rest-digest-auth/README.md b/spring-security-rest-digest-auth/README.md
index 4fdc934fe5..3328bcb2e3 100644
--- a/spring-security-rest-digest-auth/README.md
+++ b/spring-security-rest-digest-auth/README.md
@@ -3,7 +3,7 @@
## REST API with Digest Authentication - Example Project
###The Course
-The "Learn Spring Security" Classes: http://bit.ly/learnspringsecurity
+The "Learn Spring Security" Classes: http://github.learnspringsecurity.com
### Relevant Articles:
- [RestTemplate with Digest Authentication](http://www.baeldung.com/resttemplate-digest-authentication)
diff --git a/spring-security-rest-full/README.md b/spring-security-rest-full/README.md
index 947d32e87c..1cbe1191a8 100644
--- a/spring-security-rest-full/README.md
+++ b/spring-security-rest-full/README.md
@@ -5,7 +5,7 @@
### Courses
The "REST With Spring" Classes: http://bit.ly/restwithspring
-The "Learn Spring Security" Classes: http://bit.ly/learnspringsecurity
+The "Learn Spring Security" Classes: http://github.learnspringsecurity.com
### Relevant Articles:
- [Spring Security Expressions - hasRole Example](http://www.baeldung.com/spring-security-expressions-basic)
diff --git a/spring-security-rest-full/src/main/java/org/baeldung/web/interceptor/LoggerInterceptor.java b/spring-security-rest-full/src/main/java/org/baeldung/web/interceptor/LoggerInterceptor.java
index f4aa2ff4f5..6afbd921ec 100644
--- a/spring-security-rest-full/src/main/java/org/baeldung/web/interceptor/LoggerInterceptor.java
+++ b/spring-security-rest-full/src/main/java/org/baeldung/web/interceptor/LoggerInterceptor.java
@@ -1,74 +1,78 @@
package org.baeldung.web.interceptor;
-import java.util.Enumeration;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
+import com.google.common.base.Strings;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
-import com.google.common.base.Strings;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.Enumeration;
public class LoggerInterceptor extends HandlerInterceptorAdapter {
- private static Logger log = LoggerFactory.getLogger(LoggerInterceptor.class);
+ private static Logger log = LoggerFactory.getLogger(LoggerInterceptor.class);
- /** Executed before actual handler is executed **/
- @Override
- public boolean preHandle(final HttpServletRequest request, final HttpServletResponse response, final Object handler) throws Exception {
- log.info("[preHandle][" + request + "]" + "[" + request.getMethod() + "]" + request.getRequestURI() + getParameters(request));
- return true;
- }
+ /**
+ * Executed before actual handler is executed
+ **/
+ @Override
+ public boolean preHandle(final HttpServletRequest request, final HttpServletResponse response, final Object handler) throws Exception {
+ log.info("[preHandle][" + request + "]" + "[" + request.getMethod() + "]" + request.getRequestURI() + getParameters(request));
+ return true;
+ }
- /** Executed before after handler is executed **/
- @Override
- public void postHandle(final HttpServletRequest request, final HttpServletResponse response, final Object handler,
- final ModelAndView modelAndView) throws Exception {
- log.info("[postHandle][" + request + "]");
- }
+ /**
+ * Executed before after handler is executed
+ **/
+ @Override
+ public void postHandle(final HttpServletRequest request, final HttpServletResponse response, final Object handler,
+ final ModelAndView modelAndView) throws Exception {
+ log.info("[postHandle][" + request + "]");
+ }
- /** Executed after complete request is finished **/
- @Override
- public void afterCompletion(final HttpServletRequest request, final HttpServletResponse response, final Object handler, final Exception ex)
- throws Exception {
- if (ex != null)
- ex.printStackTrace();
- log.info("[afterCompletion][" + request + "][exception: " + ex + "]");
- }
+ /**
+ * Executed after complete request is finished
+ **/
+ @Override
+ public void afterCompletion(final HttpServletRequest request, final HttpServletResponse response, final Object handler, final Exception ex)
+ throws Exception {
+ if (ex != null)
+ ex.printStackTrace();
+ log.info("[afterCompletion][" + request + "][exception: " + ex + "]");
+ }
- private String getParameters(final HttpServletRequest request) {
- final StringBuffer posted = new StringBuffer();
- final Enumeration> e = request.getParameterNames();
- if (e != null)
- posted.append("?");
- while (e.hasMoreElements()) {
- if (posted.length() > 1)
- posted.append("&");
- final String curr = (String) e.nextElement();
- posted.append(curr + "=");
- if (curr.contains("password") || curr.contains("answer") || curr.contains("pwd")) {
- posted.append("*****");
- } else {
- posted.append(request.getParameter(curr));
- }
- }
+ private String getParameters(final HttpServletRequest request) {
+ final StringBuffer posted = new StringBuffer();
+ final Enumeration> e = request.getParameterNames();
+ if (e != null)
+ posted.append("?");
+ while (e != null && e.hasMoreElements()) {
+ if (posted.length() > 1)
+ posted.append("&");
+ final String curr = (String) e.nextElement();
+ posted.append(curr).append("=");
+ if (curr.contains("password") || curr.contains("answer") || curr.contains("pwd")) {
+ posted.append("*****");
+ } else {
+ posted.append(request.getParameter(curr));
+ }
+ }
- final String ip = request.getHeader("X-FORWARDED-FOR");
- final String ipAddr = (ip == null) ? getRemoteAddr(request) : ip;
- if (!Strings.isNullOrEmpty(ipAddr))
- posted.append("&_psip=" + ipAddr);
- return posted.toString();
- }
+ final String ip = request.getHeader("X-FORWARDED-FOR");
+ final String ipAddr = (ip == null) ? getRemoteAddr(request) : ip;
+ if (!Strings.isNullOrEmpty(ipAddr))
+ posted.append("&_psip=" + ipAddr);
+ return posted.toString();
+ }
- private String getRemoteAddr(final HttpServletRequest request) {
- final String ipFromHeader = request.getHeader("X-FORWARDED-FOR");
- if (ipFromHeader != null && ipFromHeader.length() > 0) {
- log.debug("ip from proxy - X-FORWARDED-FOR : " + ipFromHeader);
- return ipFromHeader;
- }
- return request.getRemoteAddr();
- }
+ private String getRemoteAddr(final HttpServletRequest request) {
+ final String ipFromHeader = request.getHeader("X-FORWARDED-FOR");
+ if (ipFromHeader != null && ipFromHeader.length() > 0) {
+ log.debug("ip from proxy - X-FORWARDED-FOR : " + ipFromHeader);
+ return ipFromHeader;
+ }
+ return request.getRemoteAddr();
+ }
}
diff --git a/spring-security-rest/README.md b/spring-security-rest/README.md
index 87f14a9047..bea417a800 100644
--- a/spring-security-rest/README.md
+++ b/spring-security-rest/README.md
@@ -5,7 +5,7 @@
### Courses
The "REST With Spring" Classes: http://bit.ly/restwithspring
-The "Learn Spring Security" Classes: http://bit.ly/learnspringsecurity
+The "Learn Spring Security" Classes: http://github.learnspringsecurity.com
### Relevant Articles:
- [Spring REST Service Security](http://www.baeldung.com/2011/10/31/securing-a-restful-web-service-with-spring-security-3-1-part-3/)
diff --git a/spring-security-x509/pom.xml b/spring-security-x509/pom.xml
index 8a9fd200a8..953af761b5 100644
--- a/spring-security-x509/pom.xml
+++ b/spring-security-x509/pom.xml
@@ -9,8 +9,8 @@
pom
- basic-secured-server
- client-auth-server
+ spring-security-x509-basic-auth
+ spring-security-x509-client-auth
diff --git a/spring-security-x509/basic-secured-server/pom.xml b/spring-security-x509/spring-security-x509-basic-auth/pom.xml
similarity index 100%
rename from spring-security-x509/basic-secured-server/pom.xml
rename to spring-security-x509/spring-security-x509-basic-auth/pom.xml
diff --git a/spring-security-x509/basic-secured-server/src/main/java/com/baeldung/spring/security/x509/UserController.java b/spring-security-x509/spring-security-x509-basic-auth/src/main/java/com/baeldung/spring/security/x509/UserController.java
similarity index 100%
rename from spring-security-x509/basic-secured-server/src/main/java/com/baeldung/spring/security/x509/UserController.java
rename to spring-security-x509/spring-security-x509-basic-auth/src/main/java/com/baeldung/spring/security/x509/UserController.java
diff --git a/spring-security-x509/basic-secured-server/src/main/java/com/baeldung/spring/security/x509/X509AuthenticationServer.java b/spring-security-x509/spring-security-x509-basic-auth/src/main/java/com/baeldung/spring/security/x509/X509AuthenticationServer.java
similarity index 100%
rename from spring-security-x509/basic-secured-server/src/main/java/com/baeldung/spring/security/x509/X509AuthenticationServer.java
rename to spring-security-x509/spring-security-x509-basic-auth/src/main/java/com/baeldung/spring/security/x509/X509AuthenticationServer.java
diff --git a/spring-security-x509/basic-secured-server/src/main/resources/application.properties b/spring-security-x509/spring-security-x509-basic-auth/src/main/resources/application.properties
similarity index 100%
rename from spring-security-x509/basic-secured-server/src/main/resources/application.properties
rename to spring-security-x509/spring-security-x509-basic-auth/src/main/resources/application.properties
diff --git a/spring-security-x509/basic-secured-server/src/main/resources/templates/user.html b/spring-security-x509/spring-security-x509-basic-auth/src/main/resources/templates/user.html
similarity index 100%
rename from spring-security-x509/basic-secured-server/src/main/resources/templates/user.html
rename to spring-security-x509/spring-security-x509-basic-auth/src/main/resources/templates/user.html
diff --git a/spring-security-x509/basic-secured-server/src/test/java/com/baeldung/spring/security/x509/X509AuthenticationServerTests.java b/spring-security-x509/spring-security-x509-basic-auth/src/test/java/com/baeldung/spring/security/x509/X509AuthenticationServerTests.java
similarity index 100%
rename from spring-security-x509/basic-secured-server/src/test/java/com/baeldung/spring/security/x509/X509AuthenticationServerTests.java
rename to spring-security-x509/spring-security-x509-basic-auth/src/test/java/com/baeldung/spring/security/x509/X509AuthenticationServerTests.java
diff --git a/spring-security-x509/client-auth-server/pom.xml b/spring-security-x509/spring-security-x509-client-auth/pom.xml
similarity index 100%
rename from spring-security-x509/client-auth-server/pom.xml
rename to spring-security-x509/spring-security-x509-client-auth/pom.xml
diff --git a/spring-security-x509/client-auth-server/src/main/java/com/baeldung/spring/security/x509/UserController.java b/spring-security-x509/spring-security-x509-client-auth/src/main/java/com/baeldung/spring/security/x509/UserController.java
similarity index 100%
rename from spring-security-x509/client-auth-server/src/main/java/com/baeldung/spring/security/x509/UserController.java
rename to spring-security-x509/spring-security-x509-client-auth/src/main/java/com/baeldung/spring/security/x509/UserController.java
diff --git a/spring-security-x509/client-auth-server/src/main/java/com/baeldung/spring/security/x509/X509AuthenticationServer.java b/spring-security-x509/spring-security-x509-client-auth/src/main/java/com/baeldung/spring/security/x509/X509AuthenticationServer.java
similarity index 100%
rename from spring-security-x509/client-auth-server/src/main/java/com/baeldung/spring/security/x509/X509AuthenticationServer.java
rename to spring-security-x509/spring-security-x509-client-auth/src/main/java/com/baeldung/spring/security/x509/X509AuthenticationServer.java
diff --git a/spring-security-x509/client-auth-server/src/main/resources/application.properties b/spring-security-x509/spring-security-x509-client-auth/src/main/resources/application.properties
similarity index 100%
rename from spring-security-x509/client-auth-server/src/main/resources/application.properties
rename to spring-security-x509/spring-security-x509-client-auth/src/main/resources/application.properties
diff --git a/spring-security-x509/client-auth-server/src/main/resources/keystore.jks b/spring-security-x509/spring-security-x509-client-auth/src/main/resources/keystore.jks
similarity index 100%
rename from spring-security-x509/client-auth-server/src/main/resources/keystore.jks
rename to spring-security-x509/spring-security-x509-client-auth/src/main/resources/keystore.jks
diff --git a/spring-security-x509/client-auth-server/src/main/resources/templates/user.html b/spring-security-x509/spring-security-x509-client-auth/src/main/resources/templates/user.html
similarity index 100%
rename from spring-security-x509/client-auth-server/src/main/resources/templates/user.html
rename to spring-security-x509/spring-security-x509-client-auth/src/main/resources/templates/user.html
diff --git a/spring-security-x509/client-auth-server/src/test/java/com/baeldung/spring/security/x509/X509AuthenticationServerTests.java b/spring-security-x509/spring-security-x509-client-auth/src/test/java/com/baeldung/spring/security/x509/X509AuthenticationServerTests.java
similarity index 100%
rename from spring-security-x509/client-auth-server/src/test/java/com/baeldung/spring/security/x509/X509AuthenticationServerTests.java
rename to spring-security-x509/spring-security-x509-client-auth/src/test/java/com/baeldung/spring/security/x509/X509AuthenticationServerTests.java