Skip to content

Commit

Permalink
using LinkHeader from Jersey lib
Browse files Browse the repository at this point in the history
  • Loading branch information
jaimecasero committed Jan 23, 2018
1 parent bad6395 commit 88ac023
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 22 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.sun.jersey.core.header.LinkHeader;
import com.sun.jersey.core.header.LinkHeader.LinkHeaderBuilder;
import com.sun.jersey.core.util.MultivaluedMapImpl;
import com.thoughtworks.xstream.XStream;
import org.apache.commons.configuration.Configuration;
Expand Down Expand Up @@ -65,7 +67,6 @@
import java.net.URI;
import java.util.ArrayList;
import java.util.List;
import javax.ws.rs.core.Link;

import static javax.ws.rs.core.MediaType.APPLICATION_JSON;
import static javax.ws.rs.core.MediaType.APPLICATION_JSON_TYPE;
Expand Down Expand Up @@ -169,11 +170,11 @@ private Account createFrom(final Sid accountSid, final MultivaluedMap<String, St
return new Account(sid, now, now, emailAddress, friendlyName, accountSid, type, status, authToken, role, uri, organizationSid);
}

public Link composeLink(Sid targetSid, UriInfo info) {
public LinkHeader composeLink(Sid targetSid, UriInfo info) {
String sid = targetSid.toString();
URI uri = info.getBaseUriBuilder().path(ProfileJsonEndpoint.class).path(sid).build();
Link.Builder link = Link.fromUri(uri).title("Profiles");
return link.type(PROFILE_REL_TYPE).build();
LinkHeaderBuilder link = LinkHeader.uri(uri).parameter("title", "Profiles");
return link.type(MediaType.valueOf(PROFILE_REL_TYPE)).build();
}

protected Response getAccount(final String accountSid, final MediaType responseType, UriInfo info) {
Expand Down Expand Up @@ -203,7 +204,7 @@ protected Response getAccount(final String accountSid, final MediaType responseT
Response.ResponseBuilder ok = Response.ok();
ProfileAssociation profileAssociationByTargetSid = profileAssociationsDao.getProfileAssociationByTargetSid(accountSid);
if (profileAssociationByTargetSid != null) {
Link profileLink = composeLink(profileAssociationByTargetSid.getProfileSid(), info);
LinkHeader profileLink = composeLink(profileAssociationByTargetSid.getProfileSid(), info);
ok.header(ProfileEndpoint.LINK_HEADER, profileLink.toString());
}
if (APPLICATION_XML_TYPE == responseType) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,9 +56,9 @@

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.sun.jersey.core.header.LinkHeader;
import com.thoughtworks.xstream.XStream;
import java.net.URI;
import javax.ws.rs.core.Link;
import org.restcomm.connect.dao.DaoManager;
import org.restcomm.connect.dao.ProfileAssociationsDao;
import org.restcomm.connect.dao.entities.ProfileAssociation;
Expand Down Expand Up @@ -126,11 +126,11 @@ private void registerConverters(){
xstream.registerConverter(new RestCommResponseConverter(configuration));
}

public Link composeLink(Sid targetSid, UriInfo info) {
public LinkHeader composeLink(Sid targetSid, UriInfo info) {
String sid = targetSid.toString();
URI uri = info.getBaseUriBuilder().path(ProfileJsonEndpoint.class).path(sid).build();
Link.Builder link = Link.fromUri(uri).title("Profiles");
return link.type(PROFILE_REL_TYPE).build();
LinkHeader.LinkHeaderBuilder link = LinkHeader.uri(uri).parameter("title", "Profiles");
return link.type(MediaType.valueOf(PROFILE_REL_TYPE)).build();
}

/**
Expand Down Expand Up @@ -170,7 +170,7 @@ protected Response getOrganization(final String organizationSid, final MediaType
Response.ResponseBuilder ok = Response.ok();
ProfileAssociation profileAssociationByTargetSid = profileAssociationsDao.getProfileAssociationByTargetSid(organizationSid);
if (profileAssociationByTargetSid != null) {
Link profileLink = composeLink(profileAssociationByTargetSid.getProfileSid(), info);
LinkHeader profileLink = composeLink(profileAssociationByTargetSid.getProfileSid(), info);
ok.header(ProfileEndpoint.LINK_HEADER, profileLink.toString());
}
if (APPLICATION_XML_TYPE == responseType) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,8 @@
import java.util.List;
import com.github.fge.jackson.JsonLoader;
import com.github.fge.jsonschema.core.report.ProcessingReport;
import com.sun.jersey.core.header.LinkHeader;
import com.sun.jersey.core.header.LinkHeader.LinkHeaderBuilder;
import java.net.MalformedURLException;
import java.nio.charset.Charset;
import java.nio.file.Path;
Expand All @@ -37,7 +39,6 @@
import javax.servlet.ServletContext;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.Link;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriInfo;
Expand Down Expand Up @@ -108,7 +109,7 @@ public Response getProfiles(UriInfo info) {

public Response unlinkProfile(String profileSidStr, HttpHeaders headers) {
List<String> requestHeader = checkLinkHeader(headers);
Link link = Link.valueOf(requestHeader.get(0));
LinkHeader link = LinkHeader.valueOf(requestHeader.get(0));
checkRelType(link);
String targetSid = retrieveSid(link.getUri());
profileAssociationsDao.deleteProfileAssociationByTargetSid(targetSid);
Expand All @@ -120,7 +121,7 @@ private String retrieveSid(URI uri) {
return paths.getName(paths.getNameCount() - 1).toString();
}

private void checkRelType(Link link) {
private void checkRelType(LinkHeader link) {
if (!link.getRel().equals(PROFILE_REL_TYPE)) {
throw new ResourceAccountMissmatch("rel type not supported");
}
Expand All @@ -136,7 +137,7 @@ private List<String> checkLinkHeader(HttpHeaders headers) {

public Response linkProfile(String profileSidStr, HttpHeaders headers, UriInfo uriInfo) {
List<String> requestHeader = checkLinkHeader(headers);
Link link = Link.valueOf(requestHeader.get(0));
LinkHeader link = LinkHeader.valueOf(requestHeader.get(0));
checkRelType(link);
Sid targetSid = new Sid(retrieveSid(link.getUri()));
Sid profileSid = new Sid(profileSidStr);
Expand Down Expand Up @@ -182,28 +183,28 @@ public Response updateProfile(String profileSid, InputStream body) {
}
}

public Link composeSchemaLink(UriInfo info) throws MalformedURLException {
public LinkHeader composeSchemaLink(UriInfo info) throws MalformedURLException {
URI build = info.getBaseUriBuilder().path("rc-profile-schema").build();
return Link.fromUri(build).rel(DESCRIBED_REL_TYPE).build();
return LinkHeader.uri(build).rel(DESCRIBED_REL_TYPE).build();
}

public Link composeLink(Sid targetSid, UriInfo info) throws MalformedURLException {
public LinkHeader composeLink(Sid targetSid, UriInfo info) throws MalformedURLException {
String sid = targetSid.toString();
URI uri = null;
Link.Builder link = null;
LinkHeaderBuilder link = null;
switch (sid.substring(1, 2)) {
case "AC":
uri = info.getBaseUriBuilder().path(AccountsJsonEndpoint.class).path(sid).build();
link = Link.fromUri(uri).title("Accounts");
link = LinkHeader.uri(uri).parameter("title","Accounts");
break;
case "OR":
uri = info.getBaseUriBuilder().path(OrganizationsJsonEndpoint.class).path(sid).build();
link = Link.fromUri(uri).title("Organizations");
link = LinkHeader.uri(uri).parameter("title","Organizations");
break;
default:
}
if (link != null) {
return link.type(PROFILE_REL_TYPE).build();
return link.type(MediaType.valueOf(PROFILE_REL_TYPE)).build();
} else {
return null;
}
Expand All @@ -215,7 +216,7 @@ public Response getProfile(String profileSid, UriInfo info) {
Response.ResponseBuilder ok = Response.ok(profile.getProfileDocument());
List<ProfileAssociation> profileAssociationsByProfileSid = profileAssociationsDao.getProfileAssociationsByProfileSid(profileSid);
for (ProfileAssociation assoc : profileAssociationsByProfileSid) {
Link composeLink = composeLink(assoc.getTargetSid(), info);
LinkHeader composeLink = composeLink(assoc.getTargetSid(), info);
ok.header(LINK_HEADER, composeLink.toString());
}
ok.header(LINK_HEADER, composeSchemaLink(info));
Expand Down

0 comments on commit 88ac023

Please sign in to comment.