Author: cziegeler
Date: Fri May 17 15:44:23 2013
New Revision: 1483875

URL: http://svn.apache.org/r1483875
Log:
SLING-2868 :  Improve and cleanup implementation : Don't use event admin with 
custom event objects to update jmx information

Modified:
    sling/trunk/bundles/extensions/event/pom.xml
    
sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/JobManagerImpl.java
    
sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/jmx/QueueStatusEvent.java
    
sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/jmx/QueuesMBeanImpl.java
    
sling/trunk/bundles/extensions/event/src/test/java/org/apache/sling/event/impl/jobs/jmx/QueuesMBeanImplTest.java

Modified: sling/trunk/bundles/extensions/event/pom.xml
URL: 
http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/event/pom.xml?rev=1483875&r1=1483874&r2=1483875&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/event/pom.xml (original)
+++ sling/trunk/bundles/extensions/event/pom.xml Fri May 17 15:44:23 2013
@@ -55,10 +55,6 @@
     <build>
         <plugins>
             <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                 <artifactId>maven-surefire-plugin</artifactId>
-            </plugin>
-            <plugin>
                 <groupId>org.apache.felix</groupId>
                 <artifactId>maven-scr-plugin</artifactId>
             </plugin>
@@ -87,7 +83,6 @@
             <!-- plain unit tests -->
             <plugin>
                 <artifactId>maven-surefire-plugin</artifactId>
-                <version>2.12</version>
                 <configuration>
                     <excludes>
                         <exclude>**/it/**</exclude>
@@ -97,7 +92,6 @@
             <!-- integration tests run with pax-exam -->
             <plugin>
                 <artifactId>maven-failsafe-plugin</artifactId>
-                <version>2.12</version>
                 <executions>
                   <execution>
                     <goals>
@@ -123,7 +117,6 @@
             </plugin>
             <plugin>
                 <artifactId>maven-clean-plugin</artifactId>
-                <version>2.5</version>
                 <configuration>
                     <filesets>
                         <fileset>

Modified: 
sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/JobManagerImpl.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/JobManagerImpl.java?rev=1483875&r1=1483874&r2=1483875&view=diff
==============================================================================
--- 
sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/JobManagerImpl.java
 (original)
+++ 
sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/JobManagerImpl.java
 Fri May 17 15:44:23 2013
@@ -57,6 +57,7 @@ import org.apache.sling.event.impl.jobs.
 import org.apache.sling.event.impl.jobs.config.QueueConfigurationManager;
 import 
org.apache.sling.event.impl.jobs.config.QueueConfigurationManager.QueueInfo;
 import org.apache.sling.event.impl.jobs.jmx.QueueStatusEvent;
+import org.apache.sling.event.impl.jobs.jmx.QueuesMBeanImpl;
 import org.apache.sling.event.impl.jobs.queues.AbstractJobQueue;
 import org.apache.sling.event.impl.jobs.queues.OrderedJobQueue;
 import org.apache.sling.event.impl.jobs.queues.ParallelJobQueue;
@@ -75,6 +76,7 @@ import org.apache.sling.event.jobs.Queue
 import org.apache.sling.event.jobs.Statistics;
 import org.apache.sling.event.jobs.TopicStatistics;
 import org.apache.sling.event.jobs.consumer.JobConsumer;
+import org.apache.sling.event.jobs.jmx.QueuesMBean;
 import org.osgi.service.event.Event;
 import org.osgi.service.event.EventAdmin;
 import org.osgi.service.event.EventConstants;
@@ -128,6 +130,9 @@ public class JobManagerImpl
     @Reference
     private JobConsumerManager jobConsumerManager;
 
+    @Reference
+    private QueuesMBean queuesMBean;
+
     /** The job manager configuration. */
     private JobManagerConfiguration configuration;
 
@@ -201,10 +206,10 @@ public class JobManagerImpl
         while ( i.hasNext() ) {
             final AbstractJobQueue jbq = i.next();
             // update mbeans
-            eventAdmin.sendEvent(new QueueStatusEvent(null, jbq));
+            ((QueuesMBeanImpl)queuesMBean).sendEvent(new 
QueueStatusEvent(null, jbq));
             jbq.close();
             // update mbeans
-            eventAdmin.sendEvent(new QueueStatusEvent(null, jbq));
+            ((QueuesMBeanImpl)queuesMBean).sendEvent(new 
QueueStatusEvent(null, jbq));
         }
         this.queues.clear();
         logger.info("Apache Sling Job Manager stopped on instance {}", 
Environment.APPLICATION_ID);
@@ -248,7 +253,7 @@ public class JobManagerImpl
                         // remove
                         i.remove();
                         // update mbeans
-                        eventAdmin.sendEvent(new QueueStatusEvent(null, jbq));
+                        ((QueuesMBeanImpl)queuesMBean).sendEvent(new 
QueueStatusEvent(null, jbq));
                     } else {
                         // mark to be removed during next cycle
                         jbq.markForRemoval();
@@ -330,7 +335,7 @@ public class JobManagerImpl
                             handler.remove();
                         } else {
                             queues.put(queueInfo.queueName, queue);
-                            eventAdmin.sendEvent(new QueueStatusEvent(queue, 
null));
+                            ((QueuesMBeanImpl)queuesMBean).sendEvent(new 
QueueStatusEvent(queue, null));
                             queue.start();
                         }
                     }
@@ -379,7 +384,7 @@ public class JobManagerImpl
             // copy statistics
             this.baseStatistics.add(queue);
             // update mbeans
-            eventAdmin.sendEvent(new QueueStatusEvent(null, queue));
+            ((QueuesMBeanImpl)queuesMBean).sendEvent(new 
QueueStatusEvent(null, queue));
         } else {
             if ( !queue.getName().contains("<outdated>") ) {
                 // notify queue
@@ -388,7 +393,7 @@ public class JobManagerImpl
             // readd with new name
             this.queues.put(queue.getName(), queue);
             // update mbeans
-            eventAdmin.sendEvent(new QueueStatusEvent(queue, queue));
+            ((QueuesMBeanImpl)queuesMBean).sendEvent(new 
QueueStatusEvent(queue, queue));
         }
     }
 

Modified: 
sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/jmx/QueueStatusEvent.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/jmx/QueueStatusEvent.java?rev=1483875&r1=1483874&r2=1483875&view=diff
==============================================================================
--- 
sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/jmx/QueueStatusEvent.java
 (original)
+++ 
sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/jmx/QueueStatusEvent.java
 Fri May 17 15:44:23 2013
@@ -17,39 +17,35 @@
  */
 package org.apache.sling.event.impl.jobs.jmx;
 
-import java.util.Map;
-
 import org.apache.sling.event.jobs.Queue;
-import org.osgi.service.event.Event;
 
-public class QueueStatusEvent extends Event {
+public class QueueStatusEvent {
 
-    public static final String TOPIC = "org/apache/sling/event/Queue";
-    private Queue queue;
-    private Queue oldqueue;
+    private final Queue queue;
+    private final Queue oldqueue;
 
 
-    @SuppressWarnings({ "rawtypes" })
-    public QueueStatusEvent(Queue queue, Queue oldqueue) {
-        super(TOPIC, (Map<String, Object>)null);
+    public QueueStatusEvent(final Queue queue, final Queue oldqueue) {
         this.queue = queue;
         this.oldqueue = oldqueue;
     }
     public boolean isNew() {
         return this.oldqueue == null;
     }
+
     public boolean isUpdate() {
         return this.queue == this.oldqueue;
     }
+
     public boolean isRemoved() {
         return this.queue == null;
     }
+
     public Queue getQueue() {
         return queue;
     }
+
     public Queue getOldQueue() {
         return oldqueue;
     }
-
-
 }

Modified: 
sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/jmx/QueuesMBeanImpl.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/jmx/QueuesMBeanImpl.java?rev=1483875&r1=1483874&r2=1483875&view=diff
==============================================================================
--- 
sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/jmx/QueuesMBeanImpl.java
 (original)
+++ 
sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/jmx/QueuesMBeanImpl.java
 Fri May 17 15:44:23 2013
@@ -35,7 +35,6 @@ import javax.management.StandardEmitterM
 import org.apache.felix.scr.annotations.Activate;
 import org.apache.felix.scr.annotations.Component;
 import org.apache.felix.scr.annotations.Deactivate;
-import org.apache.felix.scr.annotations.Properties;
 import org.apache.felix.scr.annotations.Property;
 import org.apache.felix.scr.annotations.Service;
 import org.apache.sling.event.jobs.Queue;
@@ -44,17 +43,11 @@ import org.apache.sling.event.jobs.jmx.S
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.Constants;
 import org.osgi.framework.ServiceRegistration;
-import org.osgi.service.event.Event;
-import org.osgi.service.event.EventConstants;
-import org.osgi.service.event.EventHandler;
-
-@Component(immediate=true)
-@Service(value = { QueuesMBean.class, EventHandler.class })
-@Properties({
-        @Property(name = "jmx.objectname", propertyPrivate = true, value = 
"org.apache.sling:type=queues,name=QueueNames"),
-        @Property(name = EventConstants.EVENT_TOPIC, propertyPrivate = true, 
value = { QueueStatusEvent.TOPIC }) })
-public class QueuesMBeanImpl extends StandardEmitterMBean implements
-        QueuesMBean, EventHandler {
+
+@Component
+@Service(value = { QueuesMBean.class })
+@Property(name = "jmx.objectname", propertyPrivate = true, value = 
"org.apache.sling:type=queues,name=QueueNames")
+public class QueuesMBeanImpl extends StandardEmitterMBean implements 
QueuesMBean {
 
     private static final String QUEUE_NOTIFICATION = 
"org.apache.sling.event.queue";
     private static final String[] NOTIFICATION_TYPES = { QUEUE_NOTIFICATION };
@@ -95,17 +88,13 @@ public class QueuesMBeanImpl extends Sta
         bundleContext = null;
     }
 
-    @Override
-    public void handleEvent(Event event) {
-        if (event instanceof QueueStatusEvent) {
-            QueueStatusEvent e = (QueueStatusEvent) event;
-            if (e.isNew()) {
-                bindQueueMBean(e);
-            } else if (e.isRemoved()) {
-                unbindQueueMBean(e);
-            } else {
-                updateQueueMBean(e);
-            }
+    public void sendEvent(final QueueStatusEvent e) {
+        if (e.isNew()) {
+            bindQueueMBean(e);
+        } else if (e.isRemoved()) {
+            unbindQueueMBean(e);
+        } else {
+            updateQueueMBean(e);
         }
     }
 

Modified: 
sling/trunk/bundles/extensions/event/src/test/java/org/apache/sling/event/impl/jobs/jmx/QueuesMBeanImplTest.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/event/src/test/java/org/apache/sling/event/impl/jobs/jmx/QueuesMBeanImplTest.java?rev=1483875&r1=1483874&r2=1483875&view=diff
==============================================================================
--- 
sling/trunk/bundles/extensions/event/src/test/java/org/apache/sling/event/impl/jobs/jmx/QueuesMBeanImplTest.java
 (original)
+++ 
sling/trunk/bundles/extensions/event/src/test/java/org/apache/sling/event/impl/jobs/jmx/QueuesMBeanImplTest.java
 Fri May 17 15:44:23 2013
@@ -75,7 +75,7 @@ public class QueuesMBeanImplTest {
         mockStatistics((Statistics) queue);
         Mockito.when(queue.getName()).thenReturn("queue-name");
         Mockito.when(bundleContext.registerService(Mockito.anyString(), 
Mockito.any(StatisticsMBean.class), 
Mockito.any(Dictionary.class))).thenReturn(serviceRegistration);
-        mbean.handleEvent(new QueueStatusEvent(queue,null));
+        mbean.sendEvent(new QueueStatusEvent(queue,null));
         Mockito.verify(bundleContext, 
Mockito.only()).registerService(serviceClass.capture(), 
serviceObject.capture(), serviceProperties.capture());
         Assert.assertEquals("Expected bean to be registerd as a 
StatisticsMBean ", StatisticsMBean.class.getName(), serviceClass.getValue());
         Assert.assertTrue("Expected service to be an instance of 
SatisticsMBean", serviceObject.getValue() instanceof StatisticsMBean);
@@ -91,14 +91,14 @@ public class QueuesMBeanImplTest {
         Queue queue = Mockito.mock(Queue.class, 
Mockito.withSettings().extraInterfaces(Statistics.class));
         Mockito.when(queue.getName()).thenReturn("queue-name-changed");
         Mockito.reset(bundleContext);
-        mbean.handleEvent(new QueueStatusEvent(queue,firstQueue));
+        mbean.sendEvent(new QueueStatusEvent(queue,firstQueue));
         Mockito.verify(bundleContext, 
Mockito.never()).registerService(serviceClass.capture(), 
serviceObject.capture(), serviceProperties.capture());
     }
 
     @Test
     public void removeQueue() {
         Queue firstQueue = addQueue();
-        mbean.handleEvent(new QueueStatusEvent(null,firstQueue));
+        mbean.sendEvent(new QueueStatusEvent(null,firstQueue));
         Mockito.verify(serviceRegistration, Mockito.only()).unregister();
 
     }


Reply via email to