diff --git a/pom.xml b/pom.xml index b082009b9..a1180cfd2 100644 --- a/pom.xml +++ b/pom.xml @@ -44,8 +44,7 @@ 1.1.2 1.7.10 - - 1.5.0 + 0.9.1 @@ -107,6 +106,7 @@ ${jaxb-impl.version} provided + com.jayway.jsonpath json-path @@ -123,6 +123,7 @@ org.springframework * + @@ -174,7 +175,18 @@ ${spring-framework.version} - + + org.aspectj + aspectjrt + ${aspectj.version} + + + org.aspectj + aspectjweaver + ${aspectj.version} + runtime + + - - com.rometools - rome - ${rome.version} - @@ -299,19 +304,6 @@ ${assertj.version} - - org.aspectj - aspectjrt - ${aspectj.version} - - - org.aspectj - aspectjweaver - ${aspectj.version} - runtime - - - com.github.dandelion 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 3a6c052ea..ea844ecd1 100644 --- a/src/main/java/org/springframework/samples/petclinic/web/VetController.java +++ b/src/main/java/org/springframework/samples/petclinic/web/VetController.java @@ -22,6 +22,7 @@ import org.springframework.samples.petclinic.model.Vets; import org.springframework.samples.petclinic.service.ClinicService; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; /** * @author Juergen Hoeller @@ -40,7 +41,7 @@ public class VetController { this.clinicService = clinicService; } - @RequestMapping("/vets") + @RequestMapping(value="/vets.xml") 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 @@ -49,6 +50,15 @@ public class VetController { model.put("vets", vets); return "vets/vetList"; } + + @RequestMapping("/vets.json") + public @ResponseBody Vets showResourcesVetList() { + // Here we are returning an object of type 'Vets' rather than a collection of Vet objects + // so it is simpler for JSon/Object mapping + Vets vets = new Vets(); + vets.getVetList().addAll(this.clinicService.findVets()); + return vets; + } } diff --git a/src/main/java/org/springframework/samples/petclinic/web/VetsAtomView.java b/src/main/java/org/springframework/samples/petclinic/web/VetsAtomView.java deleted file mode 100644 index bf26c3900..000000000 --- a/src/main/java/org/springframework/samples/petclinic/web/VetsAtomView.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright 2002-2013 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.web; - -import com.rometools.rome.feed.atom.Entry; -import com.rometools.rome.feed.atom.Feed; -import com.rometools.rome.feed.atom.Content; -import org.springframework.samples.petclinic.model.Vet; -import org.springframework.samples.petclinic.model.Vets; -import org.springframework.web.servlet.view.feed.AbstractAtomFeedView; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; - - -/** - * A view creating a Atom representation from a list of Visit objects. - * - * @author Alef Arendsen - * @author Arjen Poutsma - */ -public class VetsAtomView extends AbstractAtomFeedView { - - @Override - protected void buildFeedMetadata(Map model, Feed feed, HttpServletRequest request) { - feed.setId("tag:springsource.org"); - feed.setTitle("Veterinarians"); - //feed.setUpdated(date); - } - - @Override - protected List buildFeedEntries(Map model, - HttpServletRequest request, HttpServletResponse response) throws Exception { - - Vets vets = (Vets) model.get("vets"); - List vetList = vets.getVetList(); - List entries = new ArrayList(vetList.size()); - - for (Vet vet : vetList) { - Entry entry = new Entry(); - // see http://diveintomark.org/archives/2004/05/28/howto-atom-id#other - entry.setId(String.format("tag:springsource.org,%s", vet.getId())); - entry.setTitle(String.format("Vet: %s %s", vet.getFirstName(), vet.getLastName())); - //entry.setUpdated(visit.getDate().toDate()); - - Content summary = new Content(); - summary.setValue(vet.getSpecialties().toString()); - entry.setSummary(summary); - - entries.add(entry); - } - response.setContentType("blabla"); - return entries; - - } - -} diff --git a/src/main/resources/spring/mvc-view-config.xml b/src/main/resources/spring/mvc-view-config.xml index 205f7ffce..f097a1024 100644 --- a/src/main/resources/spring/mvc-view-config.xml +++ b/src/main/resources/spring/mvc-view-config.xml @@ -27,10 +27,6 @@ - - - - diff --git a/src/main/webapp/WEB-INF/jsp/vets/vetList.jsp b/src/main/webapp/WEB-INF/jsp/vets/vetList.jsp index bfcb985fe..040679c28 100644 --- a/src/main/webapp/WEB-INF/jsp/vets/vetList.jsp +++ b/src/main/webapp/WEB-INF/jsp/vets/vetList.jsp @@ -34,7 +34,7 @@ ">View as XML - ">Subscribe to Atom feed + ">View as JSon diff --git a/src/test/java/org/springframework/samples/petclinic/web/VetControllerTest.java b/src/test/java/org/springframework/samples/petclinic/web/VetControllerTest.java new file mode 100644 index 000000000..be3ce0d44 --- /dev/null +++ b/src/test/java/org/springframework/samples/petclinic/web/VetControllerTest.java @@ -0,0 +1,53 @@ +package org.springframework.samples.petclinic.web; + +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; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.MediaType; +import org.springframework.test.context.ActiveProfiles; +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.ResultActions; +import org.springframework.test.web.servlet.setup.MockMvcBuilders; +import org.springframework.web.context.WebApplicationContext; + +/** + * Test class for the UserResource REST controller. + * + * @see UserResource + */ +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration({"classpath:spring/business-config.xml", "classpath:spring/tools-config.xml", "classpath:spring/mvc-core-config.xml"}) +@WebAppConfiguration +@ActiveProfiles("spring-data-jpa") +public class VetControllerTest { + + @Autowired + private VetController vetController; + + @Autowired + private WebApplicationContext ctx; + + private MockMvc mockMvc; + + @Before + public void setup() { + this.mockMvc = MockMvcBuilders.standaloneSetup(vetController).build(); + } + + @Test + public void testGetExistingUser() throws Exception { + ResultActions actions = mockMvc.perform(get("/vets.json").accept(MediaType.APPLICATION_JSON)) + .andExpect(status().isOk()); + actions.andExpect(content().contentType("application/json;charset=UTF-8")) + .andExpect(jsonPath("$.vetList[0].id").value(1)); + } +}