diff --git a/pom.xml b/pom.xml index 277927bfa56870f2593886eaa60cb69e8131a6db..3aef0836982b73cc0b9267a6c41892e05bddc63e 100644 --- a/pom.xml +++ b/pom.xml @@ -70,12 +70,6 @@ <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> </dependency> - <dependency> - <groupId>org.springframework</groupId> - <artifactId>spring-oxm</artifactId> - </dependency> - - <!-- Tomcat --> <dependency> @@ -204,12 +198,6 @@ <artifactId>datatables-export-itext</artifactId> <version>${dandelion.datatables.version}</version> </dependency> - <!-- temporary fix: below dependency should not be necessary as it is a transitive dependency. - For some reason we can't build the app unless it is a first level dependency --> - <dependency> - <groupId>com.googlecode.json-simple</groupId> - <artifactId>json-simple</artifactId> - </dependency> </dependencies> <!-- Maven plugin versions are mentioned in order to guarantee the build reproducibility in the long term --> diff --git a/src/main/java/org/springframework/samples/petclinic/PetClinicApplication.java b/src/main/java/org/springframework/samples/petclinic/PetClinicApplication.java index 470b622367dd6bfca078165f73630d493171ef13..d1b31feedf902811bf2aceda2e4dbdcaaad3fe41 100644 --- a/src/main/java/org/springframework/samples/petclinic/PetClinicApplication.java +++ b/src/main/java/org/springframework/samples/petclinic/PetClinicApplication.java @@ -16,36 +16,16 @@ package org.springframework.samples.petclinic; -import com.github.dandelion.core.web.DandelionFilter; -import com.github.dandelion.core.web.DandelionServlet; -import net.sf.ehcache.config.CacheConfiguration; -import net.sf.ehcache.config.PersistenceConfiguration; -import net.sf.ehcache.config.PersistenceConfiguration.Strategy; -import net.sf.ehcache.store.MemoryStoreEvictionPolicy; import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; -import org.springframework.boot.context.embedded.FilterRegistrationBean; -import org.springframework.boot.context.embedded.ServletRegistrationBean; import org.springframework.boot.context.web.SpringBootServletInitializer; -import org.springframework.cache.CacheManager; -import org.springframework.cache.annotation.CachingConfigurerSupport; -import org.springframework.cache.annotation.EnableCaching; -import org.springframework.cache.ehcache.EhCacheCacheManager; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.ComponentScan; -import org.springframework.context.annotation.Configuration; -import org.springframework.oxm.jaxb.Jaxb2Marshaller; -import org.springframework.samples.petclinic.model.Vets; -import org.springframework.web.servlet.view.xml.MarshallingView; /** * PetClinic Spring Boot Application. * */ -@Configuration -@EnableAutoConfiguration -@ComponentScan +@SpringBootApplication public class PetClinicApplication extends SpringBootServletInitializer { @Override diff --git a/src/main/java/org/springframework/samples/petclinic/config/CustomViewsConfiguration.java b/src/main/java/org/springframework/samples/petclinic/config/CustomViewsConfiguration.java deleted file mode 100644 index 9bfdd1cdc839cad1362dcec8ef52df3dbbf23f5e..0000000000000000000000000000000000000000 --- a/src/main/java/org/springframework/samples/petclinic/config/CustomViewsConfiguration.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright 2002-2016 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 org.springframework.samples.petclinic.config; - -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.oxm.jaxb.Jaxb2Marshaller; -import org.springframework.samples.petclinic.model.Vets; -import org.springframework.web.servlet.view.BeanNameViewResolver; -import org.springframework.web.servlet.view.xml.MarshallingView; - -/** - * - * {@link BeanNameViewResolver} is used to resolve the Atom and Xml views. So, the - * following beans names must match the name of the JSP you want to override and the - * file extension will indicate which bean to use for resolving. - * - */ -@Configuration -public class CustomViewsConfiguration { - - @Bean(name = "vets/vetList.xml") - public MarshallingView vetsXmlView() { - Jaxb2Marshaller marshaller = new Jaxb2Marshaller(); - marshaller.setClassesToBeBound(Vets.class); - return new MarshallingView(marshaller); - } -} diff --git a/src/main/java/org/springframework/samples/petclinic/web/VetController.java b/src/main/java/org/springframework/samples/petclinic/web/VetController.java index 3121e60e8bc6f20a675237ca830b18911b6056e7..54baf395aee3d6d9bfb6781a3423b3b6857e278d 100644 --- a/src/main/java/org/springframework/samples/petclinic/web/VetController.java +++ b/src/main/java/org/springframework/samples/petclinic/web/VetController.java @@ -18,6 +18,7 @@ package org.springframework.samples.petclinic.web; import java.util.Map; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.MediaType; import org.springframework.samples.petclinic.model.Vets; import org.springframework.samples.petclinic.service.ClinicService; import org.springframework.stereotype.Controller; @@ -41,7 +42,7 @@ public class VetController { this.clinicService = clinicService; } - @RequestMapping(value = {"/vets.xml", "/vets.html"}) + @RequestMapping(value = {"/vets.html"}) public String showVetList(Map<String, Object> model) { // Here we are returning an object of type 'Vets' rather than a collection of Vet objects // so it is simpler for Object-Xml mapping @@ -51,7 +52,7 @@ public class VetController { return "vets/vetList"; } - @RequestMapping("/vets.json") + @RequestMapping(value = {"/vets.json", "/vets.xml"}) public @ResponseBody Vets showResourcesVetList() { diff --git a/src/test/java/org/springframework/samples/petclinic/web/VetControllerTests.java b/src/test/java/org/springframework/samples/petclinic/web/VetControllerTests.java index c15ee2552e38b16851dd5338eb3516f2852e0ee0..6f77223919747ae1b88cd376ec3f1a4503e03e4e 100644 --- a/src/test/java/org/springframework/samples/petclinic/web/VetControllerTests.java +++ b/src/test/java/org/springframework/samples/petclinic/web/VetControllerTests.java @@ -1,5 +1,6 @@ package org.springframework.samples.petclinic.web; +import org.hamcrest.xml.HasXPath; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -14,6 +15,7 @@ import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.ResultActions; import org.springframework.test.web.servlet.setup.MockMvcBuilders; +import static org.hamcrest.xml.HasXPath.hasXPath; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*; @@ -36,14 +38,12 @@ public class VetControllerTests { this.mockMvc = MockMvcBuilders.standaloneSetup(vetController).build(); } - @Test - public void testShowVetListXml() throws Exception { - testShowVetList("/vets.xml"); - } - @Test public void testShowVetListHtml() throws Exception { - testShowVetList("/vets.html"); + mockMvc.perform(get("/vets.html")) + .andExpect(status().isOk()) + .andExpect(model().attributeExists("vets")) + .andExpect(view().name("vets/vetList")); } @Test @@ -54,12 +54,12 @@ public class VetControllerTests { .andExpect(jsonPath("$.vetList[0].id").value(1)); } - private void testShowVetList(String url) throws Exception { - mockMvc.perform(get(url)) + @Test + public void testShowVetListXml() throws Exception { + mockMvc.perform(get("/vets.xml").accept(MediaType.APPLICATION_XML)) .andExpect(status().isOk()) - .andExpect(model().attributeExists("vets")) - .andExpect(view().name("vets/vetList")); + .andExpect(content().contentType(MediaType.APPLICATION_XML_VALUE)) + .andExpect(content().node(hasXPath("/vets/vetList[id=1]/id"))); } - }