Added more tests, improved appending newline char Signed-off-by: David Matějček <david.matejcek@omnifish.ee>
diff --git a/osgi/adapter/src/main/java/org/jvnet/hk2/osgiadapter/FelixPrettyPrinter.java b/osgi/adapter/src/main/java/org/jvnet/hk2/osgiadapter/FelixPrettyPrinter.java index 69746e0..04d8865 100644 --- a/osgi/adapter/src/main/java/org/jvnet/hk2/osgiadapter/FelixPrettyPrinter.java +++ b/osgi/adapter/src/main/java/org/jvnet/hk2/osgiadapter/FelixPrettyPrinter.java
@@ -220,7 +220,7 @@ public static String addBundleInfo(Bundle bundle, String prettyMessage) { final StringBuilder bundleBuilder = new StringBuilder(1024); - bundleBuilder.append("\n").append(prettyMessage); + bundleBuilder.append('\n').append(prettyMessage); if (bundle != null) { bundleBuilder.append('[').append(bundle.getBundleId()).append("] \n"); bundleBuilder.append("jar = ").append(bundle.getLocation()); @@ -254,11 +254,11 @@ .append(" [") .append(bundle.getBundleId()) .append("]") - .append("\n") + .append('\n') ; } } - bundleBuilder.append("\n"); + bundleBuilder.append('\n'); } return bundleIDs; @@ -329,6 +329,6 @@ for (int i = 0; i < (indent * 4); i++) { messageBuilder.append(" "); } - messageBuilder.append(message.trim()).append("\n"); + messageBuilder.append(message.trim()).append('\n'); } }
diff --git a/osgi/adapter/src/test/java/org/jvnet/hk2/osgiadapter/FelixPrettyPrinterTest.java b/osgi/adapter/src/test/java/org/jvnet/hk2/osgiadapter/FelixPrettyPrinterTest.java index a212c84..801b011 100644 --- a/osgi/adapter/src/test/java/org/jvnet/hk2/osgiadapter/FelixPrettyPrinterTest.java +++ b/osgi/adapter/src/test/java/org/jvnet/hk2/osgiadapter/FelixPrettyPrinterTest.java
@@ -16,16 +16,48 @@ package org.jvnet.hk2.osgiadapter; +import java.util.List; + import org.junit.Test; +import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.contains; import static org.hamcrest.Matchers.stringContainsInOrder; import static org.jvnet.hk2.osgiadapter.FelixPrettyPrinter.prettyPrintExceptionMessage; public class FelixPrettyPrinterTest { @Test - public void test() { + public void testFormatting() { + String src = "org.osgi.framework.BundleException:" + + " Unable to resolve org.glassfish.main.webservices.connector [207](R 207.0):" + + " missing requirement [org.glassfish.main.webservices.connector [207](R 207.0)] osgi.wiring.package;" + + " (&(osgi.wiring.package=jakarta.xml.ws)(version>=3.0.0)(!(version>=4.0.0))) [caused by:" + + " Unable to resolve org.glassfish.metro.webservices-api-osgi [236](R 236.0):" + + " missing requirement [org.glassfish.metro.webservices-api-osgi [236](R 236.0)] osgi.wiring.package;" + + " (&(osgi.wiring.package=jakarta.xml.bind)(version>=3.0.0)(!(version>=4.0.0)))]" + + " Unresolved requirements: [[org.glassfish.main.webservices.connector [207](R 207.0)] osgi.wiring.package;" + + " (&(osgi.wiring.package=jakarta.xml.ws)(version>=3.0.0)(!(version>=4.0.0)))]"; + String message = FelixPrettyPrinter.prettyPrintExceptionMessage(src); + assertThat(message, + equalTo( + "Unable to resolve\n" + + " org.glassfish.main.webservices.connector [207]\n" + + " missing requirement\n" + + " &(package = jakarta.xml.ws) (version >= 3.0.0) (!(version >= 4.0.0))\n" + + " caused by:\n" + + " Unable to resolve\n" + + " org.glassfish.metro.webservices-api-osgi [236]\n" + + " missing requirement\n" + + " &(package = jakarta.xml.bind) (version >= 3.0.0) (!(version >= 4.0.0)))]\n")); + + assertThat(FelixPrettyPrinter.findBundleIds(message), contains(207L, 236L)); + assertThat(FelixPrettyPrinter.findBundleIds(src), contains(207L, 236L)); + } + + @Test + public void testWeld() { String text = prettyPrintExceptionMessage( "org.osgi.framework.BundleException:" + " Unable to resolve org.glassfish.main.web.weld-integration [41](R 41.0):" @@ -41,6 +73,23 @@ stringContainsInOrder("Unable to resolve", "org.glassfish.main.web.weld-integration", "missing requirement", "jakarta.faces.application", "caused by:", "Unable to resolve", "org.glassfish.jakarta.faces", "missing requirement", "jakarta.enterprise.inject", "(version >= 4.1.0) (!(version >= 5.0.0))")); + assertThat(FelixPrettyPrinter.findBundleIds(text), contains(41L, 291L)); } + @Test + public void testFelix() { + String src = FelixPrettyPrinter.prettyPrintExceptionMessage(" Unable to resolve" + + " org.apache.felix.scr [304](R 304.0):" + + " missing requirement [org.apache.felix.scr [304](R 304.0)] osgi.wiring.package;" + + " (&(osgi.wiring.package=org.osgi.framework)(version>=1.10.0)(!(version>=2.0.0)))" + + " Unresolved requirements: [[org.apache.felix.scr [304](R304.0)] osgi.wiring.package;" + + " (&(osgi.wiring.package=org.osgi.framework)(version>=1.10.0)(!(version>=2.0.0)))]\n" + + "at org.apache.felix.framework.Felix.resolveBundleRevision(Felix.java:4398) "); + String message = FelixPrettyPrinter.prettyPrintExceptionMessage(src); + assertThat(message, + stringContainsInOrder("Unable to resolve\n", "org.apache.felix.scr [304]\n", "missing requirement\n")); + + List<Long> ids = FelixPrettyPrinter.findBundleIds(message); + assertThat(ids, contains(304L)); + } }