blob: 774934af7cf914bc4d9ddc9dfdbedb5d3e82b814 [file] [log] [blame]
Stuart McCullochf3173222012-06-07 21:57:32 +00001package aQute.bnd.build;
2
3import java.io.*;
4import java.util.*;
5
Stuart McCulloch42151ee2012-07-16 13:43:38 +00006import aQute.bnd.osgi.*;
Stuart McCullochf3173222012-06-07 21:57:32 +00007
8public class ProjectBuilder extends Builder {
Stuart McCulloch4482c702012-06-15 13:27:53 +00009 Project project;
10 boolean initialized;
Stuart McCullochf3173222012-06-07 21:57:32 +000011
Stuart McCulloch4482c702012-06-15 13:27:53 +000012 public ProjectBuilder(Project project) {
13 super(project);
14 this.project = project;
15 }
Stuart McCullochf3173222012-06-07 21:57:32 +000016
Stuart McCulloch4482c702012-06-15 13:27:53 +000017 public ProjectBuilder(ProjectBuilder builder) {
18 super(builder);
19 this.project = builder.project;
20 }
Stuart McCullochf3173222012-06-07 21:57:32 +000021
Stuart McCulloch4482c702012-06-15 13:27:53 +000022 @Override
23 public long lastModified() {
24 return Math.max(project.lastModified(), super.lastModified());
25 }
Stuart McCullochf3173222012-06-07 21:57:32 +000026
Stuart McCulloch4482c702012-06-15 13:27:53 +000027 /**
28 * We put our project and our workspace on the macro path.
29 */
Stuart McCulloch2929e2d2012-08-07 10:57:21 +000030 @Override
Stuart McCulloch4482c702012-06-15 13:27:53 +000031 protected Object[] getMacroDomains() {
32 return new Object[] {
33 project, project.getWorkspace()
34 };
35 }
Stuart McCullochf3173222012-06-07 21:57:32 +000036
Stuart McCulloch2929e2d2012-08-07 10:57:21 +000037 @Override
Stuart McCulloch4482c702012-06-15 13:27:53 +000038 public Builder getSubBuilder() throws Exception {
39 return project.getBuilder(this);
40 }
Stuart McCullochf3173222012-06-07 21:57:32 +000041
Stuart McCulloch4482c702012-06-15 13:27:53 +000042 public Project getProject() {
43 return project;
44 }
Stuart McCullochf3173222012-06-07 21:57:32 +000045
Stuart McCulloch2929e2d2012-08-07 10:57:21 +000046 @Override
Stuart McCulloch4482c702012-06-15 13:27:53 +000047 public void init() {
48 try {
49 if (!initialized) {
50 initialized = true;
51 for (Container file : project.getClasspath()) {
52 addClasspath(file.getFile());
53 }
Stuart McCullochf3173222012-06-07 21:57:32 +000054
Stuart McCulloch4482c702012-06-15 13:27:53 +000055 for (Container file : project.getBuildpath()) {
56 addClasspath(file.getFile());
57 }
Stuart McCullochf3173222012-06-07 21:57:32 +000058
Stuart McCulloch4482c702012-06-15 13:27:53 +000059 for (Container file : project.getBootclasspath()) {
60 addClasspath(file.getFile());
61 }
Stuart McCullochf3173222012-06-07 21:57:32 +000062
Stuart McCulloch4482c702012-06-15 13:27:53 +000063 for (File file : project.getAllsourcepath()) {
64 addSourcepath(file);
65 }
Stuart McCullochf3173222012-06-07 21:57:32 +000066
Stuart McCulloch4482c702012-06-15 13:27:53 +000067 }
68 }
69 catch (Exception e) {
70 msgs.Unexpected_Error_("ProjectBuilder init", e);
71 }
72 }
Stuart McCullochf3173222012-06-07 21:57:32 +000073
Stuart McCulloch2929e2d2012-08-07 10:57:21 +000074 @Override
Stuart McCulloch4482c702012-06-15 13:27:53 +000075 public List<Jar> getClasspath() {
76 init();
77 return super.getClasspath();
78 }
79
80 @Override
81 protected void changedFile(File f) {
82 project.getWorkspace().changedFile(f);
83 }
Stuart McCullochf3173222012-06-07 21:57:32 +000084}