You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by pa...@apache.org on 2017/09/27 09:11:29 UTC

svn commit: r1809818 - in /felix/trunk/connect: pom.xml src/main/java/org/apache/felix/connect/PojoSRBundleContext.java src/main/java/org/apache/felix/connect/PojoServiceRegistryFactoryImpl.java

Author: pauls
Date: Wed Sep 27 09:11:29 2017
New Revision: 1809818

URL: http://svn.apache.org/viewvc?rev=1809818&view=rev
Log:
Add some missing R6 methods.

Modified:
    felix/trunk/connect/pom.xml
    felix/trunk/connect/src/main/java/org/apache/felix/connect/PojoSRBundleContext.java
    felix/trunk/connect/src/main/java/org/apache/felix/connect/PojoServiceRegistryFactoryImpl.java

Modified: felix/trunk/connect/pom.xml
URL: http://svn.apache.org/viewvc/felix/trunk/connect/pom.xml?rev=1809818&r1=1809817&r2=1809818&view=diff
==============================================================================
--- felix/trunk/connect/pom.xml (original)
+++ felix/trunk/connect/pom.xml Wed Sep 27 09:11:29 2017
@@ -57,8 +57,8 @@
     <dependencies>
         <dependency>
             <groupId>org.osgi</groupId>
-            <artifactId>org.osgi.core</artifactId>
-            <version>5.0.0</version>
+            <artifactId>osgi.core</artifactId>
+            <version>6.0.0</version>
             <scope>provided</scope>
         </dependency>
         <dependency>

Modified: felix/trunk/connect/src/main/java/org/apache/felix/connect/PojoSRBundleContext.java
URL: http://svn.apache.org/viewvc/felix/trunk/connect/src/main/java/org/apache/felix/connect/PojoSRBundleContext.java?rev=1809818&r1=1809817&r2=1809818&view=diff
==============================================================================
--- felix/trunk/connect/src/main/java/org/apache/felix/connect/PojoSRBundleContext.java (original)
+++ felix/trunk/connect/src/main/java/org/apache/felix/connect/PojoSRBundleContext.java Wed Sep 27 09:11:29 2017
@@ -37,7 +37,10 @@ import org.osgi.framework.Filter;
 import org.osgi.framework.FrameworkListener;
 import org.osgi.framework.FrameworkUtil;
 import org.osgi.framework.InvalidSyntaxException;
+import org.osgi.framework.ServiceFactory;
 import org.osgi.framework.ServiceListener;
+import org.osgi.framework.ServiceObjects;
+import org.osgi.framework.ServicePermission;
 import org.osgi.framework.ServiceReference;
 import org.osgi.framework.ServiceRegistration;
 import org.osgi.framework.hooks.service.FindHook;
@@ -162,6 +165,51 @@ class PojoSRBundleContext implements Bun
         return m_reg.getService(m_bundle, reference);
     }
 
+    @Override
+    public <S> ServiceObjects<S> getServiceObjects(ServiceReference<S> reference) {
+        return new ServiceObjectsImpl<S>(reference);
+    }
+
+
+    //
+    // ServiceObjects implementation
+    //
+    class ServiceObjectsImpl<S> implements ServiceObjects<S>
+    {
+        private final ServiceReference<S> m_ref;
+
+        public ServiceObjectsImpl(final ServiceReference<S> ref)
+        {
+            this.m_ref = ref;
+        }
+
+        public S getService() {
+
+            // CONCURRENCY NOTE: This is a check-then-act situation,
+            // but we ignore it since the time window is small and
+            // the result is the same as if the calling thread had
+            // won the race condition.
+
+            final Object sm = System.getSecurityManager();
+
+            if (sm != null)
+            {
+                ((SecurityManager) sm).checkPermission(new ServicePermission(m_ref, ServicePermission.GET));
+            }
+
+            return PojoSRBundleContext.this.getService(m_ref);
+        }
+
+        public void ungetService(final S srvObj)
+        {
+            PojoSRBundleContext.this.ungetService(m_ref);
+        }
+
+        public ServiceReference<S> getServiceReference()
+        {
+            return m_ref;
+        }
+    }
     public String getProperty(String key)
     {
         Object result = m_config.get(key);
@@ -336,6 +384,11 @@ class PojoSRBundleContext implements Bun
         return (ServiceRegistration<S>) registerService(clazz.getName(), service, properties);
     }
 
+    @Override
+    public <S> ServiceRegistration<S> registerService(Class<S> clazz, ServiceFactory<S> factory, Dictionary<String, ?> properties) {
+        return (ServiceRegistration<S>) registerService(clazz.getName(), factory, properties);
+    }
+
     @SuppressWarnings("unchecked")
     public <S> ServiceReference<S> getServiceReference(Class<S> clazz)
     {

Modified: felix/trunk/connect/src/main/java/org/apache/felix/connect/PojoServiceRegistryFactoryImpl.java
URL: http://svn.apache.org/viewvc/felix/trunk/connect/src/main/java/org/apache/felix/connect/PojoServiceRegistryFactoryImpl.java?rev=1809818&r1=1809817&r2=1809818&view=diff
==============================================================================
--- felix/trunk/connect/src/main/java/org/apache/felix/connect/PojoServiceRegistryFactoryImpl.java (original)
+++ felix/trunk/connect/src/main/java/org/apache/felix/connect/PojoServiceRegistryFactoryImpl.java Wed Sep 27 09:11:29 2017
@@ -34,6 +34,7 @@ import org.osgi.framework.BundleContext;
 import org.osgi.framework.BundleEvent;
 import org.osgi.framework.BundleException;
 import org.osgi.framework.FrameworkEvent;
+import org.osgi.framework.FrameworkListener;
 import org.osgi.framework.ServiceReference;
 import org.osgi.framework.SynchronousBundleListener;
 import org.osgi.framework.Version;
@@ -82,6 +83,14 @@ public class PojoServiceRegistryFactoryI
             }
         }
 
+        @Override
+        public void init(FrameworkListener... listeners) throws BundleException {
+            init();
+            for (FrameworkListener listener : listeners) {
+                m_bundle.getBundleContext().addFrameworkListener(listener);
+            }
+        }
+
         public int getState()
         {
             return (m_bundle == null) ? Bundle.INSTALLED : m_bundle.getState();