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