Fix for #14 where links in linked entities weren't being rendered correctly.

Also added another entity and Repository to push the Person entity down another step in the hierarchy to test this. This change mirrors the one I did to fix #12.
This commit is contained in:
Jon Brisbin
2012-05-23 10:03:50 -05:00
parent 987e386aba
commit 9fb07a0fe5
4 changed files with 61 additions and 7 deletions

View File

@@ -899,7 +899,9 @@ public class RepositoryRestController
Map<String, Object> entityDto = extractPropertiesLinkAware(linkedRepoMeta.rel(),
linkedEntity,
linkedRepoMeta.entityMetadata(),
baseUri);
buildUri(baseUri,
linkedRepoMeta.name(),
linkedId));
URI selfUri = addSelfLink(baseUri, entityDto, linkedRepoMeta.name(), linkedId);
HttpHeaders headers = new HttpHeaders();

View File

@@ -0,0 +1,40 @@
package org.springframework.data.rest.test.webmvc;
import java.util.List;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToMany;
/**
* @author Jon Brisbin <jon@jbrisbin.com>
*/
@Entity
public class Family {
@Id @GeneratedValue private Long id;
private String surname;
@OneToMany
private List<Person> members;
public Long getId() {
return id;
}
public String getSurname() {
return surname;
}
public void setSurname(String surname) {
this.surname = surname;
}
public List<Person> getMembers() {
return members;
}
public void setMembers(List<Person> members) {
this.members = members;
}
}

View File

@@ -0,0 +1,9 @@
package org.springframework.data.rest.test.webmvc;
import org.springframework.data.repository.CrudRepository;
/**
* @author Jon Brisbin <jon@jbrisbin.com>
*/
public interface FamilyRepository extends CrudRepository<Family, Long> {
}

View File

@@ -1,11 +1,14 @@
#!/bin/sh
curl -d '{"name" : "John Doe"}' -H "Content-Type: application/json" http://localhost:8080/person
curl -d '{"name" : "Jane Doe"}' -H "Content-Type: application/json" http://localhost:8080/person
curl -d '{"surname" : "Doe"}' -H "Content-Type: application/json" http://localhost:8080/family
curl -d '{"name" : "John Doe"}' -H "Content-Type: application/json" http://localhost:8080/people
curl -d '{"name" : "Jane Doe"}' -H "Content-Type: application/json" http://localhost:8080/people
curl -d 'http://localhost:8080/people/1
http://localhost:8080/people/2' -H "Content-Type: text/uri-list" http://localhost:8080/family/1/members
curl -d '{"postalCode":"12345","province":"MO","lines":["1 W 1st St."],"city":"Univille"}' -H "Content-Type: application/json" http://localhost:8080/address
curl -d "http://localhost:8080/address/1" -H "Content-Type: text/uri-list" http://localhost:8080/person/1/addresses
curl -d "http://localhost:8080/address/1" -H "Content-Type: text/uri-list" http://localhost:8080/people/1/addresses
curl -d '{"postalCode":"54321","province":"MO","lines":["2 W 1st St."],"city":"Univille"}' -H "Content-Type: application/json" http://localhost:8080/address
curl -d "http://localhost:8080/address/2" -H "Content-Type: text/uri-list" http://localhost:8080/person/2/addresses
curl -d "http://localhost:8080/address/2" -H "Content-Type: text/uri-list" http://localhost:8080/people/2/addresses
curl -d '{"type" : "twitter", "url": "#!/johndoe"}' -H "Content-Type: application/json" http://localhost:8080/profile
curl -d "http://localhost:8080/profile/1" -H "Content-Type: text/uri-list" http://localhost:8080/person/1/profiles
curl -d "http://localhost:8080/profile/1" -H "Content-Type: text/uri-list" http://localhost:8080/people/1/profiles
curl -d '{"type" : "facebook", "url": "/janedoe"}' -H "Content-Type: application/json" http://localhost:8080/profile
curl -d '{"_links": [{"rel":"facebook", "href": "http://localhost:8080/profile/2"}]}' -H "Content-Type: application/json" http://localhost:8080/person/2/profiles
curl -d '{"_links": [{"rel":"facebook", "href": "http://localhost:8080/profile/2"}]}' -H "Content-Type: application/json" http://localhost:8080/people/2/profiles