/** * Return a new builder that is nicely setup for this project. Please close * this builder after use. * * @param parent * The project builder to use as parent, use this project if null * @return * @throws Exception */ public synchronized ProjectBuilder getBuilder(ProjectBuilder parent) throws Exception { ProjectBuilder builder; if (parent == null) builder = new ProjectBuilder(this); else builder = new ProjectBuilder(parent); builder.setBase(getBase()); builder.setPedantic(isPedantic()); builder.setTrace(isTrace()); return builder; }
/** * Return a new builder that is nicely setup for this project. Please close * this builder after use. * * @param parent * The project builder to use as parent, use this project if null * @return * @throws Exception */ public synchronized ProjectBuilder getBuilder(ProjectBuilder parent) throws Exception { ProjectBuilder builder; if (parent == null) builder = new ProjectBuilder(this); else builder = new ProjectBuilder(parent); builder.setBase(getBase()); for (Container file : getBuildpath()) { builder.addClasspath(file.getFile()); } for (Container file : getBootclasspath()) { builder.addClasspath(file.getFile()); } for (File file : getAllsourcepath()) { builder.addSourcepath(file); } return builder; }
boolean close = true; try { List<Builder> builders = pb.getSubBuilders(); for (Builder b : builders) { if (b == pb) { close = false; } else { pb.removeClose(b); } finally { if (close) { pb.close();
private RepositoryPlugin getBaselineRepo() { String repoName = getProperty(Constants.BASELINEREPO); if (repoName == null) return getReleaseRepo(); List<RepositoryPlugin> repos = getPlugins(RepositoryPlugin.class); for (RepositoryPlugin r : repos) { if (r.getName() .equals(repoName)) return r; } error("Could not find -baselinerepo %s", repoName); return null; }
/** * Return a new builder that is nicely setup for this project. Please close * this builder after use. * * @param parent The project builder to use as parent, use this project if * null * @throws Exception */ public ProjectBuilder getBuilder(ProjectBuilder parent) throws Exception { ProjectBuilder builder; if (parent == null) builder = new ProjectBuilder(this); else builder = new ProjectBuilder(parent); builder.setBase(getBase()); builder.use(this); return builder; }
/** * Return a new builder that is nicely setup for this project. Please close * this builder after use. * * @param parent * The project builder to use as parent, use this project if null * @return * @throws Exception */ public synchronized ProjectBuilder getBuilder(ProjectBuilder parent) throws Exception { ProjectBuilder builder; if (parent == null) builder = new ProjectBuilder(this); else builder = new ProjectBuilder(parent); builder.setBase(getBase()); return builder; }
String bl = getProperty(Constants.BASELINE); if (bl == null || Constants.NONE.equals(bl)) return null; Instructions baselines = new Instructions(getProperty(Constants.BASELINE)); if (baselines.isEmpty()) return null; // no baselining RepositoryPlugin repo = getBaselineRepo(); if (repo == null) return null; // errors reported already String bsn = getBsn(); Version version = new Version(getVersion()); SortedSet<Version> versions = removeStagedAndFilter(repo.versions(bsn), repo, bsn); Version v = Version.parseVersion(getVersion()) .getWithoutQualifier(); if (v.compareTo(Version.ONE) > 0) { warning( "There is no baseline for %s in the baseline repo %s. The build is for version %s, which is higher than 1.0.0 which suggests that there should be a prior version.", getBsn(), repo, v); error("Not a valid version in %s %s", Constants.BASELINE, v); return null; SortedSet<Version> later = versions.tailSet(base); if (later.isEmpty()) { error("For baselineing %s-%s, specified version %s not found", bsn, version, base);
trace("ignore headers & paths %s", diffignore); differ.setIgnore(diffignore); Jar fromRepo = getBaselineJar(); if (fromRepo == null) { trace("No baseline jar %s", getProperty(Constants.BASELINE)); return; Version newer = new Version(getVersion()); Version older = new Version(fromRepo.getVersion()); if (!getBsn().equals(fromRepo.getBsn())) { error("The symbolic name of this project (%s) is not the same as the baseline: %s", getBsn(), fromRepo.getBsn()); return; RepositoryPlugin rr = getBaselineRepo(); if (rr instanceof InfoRepository) { ResourceDescriptor descriptor = ((InfoRepository) rr).getDescriptor(getBsn(), older); if (descriptor != null && descriptor.phase != Phase.STAGING) { error("Baselining %s against same version %s but the repository says the older repository version is not the required %s but is instead %s", getBsn(), getVersion(), Phase.STAGING, descriptor.phase); return; trace("baseline %s-%s against: %s", getBsn(), getVersion(), fromRepo.getName()); try { Baseline baseliner = new Baseline(this, differ); trace("no deltas");
ProjectBuilder builder = getBuilder(null); if (underTest) builder.setProperty(Constants.UNDERTEST, "true"); Jar jars[] = builder.builds(); File[] files = new File[jars.length]; builder.close(); if (isOk()) { this.files = files;
@Override public BndArchive asBndJar() { try { Workspace workspace = new Workspace(this.workspaceFile); Properties workspaceProperties = buildProperties(workspace, null, workspacePropertiesFiles.toArray(new File[0])); workspace.setProperties(workspaceProperties); Project project = new Project(workspace, this.projectFile); Properties projectProperties = buildProperties(project, bndFile, projectPropertiesFiles.toArray(new File[0])); project.setProperties(projectProperties); ProjectBuilder projectBuilder = new ProjectBuilder(project); projectBuilder.setBase(baseFile); if (!generateManifest) { projectBuilder.setProperty(ProjectBuilder.NOMANIFEST, "true"); } return new BndArchive(projectBuilder.build()); } catch (Exception e) { throw new IllegalStateException(e); } }
private RepositoryPlugin getReleaseRepo() { String repoName = getProperty(Constants.RELEASEREPO); List<RepositoryPlugin> repos = getPlugins(RepositoryPlugin.class); for (RepositoryPlugin r : repos) { if (r.canWrite()) { if (repoName == null || r.getName().equals(repoName)) { return r; } } } if (repoName == null) error("Could not find a writable repo for the release repo (-releaserepo is not set)"); else error("No such -releaserepo %s found", repoName); return null; }
for (Builder b : project.getSubBuilders()) { ProjectBuilder pb = (ProjectBuilder) b; Jar older = pb.getBaselineJar(); // make sure remains before disabling baselining pb.setProperty(Constants.BASELINE, ""); // do not do baselining in build Jar newer = pb.build(); di.setIgnore(pb.getProperty(Constants.DIFFIGNORE)); diff(options, di, newer, older); bnd.getInfo(b);
public void init() { try { if (!initialized) { initialized = true; for (Container file : project.getBuildpath()) { addClasspath(file.getFile()); } for (Container file : project.getBootclasspath()) { addClasspath(file.getFile()); } for (File file : project.getAllsourcepath()) { addSourcepath(file); } } } catch (Exception e) { error("init project builder fails", e); } }
@Override public void init() { try { if (!initialized) { initialized = true; for (Container file : project.getClasspath()) { addClasspath(file.getFile()); } for (Container file : project.getBuildpath()) { addClasspath(file.getFile()); } for (Container file : project.getBootclasspath()) { addClasspath(file.getFile()); } for (File file : project.getAllsourcepath()) { addSourcepath(file); } } } catch (Exception e) { msgs.Unexpected_Error_("ProjectBuilder init", e); } }
/** * Get a list of the sub builders. A bnd.bnd file can contain the -sub * option. This will generate multiple deliverables. This method returns the * builders for each sub file. If no -sub option is present, the list will * contain a builder for the bnd.bnd file. * * @return A list of builders. * @throws Exception */ public Collection< ? extends Builder> getSubBuilders() throws Exception { return getBuilder(null).getSubBuilders(); }
@Override public void init() { try { if (!initialized) { initialized = true; doRequireBnd(); for (Container file : project.getClasspath()) { addClasspath(file); } File output = project.getOutput(); if (output.exists()) { addClasspath(output); } for (Container file : project.getBuildpath()) { addClasspath(file); } for (Container file : project.getBootclasspath()) { addClasspath(file); } for (File file : project.getAllsourcepath()) { addSourcepath(file); } } } catch (Exception e) { msgs.Unexpected_Error_("ProjectBuilder init", e); } }
builder.setProperty(Constants.UNDERTEST, "true"); Jar jars[] = builder.builds(); getInfo(builder);
public Jar getBaselineJar(boolean fallback) throws Exception { String baseline = getProperty(Constants.BASELINE); String baselineRepo = getProperty(Constants.BASELINEREPO); if ((baseline == null || baseline.trim().length() == 0) && (baselineRepo == null || baselineRepo.trim().length() == 0) && !fallback) return null; File baselineFile = null; if ((baseline == null || baseline.trim().length() == 0)) { baselineFile = getBaselineFromRepo(fallback); if (baselineFile != null) trace("baseline %s", baselineFile.getName()); } else { trace("baseline %s", baseline); Collection<Container> bundles = project.getBundles(Strategy.LOWEST, baseline); for (Container c : bundles) { if (c.getError() != null || c.getFile() == null) { error("Erroneous baseline bundle %s", c); continue; } baselineFile = c.getFile(); break; } } if (fallback && baselineFile == null) { return new Jar("."); } return new Jar(baselineFile); }
@Override public boolean isInteractive() { return getProject().isInteractive(); } }
/** * Compare this builder's JAR with a baseline * * @throws Exception */ @Override protected void doBaseline(Jar dot) throws Exception { Jar jar = getBaselineJar(false); if (jar == null) { return; } try { Baseline baseline = new Baseline(this, differ); Set<Info> infos = baseline.baseline(dot, jar, null); for (Info info : infos) { if (info.mismatch) { error("%s %-50s %-10s %-10s %-10s %-10s %-10s\n", info.mismatch ? '*' : ' ', info.packageName, info.packageDiff.getDelta(), info.newerVersion, info.olderVersion, info.suggestedVersion, info.suggestedIfProviders == null ? "-" : info.suggestedIfProviders); } } } finally { jar.close(); } }