diff --git a/pom.xml b/pom.xml index 277927bfa..3aef08369 100644 --- a/pom.xml +++ b/pom.xml @@ -70,12 +70,6 @@ org.springframework spring-context-support - - org.springframework - spring-oxm - - - @@ -204,12 +198,6 @@ datatables-export-itext ${dandelion.datatables.version} - - - com.googlecode.json-simple - json-simple - diff --git a/src/main/java/org/springframework/samples/petclinic/PetClinicApplication.java b/src/main/java/org/springframework/samples/petclinic/PetClinicApplication.java index 470b62236..d1b31feed 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 9bfdd1cdc..000000000 --- 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 3121e60e8..54baf395a 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 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 c15ee2552..6f7722391 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"))); } - }