package de.twenty11.skysail.server.ext.jenkins.internal;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import org.restlet.Context;
import de.twenty11.skysail.server.core.restlet.RouteBuilder;
import de.twenty11.skysail.server.ext.jenkins.AddJenkinsResource;
import de.twenty11.skysail.server.ext.jenkins.JenkinsResource;
import de.twenty11.skysail.server.ext.jenkins.JobsResource;
import de.twenty11.skysail.server.ext.jenkins.MyRootResource;
import de.twenty11.skysail.server.restlet.SkysailApplication;
import de.twenty11.skysail.server.services.ApplicationProvider;
/**
* @author carsten
*
*/
public class MyApplication extends SkysailApplication implements ApplicationProvider {
private EntityManagerFactory emf;
// non-arg constructor needed for scr
public MyApplication() {
this(null, null);
}
/**
* @param staticPathTemplate
* @param bundleContext
*/
public MyApplication(Context componentContext, EntityManagerFactory emf) {
super();
if (getContext() != null) {
setContext(getContext().createChildContext());
}
setDescription("RESTful Jenkins bundle");
setOwner("twentyeleven");
setName("jenkins");
this.emf = emf;
}
protected void attach() {
// @formatter:off
router.attach(new RouteBuilder("", MyRootResource.class).setVisible(false));
router.attach(new RouteBuilder("/installation", JenkinsResource.class).setVisible(true));
router.attach(new RouteBuilder("/installation/", AddJenkinsResource.class).setText("Add Jenkins Installation"));
router.attach(new RouteBuilder("/installation/{name}/jobs", JobsResource.class).setVisible(false));
// @formatter:on
}
public EntityManager getEntityManager() {
return this.emf != null ? this.emf.createEntityManager() : null;
}
}