diff --git a/src/java/azkaban/project/FileProjectManager.java b/src/java/azkaban/project/FileProjectManager.java
index 01ee65e..64b4ca7 100644
--- a/src/java/azkaban/project/FileProjectManager.java
+++ b/src/java/azkaban/project/FileProjectManager.java
@@ -219,6 +219,7 @@ public class FileProjectManager implements ProjectManager {
List<String> errors = new ArrayList<String>();
DirectoryFlowLoader loader = new DirectoryFlowLoader(logger);
loader.loadProjectFlow(dir);
+ errors.addAll(loader.getErrors());
Map<String, Flow> flows = loader.getFlowMap();
File projectPath = new File(projectDirectory, projectName);
@@ -249,7 +250,9 @@ public class FileProjectManager implements ProjectManager {
dir.renameTo(destDirectory);
// We install only if the project is not forced install or has no errors
- if (force || errors.isEmpty()) {
+ //if (force || errors.isEmpty()) {
+ // We don't do force install any more
+ if (errors.isEmpty()) {
// We synchronize on project so that we don't collide when
// uploading.
synchronized (project) {
diff --git a/src/java/azkaban/utils/DirectoryFlowLoader.java b/src/java/azkaban/utils/DirectoryFlowLoader.java
index acc0b9e..d376522 100644
--- a/src/java/azkaban/utils/DirectoryFlowLoader.java
+++ b/src/java/azkaban/utils/DirectoryFlowLoader.java
@@ -41,6 +41,10 @@ public class DirectoryFlowLoader {
return flowMap;
}
+ public Set<String> getErrors() {
+ return errors;
+ }
+
public void loadProjectFlow(File baseDirectory) {
propsList = new ArrayList<Props>();
flowPropsList = new ArrayList<FlowProps>();
@@ -59,6 +63,7 @@ public class DirectoryFlowLoader {
// Create the flows.
buildFlowsFromDependencies();
+
}
private void loadProjectFromDir(String base, File dir) {
@@ -99,8 +104,11 @@ public class DirectoryFlowLoader {
prop.setSource(relative);
Node node = new Node(jobName);
- String type = prop.getString("type", "none");
- errors.add("Job doesn't have type set '" + jobName + "'.");
+ String type = prop.getString("type", null);
+ if(type == null) {
+ errors.add("Job doesn't have type set '" + jobName + "'.");
+ }
+
node.setType(type);
node.setJobSource(relative);