Sync bndlib code
git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@1399825 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/bundleplugin/src/main/java/aQute/bnd/differ/Baseline.java b/bundleplugin/src/main/java/aQute/bnd/differ/Baseline.java
index fe79c7d..cd2d9b6 100644
--- a/bundleplugin/src/main/java/aQute/bnd/differ/Baseline.java
+++ b/bundleplugin/src/main/java/aQute/bnd/differ/Baseline.java
@@ -78,7 +78,14 @@
newerVersion = getVersion(n);
olderVersion = getVersion(o);
-
+
+ boolean firstRelease = false;
+ if (o.get("<manifest>") == null) {
+ firstRelease = true;
+ if (newerVersion.equals(Version.emptyVersion)) {
+ newerVersion = Version.ONE;
+ }
+ }
Delta highestDelta = Delta.MICRO;
for (Diff pdiff : apiDiff.getChildren()) {
if (pdiff.getType() != Type.PACKAGE) // Just packages
@@ -108,7 +115,14 @@
} else if (pdiff.getDelta() == Delta.REMOVED) {
info.suggestedVersion = null;
} else if (pdiff.getDelta() == Delta.ADDED) {
- info.suggestedVersion = Version.ONE;
+ if (firstRelease) {
+ info.suggestedVersion = info.newerVersion;
+ if (info.suggestedVersion.equals(Version.emptyVersion)) {
+ info.suggestedVersion = newerVersion.getWithoutQualifier();
+ }
+ } else {
+ info.suggestedVersion = Version.ONE;
+ }
} else {
// We have an API change
info.suggestedVersion = bump(pdiff.getDelta(), info.olderVersion, 1, 0);
@@ -151,9 +165,10 @@
highestDelta = pdiff.getDelta();
}
}
- suggestedVersion = bumpBundle(highestDelta, olderVersion, 1, 0);
- if (suggestedVersion.getMajor() == 0) {
- suggestedVersion = Version.ONE;
+ if (firstRelease) {
+ suggestedVersion = newerVersion;
+ } else {
+ suggestedVersion = bumpBundle(highestDelta, olderVersion, 1, 0);
}
return infos;
}
diff --git a/bundleplugin/src/main/java/aQute/bnd/differ/DiffPluginImpl.java b/bundleplugin/src/main/java/aQute/bnd/differ/DiffPluginImpl.java
index 38de872..c1d28a4 100644
--- a/bundleplugin/src/main/java/aQute/bnd/differ/DiffPluginImpl.java
+++ b/bundleplugin/src/main/java/aQute/bnd/differ/DiffPluginImpl.java
@@ -33,6 +33,11 @@
*/
final static Set<String> IGNORE_HEADERS = new TreeSet<String>(String.CASE_INSENSITIVE_ORDER);
+ /**
+ * Headers that have values that should be sorted
+ */
+ final static Set<String> ORDERED_HEADERS = new TreeSet<String>(String.CASE_INSENSITIVE_ORDER);
+
static {
MAJOR_HEADERS.add(Constants.EXPORT_PACKAGE);
MAJOR_HEADERS.add(Constants.IMPORT_PACKAGE);
@@ -47,6 +52,8 @@
IGNORE_HEADERS.add(Constants.TOOL);
IGNORE_HEADERS.add(Constants.BND_LASTMODIFIED);
IGNORE_HEADERS.add(Constants.CREATED_BY);
+
+ ORDERED_HEADERS.add(Constants.SERVICE_COMPONENT);
}
/**
@@ -166,6 +173,10 @@
clausesDef.add(new Element(Type.CLAUSE, clause.getKey(), parameterDef, CHANGED, CHANGED, null));
}
result.add(new Element(Type.HEADER, header, clausesDef, CHANGED, CHANGED, null));
+ } else if (ORDERED_HEADERS.contains(header)) {
+ ExtList<String> values = ExtList.from(value);
+ Collections.sort(values);
+ result.add(new Element(Type.HEADER, header + ":" + values.join(), null, CHANGED, CHANGED, null));
} else {
result.add(new Element(Type.HEADER, header + ":" + value, null, CHANGED, CHANGED, null));
}