FELIX-4070 remove getService state method
git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@1486750 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/scr/src/main/java/org/apache/felix/scr/impl/manager/AbstractComponentManager.java b/scr/src/main/java/org/apache/felix/scr/impl/manager/AbstractComponentManager.java
index 753b27c..e98ca54 100644
--- a/scr/src/main/java/org/apache/felix/scr/impl/manager/AbstractComponentManager.java
+++ b/scr/src/main/java/org/apache/felix/scr/impl/manager/AbstractComponentManager.java
@@ -496,13 +496,6 @@
}
}
- /**
- * 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 @@
}
}
- //--------- State classes
+ boolean isEnabled()
+ {
+ return m_internalEnabled;
+ }
+
+ //--------- State classes
/**
* There are 12 states in all. They are: Disabled, Unsatisfied,
@@ -1309,13 +1307,6 @@
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 @@
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 @@
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 @@
}
- Object getService( ImmediateComponentManager dcm )
- {
- return dcm.getInstance();
- }
-
-
void ungetService( ImmediateComponentManager dcm )
{
dcm.deleteComponent( ComponentConstants.DEACTIVATION_REASON_UNSPECIFIED );
@@ -1694,35 +1668,6 @@
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 @@
return m_inst;
}
- Object getService( ImmediateComponentManager dcm )
- {
- return dcm.getInstance();
- }
-
-
void ungetService( ImmediateComponentManager dcm )
{
dcm.deleteComponent( ComponentConstants.DEACTIVATION_REASON_UNSPECIFIED );
diff --git a/scr/src/main/java/org/apache/felix/scr/impl/manager/ComponentContextImpl.java b/scr/src/main/java/org/apache/felix/scr/impl/manager/ComponentContextImpl.java
index 2203fed..dd4f1fa 100644
--- a/scr/src/main/java/org/apache/felix/scr/impl/manager/ComponentContextImpl.java
+++ b/scr/src/main/java/org/apache/felix/scr/impl/manager/ComponentContextImpl.java
@@ -40,7 +40,7 @@
*/
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 @@
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 @@
Arrays.fill( edgeInfos, null );
}
- protected AbstractComponentManager<S> getComponentManager()
+ protected ImmediateComponentManager<S> getComponentManager()
{
return m_componentManager;
}
diff --git a/scr/src/main/java/org/apache/felix/scr/impl/manager/ComponentFactoryImpl.java b/scr/src/main/java/org/apache/felix/scr/impl/manager/ComponentFactoryImpl.java
index 3066c93..79e0b6a 100644
--- a/scr/src/main/java/org/apache/felix/scr/impl/manager/ComponentFactoryImpl.java
+++ b/scr/src/main/java/org/apache/felix/scr/impl/manager/ComponentFactoryImpl.java
@@ -202,13 +202,6 @@
}
- public Object getInstance()
- {
- // this does not return the component instance actually
- return null;
- }
-
-
public boolean hasConfiguration()
{
return m_hasConfiguration;
diff --git a/scr/src/main/java/org/apache/felix/scr/impl/manager/ImmediateComponentManager.java b/scr/src/main/java/org/apache/felix/scr/impl/manager/ImmediateComponentManager.java
index f5834c5..edb4a77 100644
--- a/scr/src/main/java/org/apache/felix/scr/impl/manager/ImmediateComponentManager.java
+++ b/scr/src/main/java/org/apache/felix/scr/impl/manager/ImmediateComponentManager.java
@@ -180,7 +180,7 @@
*
* @return the object that implements the services
*/
- Object getInstance()
+ S getInstance()
{
return m_componentContext == null? null: m_componentContext.getImplementationObject( true );
}
@@ -763,7 +763,7 @@
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 @@
}
}
+ 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
diff --git a/scr/src/main/java/org/apache/felix/scr/impl/manager/ServiceFactoryComponentManager.java b/scr/src/main/java/org/apache/felix/scr/impl/manager/ServiceFactoryComponentManager.java
index 4d214aa..dede66a 100644
--- a/scr/src/main/java/org/apache/felix/scr/impl/manager/ServiceFactoryComponentManager.java
+++ b/scr/src/main/java/org/apache/felix/scr/impl/manager/ServiceFactoryComponentManager.java
@@ -94,7 +94,7 @@
/* (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