You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by fm...@apache.org on 2012/10/25 16:25:02 UTC

svn commit: r1402162 - in /felix/trunk/metatype: ./ src/main/java/org/apache/felix/metatype/internal/

Author: fmeschbe
Date: Thu Oct 25 14:25:02 2012
New Revision: 1402162

URL: http://svn.apache.org/viewvc?rev=1402162&view=rev
Log:
FELIX-3734 Fix two issues related to MetaTypeProvider tracking:
  - don't return MetaTypeInformation for fragment bundles
  - use the MetaTypeService implementation bundle context to
      track services
  - the latter allows to downgrade the OSGi Core Reference to 4.0 again

Modified:
    felix/trunk/metatype/pom.xml
    felix/trunk/metatype/src/main/java/org/apache/felix/metatype/internal/MetaTypeInformationImpl.java
    felix/trunk/metatype/src/main/java/org/apache/felix/metatype/internal/MetaTypeProviderTracker.java
    felix/trunk/metatype/src/main/java/org/apache/felix/metatype/internal/MetaTypeServiceImpl.java
    felix/trunk/metatype/src/main/java/org/apache/felix/metatype/internal/ServiceMetaTypeInformation.java

Modified: felix/trunk/metatype/pom.xml
URL: http://svn.apache.org/viewvc/felix/trunk/metatype/pom.xml?rev=1402162&r1=1402161&r2=1402162&view=diff
==============================================================================
--- felix/trunk/metatype/pom.xml (original)
+++ felix/trunk/metatype/pom.xml Thu Oct 25 14:25:02 2012
@@ -38,7 +38,7 @@
         <dependency>
             <groupId>org.osgi</groupId>
             <artifactId>org.osgi.core</artifactId>
-            <version>4.1.0</version>
+            <version>4.0.0</version>
             <scope>provided</scope>
         </dependency>
         <dependency>

Modified: felix/trunk/metatype/src/main/java/org/apache/felix/metatype/internal/MetaTypeInformationImpl.java
URL: http://svn.apache.org/viewvc/felix/trunk/metatype/src/main/java/org/apache/felix/metatype/internal/MetaTypeInformationImpl.java?rev=1402162&r1=1402161&r2=1402162&view=diff
==============================================================================
--- felix/trunk/metatype/src/main/java/org/apache/felix/metatype/internal/MetaTypeInformationImpl.java (original)
+++ felix/trunk/metatype/src/main/java/org/apache/felix/metatype/internal/MetaTypeInformationImpl.java Thu Oct 25 14:25:02 2012
@@ -26,12 +26,14 @@ import java.util.HashSet;
 import java.util.Iterator;
 import java.util.Map;
 import java.util.Set;
+
 import org.apache.felix.metatype.DefaultMetaTypeProvider;
 import org.apache.felix.metatype.Designate;
 import org.apache.felix.metatype.DesignateObject;
 import org.apache.felix.metatype.MetaData;
 import org.apache.felix.metatype.OCD;
 import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleContext;
 import org.osgi.service.metatype.MetaTypeInformation;
 import org.osgi.service.metatype.MetaTypeProvider;
 import org.osgi.service.metatype.ObjectClassDefinition;
@@ -64,14 +66,14 @@ public class MetaTypeInformationImpl imp
     private Set locales;
 
 
-    protected MetaTypeInformationImpl( Bundle bundle )
+    protected MetaTypeInformationImpl( final BundleContext serviceBundleContext, Bundle bundle )
     {
         this.bundle = bundle;
         this.pids = new HashSet();
         this.factoryPids = new HashSet();
         this.metaTypeProviders = new HashMap();
 
-        this.providerTacker = new MetaTypeProviderTracker( bundle.getBundleContext(), this );
+        this.providerTacker = new MetaTypeProviderTracker( serviceBundleContext, this );
         this.providerTacker.open();
     }
 

Modified: felix/trunk/metatype/src/main/java/org/apache/felix/metatype/internal/MetaTypeProviderTracker.java
URL: http://svn.apache.org/viewvc/felix/trunk/metatype/src/main/java/org/apache/felix/metatype/internal/MetaTypeProviderTracker.java?rev=1402162&r1=1402161&r2=1402162&view=diff
==============================================================================
--- felix/trunk/metatype/src/main/java/org/apache/felix/metatype/internal/MetaTypeProviderTracker.java (original)
+++ felix/trunk/metatype/src/main/java/org/apache/felix/metatype/internal/MetaTypeProviderTracker.java Thu Oct 25 14:25:02 2012
@@ -41,7 +41,7 @@ public class MetaTypeProviderTracker ext
     public Object addingService( ServiceReference reference )
     {
         // only care for services of our bundle
-        if ( !this.context.getBundle().equals( reference.getBundle() ) )
+        if ( !this.mti.getBundle().equals( reference.getBundle() ) )
         {
             return null;
         }

Modified: felix/trunk/metatype/src/main/java/org/apache/felix/metatype/internal/MetaTypeServiceImpl.java
URL: http://svn.apache.org/viewvc/felix/trunk/metatype/src/main/java/org/apache/felix/metatype/internal/MetaTypeServiceImpl.java?rev=1402162&r1=1402161&r2=1402162&view=diff
==============================================================================
--- felix/trunk/metatype/src/main/java/org/apache/felix/metatype/internal/MetaTypeServiceImpl.java (original)
+++ felix/trunk/metatype/src/main/java/org/apache/felix/metatype/internal/MetaTypeServiceImpl.java Thu Oct 25 14:25:02 2012
@@ -30,6 +30,7 @@ import org.apache.felix.metatype.MetaDat
 import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.BundleEvent;
+import org.osgi.framework.Constants;
 import org.osgi.framework.SynchronousBundleListener;
 import org.osgi.service.log.LogService;
 import org.osgi.service.metatype.MetaTypeInformation;
@@ -116,6 +117,12 @@ class MetaTypeServiceImpl implements Met
      */
     public MetaTypeInformation getMetaTypeInformation( Bundle bundle )
     {
+        // no information for fragments
+        if ( bundle.getHeaders().get( Constants.FRAGMENT_HOST ) != null )
+        {
+            return null;
+        }
+
         MetaTypeInformation mti;
         synchronized ( this.bundleMetaTypeInformation )
         {
@@ -165,7 +172,7 @@ class MetaTypeServiceImpl implements Met
             return null;
         }
 
-        MetaTypeInformationImpl cmti = new MetaTypeInformationImpl( bundle );
+        MetaTypeInformationImpl cmti = new MetaTypeInformationImpl( bundleContext, bundle );
         while ( docs.hasMoreElements() )
         {
             URL doc = ( URL ) docs.nextElement();

Modified: felix/trunk/metatype/src/main/java/org/apache/felix/metatype/internal/ServiceMetaTypeInformation.java
URL: http://svn.apache.org/viewvc/felix/trunk/metatype/src/main/java/org/apache/felix/metatype/internal/ServiceMetaTypeInformation.java?rev=1402162&r1=1402161&r2=1402162&view=diff
==============================================================================
--- felix/trunk/metatype/src/main/java/org/apache/felix/metatype/internal/ServiceMetaTypeInformation.java (original)
+++ felix/trunk/metatype/src/main/java/org/apache/felix/metatype/internal/ServiceMetaTypeInformation.java Thu Oct 25 14:25:02 2012
@@ -19,6 +19,7 @@
 package org.apache.felix.metatype.internal;
 
 
+import java.util.Arrays;
 import java.util.Collection;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleContext;
@@ -76,7 +77,7 @@ public class ServiceMetaTypeInformation 
      */
     public ServiceMetaTypeInformation( BundleContext bundleContext, Bundle bundle )
     {
-        super( bundle );
+        super( bundleContext, bundle );
 
         this.bundleContext = bundleContext;