You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by ro...@apache.org on 2018/12/19 22:29:55 UTC

svn commit: r1849344 - in /felix/trunk/gogo/command/src/main/java/org/apache/felix/gogo/command: Activator.java Base64Encoder.java Basic.java Inspect.java Inspect42.java Util.java

Author: rotty3000
Date: Wed Dec 19 22:29:54 2018
New Revision: 1849344

URL: http://svn.apache.org/viewvc?rev=1849344&view=rev
Log:
FELIX-6002 Remove legacy code in Gogo Command

Signed-off-by: Raymond Auge <ro...@apache.org>

Removed:
    felix/trunk/gogo/command/src/main/java/org/apache/felix/gogo/command/Base64Encoder.java
    felix/trunk/gogo/command/src/main/java/org/apache/felix/gogo/command/Inspect42.java
Modified:
    felix/trunk/gogo/command/src/main/java/org/apache/felix/gogo/command/Activator.java
    felix/trunk/gogo/command/src/main/java/org/apache/felix/gogo/command/Basic.java
    felix/trunk/gogo/command/src/main/java/org/apache/felix/gogo/command/Inspect.java
    felix/trunk/gogo/command/src/main/java/org/apache/felix/gogo/command/Util.java

Modified: felix/trunk/gogo/command/src/main/java/org/apache/felix/gogo/command/Activator.java
URL: http://svn.apache.org/viewvc/felix/trunk/gogo/command/src/main/java/org/apache/felix/gogo/command/Activator.java?rev=1849344&r1=1849343&r2=1849344&view=diff
==============================================================================
--- felix/trunk/gogo/command/src/main/java/org/apache/felix/gogo/command/Activator.java (original)
+++ felix/trunk/gogo/command/src/main/java/org/apache/felix/gogo/command/Activator.java Wed Dec 19 22:29:54 2018
@@ -40,21 +40,10 @@ public class Activator implements Bundle
         bc.registerService(
             Basic.class.getName(), new Basic(systemBundleContext), props);
 
-        // Register "inspect" command for R4.3 or R4.2 depending
-        // on the underlying framework.
         props.put("osgi.command.scope", "felix");
         props.put("osgi.command.function", new String[] { "inspect" });
-        try
-        {
-            getClass().getClassLoader().loadClass("org.osgi.framework.wiring.BundleWiring");
-            bc.registerService(
-                Inspect.class.getName(), new Inspect(systemBundleContext), props);
-        }
-        catch (Throwable th)
-        {
-            bc.registerService(
-                Inspect42.class.getName(), new Inspect42(bc), props);
-        }
+        bc.registerService(
+            Inspect.class.getName(), new Inspect(systemBundleContext), props);
 
         props.put("osgi.command.scope", "felix");
         props.put("osgi.command.function", new String[] { "cd", "ls" });

Modified: felix/trunk/gogo/command/src/main/java/org/apache/felix/gogo/command/Basic.java
URL: http://svn.apache.org/viewvc/felix/trunk/gogo/command/src/main/java/org/apache/felix/gogo/command/Basic.java?rev=1849344&r1=1849343&r2=1849344&view=diff
==============================================================================
--- felix/trunk/gogo/command/src/main/java/org/apache/felix/gogo/command/Basic.java (original)
+++ felix/trunk/gogo/command/src/main/java/org/apache/felix/gogo/command/Basic.java Wed Dec 19 22:29:54 2018
@@ -32,6 +32,7 @@ import java.util.Arrays;
 import java.util.Date;
 import java.util.Dictionary;
 import java.util.Enumeration;
+import java.util.Formatter;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
@@ -48,48 +49,32 @@ import org.osgi.framework.BundleReferenc
 import org.osgi.framework.Constants;
 import org.osgi.framework.InvalidSyntaxException;
 import org.osgi.framework.ServiceReference;
+import org.osgi.framework.startlevel.BundleStartLevel;
+import org.osgi.framework.startlevel.FrameworkStartLevel;
+import org.osgi.framework.wiring.FrameworkWiring;
 import org.osgi.service.log.LogEntry;
 import org.osgi.service.log.LogReaderService;
 import org.osgi.service.log.LogService;
-import org.osgi.service.packageadmin.PackageAdmin;
-import org.osgi.service.startlevel.StartLevel;
 
-@SuppressWarnings("deprecation")
 public class Basic
 {
     private final BundleContext m_bc;
+    private final Bundle m_b0;
 
     public Basic(BundleContext bc)
     {
         m_bc = bc;
+        m_b0 = m_bc.getBundle(0);
     }
 
     @Descriptor("query bundle start level")
-    public void bundlelevel(@Descriptor("bundle to query") Bundle bundle)
+    public String bundlelevel(@Descriptor("bundle to query") Bundle bundle)
     {
-        // Keep track of service references.
-        List<ServiceReference<?>> refs = new ArrayList<>();
-
-        // Get start level service.
-        StartLevel sl = Util.getService(m_bc, StartLevel.class, refs);
-        if (sl == null)
-        {
-            System.out.println("Start Level service is unavailable.");
-        }
-        // Get the bundle start level.
-        else
-        {
-            if (bundle != null)
-            {
-                System.out.println(bundle + " is level " + sl.getBundleStartLevel(bundle));
-            }
-        }
-
-        Util.ungetServices(m_bc, refs);
+        return bundle + " is level " + bundle.adapt(BundleStartLevel.class).getStartLevel();
     }
 
     @Descriptor("set bundle start level or initial bundle start level")
-    public void bundlelevel(
+    public String bundlelevel(
         @Descriptor("set the bundle's start level") @Parameter(names = { "-s",
                 "--setlevel" }, presentValue = "true", absentValue = "false") boolean set,
         @Descriptor("set the initial bundle start level") @Parameter(names = { "-i",
@@ -97,37 +82,29 @@ public class Basic
         @Descriptor("target level") int level,
         @Descriptor("target identifiers") Bundle[] bundles)
     {
-        // Keep track of service references.
-        List<ServiceReference<?>> refs = new ArrayList<>();
 
-        // Get start level service.
-        StartLevel sl = Util.getService(m_bc, StartLevel.class, refs);
-        if (sl == null)
+        if (set && initial)
         {
-            System.out.println("Start Level service is unavailable.");
-        }
-        else if (set && initial)
-        {
-            System.out.println("Cannot specify '-s' and '-i' at the same time.");
+            return "Cannot specify '-s' and '-i' at the same time.";
         }
         else if (!set && !initial)
         {
-            System.out.println("Must specify either '-s' or '-i'.");
+            return "Must specify either '-s' or '-i'.";
         }
         else if (level <= 0)
         {
-            System.out.println("Specified start level must be greater than zero.");
+            return "Specified start level must be greater than zero.";
         }
         // Set the initial bundle start level.
         else if (initial)
         {
             if ((bundles != null) && (bundles.length == 0))
             {
-                sl.setInitialBundleStartLevel(level);
+                m_b0.adapt(FrameworkStartLevel.class).setInitialBundleStartLevel(level);
             }
             else
             {
-                System.out.println("Cannot specify bundles when setting initial start level.");
+                return "Cannot specify bundles when setting initial start level.";
             }
         }
         // Set the bundle start level.
@@ -137,83 +114,70 @@ public class Basic
             {
                 for (Bundle bundle : bundles)
                 {
-                    sl.setBundleStartLevel(bundle, level);
+                    bundle.adapt(BundleStartLevel.class).setStartLevel(level);
                 }
             }
             else
             {
-                System.out.println("Must specify target bundles.");
+                return "Must specify target bundles.";
             }
         }
-
-        Util.ungetServices(m_bc, refs);
+        return null;
     }
 
     @Descriptor("query framework active start level")
-    public void frameworklevel()
+    public String frameworklevel()
     {
-        // Keep track of service references.
-        List<ServiceReference<?>> refs = new ArrayList<>();
-
-        // Get start level service.
-        StartLevel sl = Util.getService(m_bc, StartLevel.class, refs);
-        if (sl == null)
-        {
-            System.out.println("Start Level service is unavailable.");
-        }
-        System.out.println("Level is " + sl.getStartLevel());
-        Util.ungetServices(m_bc, refs);
+        return "Level is " + m_b0.adapt(FrameworkStartLevel.class).getStartLevel();
     }
 
     @Descriptor("set framework active start level")
     public void frameworklevel(@Descriptor("target start level") int level)
     {
-        // Keep track of service references.
-        List<ServiceReference<?>> refs = new ArrayList<>();
-
-        // Get start level service.
-        StartLevel sl = Util.getService(m_bc, StartLevel.class, refs);
-        if (sl == null)
-        {
-            System.out.println("Start Level service is unavailable.");
-        }
-        sl.setStartLevel(level);
-        Util.ungetServices(m_bc, refs);
+        m_b0.adapt(FrameworkStartLevel.class).setStartLevel(level);
     }
 
     @Descriptor("display bundle headers")
-    public void headers(@Descriptor("target bundles") Bundle[] bundles)
+    public String headers(@Descriptor("target bundles") Bundle[] bundles)
     {
-        bundles = ((bundles == null) || (bundles.length == 0)) ? m_bc.getBundles()
-            : bundles;
-        for (Bundle bundle : bundles)
-        {
-            String title = Util.getBundleName(bundle);
-            System.out.println("\n" + title);
-            System.out.println(Util.getUnderlineString(title.length()));
-            Dictionary<String, String> dict = bundle.getHeaders();
-            Enumeration<String> keys = dict.keys();
-            while (keys.hasMoreElements())
-            {
-                String k = keys.nextElement();
-                String v = dict.get(k);
-                System.out.println(k + " = " + v);
+        try (Formatter f = new Formatter()) {
+            bundles = ((bundles == null) || (bundles.length == 0)) ? m_bc.getBundles()
+                : bundles;
+            String prefix = "";
+            for (Bundle bundle : bundles)
+            {
+                String title = Util.getBundleName(bundle);
+                f.format("%s%s%n", prefix, title);
+                f.format("%s%n", Util.getUnderlineString(title.length()));
+                Dictionary<String, String> dict = bundle.getHeaders();
+                Enumeration<String> keys = dict.keys();
+                while (keys.hasMoreElements())
+                {
+                    String k = keys.nextElement();
+                    String v = dict.get(k);
+                    f.format("%s = %s%n", k, v);
+                }
+                prefix = "\n";
             }
+            return f.toString();
         }
     }
 
     @Descriptor("displays available commands")
-    public void help()
+    public String help()
     {
-        Map<String, List<Method>> commands = getCommands();
-        for (String name : commands.keySet())
-        {
-            System.out.println(name);
+        try (Formatter f = new Formatter()) {
+            Map<String, List<Method>> commands = getCommands();
+            for (String name : commands.keySet())
+            {
+                f.format("%s%n", name);
+            }
+            return f.toString();
         }
     }
 
     @Descriptor("displays information about a specific command")
-    public void help(@Descriptor("target command") String name)
+    public String help(@Descriptor("target command") String name)
     {
         Map<String, List<Method>> commands = getCommands();
 
@@ -241,21 +205,26 @@ public class Basic
             methods = commands.get(name);
         }
 
-        if ((methods != null) && (methods.size() > 0))
+        if ((methods == null) || (methods.size() <= 0))
         {
+            return "No methods found matching: " + name;
+        }
+
+        try (Formatter f = new Formatter()) {
+            String prefix = "";
             for (Method m : methods)
             {
                 Descriptor d = m.getAnnotation(Descriptor.class);
                 if (d == null)
                 {
-                    System.out.println("\n" + m.getName());
+                    f.format("%s%s%n", prefix, m.getName());
                 }
                 else
                 {
-                    System.out.println("\n" + m.getName() + " - " + d.value());
+                    f.format("%s%s - %s%n", prefix, m.getName(), d.value());
                 }
 
-                System.out.println("   scope: " + name.substring(0, name.indexOf(':')));
+                f.format("   scope: %s%n", name.substring(0, name.indexOf(':')));
 
                 // Get flags and options.
                 Class<?>[] paramTypes = m.getParameterTypes();
@@ -308,46 +277,47 @@ public class Basic
                 // Print flags and options.
                 if (flags.size() > 0)
                 {
-                    System.out.println("   flags:");
+                    f.format("   flags:%n");
                     for (Entry<String, Parameter> entry : flags.entrySet())
                     {
                         // Print all aliases.
                         String[] names = entry.getValue().names();
-                        System.out.print("      " + names[0]);
+                        f.format("      %s", names[0]);
                         for (int aliasIdx = 1; aliasIdx < names.length; aliasIdx++)
                         {
-                            System.out.print(", " + names[aliasIdx]);
+                            f.format(", %s", names[aliasIdx]);
                         }
-                        System.out.println("   " + flagDescs.get(entry.getKey()));
+                        f.format("   %s%n", flagDescs.get(entry.getKey()));
                     }
                 }
                 if (options.size() > 0)
                 {
-                    System.out.println("   options:");
+                    f.format("   options:%n");
                     for (Entry<String, Parameter> entry : options.entrySet())
                     {
                         // Print all aliases.
                         String[] names = entry.getValue().names();
-                        System.out.print("      " + names[0]);
+                        f.format("      %s", names[0]);
                         for (int aliasIdx = 1; aliasIdx < names.length; aliasIdx++)
                         {
-                            System.out.print(", " + names[aliasIdx]);
+                            f.format(", %s", names[aliasIdx]);
                         }
-                        System.out.println("   "
-                            + optionDescs.get(entry.getKey())
-                            + ((entry.getValue().absentValue() == null) ? ""
-                                : " [optional]"));
+                        f.format("   %s%s%n",
+                            optionDescs.get(entry.getKey()),
+                            ((entry.getValue().absentValue() == null) ? "" : " [optional]"));
                     }
                 }
                 if (params.size() > 0)
                 {
-                    System.out.println("   parameters:");
+                    f.format("   parameters:%n");
                     for (Iterator<String> it = params.iterator(); it.hasNext();)
                     {
-                        System.out.println("      " + it.next() + "   " + it.next());
+                        f.format("      %s   %s%n", it.next(), it.next());
                     }
                 }
+                prefix = "\n";
             }
+            return f.toString();
         }
     }
 
@@ -423,83 +393,83 @@ public class Basic
     }
 
     @Descriptor("install bundle using URLs")
-    public void install(@Descriptor("command session")CommandSession session,
+    public String install(@Descriptor("command session")CommandSession session,
                         @Descriptor("target URLs") String[] urls) throws IOException
     {
-        StringBuilder sb = new StringBuilder();
+        try (Formatter f = new Formatter()) {
 
-        for (String url : urls)
-        {
-            String location = Util.resolveUri(session, url.trim());
-            Bundle bundle = null;
-            try
-            {
-                bundle = m_bc.installBundle(location, null);
-            }
-            catch (IllegalStateException ex)
-            {
-                System.err.println(ex.toString());
-            }
-            catch (BundleException ex)
+            StringBuilder sb = new StringBuilder();
+
+            for (String url : urls)
             {
-                if (ex.getNestedException() != null)
+                String location = Util.resolveUri(session, url.trim());
+                Bundle bundle = null;
+                try
                 {
-                    System.err.println(ex.getNestedException().toString());
+                    bundle = m_bc.installBundle(location, null);
                 }
-                else
+                catch (IllegalStateException ex)
+                {
+                    f.format("%s%n", ex.toString());
+                }
+                catch (BundleException ex)
+                {
+                    if (ex.getNestedException() != null)
+                    {
+                        f.format("%s%n", ex.getNestedException().toString());
+                    }
+                    else
+                    {
+                        f.format("%s%n", ex.toString());
+                    }
+                }
+                catch (Exception ex)
+                {
+                    f.format("%s%n", ex.toString());
+                }
+                if (bundle != null)
                 {
-                    System.err.println(ex.toString());
+                    if (sb.length() > 0)
+                    {
+                        sb.append(", ");
+                    }
+                    sb.append(bundle.getBundleId());
                 }
             }
-            catch (Exception ex)
+            if (sb.toString().indexOf(',') > 0)
             {
-                System.err.println(ex.toString());
+                return "Bundle IDs: " + sb.toString();
             }
-            if (bundle != null)
+            else if (sb.length() > 0)
             {
-                if (sb.length() > 0)
-                {
-                    sb.append(", ");
-                }
-                sb.append(bundle.getBundleId());
+                return "Bundle ID: " + sb.toString();
             }
-        }
-        if (sb.toString().indexOf(',') > 0)
-        {
-            System.out.println("Bundle IDs: " + sb.toString());
-        }
-        else if (sb.length() > 0)
-        {
-            System.out.println("Bundle ID: " + sb.toString());
+            return f.toString();
         }
     }
 
     @Descriptor("list all installed bundles")
-    public void lb(
+    public String lb(
         @Descriptor("show location") @Parameter(names = { "-l", "--location" }, presentValue = "true", absentValue = "false") boolean showLoc,
         @Descriptor("show symbolic name") @Parameter(names = { "-s", "--symbolicname" }, presentValue = "true", absentValue = "false") boolean showSymbolic,
         @Descriptor("show update location") @Parameter(names = { "-u", "--updatelocation" }, presentValue = "true", absentValue = "false") boolean showUpdate)
     {
-        lb(showLoc, showSymbolic, showUpdate, null);
+        return lb(showLoc, showSymbolic, showUpdate, null);
     }
 
     @Descriptor("list installed bundles matching a substring")
-    public void lb(
+    public String lb(
         @Descriptor("show location") @Parameter(names = { "-l", "--location" }, presentValue = "true", absentValue = "false") boolean showLoc,
         @Descriptor("show symbolic name") @Parameter(names = { "-s", "--symbolicname" }, presentValue = "true", absentValue = "false") boolean showSymbolic,
         @Descriptor("show update location") @Parameter(names = { "-u", "--updatelocation" }, presentValue = "true", absentValue = "false") boolean showUpdate,
         @Descriptor("subtring matched against name or symbolic name") String pattern)
     {
-        // Keep track of service references.
-        List<ServiceReference<?>> refs = new ArrayList<>();
-
-        // Get start level service.
-        StartLevel sl = Util.getService(m_bc, StartLevel.class, refs);
-        if (sl == null)
-        {
-            System.out.println("Start Level service is unavailable.");
+        if ((showLoc && showSymbolic && showUpdate) ||
+            (showLoc && showSymbolic) ||
+            (showSymbolic && showUpdate) ||
+            (showLoc && showUpdate)) {
+            return "Only one of -l, -s, -u should be used.";
         }
-
         List<Bundle> found = new ArrayList<>();
 
         if (pattern == null)
@@ -520,15 +490,16 @@ public class Basic
 
         if (found.size() > 0)
         {
-            printBundleList(found.toArray(new Bundle[found.size()]), sl,
-                showLoc, showSymbolic, showUpdate);
+            try (Formatter f = new Formatter()) {
+                printBundleList(found.toArray(new Bundle[found.size()]),
+                    showLoc, showSymbolic, showUpdate, m_b0, f);
+                return f.toString();
+            }
         }
         else
         {
-            System.out.println("No matching bundles found");
+            return "No matching bundles found.";
         }
-
-        Util.ungetServices(m_bc, refs);
     }
 
     private boolean matchBundleName(String name, String pattern)
@@ -537,48 +508,59 @@ public class Basic
     }
 
     @Descriptor("display all matching log entries")
-    public void log(
+    public String log(
         @Descriptor("minimum log level [ debug | info | warn | error ]") String logLevel)
     {
-        log(-1, logLevel);
+        return log(-1, logLevel);
     }
 
     @Descriptor("display some matching log entries")
-    public void log(@Descriptor("maximum number of entries") int maxEntries,
+    public String log(@Descriptor("maximum number of entries") int maxEntries,
         @Descriptor("minimum log level [ debug | info | warn | error ]") String logLevel)
     {
         // Keep track of service references.
         List<ServiceReference<?>> refs = new ArrayList<>();
 
         // Get start level service.
-        LogReaderService lrs = Util.getService(m_bc, LogReaderService.class, refs);
-        if (lrs == null)
-        {
-            System.out.println("Log reader service is unavailable.");
-        }
-        else
-        {
-            @SuppressWarnings("unchecked")
-            Enumeration<LogEntry> entries = lrs.getLog();
+        try {
+            LogReaderService lrs = Util.getService(m_bc, LogReaderService.class, refs);
+            if (lrs == null)
+            {
+                return "Log reader service is unavailable.";
+            }
+            else
+            {
+                try (Formatter f = new Formatter()) {
+                    @SuppressWarnings("unchecked")
+                    Enumeration<LogEntry> entries = lrs.getLog();
+                    List<LogEntry> select = new ArrayList<>();
 
-            int minLevel = logLevelAsInt(logLevel);
+                    int minLevel = logLevelAsInt(logLevel);
 
-            int index = 0;
-            while (entries.hasMoreElements() && (maxEntries < 0 || index < maxEntries))
-            {
-                LogEntry entry = entries.nextElement();
-                if (entry.getLevel() <= minLevel)
-                {
-                    display(entry);
-                    index++;
+                    int index = 0;
+                    while (entries.hasMoreElements() && (maxEntries < 0 || index < maxEntries))
+                    {
+                        LogEntry entry = entries.nextElement();
+                        if (entry.getLevel() <= minLevel)
+                        {
+                            select.add(0, entry);
+                            index++;
+                        }
+                    }
+
+                    select.forEach(e -> display(e, f));
+
+                    Util.ungetServices(m_bc, refs);
+                    return f.toString();
                 }
             }
-
-            Util.ungetServices(m_bc, refs);
+        }
+        catch (NoClassDefFoundError ncdfe) {
+            return "Log reader service is unavailable.";
         }
     }
 
-    private void display(LogEntry entry)
+    private void display(LogEntry entry, Formatter f)
     {
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss");
 
@@ -601,7 +583,7 @@ public class Basic
             buffer.append(writer.toString());
         }
 
-        System.out.println(buffer.toString());
+        f.format("%s%n", buffer.toString());
     }
 
     private static int logLevelAsInt(String logLevel)
@@ -645,55 +627,31 @@ public class Basic
             bundles = null;
         }
 
-        // Keep track of service references.
-        List<ServiceReference<?>> refs = new ArrayList<>();
-
-        // Get package admin service.
-        PackageAdmin pa = Util.getService(m_bc, PackageAdmin.class, refs);
-        if (pa == null)
-        {
-            System.out.println("Package Admin service is unavailable.");
-        }
-
-        pa.refreshPackages(bundles);
-
-        Util.ungetServices(m_bc, refs);
+        m_b0.adapt(FrameworkWiring.class).refreshBundles(Arrays.asList(bundles));
     }
 
     @Descriptor("resolve bundles")
-    public void resolve(
+    public String resolve(
         @Descriptor("target bundles (can be null or empty)") Bundle[] bundles)
     {
-        if ((bundles != null) && (bundles.length == 0))
-        {
-            bundles = null;
-        }
-
-        // Keep track of service references.
-        List<ServiceReference<?>> refs = new ArrayList<>();
-
-        // Get package admin service.
-        PackageAdmin pa = Util.getService(m_bc, PackageAdmin.class, refs);
-        if (pa == null)
+        if (m_b0.adapt(FrameworkWiring.class).resolveBundles(bundles != null ? Arrays.asList(bundles) : null))
         {
-            System.out.println("Package Admin service is unavailable.");
+            return "Not all bundles could be resolved.";
         }
-
-        if (!pa.resolveBundles(bundles))
-        {
-            System.out.println("Not all bundles could be resolved.");
-        }
-
-        Util.ungetServices(m_bc, refs);
+        return null;
     }
 
     @Descriptor("start bundles")
-    public void start(
+    public String start(
         @Descriptor("start bundle transiently") @Parameter(names = { "-t", "--transient" }, presentValue = "true", absentValue = "false") boolean trans,
         @Descriptor("use declared activation policy") @Parameter(names = { "-p",
                 "--policy" }, presentValue = "true", absentValue = "false") boolean policy,
         @Descriptor("target bundle identifiers or URLs") String[] ss)
     {
+        if ((ss == null) || (ss.length < 1)) {
+            return "Please specify the bundles to start.";
+        }
+
         int options = 0;
 
         // Check for "transient" switch.
@@ -708,9 +666,7 @@ public class Basic
             options |= Bundle.START_ACTIVATION_POLICY;
         }
 
-        // There should be at least one bundle id.
-        if ((ss != null) && (ss.length >= 1))
-        {
+        try (Formatter f = new Formatter()) {
             for (String s : ss)
             {
                 String id = s.trim();
@@ -736,45 +692,41 @@ public class Basic
                     }
                     else
                     {
-                        System.err.println("Bundle ID " + id + " is invalid.");
+                        f.format("Bundle ID '%s'  is invalid.%n", id);
                     }
                 }
                 catch (NumberFormatException ex)
                 {
-                    System.err.println("Unable to parse id '" + id + "'.");
+                    f.format("Unable to parse id '%s'.%n", id);
                 }
                 catch (BundleException ex)
                 {
                     if (ex.getNestedException() != null)
                     {
-                        ex.printStackTrace();
-                        System.err.println(ex.getNestedException().toString());
+                        f.format("%s%n", ex.getNestedException().toString());
                     }
                     else
                     {
-                        System.err.println(ex.toString());
+                        f.format("%s%n", ex.toString());
                     }
                 }
                 catch (Exception ex)
                 {
-                    System.err.println(ex.toString());
+                    f.format("%s%n", ex.toString());
                 }
             }
-        }
-        else
-        {
-            System.err.println("Incorrect number of arguments");
+            return f.toString();
         }
     }
 
     @Descriptor("stop bundles")
-    public void stop(@Descriptor("stop bundle transiently") @Parameter(names = { "-t",
+    public String stop(@Descriptor("stop bundle transiently") @Parameter(names = { "-t",
             "--transient" }, presentValue = "true", absentValue = "false") boolean trans,
         @Descriptor("target bundles") Bundle[] bundles)
     {
         if ((bundles == null) || (bundles.length == 0))
         {
-            System.out.println("Please specify the bundles to stop.");
+            return "Please specify the bundles to stop.";
         }
 
         int options = 0;
@@ -785,187 +737,176 @@ public class Basic
             options |= Bundle.STOP_TRANSIENT;
         }
 
-        for (Bundle bundle : bundles)
-        {
-            try
-            {
-                bundle.stop(options);
-            }
-            catch (BundleException ex)
+        try (Formatter f = new Formatter()) {
+            for (Bundle bundle : bundles)
             {
-                if (ex.getNestedException() != null)
+                try
                 {
-                    System.err.println(ex.getNestedException().toString());
+                    bundle.stop(options);
                 }
-                else
+                catch (BundleException ex)
                 {
-                    System.err.println(ex.toString());
+                    if (ex.getNestedException() != null)
+                    {
+                        f.format("%s%n", ex.getNestedException().toString());
+                    }
+                    else
+                    {
+                        f.format("%s%n", ex.toString());
+                    }
+                }
+                catch (Exception ex)
+                {
+                    f.format("%s%n", ex.toString());
                 }
             }
-            catch (Exception ex)
-            {
-                System.err.println(ex.toString());
-            }
+            return f.toString();
         }
     }
 
     @Descriptor("uninstall bundles")
-    public void uninstall(@Descriptor("target bundles") Bundle[] bundles)
+    public String uninstall(@Descriptor("target bundles") Bundle[] bundles)
     {
         if ((bundles == null) || (bundles.length == 0))
         {
-            System.out.println("Please specify the bundles to uninstall.");
+            return "Please specify the bundles to uninstall.";
         }
-        else
-        {
-            try
+
+        try (Formatter f = new Formatter()) {
+            for (Bundle bundle : bundles)
             {
-                for (Bundle bundle : bundles)
+                try
                 {
                     bundle.uninstall();
                 }
-            }
-            catch (BundleException ex)
-            {
-                if (ex.getNestedException() != null)
+                catch (BundleException ex)
                 {
-                    ex.printStackTrace();
-                    System.err.println(ex.getNestedException().toString());
+                    if (ex.getNestedException() != null)
+                    {
+                        f.format("%s%n", ex.getNestedException().toString());
+                    }
+                    else {
+                        f.format("%s%n", ex.toString());
+                    }
                 }
-                else
+                catch (Exception ex)
                 {
-                    System.err.println(ex.toString());
+                    f.format("%s%n", ex.toString());
                 }
             }
-            catch (Exception ex)
-            {
-                System.err.println(ex.toString());
-            }
+            return f.toString();
         }
     }
 
     @Descriptor("update bundle")
-    public void update(@Descriptor("target bundle") Bundle bundle)
+    public String update(@Descriptor("target bundle") Bundle bundle)
     {
+        if (bundle == null)
+        {
+            return "Must specify a bundle.";
+        }
+
         try
         {
-            // Get the bundle.
-            if (bundle != null)
-            {
-                bundle.update();
-            }
+            bundle.update();
+            return null;
         }
         catch (BundleException ex)
         {
             if (ex.getNestedException() != null)
             {
-                System.err.println(ex.getNestedException().toString());
-            }
-            else
-            {
-                System.err.println(ex.toString());
+                return ex.getNestedException().toString();
             }
+
+            return ex.toString();
         }
         catch (Exception ex)
         {
-            System.err.println(ex.toString());
+            return ex.toString();
         }
     }
 
     @Descriptor("update bundle from URL")
-    public void update(
+    public String update(
             @Descriptor("command session") CommandSession session,
             @Descriptor("target bundle") Bundle bundle,
         @Descriptor("URL from where to retrieve bundle") String location) throws IOException {
-        if (location != null)
+        if (bundle == null)
+        {
+            return "Must specify a bundle.";
+        }
+        if (location == null)
+        {
+            return "Must specify a location.";
+        }
+
+        try
         {
             location = Util.resolveUri(session, location.trim());
-            try
-            {
-                // Get the bundle.
-                if (bundle != null)
-                {
-                    InputStream is = new URL(location).openStream();
-                    bundle.update(is);
-                }
-                else
-                {
-                    System.err.println("Please specify a bundle to update");
-                }
-            }
-            catch (MalformedURLException ex)
-            {
-                System.err.println("Unable to parse URL");
-            }
-            catch (IOException ex)
-            {
-                System.err.println("Unable to open input stream: " + ex);
-            }
-            catch (BundleException ex)
-            {
-                if (ex.getNestedException() != null)
-                {
-                    System.err.println(ex.getNestedException().toString());
-                }
-                else
-                {
-                    System.err.println(ex.toString());
-                }
-            }
-            catch (Exception ex)
+            InputStream is = new URL(location).openStream();
+            bundle.update(is);
+            return null;
+        }
+        catch (MalformedURLException ex)
+        {
+            return "Unable to parse URL";
+        }
+        catch (IOException ex)
+        {
+            return "Unable to open input stream: " + ex;
+        }
+        catch (BundleException ex)
+        {
+            if (ex.getNestedException() != null)
             {
-                System.err.println(ex.toString());
+                return ex.getNestedException().toString();
             }
+
+            return ex.toString();
         }
-        else
+        catch (Exception ex)
         {
-            System.err.println("Must specify a location.");
+            return ex.toString();
         }
     }
 
     @Descriptor("determines from where a bundle loads a class")
-    public void which(@Descriptor("target bundle") Bundle bundle,
+    public String which(@Descriptor("target bundle") Bundle bundle,
         @Descriptor("target class name") String className)
     {
         if (bundle == null)
         {
-            System.err.println("Please specify a bundle");
+            return "Please specify a bundle";
         }
-        else
+
+        Class<?> clazz = null;
+        try
         {
-            Class<?> clazz = null;
-            try
+            clazz = bundle.loadClass(className);
+            if (clazz.getClassLoader() == null)
             {
-                clazz = bundle.loadClass(className);
-                if (clazz.getClassLoader() == null)
-                {
-                    System.out.println("Loaded from: boot class loader");
-                }
-                else if (clazz.getClassLoader() instanceof BundleReference)
-                {
-                    Bundle p = ((BundleReference) clazz.getClassLoader()).getBundle();
-                    System.out.println("Loaded from: " + p);
-                }
-                else
-                {
-                    System.out.println("Loaded from: " + clazz.getClassLoader());
-                }
+                return "Loaded from: boot class loader";
             }
-            catch (ClassNotFoundException ex)
+            else if (clazz.getClassLoader() instanceof BundleReference)
+            {
+                Bundle p = ((BundleReference) clazz.getClassLoader()).getBundle();
+                return "Loaded from: " + p;
+            }
+            else
             {
-                System.out.println("Class not found");
+                return "Loaded from: " + clazz.getClassLoader();
             }
         }
+        catch (ClassNotFoundException ex)
+        {
+            return "Class not found";
+        }
     }
 
-    private static void printBundleList(Bundle[] bundles, StartLevel startLevel,
-        boolean showLoc, boolean showSymbolic, boolean showUpdate)
+    private static void printBundleList(Bundle[] bundles,
+        boolean showLoc, boolean showSymbolic, boolean showUpdate, Bundle b0, Formatter f)
     {
-        // Display active start level.
-        if (startLevel != null)
-        {
-            System.out.println("START LEVEL " + startLevel.getStartLevel());
-        }
+        f.format("START LEVEL %s%n", b0.adapt(FrameworkStartLevel.class).getStartLevel());
 
         // Determine last column.
         String lastColumn = "Name";
@@ -982,16 +923,7 @@ public class Basic
             lastColumn = "Update location";
         }
 
-        // Print column headers.
-        if (startLevel != null)
-        {
-            System.out.println(String.format("%5s|%-11s|%5s|%s", "ID", "State", "Level",
-                lastColumn));
-        }
-        else
-        {
-            System.out.println(String.format("%5s|%-11s|%s", "ID", "State", lastColumn));
-        }
+        f.format("%5s|%-11s|%5s|%s%n", "ID", "State", "Level", lastColumn);
         for (Bundle bundle : bundles)
         {
             // Get the bundle name or location.
@@ -1023,20 +955,11 @@ public class Basic
                 : name;
 
             // Get the bundle's start level.
-            int level = (startLevel == null) ? -1
-                : startLevel.getBundleStartLevel(bundle);
+            int level = bundle.adapt(BundleStartLevel.class).getStartLevel();
 
-            if (level < 0)
-            {
-                System.out.println(String.format("%5d|%-11s|%s|%s", bundle.getBundleId(),
-                    getStateString(bundle), name, bundle.getVersion()));
-            }
-            else
-            {
-                System.out.println(String.format("%5d|%-11s|%5d|%s|%s",
-                    bundle.getBundleId(), getStateString(bundle), level, name,
-                    bundle.getVersion()));
-            }
+            f.format("%5d|%-11s|%5d|%s|%s%n",
+                bundle.getBundleId(), getStateString(bundle), level, name,
+                bundle.getVersion());
         }
     }
 

Modified: felix/trunk/gogo/command/src/main/java/org/apache/felix/gogo/command/Inspect.java
URL: http://svn.apache.org/viewvc/felix/trunk/gogo/command/src/main/java/org/apache/felix/gogo/command/Inspect.java?rev=1849344&r1=1849343&r2=1849344&view=diff
==============================================================================
--- felix/trunk/gogo/command/src/main/java/org/apache/felix/gogo/command/Inspect.java (original)
+++ felix/trunk/gogo/command/src/main/java/org/apache/felix/gogo/command/Inspect.java Wed Dec 19 22:29:54 2018
@@ -19,9 +19,13 @@
 package org.apache.felix.gogo.command;
 
 import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Formatter;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 import org.apache.felix.service.command.Descriptor;
 import org.osgi.framework.Bundle;
@@ -52,15 +56,15 @@ public class Inspect
     }
 
     @Descriptor("inspects bundle capabilities and requirements")
-    public void inspect(
+    public String inspect(
         @Descriptor("('capability' | 'requirement')") String direction,
         @Descriptor("(<namespace> | 'service')") String namespace,
         @Descriptor("target bundles") Bundle[] bundles)
     {
-        inspect(m_bc, direction, namespace, bundles);
+        return inspect(m_bc, direction, namespace, bundles);
     }
 
-    private static void inspect(
+    private static String inspect(
         BundleContext bc, String direction, String namespace, Bundle[] bundles)
     {
         // Verify arguments.
@@ -71,69 +75,58 @@ public class Inspect
 
             if (CAPABILITY.startsWith(direction))
             {
-                printCapabilities(bc, Util.parseSubstring(namespace), bundles);
+                return printCapabilities(bc, Util.parseSubstring(namespace), bundles);
             }
             else
             {
-                printRequirements(bc, Util.parseSubstring(namespace), bundles);
-            }
-        }
-        else
-        {
-            if (!isValidDirection(direction))
-            {
-                System.out.println("Invalid argument: " + direction);
+                return printRequirements(bc, Util.parseSubstring(namespace), bundles);
             }
         }
+
+        return "Invalid argument: " + direction;
     }
 
-    public static void printCapabilities(
+    public static String printCapabilities(
         BundleContext bc, List<String> namespace, Bundle[] bundles)
     {
-        boolean separatorNeeded = false;
-        for (Bundle b : bundles)
-        {
-            if (separatorNeeded)
+        try (Formatter f = new Formatter()) {
+            for (Bundle b : bundles)
             {
-                System.out.println();
-            }
-
-            // Print out any matching generic capabilities.
-            BundleWiring wiring = b.adapt(BundleWiring.class);
-            if (wiring != null)
-            {
-                String title = b + " provides:";
-                System.out.println(title);
-                System.out.println(Util.getUnderlineString(title.length()));
-
-                // Print generic capabilities for matching namespaces.
-                boolean matches = printMatchingCapabilities(wiring, namespace);
+                // Print out any matching generic capabilities.
+                BundleWiring wiring = b.adapt(BundleWiring.class);
+                if (wiring != null)
+                {
+                    String title = b + " provides:";
+                    f.format("%s%n%s%n", title, Util.getUnderlineString(title.length()));
+
+                    // Print generic capabilities for matching namespaces.
+                    boolean matches = printMatchingCapabilities(wiring, namespace, f);
+
+                    // Handle service capabilities separately, since they aren't part
+                    // of the generic model in OSGi.
+                    if (matchNamespace(namespace, NONSTANDARD_SERVICE_NAMESPACE))
+                    {
+                        matches |= printServiceCapabilities(b, f);
+                    }
 
-                // Handle service capabilities separately, since they aren't part
-                // of the generic model in OSGi.
-                if (matchNamespace(namespace, NONSTANDARD_SERVICE_NAMESPACE))
-                {
-                    matches |= printServiceCapabilities(b);
+                    // If there were no capabilities for the specified namespace,
+                    // then say so.
+                    if (!matches)
+                    {
+                        f.format("%s %s%n", Util.unparseSubstring(namespace), EMPTY_MESSAGE);
+                    }
                 }
-
-                // If there were no capabilities for the specified namespace,
-                // then say so.
-                if (!matches)
+                else
                 {
-                    System.out.println(Util.unparseSubstring(namespace) + " " + EMPTY_MESSAGE);
+                    f.format("Bundle %s is not resolved.",
+                        b.getBundleId());
                 }
             }
-            else
-            {
-                System.out.println("Bundle "
-                    + b.getBundleId()
-                    + " is not resolved.");
-            }
-            separatorNeeded = true;
+            return f.toString();
         }
     }
 
-    private static boolean printMatchingCapabilities(BundleWiring wiring, List<String> namespace)
+    private static boolean printMatchingCapabilities(BundleWiring wiring, List<String> namespace, Formatter f)
     {
         List<BundleWire> wires = wiring.getProvidedWires(null);
         Map<BundleCapability, List<BundleWire>> aggregateCaps =
@@ -144,51 +137,77 @@ public class Inspect
         {
             if (matchNamespace(namespace, cap.getNamespace()))
             {
+                if ("osgi.service".equals(cap.getNamespace())) {
+                    continue;
+                }
                 matches = true;
                 List<BundleWire> dependents = aggregateCaps.get(cap);
                 Object keyAttr =
                     cap.getAttributes().get(cap.getNamespace());
-                if (dependents != null)
+                if ("osgi.native".equals(cap.getNamespace()))
+                {
+                    f.format("%s with properties:%n", cap.getNamespace());
+                    cap.getAttributes().entrySet().stream().sorted(
+                        (e1,e2) -> e1.getKey().compareTo(e2.getKey())
+                    ).forEach(
+                        e -> f.format("   %s = %s%n", e.getKey(), e.getValue())
+                    );
+
+                    if (dependents != null)
+                    {
+                        f.format("   required by:%n");
+                        dependents.forEach(wire -> f.format("      %s%n", wire.getRequirerWiring().getBundle()));
+                    }
+                    else
+                    {
+                        f.format("   %s%n", UNUSED_MESSAGE);
+                    }
+                }
+                else if (dependents != null)
                 {
-                    String msg;
                     if (keyAttr != null)
                     {
-                        msg = cap.getNamespace()
-                            + "; "
-                            + keyAttr
-                            + " "
-                            + getVersionFromCapability(cap);
+                        f.format("%s; %s %s required by:%n",
+                            cap.getNamespace(),
+                            format(keyAttr),
+                            getVersionFromCapability(cap));
                     }
                     else
                     {
-                        msg = cap.toString();
+                        f.format("%s required by:%n", cap.toString());
                     }
-                    msg = msg + " required by:";
-                    System.out.println(msg);
                     for (BundleWire wire : dependents)
                     {
-                        System.out.println("   " + wire.getRequirerWiring().getBundle());
+                        f.format("   %s%n", wire.getRequirerWiring().getBundle());
                     }
                 }
                 else if (keyAttr != null)
                 {
-                    System.out.println(cap.getNamespace()
-                        + "; "
-                        + cap.getAttributes().get(cap.getNamespace())
-                        + " "
-                        + getVersionFromCapability(cap)
-                        + " "
-                        + UNUSED_MESSAGE);
+                    f.format("%s; %s %s %s%n",
+                        cap.getNamespace(),
+                        format(keyAttr),
+                        getVersionFromCapability(cap),
+                        UNUSED_MESSAGE);
                 }
                 else
                 {
-                    System.out.println(cap + " " + UNUSED_MESSAGE);
+                    f.format("%s %s%n", cap, UNUSED_MESSAGE);
                 }
             }
         }
         return matches;
     }
 
+    private static String format(Object object) {
+        if (object.getClass().isArray()) {
+            return Arrays.stream((Object[])object).map(Object::toString).collect(Collectors.joining(","));
+        }
+        else if (object instanceof Collection) {
+            return ((Collection<?>)object).stream().map(Object::toString).collect(Collectors.joining(","));
+        }
+        return String.valueOf(object);
+    }
+
     private static Map<BundleCapability, List<BundleWire>> aggregateCapabilities(
         List<String> namespace, List<BundleWire> wires)
     {
@@ -211,7 +230,7 @@ public class Inspect
         return map;
     }
 
-    static boolean printServiceCapabilities(Bundle b)
+    static boolean printServiceCapabilities(Bundle b, Formatter f)
     {
         boolean matches = false;
 
@@ -226,11 +245,9 @@ public class Inspect
                 for (ServiceReference<?> ref : refs)
                 {
                     // Print object class with "namespace".
-                    System.out.println(
-                        NONSTANDARD_SERVICE_NAMESPACE
-                        + "; "
-                        + Util.getValueString(ref.getProperty("objectClass"))
-                        + " with properties:");
+                    f.format("%s; %s with properties:%n",
+                        NONSTANDARD_SERVICE_NAMESPACE,
+                        Util.getValueString(ref.getProperty("objectClass")));
                     // Print service properties.
                     String[] keys = ref.getPropertyKeys();
                     for (String key : keys)
@@ -238,17 +255,16 @@ public class Inspect
                         if (!key.equalsIgnoreCase(Constants.OBJECTCLASS))
                         {
                             Object v = ref.getProperty(key);
-                            System.out.println("   "
-                                + key + " = " + Util.getValueString(v));
+                            f.format("   %s = %s%n", key, Util.getValueString(v));
                         }
                     }
                     Bundle[] users = ref.getUsingBundles();
                     if ((users != null) && (users.length > 0))
                     {
-                        System.out.println("   Used by:");
+                        f.format("   Used by:%n");
                         for (Bundle user : users)
                         {
-                            System.out.println("      " + user);
+                            f.format("      %s%n", user);
                         }
                     }
                 }
@@ -256,58 +272,51 @@ public class Inspect
         }
         catch (Exception ex)
         {
-            System.err.println(ex.toString());
+            f.format("%s%n", ex.toString());
         }
 
         return matches;
     }
 
-    public static void printRequirements(
+    public static String printRequirements(
         BundleContext bc, List<String> namespace, Bundle[] bundles)
     {
-        boolean separatorNeeded = false;
-        for (Bundle b : bundles)
-        {
-            if (separatorNeeded)
-            {
-                System.out.println();
-            }
-
-            // Print out any matching generic requirements.
-            BundleWiring wiring = b.adapt(BundleWiring.class);
-            if (wiring != null)
+        try (Formatter f = new Formatter()) {
+            for (Bundle b : bundles)
             {
-                String title = b + " requires:";
-                System.out.println(title);
-                System.out.println(Util.getUnderlineString(title.length()));
-                boolean matches = printMatchingRequirements(wiring, namespace);
+                // Print out any matching generic requirements.
+                BundleWiring wiring = b.adapt(BundleWiring.class);
+                if (wiring != null)
+                {
+                    String title = b + " requires:";
+                    f.format("%s%n%s%n", title, Util.getUnderlineString(title.length()));
+                    boolean matches = printMatchingRequirements(wiring, namespace, f);
+
+                    // Handle service requirements separately, since they aren't part
+                    // of the generic model in OSGi.
+                    if (matchNamespace(namespace, NONSTANDARD_SERVICE_NAMESPACE))
+                    {
+                        matches |= printServiceRequirements(b, f);
+                    }
 
-                // Handle service requirements separately, since they aren't part
-                // of the generic model in OSGi.
-                if (matchNamespace(namespace, NONSTANDARD_SERVICE_NAMESPACE))
-                {
-                    matches |= printServiceRequirements(b);
+                    // If there were no requirements for the specified namespace,
+                    // then say so.
+                    if (!matches)
+                    {
+                        f.format("%s %s%n", Util.unparseSubstring(namespace), EMPTY_MESSAGE);
+                    }
                 }
-
-                // If there were no requirements for the specified namespace,
-                // then say so.
-                if (!matches)
+                else
                 {
-                    System.out.println(Util.unparseSubstring(namespace) + " " + EMPTY_MESSAGE);
+                    f.format("Bundle %s is not resolved.%n",
+                        b.getBundleId());
                 }
             }
-            else
-            {
-                System.out.println("Bundle "
-                    + b.getBundleId()
-                    + " is not resolved.");
-            }
-
-            separatorNeeded = true;
+            return f.toString();
         }
     }
 
-    private static boolean printMatchingRequirements(BundleWiring wiring, List<String> namespace)
+    private static boolean printMatchingRequirements(BundleWiring wiring, List<String> namespace, Formatter f)
     {
         List<BundleWire> wires = wiring.getRequiredWires(null);
         Map<BundleRequirement, List<BundleWire>> aggregateReqs =
@@ -322,11 +331,9 @@ public class Inspect
                 List<BundleWire> providers = aggregateReqs.get(req);
                 if (providers != null)
                 {
-                    System.out.println(
-                        req.getNamespace()
-                        + "; "
-                        + req.getDirectives().get(Constants.FILTER_DIRECTIVE)
-                        + " resolved by:");
+                    f.format("%s; %s resolved by:%n",
+                        req.getNamespace(),
+                        req.getDirectives().get(Constants.FILTER_DIRECTIVE));
                     for (BundleWire wire : providers)
                     {
                         String msg;
@@ -345,19 +352,15 @@ public class Inspect
                         {
                             msg = wire.getCapability().toString();
                         }
-                        msg = "   " + msg + " from "
-                            + wire.getProviderWiring().getBundle();
-                        System.out.println(msg);
+                        f.format("   %s from %s%n", msg, wire.getProviderWiring().getBundle());
                     }
                 }
                 else
                 {
-                    System.out.println(
-                        req.getNamespace()
-                        + "; "
-                        + req.getDirectives().get(Constants.FILTER_DIRECTIVE)
-                        + " "
-                        + UNRESOLVED_MESSAGE);
+                    f.format("%s; %s %s%n",
+                        req.getNamespace(),
+                        req.getDirectives().get(Constants.FILTER_DIRECTIVE),
+                        UNRESOLVED_MESSAGE);
                 }
             }
         }
@@ -386,7 +389,7 @@ public class Inspect
         return map;
     }
 
-    static boolean printServiceRequirements(Bundle b)
+    static boolean printServiceRequirements(Bundle b, Formatter f)
     {
         boolean matches = false;
 
@@ -401,12 +404,10 @@ public class Inspect
                 for (ServiceReference<?> ref : refs)
                 {
                     // Print object class with "namespace".
-                    System.out.println(
-                        NONSTANDARD_SERVICE_NAMESPACE
-                        + "; "
-                        + Util.getValueString(ref.getProperty("objectClass"))
-                        + " provided by:");
-                    System.out.println("   " + ref.getBundle());
+                    f.format("%s; %s provided by:%n   %s%n",
+                        NONSTANDARD_SERVICE_NAMESPACE,
+                        Util.getValueString(ref.getProperty("objectClass")),
+                        ref.getBundle());
                 }
             }
         }

Modified: felix/trunk/gogo/command/src/main/java/org/apache/felix/gogo/command/Util.java
URL: http://svn.apache.org/viewvc/felix/trunk/gogo/command/src/main/java/org/apache/felix/gogo/command/Util.java?rev=1849344&r1=1849343&r2=1849344&view=diff
==============================================================================
--- felix/trunk/gogo/command/src/main/java/org/apache/felix/gogo/command/Util.java (original)
+++ felix/trunk/gogo/command/src/main/java/org/apache/felix/gogo/command/Util.java Wed Dec 19 22:29:54 2018
@@ -20,15 +20,10 @@ package org.apache.felix.gogo.command;
 
 import java.io.BufferedOutputStream;
 import java.io.File;
-import java.io.FileInputStream;
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.PrintStream;
 import java.net.URI;
-import java.net.URL;
-import java.net.URLConnection;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.jar.JarEntry;
@@ -154,65 +149,6 @@ public class Util
         }
     }
 
-    public static void downloadSource(
-        PrintStream out, PrintStream err,
-        URL srcURL, File localDir, boolean extract)
-    {
-        // Get the file name from the URL.
-        String fileName = (srcURL.getFile().lastIndexOf('/') > 0)
-            ? srcURL.getFile().substring(srcURL.getFile().lastIndexOf('/') + 1)
-            : srcURL.getFile();
-
-        try
-        {
-            out.println("Connecting...");
-
-            if (!localDir.exists())
-            {
-                err.println("Destination directory does not exist.");
-            }
-            File file = new File(localDir, fileName);
-
-            OutputStream os = new FileOutputStream(file);
-            URLConnection conn = srcURL.openConnection();
-            Util.setProxyAuth(conn);
-            int total = conn.getContentLength();
-            InputStream is = conn.getInputStream();
-
-            if (total > 0)
-            {
-                out.println("Downloading " + fileName
-                    + " ( " + total + " bytes ).");
-            }
-            else
-            {
-                out.println("Downloading " + fileName + ".");
-            }
-            byte[] buffer = new byte[4096];
-            for (int len = is.read(buffer); len > 0; len = is.read(buffer))
-            {
-                os.write(buffer, 0, len);
-            }
-
-            os.close();
-            is.close();
-
-            if (extract)
-            {
-                is = new FileInputStream(file);
-                JarInputStream jis = new JarInputStream(is);
-                out.println("Extracting...");
-                unjar(jis, localDir);
-                jis.close();
-                file.delete();
-            }
-        }
-        catch (Exception ex)
-        {
-            err.println(ex);
-        }
-    }
-
     public static void unjar(JarInputStream jis, File dir)
         throws IOException
     {
@@ -294,36 +230,6 @@ public class Util
         bos.close();
     }
 
-    public static void setProxyAuth(URLConnection conn) throws IOException
-    {
-        // Support for http proxy authentication
-        String auth = System.getProperty("http.proxyAuth");
-        if ((auth != null) && (auth.length() > 0))
-        {
-            if ("http".equals(conn.getURL().getProtocol())
-                || "https".equals(conn.getURL().getProtocol()))
-            {
-                String base64 = Base64Encoder.base64Encode(auth);
-                conn.setRequestProperty("Proxy-Authorization", "Basic " + base64);
-            }
-        }
-    }
-
-    public static InputStream openURL(final URL url) throws IOException
-    {
-        // Do it the manual way to have a chance to
-        // set request properties as proxy auth (EW).
-        return openURL(url.openConnection());
-    }
-
-    public static InputStream openURL(final URLConnection conn) throws IOException
-    {
-        // Do it the manual way to have a chance to
-        // set request properties as proxy auth (EW).
-        setProxyAuth(conn);
-        return conn.getInputStream();
-    }
-
     public static List<String> parseSubstring(String value)
     {
         List<String> pieces = new ArrayList<>();