package de.twenty11.skysail.server.ext.jenkins;
import java.util.Set;
import javax.persistence.EntityManager;
import javax.validation.ConstraintViolation;
import org.restlet.data.Form;
import org.restlet.resource.Get;
import org.restlet.resource.Post;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import de.twenty11.skysail.common.Presentation;
import de.twenty11.skysail.common.PresentationStyle;
import de.twenty11.skysail.common.responses.FormResponse;
import de.twenty11.skysail.common.responses.SkysailResponse;
import de.twenty11.skysail.server.ext.jenkins.internal.MyApplication;
import de.twenty11.skysail.server.restlet.UniqueResultServerResource;
@Presentation(preferred = PresentationStyle.EDIT)
public class AddJenkinsResource extends UniqueResultServerResource<JenkinsDetails> {
/** slf4j based logger implementation */
private static Logger logger = LoggerFactory.getLogger(AddJenkinsResource.class);
public AddJenkinsResource() {
setName("new jenkins installation ");
setDescription("Providing a form to add a new jenkins installation");
}
@Get("html")
public FormResponse<JenkinsDetails> getJenkinsForm() {
JenkinsDetails details = new JenkinsDetails();
setMessage("Adding new Jenkins Installation");
return new FormResponse<JenkinsDetails>(details, "../installation/");
}
@Post("x-www-form-urlencoded:html")
public SkysailResponse<JenkinsDetails> addConnection(Form form) {
logger.info("trying to persist connection");
EntityManager em = ((MyApplication) getApplication()).getEntityManager();
JenkinsDetails details = new JenkinsDetails(form.getFirstValue("name"), form.getFirstValue("location"));
Set<ConstraintViolation<JenkinsDetails>> constraintViolations = getValidator().validate(details);
return addEntity(em, details, constraintViolations);
}
}