package net.whydah.admin.user; import com.fasterxml.jackson.databind.ObjectMapper; import net.whydah.admin.user.uib.UserAggregate; import net.whydah.admin.user.uib.UserAggregateRepresentation; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import javax.ws.rs.core.Context; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; import javax.ws.rs.core.UriInfo; /** * Endpoint for useraggregate. */ @Component @Path("/{applicationtokenid}/{usertokenid}/useraggregate") public class UserAggregateResource { private static final Logger log = LoggerFactory.getLogger(UserAggregateResource.class); private final UserService userAggregateService; private final ObjectMapper mapper; @Context private UriInfo uriInfo; @Autowired public UserAggregateResource(UserService userAggregateService) { this.userAggregateService = userAggregateService; this.mapper = new ObjectMapper(); } @GET @Path("/{uid}") @Produces(MediaType.APPLICATION_JSON + ";charset=utf-8") public Response getUserAggregateByUid(@PathParam("applicationtokenid") String applicationTokenId, @PathParam("usertokenid") String userTokenId, @PathParam("uid") String uid) { log.trace("getUserAggregateByUid with uid={}", uid); UserAggregate userAggregate; try { userAggregate = userAggregateService.getUserAggregateByUid(applicationTokenId, userTokenId, uid); if (userAggregate == null) { return Response.status(Response.Status.NOT_FOUND).entity("no user with uid" + uid).build(); } } catch (RuntimeException e) { log.error("", e); return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build(); } //TODO rewrite urls to point to UAS instead of UIB String json = UserAggregateRepresentation.fromUserAggregate(userAggregate).toJson(); return Response.ok(json).build(); /* try { String userResponse = mapper.writeValueAsString(userAggregate); return Response.ok(userResponse).build(); } catch (IOException e) { log.error("", e); return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build(); } */ } }