azkaban-aplcache

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;