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() {

Reply via email to