Details
diff --git a/src/java/azkaban/project/FileProjectManager.java b/src/java/azkaban/project/FileProjectManager.java
index 84dea0d..d13da39 100644
--- a/src/java/azkaban/project/FileProjectManager.java
+++ b/src/java/azkaban/project/FileProjectManager.java
@@ -110,8 +110,27 @@ public class FileProjectManager implements ProjectManager {
return null;
}
+ public void uploadProject(String projectName, File dir, User uploader) throws ProjectManagerException {
+ Project project = projects.get(projectName);
+
+ if (project == null) {
+ throw new ProjectManagerException("Project not found.");
+ }
+ if (!project.hasPermission(uploader, Type.WRITE)) {
+ throw new AccessControlException("Permission denied. Do not have write access.");
+ }
+
+ // We synchronize on project so that we don't collide when uploading.
+ synchronized (project) {
+ logger.info("Uploading files to " + projectName);
+
+ project.setLastModifiedTimestamp(System.currentTimeMillis());
+ project.setLastModifiedUser(uploader.getUserId());
+ }
+ }
+
@Override
- public synchronized Project createProjects(String projectName, String description, User creator) throws ProjectManagerException {
+ public synchronized Project createProject(String projectName, String description, User creator) throws ProjectManagerException {
if (projectName == null || projectName.trim().isEmpty()) {
throw new ProjectManagerException("Project name cannot be empty.");
}
@@ -179,7 +198,7 @@ public class FileProjectManager implements ProjectManager {
}
@Override
- public synchronized Project removeProjects(String projectName, User user) {
+ public synchronized Project removeProject(String projectName, User user) {
return null;
}
}
\ No newline at end of file
diff --git a/src/java/azkaban/project/ProjectManager.java b/src/java/azkaban/project/ProjectManager.java
index 890363c..107738b 100644
--- a/src/java/azkaban/project/ProjectManager.java
+++ b/src/java/azkaban/project/ProjectManager.java
@@ -1,5 +1,6 @@
package azkaban.project;
+import java.io.File;
import java.security.AccessControlException;
import java.util.List;
@@ -13,7 +14,9 @@ public interface ProjectManager {
public Project getProject(String name, User user) throws AccessControlException;
- public Project createProjects(String projectName, String description, User creator) throws ProjectManagerException;
+ public void uploadProject(String projectName, File projectDir, User uploader) throws ProjectManagerException;
- public Project removeProjects(String projectName, User user) throws ProjectManagerException;
+ public Project createProject(String projectName, String description, User creator) throws ProjectManagerException;
+
+ public Project removeProject(String projectName, User user) throws ProjectManagerException;
}
\ No newline at end of file
diff --git a/src/java/azkaban/webapp/servlet/ProjectManagerServlet.java b/src/java/azkaban/webapp/servlet/ProjectManagerServlet.java
index 960fa83..86b31b8 100644
--- a/src/java/azkaban/webapp/servlet/ProjectManagerServlet.java
+++ b/src/java/azkaban/webapp/servlet/ProjectManagerServlet.java
@@ -116,7 +116,7 @@ public class ProjectManagerServlet extends LoginAbstractAzkabanServlet {
String message = null;
HashMap<String, Object> params = null;
try {
- manager.createProjects(projectName, projectDescription, user);
+ manager.createProject(projectName, projectDescription, user);
status = "success";
action = "redirect";
String redirect = "manager?project=" + projectName;