package com.jivesoftware.os.amza.sync.deployable;
import com.jivesoftware.os.amza.api.partition.PartitionName;
import com.jivesoftware.os.amza.sync.deployable.region.AmzaStatusRegionInput;
import com.jivesoftware.os.mlogger.core.MetricLogger;
import com.jivesoftware.os.mlogger.core.MetricLoggerFactory;
import java.nio.charset.StandardCharsets;
import javax.inject.Singleton;
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;
/**
*
*/
@Singleton
@Path("/ui")
public class AmzaSyncUIEndpoints {
private static final MetricLogger LOG = MetricLoggerFactory.getLogger();
private final AmzaSyncUIService syncUIService;
public AmzaSyncUIEndpoints(@Context AmzaSyncUIService syncUIService) {
this.syncUIService = syncUIService;
}
@GET
@Path("/")
@Produces(MediaType.TEXT_HTML)
public Response get() {
try {
String rendered = syncUIService.render();
return Response.ok(rendered).build();
} catch (Throwable t) {
LOG.error("Failed to get", t);
return Response.serverError().build();
}
}
@GET
@Path("/status")
@Produces(MediaType.TEXT_HTML)
public Response getStatus() {
try {
String rendered = syncUIService.renderStatus(null);
return Response.ok(rendered).build();
} catch (Throwable t) {
LOG.error("Failed to getStatus", t);
return Response.serverError().build();
}
}
@GET
@Path("/status/{syncspaceName}/{ringName}/{partitionName}")
@Produces(MediaType.TEXT_HTML)
public Response getStatus(@PathParam("syncspaceName") String syncspaceName,
@PathParam("ringName") String ringName,
@PathParam("partitionName") String partitionName) {
try {
String rendered = syncUIService.renderStatus(new AmzaStatusRegionInput(syncspaceName,
new PartitionName(false,
ringName.getBytes(StandardCharsets.UTF_8),
partitionName.getBytes(StandardCharsets.UTF_8))));
return Response.ok(rendered).build();
} catch (Throwable t) {
LOG.error("Failed to getStatus({}, {}, {})", new Object[] { syncspaceName, ringName, partitionName }, t);
return Response.serverError().build();
}
}
}