You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by bd...@apache.org on 2014/06/19 13:48:01 UTC
svn commit: r1603840 -
/sling/trunk/contrib/crankstart/sling-extensions/src/main/java/org/apache/sling/crankstart/extensions/sling/CrankstartInventoryPrinter.java
Author: bdelacretaz
Date: Thu Jun 19 11:48:01 2014
New Revision: 1603840
URL: http://svn.apache.org/r1603840
Log:
Better handling of multiple Maven coordinates
Modified:
sling/trunk/contrib/crankstart/sling-extensions/src/main/java/org/apache/sling/crankstart/extensions/sling/CrankstartInventoryPrinter.java
Modified: sling/trunk/contrib/crankstart/sling-extensions/src/main/java/org/apache/sling/crankstart/extensions/sling/CrankstartInventoryPrinter.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/crankstart/sling-extensions/src/main/java/org/apache/sling/crankstart/extensions/sling/CrankstartInventoryPrinter.java?rev=1603840&r1=1603839&r2=1603840&view=diff
==============================================================================
--- sling/trunk/contrib/crankstart/sling-extensions/src/main/java/org/apache/sling/crankstart/extensions/sling/CrankstartInventoryPrinter.java (original)
+++ sling/trunk/contrib/crankstart/sling-extensions/src/main/java/org/apache/sling/crankstart/extensions/sling/CrankstartInventoryPrinter.java Thu Jun 19 11:48:01 2014
@@ -20,12 +20,13 @@ import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.net.URL;
+import java.util.ArrayList;
import java.util.Collection;
import java.util.Dictionary;
import java.util.Enumeration;
+import java.util.List;
import java.util.Set;
import java.util.TreeSet;
-import java.util.concurrent.atomic.AtomicInteger;
import org.apache.commons.io.IOUtils;
import org.apache.felix.inventory.Format;
@@ -109,7 +110,7 @@ public class CrankstartInventoryPrinter
private void bundles(PrintWriter out) throws IOException {
int ok = 0;
int errors = 0;
- final AtomicInteger warnings = new AtomicInteger();
+ int warnings = 0;
// Get the list of Maven coordinates from any fragment bundles,
// so that we can ignore their entries when returned by the
@@ -117,21 +118,30 @@ public class CrankstartInventoryPrinter
final Set<String> fragmentCoords = new TreeSet<String>();
for(Bundle b : bundleContext.getBundles()) {
if(isFragment(b)) {
- fragmentCoords.add(mavenCoordinates(b, null, warnings));
+ final List<String> coords = getMavenCoordinates(b, null);
+ if(coords.size() > 1) {
+ warnings++;
+ multipleWarning(out, b, coords);
+ } else {
+ fragmentCoords.add(coords.get(0));
+ }
}
}
for(Bundle b : bundleContext.getBundles()) {
- final String coords = mavenCoordinates(b, fragmentCoords, warnings);
- if(coords.length() == 0) {
+ final List<String> coords = getMavenCoordinates(b, fragmentCoords);
+ if(coords.isEmpty()) {
errors++;
out.print("# ERROR: Maven coordinates not found for ");
out.print(getBundleInfo(b));
out.println();
+ } else if(coords.size() > 1){
+ warnings++;
+ multipleWarning(out, b, coords);
} else {
ok++;
out.print("bundle ");
- out.println(coords);
+ out.println(coords.get(0));
}
}
@@ -142,18 +152,26 @@ public class CrankstartInventoryPrinter
out.print(" bundles processed sucessfully, ");
out.print(errors);
out.print(" errors, ");
- out.print(warnings.get());
+ out.print(warnings);
out.print(" warnings.");
out.println();
}
+ private void multipleWarning(PrintWriter out, Bundle b, List<String> coords) {
+ out.print("# WARN: multiple Maven coordinates for ");
+ out.print(getBundleInfo(b));
+ out.print(": ");
+ out.print(coords);
+ out.println();
+ }
+
private static boolean isFragment(final Bundle bundle) {
Dictionary<?, ?> headerMap = bundle.getHeaders();
return headerMap.get(Constants.FRAGMENT_HOST) != null;
}
- private String mavenCoordinates(Bundle b, Collection<String> fragmentCoordinates, AtomicInteger warningsCounter) throws IOException {
- final StringBuilder sb = new StringBuilder();
+ private List<String> getMavenCoordinates(Bundle b, Collection<String> fragmentCoordinates) throws IOException {
+ final List<String> result = new ArrayList<String>();
@SuppressWarnings("unchecked")
final Enumeration<URL> entries = b.findEntries("META-INF/maven", "pom.properties", true);
@@ -177,24 +195,25 @@ public class CrankstartInventoryPrinter
if(fragmentCoordinates != null && !isFragment(b) && fragmentCoordinates.contains(thisBundle.toString())) {
// fragment bundle - ignore
} else {
- if(sb.length() > 0) {
- warningsCounter.incrementAndGet();
- sb.append(" WARN - multiple non-fragment entries?? ");
- sb.append(getBundleInfo(b)).append(" ");
- }
- sb.append(thisBundle);
+ result.add(thisBundle.toString());
}
} finally {
IOUtils.closeQuietly(is);
}
}
- return sb.toString();
+ return result;
}
private static String getBundleInfo(Bundle b) {
final StringBuilder sb = new StringBuilder();
- sb.append("bundle ").append(b.getSymbolicName()).append(" (").append(b.getBundleId()).append(")");
+ sb.append("bundle ")
+ .append(b.getSymbolicName())
+ .append(" ")
+ .append(b.getVersion())
+ .append(" (")
+ .append(b.getBundleId())
+ .append(")");
return sb.toString();
}