package de.twenty11.skysail.server.ext.jgit.internal; import java.util.HashMap; import java.util.Map; import javax.persistence.EntityManagerFactory; import org.osgi.service.cm.ConfigurationException; import org.osgi.service.component.ComponentContext; import org.restlet.Context; import org.restlet.routing.Router; import org.restlet.routing.Template; import de.twenty11.skysail.common.commands.Command; import de.twenty11.skysail.server.core.restlet.RouteBuilder; import de.twenty11.skysail.server.ext.jgit.AddLocalRepositoryResource; import de.twenty11.skysail.server.ext.jgit.ExecuteMavenCommand; import de.twenty11.skysail.server.ext.jgit.ListDirResource; import de.twenty11.skysail.server.ext.jgit.LocalRepositoriesResource; import de.twenty11.skysail.server.ext.jgit.LocalRepositoryResource; import de.twenty11.skysail.server.ext.jgit.MyRootResource; import de.twenty11.skysail.server.ext.jgit.ShowFileResource; import de.twenty11.skysail.server.restlet.SkysailApplication; import de.twenty11.skysail.server.services.ApplicationProvider; /** * @author carsten * */ public class MyApplication extends SkysailApplication implements ApplicationProvider{ private DbRepository repository; private EntityManagerFactory emf; public MyApplication() { // if (getContext() != null) { // setContext(getContext().createChildContext()); // } setDescription("RESTful Jenkins bundle"); setOwner("twentyeleven"); setName("jgit"); //repository = new Repository(emf); } protected void attach() { // make sure to match proper resource even if request url contains add. information router.setDefaultMatchingMode(Template.MODE_STARTS_WITH); router.setRoutingMode(Router.MODE_LAST_MATCH); // @formatter:off router.attach(new RouteBuilder("", MyRootResource.class).setVisible(false)); router.attach(new RouteBuilder("/repos", LocalRepositoriesResource.class).setText("Local Repositories")); router.attach(new RouteBuilder("/repos/", AddLocalRepositoryResource.class).setVisible(false)); router.attach(new RouteBuilder("/repos/{id}", LocalRepositoryResource.class).setVisible(false)); router.attach(new RouteBuilder("/repos/{id}/cloneform", CloneFormResource.class).setVisible(false)); router.attach(new RouteBuilder("/repos/{id}/listdir/", ListDirResource.class).setVisible(false)); router.attach(new RouteBuilder("/repos/{id}/showfile/", ShowFileResource.class).setVisible(false)); router.attach(new RouteBuilder("/repos/{id}/maven", MavenFormResource.class).setVisible(false)); router.attach(new RouteBuilder("/repos/{id}/executed", ExecutedCommandsResource.class).setVisible(false)); router.attach(new RouteBuilder("/repos/{id}/executed/{timestamp}", ExecutedCommandResource.class).setVisible(false)); // @formatter:on } public synchronized DbRepository getRepository() { if (this.repository == null) { this.repository = new Repository(emf); } return this.repository; } @SuppressWarnings("unchecked") public void addExecutedCommand(long timeInMillis, ExecuteMavenCommand command) { Map<Long, Command> executedCommands = (Map<Long, Command>) getContext().getAttributes().get( "skysail.executedCommands"); if (executedCommands == null) { executedCommands = new HashMap<Long, Command>(); } executedCommands.put(timeInMillis, command); getContext().getAttributes().put("skysail.executedCommands", executedCommands); } public void setEmf(EntityManagerFactory emf) { this.emf = emf; } }