Author: sergeyb Date: Mon Mar 25 18:43:55 2013 New Revision: 1460835 URL: http://svn.apache.org/r1460835 Log: Merged revisions 1460707 via svnmerge from https://svn.apache.org/repos/asf/cxf/trunk
........ r1460707 | sergeyb | 2013-03-25 18:08:35 +0300 (Mon, 25 Mar 2013) | 1 line Merge branch 'jaxrs-responsebuilder-link' of https://github.com/stain/cxf into trunk ........ Modified: cxf/branches/2.7.x-fixes/ (props changed) cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/ResponseBuilderImpl.java cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/ResponseBuilderImplTest.java Propchange: cxf/branches/2.7.x-fixes/ ------------------------------------------------------------------------------ Merged /cxf/trunk:r1460707 Propchange: cxf/branches/2.7.x-fixes/ ------------------------------------------------------------------------------ Binary property 'svnmerge-integrated' - no diff available. Modified: cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/ResponseBuilderImpl.java URL: http://svn.apache.org/viewvc/cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/ResponseBuilderImpl.java?rev=1460835&r1=1460834&r2=1460835&view=diff ============================================================================== --- cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/ResponseBuilderImpl.java (original) +++ cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/ResponseBuilderImpl.java Mon Mar 25 18:43:55 2013 @@ -257,55 +257,54 @@ public final class ResponseBuilderImpl e @Override public ResponseBuilder allow(String... arg0) { - // TODO Auto-generated method stub - return null; + // TODO: Implement + throw new UnsupportedOperationException("Not implemented"); } @Override public ResponseBuilder allow(Set<String> arg0) { - // TODO Auto-generated method stub - return null; + // TODO: Implement + throw new UnsupportedOperationException("Not implemented"); } @Override public ResponseBuilder encoding(String arg0) { - // TODO Auto-generated method stub - return null; + // TODO: Implement + throw new UnsupportedOperationException("Not implemented"); } @Override public ResponseBuilder entity(Object arg0, Annotation[] arg1) { - // TODO Auto-generated method stub - return null; + // TODO: Implement + throw new UnsupportedOperationException("Not implemented"); } @Override - public ResponseBuilder link(URI arg0, String arg1) { - // TODO Auto-generated method stub - return null; + public ResponseBuilder link(URI href, String rel) { + Link.Builder linkBuilder = new Link.Builder(); + return links(linkBuilder.uri(href).rel(rel).build()); } @Override - public ResponseBuilder link(String arg0, String arg1) { - // TODO Auto-generated method stub - return null; + public ResponseBuilder link(String href, String rel) { + Link.Builder linkBuilder = new Link.Builder(); + return links(linkBuilder.uri(href).rel(rel).build()); } @Override - public ResponseBuilder links(Link... arg0) { - // TODO Auto-generated method stub - return null; + public ResponseBuilder links(Link... links) { + return addHeader(HttpHeaders.LINK, (Object[])links); } @Override public ResponseBuilder replaceAll(MultivaluedMap<String, Object> arg0) { - // TODO Auto-generated method stub - return null; + // TODO: Implement + throw new UnsupportedOperationException("Not implemented"); } @Override public ResponseBuilder variants(Variant... arg0) { - // TODO Auto-generated method stub - return null; + // TODO: Implement + throw new UnsupportedOperationException("Not implemented"); } } Modified: cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/ResponseBuilderImplTest.java URL: http://svn.apache.org/viewvc/cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/ResponseBuilderImplTest.java?rev=1460835&r1=1460834&r2=1460835&view=diff ============================================================================== --- cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/ResponseBuilderImplTest.java (original) +++ cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/ResponseBuilderImplTest.java Mon Mar 25 18:43:55 2013 @@ -27,13 +27,13 @@ import java.util.Locale; import javax.ws.rs.core.EntityTag; import javax.ws.rs.core.HttpHeaders; +import javax.ws.rs.core.Link; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.NewCookie; import javax.ws.rs.core.Response; import javax.ws.rs.core.Variant; import org.apache.cxf.jaxrs.utils.HttpUtils; - import org.junit.Assert; import org.junit.Test; @@ -82,6 +82,78 @@ public class ResponseBuilderImplTest ext } @Test + public void testLinkStr() { + MetadataMap<String, Object> m = new MetadataMap<String, Object>(); + m.putSingle("Link", "<http://example.com/page3>;rel=next"); + checkBuild(Response.ok().link("http://example.com/page3", "next").build(), 200, null, m); + } + + @Test + public void testLinkStrMultiple() { + MetadataMap<String, Object> m = new MetadataMap<String, Object>(); + m.add("Link", "<http://example.com/page1>;rel=previous"); + m.add("Link", "<http://example.com/page3>;rel=next"); + checkBuild(Response.ok().link("http://example.com/page1", "previous") + .link("http://example.com/page3", "next").build(), 200, null, m); + } + + @Test + public void testLinkStrMultipleSameRel() { + MetadataMap<String, Object> m = new MetadataMap<String, Object>(); + m.add("Link", "<http://example.com/page2.pdf>;rel=alternate"); + m.add("Link", "<http://example.com/page2.txt>;rel=alternate"); + checkBuild(Response.ok().link("http://example.com/page2.pdf", "alternate") + .link("http://example.com/page2.txt", "alternate").build(), 200, null, m); + } + + @Test + public void testLinkURI() { + MetadataMap<String, Object> m = new MetadataMap<String, Object>(); + URI uri = URI.create("http://example.com/page3"); + m.putSingle("Link", "<http://example.com/page3>;rel=next"); + checkBuild(Response.ok().link(uri, "next").build(), 200, null, m); + } + + @Test + public void testLinks() { + MetadataMap<String, Object> m = new MetadataMap<String, Object>(); + m.add("Link", "<http://example.com/page1>;rel=previous"); + m.add("Link", "<http://example.com/page3>;rel=next"); + Link.Builder linkBuilder = new Link.Builder(); + Link prevLink = linkBuilder.uri("http://example.com/page1").rel("previous").build(); + // Reset linkbuilder + linkBuilder = new Link.Builder(); + Link nextLink = linkBuilder.uri("http://example.com/page3").rel("next").build(); + checkBuild(Response.ok().links(prevLink, nextLink).build(), 200, null, m); + } + + @Test + public void testLinksNoReset() { + MetadataMap<String, Object> m = new MetadataMap<String, Object>(); + m.add("Link", "<http://example.com/page1>;rel=previous"); + m.add("Link", "<http://example.com/page3>;rel=next"); + Link.Builder linkBuilder = new Link.Builder(); + Link prevLink = linkBuilder.uri("http://example.com/page1").rel("previous").build(); + linkBuilder = new Link.Builder(); + Link nextLink = linkBuilder.uri("http://example.com/page3").rel("next").build(); + checkBuild(Response.ok().links(prevLink).links(nextLink).build(), 200, null, m); + } + + @Test + public void testLinksWithReset() { + MetadataMap<String, Object> m = new MetadataMap<String, Object>(); + m.add("Link", "<http://example.com/page3>;rel=next"); + Link.Builder linkBuilder = new Link.Builder(); + Link prevLink = linkBuilder.uri("http://example.com/page1").rel("previous").build(); + linkBuilder = new Link.Builder(); + Link nextLink = linkBuilder.uri("http://example.com/page3").rel("next").build(); + // CHECK: Should .links() do a reset? Undocumented feature; so we'll + // test with the awkward <code>(Link[])null</code> instead.. + // Note: .cookie() has same behavior. + checkBuild(Response.ok().links(prevLink).links((Link[])null).links(nextLink).build(), 200, null, m); + } + + @Test public void testAddHeader() { MetadataMap<String, Object> m = new MetadataMap<String, Object>(); m.putSingle("Content-Language", "en");
