This is an automated email from the ASF dual-hosted git repository.
cziegeler pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/felix-dev.git
The following commit(s) were added to refs/heads/master by this push:
new 495cb80 FELIX-6329 : Update event admin to Java 8
495cb80 is described below
commit 495cb80c16e2b22d7c33443a3b15e0e6e63b4523
Author: Carsten Ziegeler <[email protected]>
AuthorDate: Tue Sep 15 12:07:07 2020 +0200
FELIX-6329 : Update event admin to Java 8
---
.../eventadmin/impl/adapter/LogEventAdapter.java | 69 +++++-----------------
.../impl/adapter/ServiceEventAdapter.java | 48 +++------------
.../felix/eventadmin/impl/util/LogWrapper.java | 28 ++++-----
.../felix/eventadmin/ittests/AbstractTest.java | 27 ++++-----
.../apache/felix/eventadmin/ittests/Listener.java | 4 +-
.../eventadmin/perftests/PerformanceTestIT.java | 46 ++++++++-------
6 files changed, 76 insertions(+), 146 deletions(-)
diff --git
a/eventadmin/impl/src/main/java/org/apache/felix/eventadmin/impl/adapter/LogEventAdapter.java
b/eventadmin/impl/src/main/java/org/apache/felix/eventadmin/impl/adapter/LogEventAdapter.java
index 7cce20e..84dcd70 100644
---
a/eventadmin/impl/src/main/java/org/apache/felix/eventadmin/impl/adapter/LogEventAdapter.java
+++
b/eventadmin/impl/src/main/java/org/apache/felix/eventadmin/impl/adapter/LogEventAdapter.java
@@ -21,7 +21,6 @@ package org.apache.felix.eventadmin.impl.adapter;
import java.util.Dictionary;
import java.util.Hashtable;
-import org.apache.felix.eventadmin.impl.util.LogWrapper;
import org.osgi.framework.Bundle;
import org.osgi.framework.BundleContext;
import org.osgi.framework.Constants;
@@ -75,7 +74,7 @@ public class LogEventAdapter extends AbstractAdapter
implements ServiceListener
m_context.addServiceListener(this, "(" + Constants.OBJECTCLASS
+ "=org.osgi.service.log.LogReaderService)");
- final ServiceReference[] refs;
+ final ServiceReference<?>[] refs;
refs = m_context.getServiceReferences(
"org.osgi.service.log.LogReaderService", null);
@@ -161,11 +160,9 @@ public class LogEventAdapter extends AbstractAdapter
implements ServiceListener
if (null != bundle)
{
- properties.put("bundle.id", new Long(bundle
- .getBundleId()));
+ properties.put("bundle.id", bundle.getBundleId());
final String symbolicName = bundle.getSymbolicName();
-
if (null != symbolicName)
{
properties.put(EventConstants.BUNDLE_SYMBOLICNAME,
@@ -175,13 +172,12 @@ public class LogEventAdapter extends AbstractAdapter
implements ServiceListener
properties.put("bundle", bundle);
}
- properties.put("log.level", new Integer(entry.getLevel()));
+ properties.put("log.level", entry.getLevel());
- properties.put(EventConstants.MESSAGE,
- (entry.getMessage()) != null ?
entry.getMessage() : "" );
+ properties.put(EventConstants.MESSAGE,
+ (entry.getMessage()) != null ?
entry.getMessage() : "" );
- properties.put(EventConstants.TIMESTAMP, new Long(
- entry.getTime()));
+ properties.put(EventConstants.TIMESTAMP, entry.getTime());
properties.put("log.entry", entry);
@@ -203,62 +199,25 @@ public class LogEventAdapter extends AbstractAdapter
implements ServiceListener
properties.put(EventConstants.EXCEPTION, exception);
}
- final ServiceReference service = entry
- .getServiceReference();
+ final ServiceReference<?> service =
entry.getServiceReference();
if (null != service)
{
properties.put(EventConstants.SERVICE, service);
+ properties.put(EventConstants.SERVICE_ID,
service.getProperty(EventConstants.SERVICE_ID));
+ properties.put(
+ EventConstants.SERVICE_OBJECTCLASS,
+ service.getProperty(Constants.OBJECTCLASS));
- final Object id = service
- .getProperty(EventConstants.SERVICE_ID);
-
- if (null != id)
- {
- try
- {
- properties.put(EventConstants.SERVICE_ID,
- new Long(id.toString()));
- } catch (NumberFormatException ne)
- {
- // LOG and IGNORE
- LogWrapper.getLogger().log(
- entry.getServiceReference(),
- LogWrapper.LOG_WARNING, "Exception parsing
" +
- EventConstants.SERVICE_ID + "=" + id, ne);
- }
- }
-
- final Object pid = service.getProperty(
- EventConstants.SERVICE_PID);
-
+ final Object pid =
service.getProperty(EventConstants.SERVICE_PID);
if (null != pid)
{
- properties.put(EventConstants.SERVICE_PID,
- pid.toString());
+ properties.put(EventConstants.SERVICE_PID, pid);
}
- final Object objectClass = service.getProperty(
- Constants.OBJECTCLASS);
-
- if (null != objectClass)
- {
- if (objectClass instanceof String[])
- {
- properties.put(
- EventConstants.SERVICE_OBJECTCLASS,
- objectClass);
- }
- else
- {
- properties.put(
- EventConstants.SERVICE_OBJECTCLASS,
- new String[] { objectClass.toString() });
- }
- }
}
- final StringBuffer topic = new StringBuffer(
+ final StringBuilder topic = new StringBuilder(
org.osgi.service.log.LogEntry.class.getName().replace(
'.', '/')).append('/');
diff --git
a/eventadmin/impl/src/main/java/org/apache/felix/eventadmin/impl/adapter/ServiceEventAdapter.java
b/eventadmin/impl/src/main/java/org/apache/felix/eventadmin/impl/adapter/ServiceEventAdapter.java
index cf55b8b..74ab293 100644
---
a/eventadmin/impl/src/main/java/org/apache/felix/eventadmin/impl/adapter/ServiceEventAdapter.java
+++
b/eventadmin/impl/src/main/java/org/apache/felix/eventadmin/impl/adapter/ServiceEventAdapter.java
@@ -21,7 +21,6 @@ package org.apache.felix.eventadmin.impl.adapter;
import java.util.Dictionary;
import java.util.Hashtable;
-import org.apache.felix.eventadmin.impl.util.LogWrapper;
import org.osgi.framework.BundleContext;
import org.osgi.framework.Constants;
import org.osgi.framework.ServiceEvent;
@@ -71,53 +70,22 @@ public class ServiceEventAdapter extends AbstractAdapter
implements ServiceListe
properties.put(EventConstants.EVENT, event);
- properties.put(EventConstants.SERVICE, event
- .getServiceReference());
+ properties.put(EventConstants.SERVICE, event.getServiceReference());
- final Object id = event.getServiceReference().getProperty(
- EventConstants.SERVICE_ID);
+ properties.put(EventConstants.SERVICE_ID,
+
event.getServiceReference().getProperty(EventConstants.SERVICE_ID));
- if (null != id)
- {
- try
- {
- properties.put(EventConstants.SERVICE_ID, new Long(id
- .toString()));
- } catch (NumberFormatException ne)
- {
- // LOG and IGNORE
- LogWrapper.getLogger().log(event.getServiceReference(),
- LogWrapper.LOG_WARNING, "Exception parsing " +
- EventConstants.SERVICE_ID + "=" + id, ne);
- }
- }
+ properties.put(EventConstants.SERVICE_OBJECTCLASS,
+
event.getServiceReference().getProperty(Constants.OBJECTCLASS));
final Object pid = event.getServiceReference().getProperty(
- EventConstants.SERVICE_PID);
-
+ EventConstants.SERVICE_PID);
if (null != pid)
{
- properties.put(EventConstants.SERVICE_PID, pid.toString());
- }
-
- final Object objectClass = event.getServiceReference()
- .getProperty(Constants.OBJECTCLASS);
-
- if (null != objectClass)
- {
- if (objectClass instanceof String[])
- {
- properties.put(EventConstants.SERVICE_OBJECTCLASS,
- objectClass);
- }
- else
- {
- properties.put(EventConstants.SERVICE_OBJECTCLASS,
- new String[] { objectClass.toString() });
- }
+ properties.put(EventConstants.SERVICE_PID, pid);
}
- final StringBuffer topic = new StringBuffer(ServiceEvent.class
+ final StringBuilder topic = new StringBuilder(ServiceEvent.class
.getName().replace('.', '/')).append('/');
switch (event.getType())
diff --git
a/eventadmin/impl/src/main/java/org/apache/felix/eventadmin/impl/util/LogWrapper.java
b/eventadmin/impl/src/main/java/org/apache/felix/eventadmin/impl/util/LogWrapper.java
index 1a94ae7..9b0b22e 100644
---
a/eventadmin/impl/src/main/java/org/apache/felix/eventadmin/impl/util/LogWrapper.java
+++
b/eventadmin/impl/src/main/java/org/apache/felix/eventadmin/impl/util/LogWrapper.java
@@ -85,7 +85,7 @@ public class LogWrapper
public static final int LOG_DEBUG = 4;
// A set containing the currently available LogServices. Furthermore used
as lock
- private final Set<ServiceReference> m_loggerRefs = new
HashSet<ServiceReference>();
+ private final Set<ServiceReference<?>> m_loggerRefs = new HashSet<>();
// Only null while not set and m_loggerRefs is empty hence, only needs to
be
// checked in case m_loggerRefs is empty otherwise it will not be null.
@@ -173,7 +173,7 @@ public class LogWrapper
logWrapper.m_logServiceListener = listener;
// Add all available LogService references to the singleton.
- final ServiceReference[] refs = context.getServiceReferences(
"org.osgi.service.log.LogService", null );
+ final ServiceReference<?>[] refs =
context.getServiceReferences( "org.osgi.service.log.LogService", null );
if ( null != refs )
{
@@ -213,7 +213,7 @@ public class LogWrapper
/*
* Add a reference to a newly available LogService
*/
- void addLoggerRef( final ServiceReference ref )
+ void addLoggerRef( final ServiceReference<?> ref )
{
synchronized (m_loggerRefs)
{
@@ -255,9 +255,9 @@ public class LogWrapper
{
// There is at least one LogService available hence, we can
use the
// class as well.
- for (Iterator<ServiceReference> iter =
m_loggerRefs.iterator(); iter.hasNext();)
+ for (Iterator<ServiceReference<?>> iter =
m_loggerRefs.iterator(); iter.hasNext();)
{
- final ServiceReference next = iter.next();
+ final ServiceReference<?> next = iter.next();
org.osgi.service.log.LogService logger =
(org.osgi.service.log.LogService)
m_context.getService(next);
@@ -307,9 +307,9 @@ public class LogWrapper
{
// There is at least one LogService available hence, we can
use the
// class as well.
- for (Iterator<ServiceReference> iter =
m_loggerRefs.iterator(); iter.hasNext();)
+ for (Iterator<ServiceReference<?>> iter =
m_loggerRefs.iterator(); iter.hasNext();)
{
- final ServiceReference next = iter.next();
+ final ServiceReference<?> next = iter.next();
org.osgi.service.log.LogService logger =
(org.osgi.service.log.LogService)
m_context.getService(next);
@@ -343,7 +343,7 @@ public class LogWrapper
* @param level The log level with which to log the msg.
* @param msg The message to log.
*/
- public void log(final ServiceReference sr, final int level, final String
msg)
+ public void log(final ServiceReference<?> sr, final int level, final
String msg)
{
// The method will remove any unregistered service reference as well.
synchronized(m_loggerRefs)
@@ -359,9 +359,9 @@ public class LogWrapper
{
// There is at least one LogService available hence, we can
use the
// class as well.
- for (Iterator<ServiceReference> iter =
m_loggerRefs.iterator(); iter.hasNext();)
+ for (Iterator<ServiceReference<?>> iter =
m_loggerRefs.iterator(); iter.hasNext();)
{
- final ServiceReference next = iter.next();
+ final ServiceReference<?> next = iter.next();
org.osgi.service.log.LogService logger =
(org.osgi.service.log.LogService)
m_context.getService(next);
@@ -396,7 +396,7 @@ public class LogWrapper
* @param msg The message to log.
* @param ex The exception associated with the message.
*/
- public void log(final ServiceReference sr, final int level, final String
msg,
+ public void log(final ServiceReference<?> sr, final int level, final
String msg,
final Throwable ex)
{
// The method will remove any unregistered service reference as well.
@@ -413,9 +413,9 @@ public class LogWrapper
{
// There is at least one LogService available hence, we can
use the
// class as well.
- for (Iterator<ServiceReference> iter =
m_loggerRefs.iterator(); iter.hasNext();)
+ for (Iterator<ServiceReference<?>> iter =
m_loggerRefs.iterator(); iter.hasNext();)
{
- final ServiceReference next = iter.next();
+ final ServiceReference<?> next = iter.next();
org.osgi.service.log.LogService logger =
(org.osgi.service.log.LogService)
m_context.getService(next);
@@ -445,7 +445,7 @@ public class LogWrapper
* Log the message to standard output. This appends the level to the
message.
* null values are handled appropriate.
*/
- private void _log(final ServiceReference sr, final int level, final String
msg,
+ private void _log(final ServiceReference<?> sr, final int level, final
String msg,
Throwable ex)
{
String s = (sr == null) ? null : "SvcRef " + sr;
diff --git
a/eventadmin/impl/src/test/java/org/apache/felix/eventadmin/ittests/AbstractTest.java
b/eventadmin/impl/src/test/java/org/apache/felix/eventadmin/ittests/AbstractTest.java
index a952362..325c0da 100644
---
a/eventadmin/impl/src/test/java/org/apache/felix/eventadmin/ittests/AbstractTest.java
+++
b/eventadmin/impl/src/test/java/org/apache/felix/eventadmin/ittests/AbstractTest.java
@@ -23,7 +23,6 @@ import static org.ops4j.pax.exam.CoreOptions.mavenBundle;
import static org.ops4j.pax.exam.CoreOptions.options;
import static org.ops4j.pax.exam.CoreOptions.provision;
import static org.ops4j.pax.exam.CoreOptions.systemProperty;
-import static org.ops4j.pax.exam.CoreOptions.vmOption;
import java.io.File;
import java.util.ArrayList;
@@ -34,7 +33,6 @@ import java.util.List;
import java.util.Map;
import java.util.Queue;
import java.util.concurrent.ConcurrentLinkedQueue;
-import java.util.concurrent.CopyOnWriteArrayList;
import javax.inject.Inject;
@@ -68,7 +66,7 @@ public abstract class AbstractTest implements Runnable {
private EventAdmin eventAdmin;
/** Event admin reference. */
- private ServiceReference eventAdminReference;
+ private ServiceReference<EventAdmin> eventAdminReference;
private volatile boolean running = false;
@@ -81,8 +79,8 @@ public abstract class AbstractTest implements Runnable {
private volatile String prefix;
private volatile long startTime;
-
- private final Queue<Event> eventRecievedList = new ConcurrentLinkedQueue();
+
+ private final Queue<Event> eventRecievedList = new
ConcurrentLinkedQueue<>();
/** Wait lock for syncing. */
private final Object waitLock = new Object();
@@ -108,10 +106,10 @@ public abstract class AbstractTest implements Runnable {
* @param sync
*/
protected void send(String topic, Dictionary<String, Object> properties,
int index, boolean sync) {
-
- if(properties == null)
+
+ if (properties == null)
{
- properties = new Hashtable();
+ properties = new Hashtable<>();
}
properties.put("thread", Thread.currentThread().getId());
properties.put("index", index);
@@ -232,11 +230,10 @@ public abstract class AbstractTest implements Runnable {
/**
* Helper method to get a service of the given type
*/
- @SuppressWarnings("unchecked")
protected <T> T getService(Class<T> clazz) {
- final ServiceReference ref =
bundleContext.getServiceReference(clazz.getName());
+ final ServiceReference<T> ref =
bundleContext.getServiceReference(clazz);
assertNotNull("getService(" + clazz.getName() + ") must find
ServiceReference", ref);
- final T result = (T)(bundleContext.getService(ref));
+ final T result = (bundleContext.getService(ref));
assertNotNull("getService(" + clazz.getName() + ") must find service",
result);
return result;
}
@@ -244,10 +241,10 @@ public abstract class AbstractTest implements Runnable {
protected EventAdmin getEventAdmin() {
if ( eventAdminReference == null || eventAdminReference.getBundle() ==
null ) {
eventAdmin = null;
- eventAdminReference =
bundleContext.getServiceReference(EventAdmin.class.getName());
+ eventAdminReference =
bundleContext.getServiceReference(EventAdmin.class);
}
if ( eventAdmin == null && eventAdminReference != null ) {
- eventAdmin = (EventAdmin)
bundleContext.getService(eventAdminReference);
+ eventAdmin = bundleContext.getService(eventAdminReference);
}
return eventAdmin;
}
@@ -274,7 +271,7 @@ public abstract class AbstractTest implements Runnable {
// with build server issue
new DirectURLJUnitBundlesOption(),
systemProperty("pax.exam.invoker").value("junit"),
-
//vmOption("-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005"),
+
//vmOption("-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005"),
bundle("link:classpath:META-INF/links/org.ops4j.pax.exam.invoker.junit.link")
);
}
@@ -293,7 +290,7 @@ public abstract class AbstractTest implements Runnable {
{
Integer index = (Integer)currentEvent.getProperty("index");
Long threadId = (Long)currentEvent.getProperty("thread");
-
+
if(index != null && threadId != null){
Integer previousIndex = orderVerifyMap.get(threadId);
if(previousIndex == null)
diff --git
a/eventadmin/impl/src/test/java/org/apache/felix/eventadmin/ittests/Listener.java
b/eventadmin/impl/src/test/java/org/apache/felix/eventadmin/ittests/Listener.java
index b06e6e3..b92d239 100644
---
a/eventadmin/impl/src/test/java/org/apache/felix/eventadmin/ittests/Listener.java
+++
b/eventadmin/impl/src/test/java/org/apache/felix/eventadmin/ittests/Listener.java
@@ -26,7 +26,7 @@ import org.osgi.service.event.EventHandler;
public class Listener implements EventHandler {
- private final ServiceRegistration reg;
+ private final ServiceRegistration<EventHandler> reg;
private final Object payload;
@@ -44,7 +44,7 @@ public class Listener implements EventHandler {
props.put("event.topics", "*");
}
this.test = test;
- this.reg = ctx.registerService(EventHandler.class.getName(), this,
props);
+ this.reg = ctx.registerService(EventHandler.class, this, props);
this.payload = payload;
}
diff --git
a/eventadmin/impl/src/test/java/org/apache/felix/eventadmin/perftests/PerformanceTestIT.java
b/eventadmin/impl/src/test/java/org/apache/felix/eventadmin/perftests/PerformanceTestIT.java
index 7c19b4c..3613a5b 100644
---
a/eventadmin/impl/src/test/java/org/apache/felix/eventadmin/perftests/PerformanceTestIT.java
+++
b/eventadmin/impl/src/test/java/org/apache/felix/eventadmin/perftests/PerformanceTestIT.java
@@ -16,6 +16,27 @@
*/
package org.apache.felix.eventadmin.perftests;
+import static org.ops4j.pax.exam.Constants.START_LEVEL_SYSTEM_BUNDLES;
+import static org.ops4j.pax.exam.CoreOptions.bundle;
+import static org.ops4j.pax.exam.CoreOptions.mavenBundle;
+import static org.ops4j.pax.exam.CoreOptions.options;
+import static org.ops4j.pax.exam.CoreOptions.provision;
+import static org.ops4j.pax.exam.CoreOptions.systemProperty;
+import static org.ops4j.pax.exam.CoreOptions.vmOption;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Dictionary;
+import java.util.Hashtable;
+import java.util.concurrent.ArrayBlockingQueue;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.ThreadPoolExecutor;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicLong;
+
+import javax.inject.Inject;
+
import org.junit.After;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -33,21 +54,6 @@ import org.osgi.service.event.EventHandler;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import javax.inject.Inject;
-import java.io.File;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Dictionary;
-import java.util.Hashtable;
-import java.util.concurrent.ArrayBlockingQueue;
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.ThreadPoolExecutor;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.atomic.AtomicLong;
-
-import static org.ops4j.pax.exam.Constants.START_LEVEL_SYSTEM_BUNDLES;
-import static org.ops4j.pax.exam.CoreOptions.*;
-
@RunWith(PaxExam.class)
public class PerformanceTestIT {
// the name of the system property providing the bundle file to be
installed and tested
@@ -62,7 +68,7 @@ public class PerformanceTestIT {
protected BundleContext bundleContext;
/** Event admin reference. */
- private ServiceReference eventAdminReference;
+ private ServiceReference<EventAdmin> eventAdminReference;
/** Event admin. */
private EventAdmin eventAdmin;
@@ -102,10 +108,10 @@ public class PerformanceTestIT {
protected EventAdmin loadEventAdmin() {
if ( eventAdminReference == null || eventAdminReference.getBundle() ==
null ) {
eventAdmin = null;
- eventAdminReference =
bundleContext.getServiceReference(EventAdmin.class.getName());
+ eventAdminReference =
bundleContext.getServiceReference(EventAdmin.class);
}
if ( eventAdmin == null && eventAdminReference != null ) {
- eventAdmin = (EventAdmin)
bundleContext.getService(eventAdminReference);
+ eventAdmin = bundleContext.getService(eventAdminReference);
}
return eventAdmin;
}
@@ -278,7 +284,7 @@ public class PerformanceTestIT {
private static abstract class Listener implements EventHandler {
- private ServiceRegistration registration;
+ private ServiceRegistration<EventHandler> registration;
protected Listener() {
}
@@ -290,7 +296,7 @@ public class PerformanceTestIT {
} else {
props.put("event.topics", "*");
}
- this.registration =
bundleContext.registerService(EventHandler.class.getName(), this, props);
+ this.registration =
bundleContext.registerService(EventHandler.class, this, props);
}
public void unregister() {