163 changed files with 401 additions and 760 deletions
@ -1,29 +0,0 @@
@@ -1,29 +0,0 @@
|
||||
/* |
||||
* Copyright 2012-2014 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 sample.data.jpa; |
||||
|
||||
import org.springframework.boot.SpringApplication; |
||||
import org.springframework.boot.autoconfigure.SpringBootApplication; |
||||
|
||||
@SpringBootApplication |
||||
public class SampleDataRestApplication { |
||||
|
||||
public static void main(String[] args) throws Exception { |
||||
SpringApplication.run(SampleDataRestApplication.class, args); |
||||
} |
||||
|
||||
} |
||||
@ -1,76 +0,0 @@
@@ -1,76 +0,0 @@
|
||||
/* |
||||
* Copyright 2012-2014 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 sample.data.jpa.domain; |
||||
|
||||
import java.io.Serializable; |
||||
|
||||
import javax.persistence.Column; |
||||
import javax.persistence.Entity; |
||||
import javax.persistence.GeneratedValue; |
||||
import javax.persistence.Id; |
||||
|
||||
@Entity |
||||
public class City implements Serializable { |
||||
|
||||
private static final long serialVersionUID = 1L; |
||||
|
||||
@Id |
||||
@GeneratedValue |
||||
private Long id; |
||||
|
||||
@Column(nullable = false) |
||||
private String name; |
||||
|
||||
@Column(nullable = false) |
||||
private String state; |
||||
|
||||
@Column(nullable = false) |
||||
private String country; |
||||
|
||||
@Column(nullable = false) |
||||
private String map; |
||||
|
||||
protected City() { |
||||
} |
||||
|
||||
public City(String name, String country) { |
||||
super(); |
||||
this.name = name; |
||||
this.country = country; |
||||
} |
||||
|
||||
public String getName() { |
||||
return this.name; |
||||
} |
||||
|
||||
public String getState() { |
||||
return this.state; |
||||
} |
||||
|
||||
public String getCountry() { |
||||
return this.country; |
||||
} |
||||
|
||||
public String getMap() { |
||||
return this.map; |
||||
} |
||||
|
||||
@Override |
||||
public String toString() { |
||||
return getName() + "," + getState() + "," + getCountry(); |
||||
} |
||||
} |
||||
@ -1,75 +0,0 @@
@@ -1,75 +0,0 @@
|
||||
/* |
||||
* Copyright 2012-2014 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 sample.data.jpa.domain; |
||||
|
||||
import java.io.Serializable; |
||||
|
||||
import javax.persistence.Column; |
||||
import javax.persistence.Entity; |
||||
import javax.persistence.GeneratedValue; |
||||
import javax.persistence.Id; |
||||
import javax.persistence.ManyToOne; |
||||
|
||||
import org.hibernate.annotations.NaturalId; |
||||
|
||||
@Entity |
||||
public class Hotel implements Serializable { |
||||
|
||||
private static final long serialVersionUID = 1L; |
||||
|
||||
@Id |
||||
@GeneratedValue |
||||
private Long id; |
||||
|
||||
@ManyToOne(optional = false) |
||||
@NaturalId |
||||
private City city; |
||||
|
||||
@Column(nullable = false) |
||||
@NaturalId |
||||
private String name; |
||||
|
||||
@Column(nullable = false) |
||||
private String address; |
||||
|
||||
@Column(nullable = false) |
||||
private String zip; |
||||
|
||||
protected Hotel() { |
||||
} |
||||
|
||||
public Hotel(City city, String name) { |
||||
this.city = city; |
||||
this.name = name; |
||||
} |
||||
|
||||
public City getCity() { |
||||
return this.city; |
||||
} |
||||
|
||||
public String getName() { |
||||
return this.name; |
||||
} |
||||
|
||||
public String getAddress() { |
||||
return this.address; |
||||
} |
||||
|
||||
public String getZip() { |
||||
return this.zip; |
||||
} |
||||
} |
||||
@ -1,37 +0,0 @@
@@ -1,37 +0,0 @@
|
||||
/* |
||||
* Copyright 2012-2014 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 sample.data.jpa.service; |
||||
|
||||
import org.springframework.data.domain.Page; |
||||
import org.springframework.data.domain.Pageable; |
||||
import org.springframework.data.repository.PagingAndSortingRepository; |
||||
import org.springframework.data.repository.query.Param; |
||||
import org.springframework.data.rest.core.annotation.RepositoryRestResource; |
||||
|
||||
import sample.data.jpa.domain.City; |
||||
|
||||
@RepositoryRestResource(collectionResourceRel = "citys", path = "cities") |
||||
interface CityRepository extends PagingAndSortingRepository<City, Long> { |
||||
|
||||
Page<City> findByNameContainingAndCountryContainingAllIgnoringCase( |
||||
@Param("name") String name, @Param("country") String country, |
||||
Pageable pageable); |
||||
|
||||
City findByNameAndCountryAllIgnoringCase(@Param("name") String name, |
||||
@Param("country") String country); |
||||
|
||||
} |
||||
@ -1,44 +0,0 @@
@@ -1,44 +0,0 @@
|
||||
/* |
||||
* Copyright 2012-2014 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 sample.data.jpa.service; |
||||
|
||||
import java.io.Serializable; |
||||
|
||||
import org.springframework.util.Assert; |
||||
|
||||
public class CitySearchCriteria implements Serializable { |
||||
|
||||
private static final long serialVersionUID = 1L; |
||||
|
||||
private String name; |
||||
|
||||
public CitySearchCriteria() { |
||||
} |
||||
|
||||
public CitySearchCriteria(String name) { |
||||
Assert.notNull(name, "Name must not be null"); |
||||
this.name = name; |
||||
} |
||||
|
||||
public String getName() { |
||||
return this.name; |
||||
} |
||||
|
||||
public void setName(String name) { |
||||
this.name = name; |
||||
} |
||||
} |
||||
@ -1,30 +0,0 @@
@@ -1,30 +0,0 @@
|
||||
/* |
||||
* Copyright 2012-2014 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 sample.data.jpa.service; |
||||
|
||||
import org.springframework.data.repository.PagingAndSortingRepository; |
||||
import org.springframework.data.rest.core.annotation.RepositoryRestResource; |
||||
|
||||
import sample.data.jpa.domain.City; |
||||
import sample.data.jpa.domain.Hotel; |
||||
|
||||
@RepositoryRestResource(collectionResourceRel = "hotels", path = "hotels") |
||||
interface HotelRepository extends PagingAndSortingRepository<Hotel, Long> { |
||||
|
||||
Hotel findByCityAndName(City city, String name); |
||||
|
||||
} |
||||
@ -1,87 +0,0 @@
@@ -1,87 +0,0 @@
|
||||
/* |
||||
* Copyright 2012-2015 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 sample.data.jpa; |
||||
|
||||
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.SpringApplicationConfiguration; |
||||
import org.springframework.test.context.ActiveProfiles; |
||||
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.hamcrest.Matchers.containsString; |
||||
import static org.hamcrest.Matchers.equalTo; |
||||
import static org.hamcrest.Matchers.hasSize; |
||||
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; |
||||
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content; |
||||
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath; |
||||
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; |
||||
|
||||
/** |
||||
* Integration test to run the application. |
||||
* |
||||
* @author Oliver Gierke |
||||
* @author Andy Wilkinson |
||||
*/ |
||||
@RunWith(SpringJUnit4ClassRunner.class) |
||||
@SpringApplicationConfiguration(classes = SampleDataRestApplication.class) |
||||
@WebAppConfiguration |
||||
@ActiveProfiles("scratch") |
||||
// Separate profile for web tests to avoid clashing databases
|
||||
public class SampleDataRestApplicationTests { |
||||
|
||||
@Autowired |
||||
private WebApplicationContext context; |
||||
|
||||
private MockMvc mvc; |
||||
|
||||
@Before |
||||
public void setUp() { |
||||
this.mvc = MockMvcBuilders.webAppContextSetup(this.context).build(); |
||||
} |
||||
|
||||
@Test |
||||
public void testHome() throws Exception { |
||||
|
||||
this.mvc.perform(get("/api")).andExpect(status().isOk()) |
||||
.andExpect(content().string(containsString("hotels"))); |
||||
} |
||||
|
||||
@Test |
||||
public void findByNameAndCountry() throws Exception { |
||||
|
||||
this.mvc.perform( |
||||
get("/api/cities/search/findByNameAndCountryAllIgnoringCase?name=Melbourne&country=Australia")) |
||||
.andExpect(status().isOk()) |
||||
.andExpect(jsonPath("state", equalTo("Victoria"))) |
||||
.andExpect(jsonPath("name", equalTo("Melbourne"))); |
||||
} |
||||
|
||||
@Test |
||||
public void findByContaining() throws Exception { |
||||
|
||||
this.mvc.perform( |
||||
get("/api/cities/search/findByNameContainingAndCountryContainingAllIgnoringCase?name=&country=UK")) |
||||
.andExpect(status().isOk()) |
||||
.andExpect(jsonPath("_embedded.citys", hasSize(3))); |
||||
} |
||||
} |
||||
@ -1,71 +0,0 @@
@@ -1,71 +0,0 @@
|
||||
/* |
||||
* Copyright 2012-2014 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 sample.data.jpa.service; |
||||
|
||||
import org.junit.Test; |
||||
import org.junit.runner.RunWith; |
||||
import org.springframework.beans.factory.annotation.Autowired; |
||||
import org.springframework.boot.test.SpringApplicationConfiguration; |
||||
import org.springframework.data.domain.Page; |
||||
import org.springframework.data.domain.PageRequest; |
||||
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; |
||||
|
||||
import sample.data.jpa.SampleDataRestApplication; |
||||
import sample.data.jpa.domain.City; |
||||
|
||||
import static org.hamcrest.Matchers.equalTo; |
||||
import static org.hamcrest.Matchers.greaterThan; |
||||
import static org.hamcrest.Matchers.is; |
||||
import static org.hamcrest.Matchers.notNullValue; |
||||
import static org.junit.Assert.assertThat; |
||||
|
||||
/** |
||||
* Integration tests for {@link CityRepository}. |
||||
* |
||||
* @author Oliver Gierke |
||||
* @author Andy Wilkinson |
||||
*/ |
||||
@RunWith(SpringJUnit4ClassRunner.class) |
||||
@SpringApplicationConfiguration(classes = SampleDataRestApplication.class) |
||||
public class CityRepositoryIntegrationTests { |
||||
|
||||
@Autowired |
||||
CityRepository repository; |
||||
|
||||
@Test |
||||
public void findsFirstPageOfCities() { |
||||
|
||||
Page<City> cities = this.repository.findAll(new PageRequest(0, 10)); |
||||
assertThat(cities.getTotalElements(), is(greaterThan(20L))); |
||||
} |
||||
|
||||
@Test |
||||
public void findByNameAndCountry() { |
||||
City city = this.repository.findByNameAndCountryAllIgnoringCase("Melbourne", |
||||
"Australia"); |
||||
assertThat(city, notNullValue()); |
||||
assertThat(city.getName(), is(equalTo("Melbourne"))); |
||||
} |
||||
|
||||
@Test |
||||
public void findContaining() { |
||||
Page<City> cities = this.repository |
||||
.findByNameContainingAndCountryContainingAllIgnoringCase("", "UK", |
||||
new PageRequest(0, 10)); |
||||
assertThat(cities.getTotalElements(), is(equalTo(3L))); |
||||
} |
||||
} |
||||
@ -0,0 +1,52 @@
@@ -0,0 +1,52 @@
|
||||
/* |
||||
* Copyright 2012-2015 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 sample.flyway; |
||||
|
||||
import javax.persistence.Entity; |
||||
import javax.persistence.GeneratedValue; |
||||
import javax.persistence.Id; |
||||
|
||||
@Entity |
||||
public class Person { |
||||
@Id |
||||
@GeneratedValue |
||||
private Long id; |
||||
private String firstName; |
||||
private String lastName; |
||||
|
||||
public String getFirstName() { |
||||
return this.firstName; |
||||
} |
||||
|
||||
public void setFirstName(String firstName) { |
||||
this.firstName = firstName; |
||||
} |
||||
|
||||
public String getLastName() { |
||||
return this.lastName; |
||||
} |
||||
|
||||
public void setLastName(String lastname) { |
||||
this.lastName = lastname; |
||||
} |
||||
|
||||
@Override |
||||
public String toString() { |
||||
return "Person [firstName=" + this.firstName + ", lastName=" + this.lastName |
||||
+ "]"; |
||||
} |
||||
} |
||||
@ -0,0 +1,25 @@
@@ -0,0 +1,25 @@
|
||||
/* |
||||
* Copyright 2012-2015 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 sample.flyway; |
||||
|
||||
import org.springframework.data.repository.CrudRepository; |
||||
import org.springframework.stereotype.Repository; |
||||
|
||||
@Repository |
||||
public interface PersonRepository extends CrudRepository<Person, Long> { |
||||
|
||||
} |
||||
@ -0,0 +1,39 @@
@@ -0,0 +1,39 @@
|
||||
/* |
||||
* Copyright 2012-2015 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 sample.session.redis; |
||||
|
||||
import java.util.UUID; |
||||
|
||||
import javax.servlet.http.HttpSession; |
||||
|
||||
import org.springframework.web.bind.annotation.RequestMapping; |
||||
import org.springframework.web.bind.annotation.RestController; |
||||
|
||||
@RestController |
||||
public class HelloRestController { |
||||
|
||||
@RequestMapping("/") |
||||
String uid(HttpSession session) { |
||||
UUID uid = (UUID) session.getAttribute("uid"); |
||||
if (uid == null) { |
||||
uid = UUID.randomUUID(); |
||||
} |
||||
session.setAttribute("uid", uid); |
||||
return uid.toString(); |
||||
} |
||||
|
||||
} |
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue