You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by do...@apache.org on 2007/07/08 22:11:01 UTC

svn commit: r554427 - in /felix/sandbox/donsez/monitor.jobcmd: ./ doc/ src/ src/main/ src/main/java/ src/main/java/org/ src/main/java/org/apache/ src/main/java/org/apache/felix/ src/main/java/org/apache/felix/monitor/ src/main/java/org/apache/felix/mon...

Author: donsez
Date: Sun Jul  8 13:11:00 2007
New Revision: 554427

URL: http://svn.apache.org/viewvc?view=rev&rev=554427
Log:
creation of the monitor.jobcmd bundle, a command to play with the monitor admin service

Added:
    felix/sandbox/donsez/monitor.jobcmd/
    felix/sandbox/donsez/monitor.jobcmd/doc/
    felix/sandbox/donsez/monitor.jobcmd/doc/readme.html   (with props)
    felix/sandbox/donsez/monitor.jobcmd/pom.xml   (with props)
    felix/sandbox/donsez/monitor.jobcmd/src/
    felix/sandbox/donsez/monitor.jobcmd/src/main/
    felix/sandbox/donsez/monitor.jobcmd/src/main/java/
    felix/sandbox/donsez/monitor.jobcmd/src/main/java/org/
    felix/sandbox/donsez/monitor.jobcmd/src/main/java/org/apache/
    felix/sandbox/donsez/monitor.jobcmd/src/main/java/org/apache/felix/
    felix/sandbox/donsez/monitor.jobcmd/src/main/java/org/apache/felix/monitor/
    felix/sandbox/donsez/monitor.jobcmd/src/main/java/org/apache/felix/monitor/jobcmd/
    felix/sandbox/donsez/monitor.jobcmd/src/main/java/org/apache/felix/monitor/jobcmd/Activator.java   (with props)
    felix/sandbox/donsez/monitor.jobcmd/src/main/java/org/apache/felix/monitor/jobcmd/GenericMonitorJob.java   (with props)
    felix/sandbox/donsez/monitor.jobcmd/src/main/java/org/apache/felix/monitor/jobcmd/MonitorJobCommand.java   (with props)

Added: felix/sandbox/donsez/monitor.jobcmd/doc/readme.html
URL: http://svn.apache.org/viewvc/felix/sandbox/donsez/monitor.jobcmd/doc/readme.html?view=auto&rev=554427
==============================================================================
--- felix/sandbox/donsez/monitor.jobcmd/doc/readme.html (added)
+++ felix/sandbox/donsez/monitor.jobcmd/doc/readme.html Sun Jul  8 13:11:00 2007
@@ -0,0 +1,76 @@
+<!DOCTYPE doctype PUBLIC "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+  <meta http-equiv="Content-Type"
+ content="text/html; charset=iso-8859-1">
+  <title>Monitor Job Command</title>
+</head>
+<body alink="#ff0000" vlink="#551a8b" link="#0000ee" bgcolor="#ffffff"
+ text="#000000">
+<h1><i>Monitor Job Command</i></h1>
+
+<p><b>Description</b><br>
+This bundle provides a command to start and discard monitoring jobs (see Chapter 119 Monitor Admin Service Specification Version 1.0)
+</p>
+<p>
+The command name is <code>monitorjob</code>.<br> 
+The command options are 
+<pre>
+monitorjob &lt;start|discard|jobs|variables|help&gt;
+
+monitorjob variables : list the variable names
+monitorjob start &lt;statusVariableName&gt; &lt;schedule&gt; &lt;count&gt; : start a scheduled monitoring job for the variable
+monitorjob start &lt;statusVariableName&gt; &lt;count&gt; : start a monitoring job for the variable
+monitorjob discard &lt;statusVariableName&gt; : discard the  monitoring job for the variable
+monitorjob jobs : list the started jobs
+</pre>
+</p>
+
+</font>
+
+<p><b>Demo</b><br>
+run commands in <a href="http://www.apache.org.~donsez/dev/osgi/script/monitor.txt">http://www.apache.org.~donsez/dev/osgi/script/monitor.txt</a>.
+</p>
+
+
+<p><b>Contributor(s)</b><br>
+Apache Felix Project Team</p>
+
+<p><b>License</b><br>
+ASL2
+</p>
+
+
+
+<p><b>Services</b><br>
+<ul>
+<li>org.osgi.service.event.EventHandler</li>
+<li>org.apache.felix.shell.Command</li>
+</ul>
+</p>
+
+
+<p><b>Provisions</b><br>
+None
+</p>
+
+<p id="doc"><b>Documentation</b><br>
+<ul>
+<li><a href=".">general</a></li>
+<li><a href="api">JavaDoc</a></li>
+</ul>
+</p>
+
+
+<p id="todolist"><b>TODOLIST</b><br>
+TODO
+</p>
+
+<p id="link"><b>Links</b><br>
+<ul>
+</ul>
+</p>
+
+
+</body>
+</html>

Propchange: felix/sandbox/donsez/monitor.jobcmd/doc/readme.html
------------------------------------------------------------------------------
    svn:eol-style = native

Added: felix/sandbox/donsez/monitor.jobcmd/pom.xml
URL: http://svn.apache.org/viewvc/felix/sandbox/donsez/monitor.jobcmd/pom.xml?view=auto&rev=554427
==============================================================================
--- felix/sandbox/donsez/monitor.jobcmd/pom.xml (added)
+++ felix/sandbox/donsez/monitor.jobcmd/pom.xml Sun Jul  8 13:11:00 2007
@@ -0,0 +1,126 @@
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements.  See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership.  The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied.  See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+<project>
+
+	<properties>
+		<repositoryLocation>http://www.apache.org/~donsez/dev/osgi/</repositoryLocation>
+		<description>provides a shell command to play with the Monitor Admin service.</description>
+	</properties>  
+
+  <parent>
+    <groupId>org.apache.felix</groupId>
+    <artifactId>felix</artifactId>
+    <version>0.9.0-incubator-SNAPSHOT</version>
+  </parent>
+  
+  <modelVersion>4.0.0</modelVersion>
+  <packaging>bundle</packaging>
+  <name>Apache Felix Monitor Admin Command</name>
+  <artifactId>org.apache.felix.monitor.jobcmd</artifactId>
+  <description>${description}</description>
+
+  <dependencies>
+    <dependency>
+      <groupId>${pom.groupId}</groupId>
+      <artifactId>org.osgi.core</artifactId>
+      <version>${pom.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>${pom.groupId}</groupId>
+      <artifactId>org.osgi.compendium</artifactId>
+      <version>${pom.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>${pom.groupId}</groupId>
+      <artifactId>org.apache.felix.monitor</artifactId>
+      <version>${pom.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>${pom.groupId}</groupId>
+      <artifactId>org.apache.felix.shell</artifactId>
+      <version>${pom.version}</version>
+    </dependency>
+  </dependencies>
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.felix</groupId>
+        <artifactId>maven-bundle-plugin</artifactId>
+        <extensions>true</extensions>
+        <configuration>
+          <instructions>
+          
+          	<!-- docs in http://cwiki.apache.org/FELIX/bundle-plugin-for-maven-bnd.html and http://cwiki.apache.org/FELIX/osgi-plugin-for-maven-2.html -->
+          	
+            <Export-Service>
+            	org.osgi.service.event.EventHandler,
+				org.apache.felix.shell.Command
+            </Export-Service>
+
+			<Import-Service>
+				org.osgi.service.monitor.MonitorAdmin,
+				org.osgi.service.event.EventAdmin
+			</Import-Service>
+
+            <Private-Package>${pom.artifactId}.*</Private-Package>
+            <Import-Package>*</Import-Package>
+            <!--
+            	org.osgi.framework;specification-version=1.3.0,
+				 org.osgi.util.tracker;specification-version=1.3.0,
+				 org.osgi.service.monitor;specification-version=1.0.0,
+				 org.osgi.service.event;specification-version=1.0.0,
+				 org.apache.felix.shell
+			-->
+            
+            <Bundle-Activator>${pom.artifactId}.MonitorJobCommand</Bundle-Activator>
+
+            <!--
+            <Bundle-DocURL>${repositoryLocation}${pom.artifactId}/index.html</Bundle-DocURL>
+            <Bundle-Url>${repositoryLocation}${pom.artifactId}/${pom.artifactId}-${pom.version}.jar</Bundle-Url>
+            <Bundle-Source>${repositoryLocation}${pom.artifactId}/${pom.artifactId}-${pom.version}-src.jar</Bundle-Source>
+			-->
+			
+            <!--
+            <Bundle-SymbolicName>${pom.artifactId}</Bundle-SymbolicName>
+            <Bundle-Description>${description}</Bundle-Description>
+            <Bundle-Vendor>Apache Software Foundation</Bundle-Vendor>
+			-->
+
+          </instructions>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
+  <!--
+  <repositories>
+    <repository>
+      <id>apache.m2.incubator</id>
+      <name>Apache M2 Incubator Repository</name>
+      <url>http://people.apache.org/repo/m2-incubating-repository/</url>
+    </repository>
+  </repositories>
+  <pluginRepositories>
+    <pluginRepository>
+      <id>apache.m2.incubator</id>
+      <name>Apache M2 Incubator Repository</name>
+      <url>http://people.apache.org/repo/m2-incubating-repository/</url>
+    </pluginRepository>
+  </pluginRepositories>
+  -->
+</project>

Propchange: felix/sandbox/donsez/monitor.jobcmd/pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Added: felix/sandbox/donsez/monitor.jobcmd/src/main/java/org/apache/felix/monitor/jobcmd/Activator.java
URL: http://svn.apache.org/viewvc/felix/sandbox/donsez/monitor.jobcmd/src/main/java/org/apache/felix/monitor/jobcmd/Activator.java?view=auto&rev=554427
==============================================================================
--- felix/sandbox/donsez/monitor.jobcmd/src/main/java/org/apache/felix/monitor/jobcmd/Activator.java (added)
+++ felix/sandbox/donsez/monitor.jobcmd/src/main/java/org/apache/felix/monitor/jobcmd/Activator.java Sun Jul  8 13:11:00 2007
@@ -0,0 +1,55 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.felix.monitor.jobcmd;
+
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+
+/**
+ * Activator
+ * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
+ */
+public class Activator implements BundleActivator {
+
+	MonitorJobCommand monitorJobTraceCommand;
+
+	/**
+	 * Called upon starting of the bundle.
+	 * 
+	 * @param context
+	 *            The bundle context passed by the framework
+	 * @exception Exception
+	 */
+	public void start(BundleContext bundleContext) throws Exception {
+		monitorJobTraceCommand = new MonitorJobCommand();
+		monitorJobTraceCommand.start(bundleContext);
+	}
+
+	/**
+	 * Called upon stopping the bundle.
+	 * 
+	 * @param context
+	 *            The bundle context passed by the framework
+	 * @exception Exception
+	 */
+	public void stop(BundleContext bundleContext) throws Exception {
+		monitorJobTraceCommand.stop(bundleContext);
+	}
+}
\ No newline at end of file

Propchange: felix/sandbox/donsez/monitor.jobcmd/src/main/java/org/apache/felix/monitor/jobcmd/Activator.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: felix/sandbox/donsez/monitor.jobcmd/src/main/java/org/apache/felix/monitor/jobcmd/GenericMonitorJob.java
URL: http://svn.apache.org/viewvc/felix/sandbox/donsez/monitor.jobcmd/src/main/java/org/apache/felix/monitor/jobcmd/GenericMonitorJob.java?view=auto&rev=554427
==============================================================================
--- felix/sandbox/donsez/monitor.jobcmd/src/main/java/org/apache/felix/monitor/jobcmd/GenericMonitorJob.java (added)
+++ felix/sandbox/donsez/monitor.jobcmd/src/main/java/org/apache/felix/monitor/jobcmd/GenericMonitorJob.java Sun Jul  8 13:11:00 2007
@@ -0,0 +1,121 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.felix.monitor.jobcmd;
+
+import java.util.Dictionary;
+import java.util.Hashtable;
+
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+import org.osgi.service.event.Event;
+import org.osgi.service.event.EventConstants;
+import org.osgi.service.event.EventHandler;
+import org.osgi.service.monitor.MonitorAdmin;
+import org.osgi.service.monitor.MonitoringJob;
+import org.osgi.util.tracker.ServiceTracker;
+
+/**
+ * a generic monitoring job
+ * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
+ */
+public class GenericMonitorJob implements BundleActivator, EventHandler {
+	
+	private String[] statusVariables;
+	private int schedule;
+	private int count;
+	
+	public GenericMonitorJob(String[] statusVariables,int count){
+		this.statusVariables=statusVariables;
+		this.schedule=0;
+		this.count=count;
+	}
+
+	public GenericMonitorJob(String[] statusVariables,int schedule, int count){
+		this.statusVariables=statusVariables;
+		this.schedule=schedule;
+		this.count=count;	
+	}
+
+	private static int cpt=1;
+	private MonitoringJob job;
+	private ServiceTracker serviceTracker;
+	private String monListenerId;
+	/**
+	 * @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext)
+	 */
+	public final void start(BundleContext context) throws Exception {
+		
+		monListenerId="org.apache.felix.monitor.jobcmd#"+context.getBundle().getBundleId()+"#"+(cpt++);
+		
+		serviceTracker=new ServiceTracker(context,MonitorAdmin.class.getName(),null);
+		serviceTracker.open();
+		
+		Dictionary properties = new Hashtable();
+		properties.put(EventConstants.EVENT_TOPIC, new String[]{"org/osgi/service/monitor"});
+		properties.put(EventConstants.EVENT_FILTER,
+				"(mon.listener.id="+monListenerId+")");
+		context.registerService(EventHandler.class.getName(), this, properties);
+		MonitorAdmin monitorAdmin=(MonitorAdmin) serviceTracker.getService();
+		if(monitorAdmin==null)
+			throw new IllegalStateException("could not start if no MonitorAdmin service is available");
+		
+		if(schedule==0)
+			job = monitorAdmin.startJob(
+				monListenerId, // listener.id
+				statusVariables,
+				count // Forever
+				);
+		else
+			job = monitorAdmin.startScheduledJob(
+				monListenerId, // listener.id
+				statusVariables,
+				schedule, // seconds
+				count // Forever
+				);
+	}
+
+	/**
+	 * @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext)
+	 */
+	 public void stop(BundleContext context) throws Exception {
+		job.stop();
+		serviceTracker.close();
+	}
+
+	/**
+	 * @see org.osgi.service.event.EventHandler#handleEvent(org.osgi.service.event.Event)
+	 */
+	public void handleEvent(Event event) {
+		String pid = (String) event.getProperty("mon.monitorable.pid");
+		String name = (String) event.getProperty("mon.statusvariable.name");
+		Object value = event.getProperty("mon.statusvariable.value");
+		System.out.println(monListenerId+" : StatusVariable "+ pid + "/" + name + "=" + value);
+	}
+	
+	public String toString() {
+		StringBuffer sb=new StringBuffer();
+		sb.append(monListenerId).append(" monitors [");
+		for(int i=0;i<statusVariables.length;i++){
+			if(i!=0) sb.append(',');
+			sb.append(statusVariables[i]);
+		}
+		sb.append("](report count=").append(job.getReportCount()).append(")");
+		return sb.toString();
+	}
+}

Propchange: felix/sandbox/donsez/monitor.jobcmd/src/main/java/org/apache/felix/monitor/jobcmd/GenericMonitorJob.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: felix/sandbox/donsez/monitor.jobcmd/src/main/java/org/apache/felix/monitor/jobcmd/MonitorJobCommand.java
URL: http://svn.apache.org/viewvc/felix/sandbox/donsez/monitor.jobcmd/src/main/java/org/apache/felix/monitor/jobcmd/MonitorJobCommand.java?view=auto&rev=554427
==============================================================================
--- felix/sandbox/donsez/monitor.jobcmd/src/main/java/org/apache/felix/monitor/jobcmd/MonitorJobCommand.java (added)
+++ felix/sandbox/donsez/monitor.jobcmd/src/main/java/org/apache/felix/monitor/jobcmd/MonitorJobCommand.java Sun Jul  8 13:11:00 2007
@@ -0,0 +1,183 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.felix.monitor.jobcmd;
+
+import java.io.PrintStream;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.StringTokenizer;
+
+import org.apache.felix.shell.Command;
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceRegistration;
+import org.osgi.service.monitor.MonitorAdmin;
+import org.osgi.util.tracker.ServiceTracker;
+
+/**
+ * This class creates a shell command
+ * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
+ */
+public class MonitorJobCommand implements Command, BundleActivator {
+
+	private BundleContext bundleContext;
+
+	private ServiceRegistration serviceRegistration;
+
+	private ServiceTracker serviceTracker;
+	
+	private Map jobs = new HashMap();
+
+	public void start(BundleContext bundleContext) throws Exception {
+		this.bundleContext = bundleContext;
+		serviceTracker=new ServiceTracker(bundleContext,MonitorAdmin.class.getName(),null);
+		serviceTracker.open();
+		serviceRegistration = bundleContext.registerService(Command.class.getName(), this, null);		
+	}
+
+	public void stop(BundleContext context) throws Exception {
+		Iterator iterator = jobs.values().iterator();
+		while (iterator.hasNext()) {
+			GenericMonitorJob job = (GenericMonitorJob) iterator.next();
+			try {
+				job.stop(bundleContext);
+			} catch (Exception e) {
+				System.err.println(e.getMessage());
+			}
+		}
+
+		serviceRegistration.unregister();
+		serviceRegistration = null;
+		
+		serviceTracker.close();
+	}
+
+	public String getName() {
+		return "monitorjob";
+	}
+
+	public String getUsage() {
+		return "monitorjob <start|discard|jobs|variables|help>";
+	}
+
+	public String getShortDescription() {
+		return "start|discard|list monitoring jobs and list status variables";
+	}
+
+	private void printUsage(PrintStream out) {
+		out.println(getUsage());
+		return;
+	}
+
+	public void execute(String commandline, PrintStream out, PrintStream err) {
+		StringTokenizer st = new StringTokenizer(commandline, " ");
+
+		if (st.countTokens() == 1) {
+			printUsage(out);
+			return;
+		}
+
+		// Ignore the command name.
+		st.nextToken();
+
+		if (!st.hasMoreTokens()) {
+			printUsage(err);
+			return;
+		}
+
+		String subcommand = st.nextToken().trim();
+
+		if (subcommand.equals("start")) {
+			int c=st.countTokens();
+			if(c<2 || c>3){
+				printUsage(err);
+				return;
+			}
+			String statusVariableName = st.nextToken().trim();
+			int schedule=0;
+			if(c==3) {
+				schedule = Integer.parseInt(st.nextToken().trim());
+			}
+			int count = Integer.parseInt(st.nextToken().trim());
+			
+			GenericMonitorJob job = (GenericMonitorJob) jobs.get(statusVariableName);
+			if (job != null)
+				return;
+			job = new GenericMonitorJob(
+					new String[] { statusVariableName },
+					schedule,
+					count);
+			try {
+				job.start(bundleContext);
+			} catch (Exception e) {
+				err.println(e.getMessage());
+				return;
+			}
+			jobs.put(statusVariableName, job);
+		} else if(subcommand.equals("jobs")){
+			if(st.countTokens()!=0){
+				printUsage(err);
+				return;
+			}
+			Iterator iterator=jobs.values().iterator();
+			while(iterator.hasNext()){
+				out.println(iterator.next());
+			}
+			out.println();
+		} else if(subcommand.equals("discard")){
+			if(st.countTokens()!=1){
+				printUsage(err);
+				return;
+			}
+			String statusVariableName = st.nextToken().trim();
+			GenericMonitorJob job = (GenericMonitorJob) jobs.remove(statusVariableName);
+			if(job!=null)
+				try {
+					job.stop(bundleContext);
+				} catch (Exception e) {
+					err.println(e.getMessage());
+				}
+		} else if(subcommand.equals("variables")){
+			if(st.countTokens()!=0){
+				printUsage(err);
+				return;
+			}
+			MonitorAdmin monitorAdmin=(MonitorAdmin) serviceTracker.getService();
+			if(monitorAdmin!=null){
+				String[] monitorableNames=monitorAdmin.getMonitorableNames();
+				for(int i=0;i<monitorableNames.length;i++) {
+					// out.println(monitorableNames[i]);
+					String[] statusVariableNames= monitorAdmin.getStatusVariableNames(monitorableNames[i]);
+					for(int j=0;j<statusVariableNames.length;j++) {
+						//out.print("\t/");
+						out.print(monitorableNames[i]);
+						out.print("/");
+						out.println(statusVariableNames[j]);
+					}
+				}
+			}
+			out.println();
+		} else if(subcommand.equals("help")){
+			printUsage(out);
+		} else {
+			printUsage(err);			
+		}
+	}	
+}

Propchange: felix/sandbox/donsez/monitor.jobcmd/src/main/java/org/apache/felix/monitor/jobcmd/MonitorJobCommand.java
------------------------------------------------------------------------------
    svn:eol-style = native