/******************************************************************************* * Copyright (c) 2012-2017 Codenvy, S.A. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Codenvy, S.A. - initial API and implementation *******************************************************************************/ package org.eclipse.che.api.user.server; import org.eclipse.che.api.core.rest.ServiceContext; import org.eclipse.che.api.core.rest.shared.dto.Link; import org.eclipse.che.api.user.shared.dto.ProfileDto; import javax.inject.Singleton; import javax.ws.rs.HttpMethod; import javax.ws.rs.core.UriBuilder; import java.util.ArrayList; import java.util.List; import static javax.ws.rs.core.MediaType.APPLICATION_JSON; import static org.eclipse.che.api.core.util.LinksHelper.createLink; import static org.eclipse.che.api.user.server.Constants.LINK_REL_CURRENT_PROFILE; import static org.eclipse.che.api.user.server.Constants.LINK_REL_CURRENT_PROFILE_ATTRIBUTES; import static org.eclipse.che.api.user.server.Constants.LINK_REL_PROFILE_ATTRIBUTES; import static org.eclipse.che.api.user.server.Constants.LINK_REL_SELF; /** * Creates and injects links to the {@link ProfileDto} object. * * @author Yevhenii Voevodin */ @Singleton public class ProfileLinksInjector { public ProfileDto injectLinks(ProfileDto profileDto, ServiceContext serviceContext) { final UriBuilder uriBuilder = serviceContext.getServiceUriBuilder(); final List<Link> links = new ArrayList<>(5); links.add(createLink(HttpMethod.GET, uriBuilder.clone() .path(ProfileService.class, "getCurrent") .build() .toString(), null, APPLICATION_JSON, LINK_REL_CURRENT_PROFILE)); links.add(createLink(HttpMethod.GET, uriBuilder.clone() .path(ProfileService.class, "getById") .build(profileDto.getUserId()) .toString(), null, APPLICATION_JSON, LINK_REL_SELF)); links.add(createLink(HttpMethod.PUT, uriBuilder.clone() .path(ProfileService.class, "updateAttributes") .build() .toString(), APPLICATION_JSON, APPLICATION_JSON, LINK_REL_CURRENT_PROFILE_ATTRIBUTES)); links.add(createLink(HttpMethod.DELETE, uriBuilder.clone() .path(ProfileService.class, "removeAttributes") .build(profileDto.getUserId()) .toString(), APPLICATION_JSON, APPLICATION_JSON, LINK_REL_CURRENT_PROFILE_ATTRIBUTES)); links.add(createLink(HttpMethod.PUT, uriBuilder.clone() .path(ProfileService.class, "updateAttributesById") .build(profileDto.getUserId()) .toString(), APPLICATION_JSON, APPLICATION_JSON, LINK_REL_PROFILE_ATTRIBUTES)); return profileDto.withLinks(links); } }