163 changed files with 401 additions and 760 deletions
@ -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 @@ |
|||||||
/* |
|
||||||
* 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 @@ |
|||||||
/* |
|
||||||
* 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 @@ |
|||||||
/* |
|
||||||
* 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 @@ |
|||||||
/* |
|
||||||
* 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 @@ |
|||||||
/* |
|
||||||
* 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 @@ |
|||||||
/* |
|
||||||
* 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 @@ |
|||||||
/* |
|
||||||
* 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 @@ |
|||||||
|
/* |
||||||
|
* 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 @@ |
|||||||
|
/* |
||||||
|
* 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 @@ |
|||||||
|
/* |
||||||
|
* 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