Author: rombert
Date: Fri Aug  9 21:31:02 2013
New Revision: 1512503

URL: http://svn.apache.org/r1512503
Log:
SLING-2667 - [Tooling] create text-only console that exposes the
operations performed and their results

Modify the Tracer to be bound to the EventAdmin as well.

Modified:
    
sling/trunk/tooling/ide/api/src/org/apache/sling/ide/transport/CommandExecutionProperties.java
    sling/trunk/tooling/ide/impl-resource/OSGI-INF/RepositoryImpl.xml
    sling/trunk/tooling/ide/impl-resource/OSGI-INF/Tracer.xml
    
sling/trunk/tooling/ide/impl-resource/src/org/apache/sling/ide/impl/resource/transport/RepositoryImpl.java
    
sling/trunk/tooling/ide/impl-resource/src/org/apache/sling/ide/impl/resource/transport/TracingCommand.java
    
sling/trunk/tooling/ide/impl-resource/src/org/apache/sling/ide/impl/resource/util/Tracer.java

Modified: 
sling/trunk/tooling/ide/api/src/org/apache/sling/ide/transport/CommandExecutionProperties.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/tooling/ide/api/src/org/apache/sling/ide/transport/CommandExecutionProperties.java?rev=1512503&r1=1512502&r2=1512503&view=diff
==============================================================================
--- 
sling/trunk/tooling/ide/api/src/org/apache/sling/ide/transport/CommandExecutionProperties.java
 (original)
+++ 
sling/trunk/tooling/ide/api/src/org/apache/sling/ide/transport/CommandExecutionProperties.java
 Fri Aug  9 21:31:02 2013
@@ -17,6 +17,8 @@
 
 public final class CommandExecutionProperties {
 
+    public static final String TOPIC = 
Repository.class.getPackage().getName().replace('.', '/');
+
     public static final String TIMESTAMP_START = "timestamp.start";
     public static final String TIMESTAMP_END = "timestamp.end";
     public static final String ACTION_TYPE = "action.type";

Modified: sling/trunk/tooling/ide/impl-resource/OSGI-INF/RepositoryImpl.xml
URL: 
http://svn.apache.org/viewvc/sling/trunk/tooling/ide/impl-resource/OSGI-INF/RepositoryImpl.xml?rev=1512503&r1=1512502&r2=1512503&view=diff
==============================================================================
--- sling/trunk/tooling/ide/impl-resource/OSGI-INF/RepositoryImpl.xml (original)
+++ sling/trunk/tooling/ide/impl-resource/OSGI-INF/RepositoryImpl.xml Fri Aug  
9 21:31:02 2013
@@ -4,6 +4,5 @@
    <service>
       <provide interface="org.apache.sling.ide.transport.Repository"/>
    </service>
-   <reference bind="bindTracer" cardinality="1..1" 
interface="org.apache.sling.ide.impl.resource.util.Tracer" name="Tracer" 
policy="static" unbind="unbindTracer"/>
    <reference bind="bindEventAdmin" cardinality="1..1" 
interface="org.osgi.service.event.EventAdmin" name="EventAdmin" policy="static" 
unbind="unbindEventAdmin"/>
 </scr:component>

Modified: sling/trunk/tooling/ide/impl-resource/OSGI-INF/Tracer.xml
URL: 
http://svn.apache.org/viewvc/sling/trunk/tooling/ide/impl-resource/OSGI-INF/Tracer.xml?rev=1512503&r1=1512502&r2=1512503&view=diff
==============================================================================
--- sling/trunk/tooling/ide/impl-resource/OSGI-INF/Tracer.xml (original)
+++ sling/trunk/tooling/ide/impl-resource/OSGI-INF/Tracer.xml Fri Aug  9 
21:31:02 2013
@@ -2,8 +2,10 @@
 <scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0"; 
immediate="false">
    <implementation class="org.apache.sling.ide.impl.resource.util.Tracer"/>
    <property name="listener.symbolic.name" type="String" 
value="org.apache.sling.ide.impl-resource"/>
+   <property name="event.topics" value="org/apache/sling/ide/transport"/>
    <service>
       <provide interface="org.apache.sling.ide.impl.resource.util.Tracer"/>
       <provide 
interface="org.eclipse.osgi.service.debug.DebugOptionsListener"/>
+      <provide interface="org.osgi.service.event.EventHandler"/>
    </service>
 </scr:component>

Modified: 
sling/trunk/tooling/ide/impl-resource/src/org/apache/sling/ide/impl/resource/transport/RepositoryImpl.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/tooling/ide/impl-resource/src/org/apache/sling/ide/impl/resource/transport/RepositoryImpl.java?rev=1512503&r1=1512502&r2=1512503&view=diff
==============================================================================
--- 
sling/trunk/tooling/ide/impl-resource/src/org/apache/sling/ide/impl/resource/transport/RepositoryImpl.java
 (original)
+++ 
sling/trunk/tooling/ide/impl-resource/src/org/apache/sling/ide/impl/resource/transport/RepositoryImpl.java
 Fri Aug  9 21:31:02 2013
@@ -19,7 +19,6 @@ package org.apache.sling.ide.impl.resour
 import java.util.Map;
 
 import org.apache.commons.httpclient.HttpClient;
-import org.apache.sling.ide.impl.resource.util.Tracer;
 import org.apache.sling.ide.transport.Command;
 import org.apache.sling.ide.transport.FileInfo;
 import org.apache.sling.ide.transport.ResourceProxy;
@@ -28,7 +27,6 @@ import org.osgi.service.event.EventAdmin
 public class RepositoryImpl extends AbstractRepository{
        
     private final HttpClient httpClient = new HttpClient();
-    private Tracer tracer;
     private EventAdmin eventAdmin;
 
        @Override
@@ -36,9 +34,9 @@ public class RepositoryImpl extends Abst
         return wrap(new AddNodeCommand(fileInfo, repositoryInfo, httpClient));
        }
 
-    private <T> Command<T> wrap(AbstractCommand<T> command) {
 
-        return new TracingCommand<T>(command, tracer, eventAdmin);
+    private <T> Command<T> wrap(AbstractCommand<T> command) {
+        return new TracingCommand<T>(command, eventAdmin);
     }
 
        @Override
@@ -68,16 +66,6 @@ public class RepositoryImpl extends Abst
         return wrap(new UpdateContentCommand(repositoryInfo, httpClient, 
fileInfo.getRelativeLocation(), properties, fileInfo));
        }
 
-    public void bindTracer(Tracer tracer) {
-
-        this.tracer = tracer;
-    }
-
-    public void unbindTracer(Tracer tracer) {
-
-        this.tracer = null;
-    }
-
     public void bindEventAdmin(EventAdmin eventAdmin) {
 
         this.eventAdmin = eventAdmin;

Modified: 
sling/trunk/tooling/ide/impl-resource/src/org/apache/sling/ide/impl/resource/transport/TracingCommand.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/tooling/ide/impl-resource/src/org/apache/sling/ide/impl/resource/transport/TracingCommand.java?rev=1512503&r1=1512502&r2=1512503&view=diff
==============================================================================
--- 
sling/trunk/tooling/ide/impl-resource/src/org/apache/sling/ide/impl/resource/transport/TracingCommand.java
 (original)
+++ 
sling/trunk/tooling/ide/impl-resource/src/org/apache/sling/ide/impl/resource/transport/TracingCommand.java
 Fri Aug  9 21:31:02 2013
@@ -19,7 +19,6 @@ package org.apache.sling.ide.impl.resour
 import java.util.HashMap;
 import java.util.Map;
 
-import org.apache.sling.ide.impl.resource.util.Tracer;
 import org.apache.sling.ide.transport.Command;
 import org.apache.sling.ide.transport.CommandExecutionProperties;
 import org.apache.sling.ide.transport.RepositoryException;
@@ -30,12 +29,10 @@ import org.osgi.service.event.EventAdmin
 class TracingCommand<T> implements Command<T> {
 
     private final AbstractCommand<T> command;
-    private final Tracer tracer;
     private final EventAdmin eventAdmin;
 
-    public TracingCommand(AbstractCommand<T> command, Tracer tracer, 
EventAdmin eventAdmin) {
+    public TracingCommand(AbstractCommand<T> command, EventAdmin eventAdmin) {
         this.command = command;
-        this.tracer = tracer;
         this.eventAdmin = eventAdmin;
     }
 
@@ -46,9 +43,6 @@ class TracingCommand<T> implements Comma
         Result<T> result = command.execute();
         long end = System.currentTimeMillis();
 
-        if (tracer != null)
-            tracer.trace("{0} -> {1}", command, result.toString());
-
         if (eventAdmin != null) {
             Map<String, Object> props = new HashMap<String, Object>();
             props.put(CommandExecutionProperties.RESULT_TEXT, 
result.toString());
@@ -61,7 +55,7 @@ class TracingCommand<T> implements Comma
             props.put(CommandExecutionProperties.ACTION_TARGET, 
command.getPath());
             props.put(CommandExecutionProperties.TIMESTAMP_START, start);
             props.put(CommandExecutionProperties.TIMESTAMP_END, end);
-            Event event = new Event("org/apache/sling/ide/transport", props);
+            Event event = new Event(CommandExecutionProperties.TOPIC, props);
             eventAdmin.postEvent(event);
         }
 

Modified: 
sling/trunk/tooling/ide/impl-resource/src/org/apache/sling/ide/impl/resource/util/Tracer.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/tooling/ide/impl-resource/src/org/apache/sling/ide/impl/resource/util/Tracer.java?rev=1512503&r1=1512502&r2=1512503&view=diff
==============================================================================
--- 
sling/trunk/tooling/ide/impl-resource/src/org/apache/sling/ide/impl/resource/util/Tracer.java
 (original)
+++ 
sling/trunk/tooling/ide/impl-resource/src/org/apache/sling/ide/impl/resource/util/Tracer.java
 Fri Aug  9 21:31:02 2013
@@ -16,12 +16,15 @@
  */
 package org.apache.sling.ide.impl.resource.util;
 
+import org.apache.sling.ide.transport.CommandExecutionProperties;
 import org.eclipse.osgi.service.debug.DebugOptions;
 import org.eclipse.osgi.service.debug.DebugOptionsListener;
 import org.eclipse.osgi.service.debug.DebugTrace;
 import org.eclipse.osgi.util.NLS;
+import org.osgi.service.event.Event;
+import org.osgi.service.event.EventHandler;
 
-public class Tracer implements DebugOptionsListener {
+public class Tracer implements DebugOptionsListener, EventHandler {
 
     private boolean debugEnabled;
     private DebugTrace trace;
@@ -43,4 +46,17 @@ public class Tracer implements DebugOpti
         trace.trace("/debug", message);
     }
 
+    @Override
+    public void handleEvent(Event event) {
+        if ( !debugEnabled ) 
+            return;
+        
+        String type = (String) 
event.getProperty(CommandExecutionProperties.ACTION_TYPE);
+        String target = (String) 
event.getProperty(CommandExecutionProperties.ACTION_TARGET);
+        String result = (String) 
event.getProperty(CommandExecutionProperties.RESULT_TEXT);
+
+
+        trace.trace("/debug", NLS.bind("{0} -> {1} : {2}", new Object[] { 
type, target, result }));
+    }
+
 }


Reply via email to