You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by cs...@apache.org on 2011/07/08 12:46:39 UTC

svn commit: r1144247 - in /karaf/trunk/shell/obr: ./ src/main/java/org/apache/karaf/shell/obr/ src/test/ src/test/java/ src/test/java/org/ src/test/java/org/apache/ src/test/java/org/apache/karaf/ src/test/java/org/apache/karaf/shell/ src/test/java/org...

Author: cschneider
Date: Fri Jul  8 10:46:38 2011
New Revision: 1144247

URL: http://svn.apache.org/viewvc?rev=1144247&view=rev
Log:
KARAF-561 Use tabular output for obr:list

Added:
    karaf/trunk/shell/obr/src/test/
    karaf/trunk/shell/obr/src/test/java/
    karaf/trunk/shell/obr/src/test/java/org/
    karaf/trunk/shell/obr/src/test/java/org/apache/
    karaf/trunk/shell/obr/src/test/java/org/apache/karaf/
    karaf/trunk/shell/obr/src/test/java/org/apache/karaf/shell/
    karaf/trunk/shell/obr/src/test/java/org/apache/karaf/shell/obr/
    karaf/trunk/shell/obr/src/test/java/org/apache/karaf/shell/obr/ListCommandTest.java
Modified:
    karaf/trunk/shell/obr/pom.xml
    karaf/trunk/shell/obr/src/main/java/org/apache/karaf/shell/obr/ListCommand.java
    karaf/trunk/shell/obr/src/main/java/org/apache/karaf/shell/obr/ObrCommandSupport.java

Modified: karaf/trunk/shell/obr/pom.xml
URL: http://svn.apache.org/viewvc/karaf/trunk/shell/obr/pom.xml?rev=1144247&r1=1144246&r2=1144247&view=diff
==============================================================================
--- karaf/trunk/shell/obr/pom.xml (original)
+++ karaf/trunk/shell/obr/pom.xml Fri Jul  8 10:46:38 2011
@@ -63,6 +63,17 @@
             <groupId>org.apache.karaf.shell</groupId>
             <artifactId>org.apache.karaf.shell.console</artifactId>
         </dependency>
+        
+        <dependency>
+            <groupId>org.easymock</groupId>
+            <artifactId>easymock</artifactId>
+            <scope>test</scope>
+        </dependency>
+		<dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-jdk14</artifactId>
+            <scope>test</scope>
+        </dependency>
     </dependencies>
 
     <build>

Modified: karaf/trunk/shell/obr/src/main/java/org/apache/karaf/shell/obr/ListCommand.java
URL: http://svn.apache.org/viewvc/karaf/trunk/shell/obr/src/main/java/org/apache/karaf/shell/obr/ListCommand.java?rev=1144247&r1=1144246&r2=1144247&view=diff
==============================================================================
--- karaf/trunk/shell/obr/src/main/java/org/apache/karaf/shell/obr/ListCommand.java (original)
+++ karaf/trunk/shell/obr/src/main/java/org/apache/karaf/shell/obr/ListCommand.java Fri Jul  8 10:46:38 2011
@@ -20,7 +20,6 @@ import java.util.List;
 
 import org.apache.felix.bundlerepository.RepositoryAdmin;
 import org.apache.felix.bundlerepository.Resource;
-import org.osgi.framework.Version;
 import org.apache.felix.gogo.commands.Argument;
 import org.apache.felix.gogo.commands.Command;
 
@@ -30,71 +29,49 @@ public class ListCommand extends ObrComm
     @Argument(index = 0, name = "packages", description = "A list of packages separated by whitespaces.", required = false, multiValued = true)
     List<String> packages;
 
-    protected void doExecute(RepositoryAdmin admin) throws Exception {
-        String substr = null;
+    void doExecute(RepositoryAdmin admin) throws Exception {
+        StringBuilder substr = new StringBuilder();
 
         if (packages != null) {
-            for (String arg : packages)
-            {
-                // Add a space in between tokens.
-                if (substr == null)
-                {
-                    substr = "";
-                }
-                else
-                {
-                    substr += " ";
-                }
-
-                substr += arg;
+            for (String packageName : packages) {
+            	substr.append(" ");
+            	substr.append(packageName);
             }
         }
         
-        StringBuffer sb = new StringBuffer();
-        if ((substr == null) || (substr.length() == 0))
-        {
-            sb.append("(|(presentationname=*)(symbolicname=*))");
-        }
-        else
-        {
-            sb.append("(|(presentationname=*");
-            sb.append(substr);
-            sb.append("*)(symbolicname=*");
-            sb.append(substr);
-            sb.append("*))");
-        }
-        Resource[] resources = admin.discoverResources(sb.toString());
-        for (int resIdx = 0; (resources != null) && (resIdx < resources.length); resIdx++)
-        {
-            String name = resources[resIdx].getPresentationName();
-            String bundleSymbolicName = resources[resIdx].getSymbolicName();
-            Version version = resources[resIdx].getVersion();
-            
-            StringBuffer outputString = new StringBuffer();
-            if(bundleSymbolicName != null )
-            {
-            	outputString.append(bundleSymbolicName);
-            	outputString.append(" - ");            	
-            }
-            if(name != null)
-            {
-            	outputString.append(name);
-            	outputString.append(" ");
-            }
-            if(version != null)
-            {
-            	outputString.append("(");
-            	outputString.append(version);
-            	outputString.append(")");
-            }
-            
-            System.out.println(outputString.toString());
+        String query;
+        if ((substr == null) || (substr.length() == 0)) {
+            query = "(|(presentationname=*)(symbolicname=*))";
+        } else {
+        	query = "(|(presentationname=*" + substr + "*)(symbolicname=*" + substr + "*))";
         }
+        Resource[] resources = admin.discoverResources(query);
+        int maxPName = 4;
+        int maxSName = 13;
+        int maxVersion = 7;
+        for (Resource resource : resources) {
+        	maxPName = Math.max(maxPName, emptyIfNull(resource.getPresentationName()).length());
+        	maxSName = Math.max(maxSName, emptyIfNull(resource.getSymbolicName()).length());
+        	maxVersion = Math.max(maxVersion, emptyIfNull(resource.getVersion()).length());
+		}
+        
+    	String formatHeader = "| %-" + maxPName +"s | %-" + maxSName + "s | %-" + maxVersion + "s |";
+        String formatLine   = "| %-" + maxPName +"s | %-" + maxSName + "s | %-" + maxVersion + "s |";
+        System.out.println(String.format(formatHeader, "NAME", "SYMBOLIC NAME", "VERSION"));
+        for (Resource resource : resources) {
+            System.out.println(String.format(formatLine, 
+            		emptyIfNull(resource.getPresentationName()), 
+            		emptyIfNull(resource.getSymbolicName()), 
+            		emptyIfNull(resource.getVersion())));
+		}
 
-        if (resources == null)
-        {
+        if (resources == null || resources.length == 0) {
             System.out.println("No matching bundles.");
         }
     }
 
+	private String emptyIfNull(Object st) {
+		return st == null ? "" : st.toString();
+	}
+
 }

Modified: karaf/trunk/shell/obr/src/main/java/org/apache/karaf/shell/obr/ObrCommandSupport.java
URL: http://svn.apache.org/viewvc/karaf/trunk/shell/obr/src/main/java/org/apache/karaf/shell/obr/ObrCommandSupport.java?rev=1144247&r1=1144246&r2=1144247&view=diff
==============================================================================
--- karaf/trunk/shell/obr/src/main/java/org/apache/karaf/shell/obr/ObrCommandSupport.java (original)
+++ karaf/trunk/shell/obr/src/main/java/org/apache/karaf/shell/obr/ObrCommandSupport.java Fri Jul  8 10:46:38 2011
@@ -58,7 +58,7 @@ public abstract class ObrCommandSupport 
         return null;
     }
 
-    protected abstract void doExecute(RepositoryAdmin admin) throws Exception;
+    abstract void doExecute(RepositoryAdmin admin) throws Exception;
 
     protected Resource[] searchRepository(RepositoryAdmin admin, String targetId, String targetVersion) throws InvalidSyntaxException
     {

Added: karaf/trunk/shell/obr/src/test/java/org/apache/karaf/shell/obr/ListCommandTest.java
URL: http://svn.apache.org/viewvc/karaf/trunk/shell/obr/src/test/java/org/apache/karaf/shell/obr/ListCommandTest.java?rev=1144247&view=auto
==============================================================================
--- karaf/trunk/shell/obr/src/test/java/org/apache/karaf/shell/obr/ListCommandTest.java (added)
+++ karaf/trunk/shell/obr/src/test/java/org/apache/karaf/shell/obr/ListCommandTest.java Fri Jul  8 10:46:38 2011
@@ -0,0 +1,42 @@
+package org.apache.karaf.shell.obr;
+import org.apache.felix.bundlerepository.RepositoryAdmin;
+import org.apache.felix.bundlerepository.Resource;
+import org.apache.felix.bundlerepository.impl.ResourceImpl;
+import org.easymock.EasyMock;
+import org.easymock.IMocksControl;
+import org.junit.Test;
+
+
+public class ListCommandTest {
+
+	/**
+	 * Show how the list of obr resources looks like 
+	 * @throws Exception
+	 */
+	@Test
+	public void testList() throws Exception {
+		IMocksControl control = EasyMock.createControl();
+		RepositoryAdmin repoAdmin = control.createMock(RepositoryAdmin.class);
+		ListCommand command = new ListCommand();
+		
+		Resource[] resources = new Resource[] {
+			createResource("My bundle", "my.bundle", "1.0.0"),
+			createResource("My other Bundle", "org.apache.mybundle", "2.0.1")
+		};
+		EasyMock.expect(repoAdmin.discoverResources("(|(presentationname=*)(symbolicname=*))")).
+			andReturn(resources);
+		
+		control.replay();
+		command.doExecute(repoAdmin);
+		control.verify();
+	}
+
+	private Resource createResource(String presentationName, String symbolicName, String version) {
+		ResourceImpl r1 = new ResourceImpl();
+		r1.put(Resource.PRESENTATION_NAME, presentationName);
+		r1.put(Resource.SYMBOLIC_NAME, symbolicName);
+		r1.put(Resource.VERSION, version);
+		return r1;
+	}
+
+}