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();
}