/******************************************************************************* * 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.core.util.LinksHelper; import org.eclipse.che.api.user.shared.dto.UserDto; 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_FORM_URLENCODED; import static javax.ws.rs.core.MediaType.APPLICATION_JSON; import static org.eclipse.che.api.user.server.Constants.LINK_REL_CURRENT_USER; import static org.eclipse.che.api.user.server.Constants.LINK_REL_CURRENT_USER_PASSWORD; import static org.eclipse.che.api.user.server.Constants.LINK_REL_CURRENT_USER_SETTINGS; import static org.eclipse.che.api.user.server.Constants.LINK_REL_PREFERENCES; import static org.eclipse.che.api.user.server.Constants.LINK_REL_PROFILE; import static org.eclipse.che.api.user.server.Constants.LINK_REL_SELF; /** * Helps to inject {@link UserService} related links. * * @author Anatoliy Bazko * @author Yevhenii Voevodin */ @Singleton public class UserLinksInjector { public UserDto injectLinks(UserDto userDto, ServiceContext serviceContext) { final UriBuilder uriBuilder = serviceContext.getBaseUriBuilder(); final List<Link> links = new ArrayList<>(6); links.add(LinksHelper.createLink(HttpMethod.GET, uriBuilder.clone() .path(UserService.class) .path(UserService.class, "getById") .build(userDto.getId()) .toString(), null, APPLICATION_JSON, LINK_REL_SELF)); links.add(LinksHelper.createLink(HttpMethod.GET, uriBuilder.clone() .path(UserService.class) .path(UserService.class, "getCurrent") .build() .toString(), null, APPLICATION_JSON, LINK_REL_CURRENT_USER)); links.add(LinksHelper.createLink(HttpMethod.POST, uriBuilder.clone() .path(UserService.class) .path(UserService.class, "updatePassword") .build() .toString(), APPLICATION_FORM_URLENCODED, null, LINK_REL_CURRENT_USER_PASSWORD)); links.add(LinksHelper.createLink(HttpMethod.GET, uriBuilder.clone() .path(ProfileService.class) .path(ProfileService.class, "getById") .build(userDto.getId()) .toString(), null, APPLICATION_JSON, LINK_REL_PROFILE)); links.add(LinksHelper.createLink(HttpMethod.GET, uriBuilder.clone() .path(UserService.class) .path(UserService.class, "getSettings") .build() .toString(), null, APPLICATION_JSON, LINK_REL_CURRENT_USER_SETTINGS)); links.add(LinksHelper.createLink(HttpMethod.GET, uriBuilder.clone().path(PreferencesService.class) .path(PreferencesService.class, "find") .build() .toString(), null, APPLICATION_JSON, LINK_REL_PREFERENCES)); return userDto.withLinks(links); } }