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));
+    }
 }