package de.twenty11.skysail.server.ext.jgit; import java.io.File; import java.util.ArrayList; import java.util.Collections; import java.util.List; import org.restlet.data.Form; import org.restlet.resource.Get; import org.restlet.resource.ResourceException; import de.twenty11.skysail.common.responses.SkysailResponse; import de.twenty11.skysail.server.core.restlet.ListServerResource2; import de.twenty11.skysail.server.ext.jgit.internal.MyApplication; public class ListDirResource extends ListServerResource2<DirectoryDescriptor> { private LocalRepositoryDescriptor repositoryDescriptor; private String filepath; @Override protected void doInit() throws ResourceException { String id = (String) getRequest().getAttributes().get("id"); repositoryDescriptor = ((MyApplication) getApplication()).getRepository().getLocalRepositoryDescriptor(id); String rootPath = repositoryDescriptor.getPath(); // /tmp/test filepath = rootPath + "/" + getReference().getRemainingPart(); } @Override @Get("html|json|csv") public SkysailResponse<List<DirectoryDescriptor>> getEntities() { return getEntities("contents for directory " + filepath); } @Override protected List<DirectoryDescriptor> getData() { List<DirectoryDescriptor> result = new ArrayList<DirectoryDescriptor>(); File file = new File(filepath); String[] contents = file.list(); if (contents == null) { return Collections.emptyList(); } boolean pomFileFound = false; for (String filename : contents) { if (filename.equals("pom.xml")) { pomFileFound = true; } String link = getReference().getRemainingPart(); boolean isFile = new File(filepath + "/" + filename).isFile(); if (isFile) { link = getReference().getBaseRef() + "../showfile/" + link + "/" + filename; } else { link = getReference().getBaseRef() + link + "/" + filename; } result.add(new DirectoryDescriptor(filename, link)); } if (pomFileFound) { addLinkedPageForMavenExecution(getReference().getRemainingPart()); // ModelBuilder builder = new DefaultModelBuilder(); // ModelBuildingRequest req = new DefaultModelBuildingRequest(); // req.setProcessPlugins(false); // req.setPomFile(file); // // req.setModelResolver(new org.apache.maven.repository.internal.DefaultModelResolver(basedir, // pathTranslator)); // req.setValidationLevel(ModelBuildingRequest.VALIDATION_LEVEL_MINIMAL); // // Model model; // try { // model = builder.build(req).getEffectiveModel(); // } catch (ModelBuildingException e) { // // } } return result; } private void addLinkedPageForMavenExecution(String remainingPart) { // if (cloneCommand.applicable()) { registerLinkedPage(new ExecuteMavenPage(remainingPart)); // } } @Override public DirectoryDescriptor getData(Form form) { // TODO Auto-generated method stub return null; } @Override public SkysailResponse<?> addEntity(DirectoryDescriptor entity) { // TODO Auto-generated method stub return null; } }