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