You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by dj...@apache.org on 2013/05/28 07:57:29 UTC

svn commit: r1486750 - in /felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager: AbstractComponentManager.java ComponentContextImpl.java ComponentFactoryImpl.java ImmediateComponentManager.java ServiceFactoryComponentManager.java

Author: djencks
Date: Tue May 28 05:57:29 2013
New Revision: 1486750

URL: http://svn.apache.org/r1486750
Log:
FELIX-4070 remove getService state method

Modified:
    felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/AbstractComponentManager.java
    felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/ComponentContextImpl.java
    felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/ComponentFactoryImpl.java
    felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/ImmediateComponentManager.java
    felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/ServiceFactoryComponentManager.java

Modified: felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/AbstractComponentManager.java
URL: http://svn.apache.org/viewvc/felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/AbstractComponentManager.java?rev=1486750&r1=1486749&r2=1486750&view=diff
==============================================================================
--- felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/AbstractComponentManager.java (original)
+++ felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/AbstractComponentManager.java Tue May 28 05:57:29 2013
@@ -496,13 +496,6 @@ public abstract class AbstractComponentM
         }
     }
 
-    /**
-     * Get the object that is implementing this descriptor
-     *
-     * @return the object that implements the services
-     */
-    abstract Object getInstance();
-
     // supports the ComponentInstance.dispose() method
     void dispose()
     {
@@ -1263,7 +1256,12 @@ public abstract class AbstractComponentM
         }
     }
 
-    //--------- State classes
+    boolean isEnabled()
+    {
+        return m_internalEnabled;
+    }
+    
+   //--------- State classes
 
     /**
      * There are 12 states in all. They are: Disabled, Unsatisfied,
@@ -1309,13 +1307,6 @@ public abstract class AbstractComponentM
             return m_state;
         }
 
-
-        Object getService( ImmediateComponentManager dcm )
-        {
-            throw new IllegalStateException("getService" + this);
-        }
-
-
         void ungetService( ImmediateComponentManager dcm )
         {
             throw new IllegalStateException("ungetService" + this);
@@ -1438,11 +1429,6 @@ public abstract class AbstractComponentM
             doDeactivate( acm, reason, disable );
         }
 
-        Object getService( ImmediateComponentManager dcm )
-        {
-            return null;
-        }
-
         void ungetService( ImmediateComponentManager dcm )
         {
             //do nothing, deactivate will unget all the services.
@@ -1576,12 +1562,6 @@ public abstract class AbstractComponentM
             acm.changeState( Disposed.getInstance() );
         }
 
-        Object getService( ImmediateComponentManager dcm )
-        {
-            //concurrent attempt to get service and remove dependency
-            return null;
-        }
-
         void ungetService( ImmediateComponentManager dcm )
         {
             //do nothing.  This can arise if component is deactivated concurrently with ungetService on a delayed component.
@@ -1656,12 +1636,6 @@ public abstract class AbstractComponentM
         }
 
 
-        Object getService( ImmediateComponentManager dcm )
-        {
-            return dcm.getInstance();
-        }
-
-
         void ungetService( ImmediateComponentManager dcm )
         {
             dcm.deleteComponent( ComponentConstants.DEACTIVATION_REASON_UNSPECIFIED );
@@ -1694,35 +1668,6 @@ public abstract class AbstractComponentM
             return m_inst;
         }
 
-
-        Object getService( ImmediateComponentManager dcm )
-        {
-            if ( dcm.createComponent() )
-            {
-                dcm.changeState( dcm.getActiveState() );
-                return dcm.getInstance();
-            }
-
-            // log that the delayed component cannot be created (we don't
-            // know why at this moment; this should already have been logged)
-            dcm.log( LogService.LOG_ERROR, "Failed creating the component instance; see log for reason", null );
-
-            // component could not really be created. This may be temporary
-            // so we stay in the registered state but ensure the component
-            // instance is deleted
-            try
-            {
-                dcm.deleteComponent( ComponentConstants.DEACTIVATION_REASON_UNSPECIFIED );
-            }
-            catch ( Throwable t )
-            {
-                dcm.log( LogService.LOG_DEBUG, "Cannot delete incomplete component instance. Ignoring.", t );
-            }
-
-            // no service can be returned (be prepared for more logging !!)
-            return null;
-        }
-
         void ungetService( ImmediateComponentManager dcm )
         {
             //do nothing.  This can arise if component is deactivated concurrently with ungetService on a delayed component.
@@ -1777,12 +1722,6 @@ public abstract class AbstractComponentM
             return m_inst;
         }
 
-        Object getService( ImmediateComponentManager dcm )
-        {
-            return dcm.getInstance();
-        }
-
-
         void ungetService( ImmediateComponentManager dcm )
         {
             dcm.deleteComponent( ComponentConstants.DEACTIVATION_REASON_UNSPECIFIED );

Modified: felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/ComponentContextImpl.java
URL: http://svn.apache.org/viewvc/felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/ComponentContextImpl.java?rev=1486750&r1=1486749&r2=1486750&view=diff
==============================================================================
--- felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/ComponentContextImpl.java (original)
+++ felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/ComponentContextImpl.java Tue May 28 05:57:29 2013
@@ -40,7 +40,7 @@ import org.osgi.service.log.LogService;
  */
 public class ComponentContextImpl<S> implements ExtComponentContext {
 
-    private final AbstractComponentManager<S> m_componentManager;
+    private final ImmediateComponentManager<S> m_componentManager;
     
     private final EdgeInfo[] edgeInfos;
     
@@ -54,7 +54,7 @@ public class ComponentContextImpl<S> imp
     
     private final CountDownLatch accessibleLatch = new CountDownLatch(1);
 
-    ComponentContextImpl( AbstractComponentManager<S> componentManager, Bundle usingBundle, S implementationObject )
+    ComponentContextImpl( ImmediateComponentManager<S> componentManager, Bundle usingBundle, S implementationObject )
     {
         m_componentManager = componentManager;
         m_usingBundle = usingBundle;
@@ -86,7 +86,7 @@ public class ComponentContextImpl<S> imp
         Arrays.fill( edgeInfos, null );
     }
 
-    protected AbstractComponentManager<S> getComponentManager()
+    protected ImmediateComponentManager<S> getComponentManager()
     {
         return m_componentManager;
     }

Modified: felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/ComponentFactoryImpl.java
URL: http://svn.apache.org/viewvc/felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/ComponentFactoryImpl.java?rev=1486750&r1=1486749&r2=1486750&view=diff
==============================================================================
--- felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/ComponentFactoryImpl.java (original)
+++ felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/ComponentFactoryImpl.java Tue May 28 05:57:29 2013
@@ -202,13 +202,6 @@ public class ComponentFactoryImpl<S> ext
     }
 
 
-    public Object getInstance()
-    {
-        // this does not return the component instance actually
-        return null;
-    }
-
-
     public boolean hasConfiguration()
     {
         return m_hasConfiguration;

Modified: felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/ImmediateComponentManager.java
URL: http://svn.apache.org/viewvc/felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/ImmediateComponentManager.java?rev=1486750&r1=1486749&r2=1486750&view=diff
==============================================================================
--- felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/ImmediateComponentManager.java (original)
+++ felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/ImmediateComponentManager.java Tue May 28 05:57:29 2013
@@ -180,7 +180,7 @@ public class ImmediateComponentManager<S
      *
      * @return the object that implements the services
      */
-    Object getInstance()
+    S getInstance()
     {
         return m_componentContext == null? null: m_componentContext.getImplementationObject( true );
     }
@@ -763,7 +763,7 @@ public class ImmediateComponentManager<S
                     if ( m_componentContext == null )
                     {
                         //state should be "Registered"
-                        S result = (S) Registered.getInstance().getService( this );
+                        S result = getService( );
                         if ( result == null )
                         {
                             success = false;;
@@ -784,6 +784,41 @@ public class ImmediateComponentManager<S
         }
     }
 
+    private S getService()
+    {
+        //should be write locked
+        if (!isEnabled())
+        {
+            return null;
+        }
+
+        if ( createComponent() )
+        {
+            changeState( getActiveState() );
+            return getInstance();
+        }
+
+        // log that the delayed component cannot be created (we don't
+        // know why at this moment; this should already have been logged)
+        log( LogService.LOG_ERROR, "Failed creating the component instance; see log for reason", null );
+
+        // component could not really be created. This may be temporary
+        // so we stay in the registered state but ensure the component
+        // instance is deleted
+        try
+        {
+            deleteComponent( ComponentConstants.DEACTIVATION_REASON_UNSPECIFIED );
+        }
+        catch ( Throwable t )
+        {
+            log( LogService.LOG_DEBUG, "Cannot delete incomplete component instance. Ignoring.", t );
+        }
+
+        // no service can be returned (be prepared for more logging !!)
+        return null;
+
+    }
+
     public void ungetService( Bundle bundle, ServiceRegistration<S> serviceRegistration, S o )
     {
         // the framework should not call ungetService more than it calls

Modified: felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/ServiceFactoryComponentManager.java
URL: http://svn.apache.org/viewvc/felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/ServiceFactoryComponentManager.java?rev=1486750&r1=1486749&r2=1486750&view=diff
==============================================================================
--- felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/ServiceFactoryComponentManager.java (original)
+++ felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/ServiceFactoryComponentManager.java Tue May 28 05:57:29 2013
@@ -94,7 +94,7 @@ public class ServiceFactoryComponentMana
     /* (non-Javadoc)
      * @see org.apache.felix.scr.AbstractComponentManager#getInstance()
      */
-    Object getInstance()
+    S getInstance()
     {
         // this method is not expected to be called as the base call is
         // overwritten in the ComponentContextImpl class