FELIX-3825 provide correct component manager as logger to Method management objects
git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@1424319 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/scr/src/main/java/org/apache/felix/scr/impl/helper/ActivateMethod.java b/scr/src/main/java/org/apache/felix/scr/impl/helper/ActivateMethod.java
index 981d258..3ee8ff6 100644
--- a/scr/src/main/java/org/apache/felix/scr/impl/helper/ActivateMethod.java
+++ b/scr/src/main/java/org/apache/felix/scr/impl/helper/ActivateMethod.java
@@ -35,14 +35,14 @@
{ COMPONENT_CONTEXT_CLASS };
- public ActivateMethod( final SimpleLogger logger, final String methodName,
- final boolean methodRequired, final Class componentClass, final boolean isDS11, final boolean isDS12Felix )
+ public ActivateMethod( final String methodName,
+ final boolean methodRequired, final Class componentClass, final boolean isDS11, final boolean isDS12Felix )
{
- super( logger, methodName, methodRequired, componentClass, isDS11, isDS12Felix );
+ super( methodName, methodRequired, componentClass, isDS11, isDS12Felix );
}
- protected Method doFindMethod( Class targetClass, boolean acceptPrivate, boolean acceptPackage )
+ protected Method doFindMethod( Class targetClass, boolean acceptPrivate, boolean acceptPackage, SimpleLogger logger )
throws SuitableMethodNotAccessibleException, InvocationTargetException
{
@@ -50,7 +50,7 @@
try
{
- final Method method = getSingleParameterMethod( targetClass, acceptPrivate, acceptPackage );
+ final Method method = getSingleParameterMethod( targetClass, acceptPrivate, acceptPackage, logger );
if ( method != null )
{
return method;
@@ -86,7 +86,7 @@
try
{
// find the declared method in this class
- Method m = getMethod( targetClass, getMethodName(), null, acceptPrivate, acceptPackage );
+ Method m = getMethod( targetClass, getMethodName(), null, acceptPrivate, acceptPackage, logger );
if ( m != null ) {
return m;
}
@@ -142,11 +142,11 @@
return "activate";
}
- public MethodResult invoke(Object componentInstance, Object rawParameter, final MethodResult methodCallFailureResult)
+ public MethodResult invoke( Object componentInstance, Object rawParameter, final MethodResult methodCallFailureResult, SimpleLogger logger )
{
- if (methodExists())
+ if (methodExists( logger ))
{
- return super.invoke(componentInstance, rawParameter, methodCallFailureResult);
+ return super.invoke(componentInstance, rawParameter, methodCallFailureResult, logger );
}
return null;
}
@@ -156,12 +156,14 @@
* {@link #getAcceptedParameterTypes()} or <code>null</code> if no such
* method exists.
*
+ *
* @param targetClass The class in which to look for the method. Only this
* class is searched for the method.
* @param acceptPrivate <code>true</code> if private methods should be
* considered.
* @param acceptPackage <code>true</code> if package private methods should
* be considered.
+ * @param logger
* @return The requested method or <code>null</code> if no acceptable method
* can be found in the target class.
* @throws SuitableMethodNotAccessibleException If a suitable method was
@@ -170,7 +172,7 @@
* trying to find the requested method.
*/
private Method getSingleParameterMethod( final Class targetClass, final boolean acceptPrivate,
- final boolean acceptPackage ) throws SuitableMethodNotAccessibleException, InvocationTargetException
+ final boolean acceptPackage, SimpleLogger logger ) throws SuitableMethodNotAccessibleException, InvocationTargetException
{
SuitableMethodNotAccessibleException ex = null;
Method singleParameterMethod = null;
@@ -181,11 +183,11 @@
{
// find the declared method in this class
singleParameterMethod = getMethod( targetClass, getMethodName(), new Class[]
- { acceptedTypes[i] }, acceptPrivate, acceptPackage );
+ { acceptedTypes[i] }, acceptPrivate, acceptPackage, logger );
}
catch ( SuitableMethodNotAccessibleException thrown )
{
- getLogger().log( LogService.LOG_DEBUG, "SuitableMethodNotAccessible", thrown );
+ logger.log( LogService.LOG_DEBUG, "SuitableMethodNotAccessible", thrown );
ex = thrown;
}
}
diff --git a/scr/src/main/java/org/apache/felix/scr/impl/helper/BaseMethod.java b/scr/src/main/java/org/apache/felix/scr/impl/helper/BaseMethod.java
index eae9d20..747d50e 100644
--- a/scr/src/main/java/org/apache/felix/scr/impl/helper/BaseMethod.java
+++ b/scr/src/main/java/org/apache/felix/scr/impl/helper/BaseMethod.java
@@ -44,7 +44,6 @@
protected static final Class MAP_CLASS = Map.class;
protected static final Class INTEGER_CLASS = Integer.class;
- private final SimpleLogger m_logger;
private final boolean isDS11;
private final boolean isDS12Felix;
@@ -57,17 +56,16 @@
private volatile State m_state;
- protected BaseMethod( final SimpleLogger logger, final String methodName,
+ protected BaseMethod( final String methodName,
final Class componentClass, final boolean ds11, final boolean ds12Felix )
{
- this( logger, methodName, methodName != null, componentClass, ds11, ds12Felix );
+ this( methodName, methodName != null, componentClass, ds11, ds12Felix );
}
- protected BaseMethod( final SimpleLogger logger, final String methodName,
+ protected BaseMethod( final String methodName,
final boolean methodRequired, final Class componentClass, final boolean ds11, final boolean ds12Felix )
{
- m_logger = logger;
m_methodName = methodName;
m_methodRequired = methodRequired;
m_componentClass = componentClass;
@@ -83,13 +81,6 @@
}
}
-
- protected final SimpleLogger getLogger()
- {
- return m_logger;
- }
-
-
protected final boolean isDS11()
{
return isDS11;
@@ -118,27 +109,27 @@
}
- synchronized void setMethod( Method method )
+ synchronized void setMethod( Method method, SimpleLogger logger )
{
this.m_method = method;
if ( method != null )
{
m_state = Resolved.INSTANCE;
- getLogger().log( LogService.LOG_DEBUG, "Found {0} method: {1}", new Object[]
+ logger.log( LogService.LOG_DEBUG, "Found {0} method: {1}", new Object[]
{ getMethodNamePrefix(), method }, null );
}
else if ( m_methodRequired )
{
m_state = NotFound.INSTANCE;
- getLogger().log(LogService.LOG_ERROR, "{0} method [{1}] not found; Component will fail",
+ logger.log(LogService.LOG_ERROR, "{0} method [{1}] not found; Component will fail",
new Object[]
{ getMethodNamePrefix(), getMethodName() }, null);
}
else
{
// optional method not found, log as DEBUG and ignore
- getLogger().log( LogService.LOG_DEBUG, "{0} method [{1}] not found, ignoring", new Object[]
+ logger.log( LogService.LOG_DEBUG, "{0} method [{1}] not found, ignoring", new Object[]
{ getMethodNamePrefix(), getMethodName() }, null );
m_state = NotApplicable.INSTANCE;
}
@@ -161,8 +152,9 @@
* can be found in the target class or any super class.
* @throws InvocationTargetException If an unexpected Throwable is caught
* trying to find the requested method.
+ * @param logger
*/
- private Method findMethod() throws InvocationTargetException
+ private Method findMethod( SimpleLogger logger ) throws InvocationTargetException
{
boolean acceptPrivate = isDS11();
boolean acceptPackage = isDS11();
@@ -174,15 +166,15 @@
for ( Class theClass = targetClass; theClass != null; )
{
- if ( getLogger().isLogEnabled( LogService.LOG_DEBUG ) )
+ if ( logger.isLogEnabled( LogService.LOG_DEBUG ) )
{
- getLogger().log( LogService.LOG_DEBUG,
+ logger.log( LogService.LOG_DEBUG,
"Locating method " + getMethodName() + " in class " + theClass.getName(), null );
}
try
{
- Method method = doFindMethod( theClass, acceptPrivate, acceptPackage );
+ Method method = doFindMethod( theClass, acceptPrivate, acceptPackage, logger );
if ( method != null )
{
return method;
@@ -191,7 +183,7 @@
catch ( SuitableMethodNotAccessibleException ex )
{
// log and return null
- getLogger().log( LogService.LOG_ERROR,
+ logger.log( LogService.LOG_ERROR,
"findMethod: Suitable but non-accessible method {0} found in class {1}, subclass of {2}", new Object[]
{ getMethodName(), theClass.getName(), targetClass.getName() }, null );
break;
@@ -220,13 +212,13 @@
protected abstract Method doFindMethod( final Class targetClass, final boolean acceptPrivate,
- final boolean acceptPackage ) throws SuitableMethodNotAccessibleException, InvocationTargetException;
+ final boolean acceptPackage, SimpleLogger logger ) throws SuitableMethodNotAccessibleException, InvocationTargetException;
- private MethodResult invokeMethod( final Object componentInstance, final Object rawParameter )
+ private MethodResult invokeMethod( final Object componentInstance, final Object rawParameter, SimpleLogger logger )
throws InvocationTargetException
{
- getLogger().log( LogService.LOG_DEBUG, "invoking {0}: {1}", new Object[]
+ logger.log( LogService.LOG_DEBUG, "invoking {0}: {1}", new Object[]
{ getMethodNamePrefix(), getMethodName() }, null );
try
{
@@ -234,20 +226,20 @@
{
final Object[] params = getParameters(m_method, rawParameter);
Object result = m_method.invoke(componentInstance, params);
- getLogger().log( LogService.LOG_DEBUG, "invoked {0}: {1}: parameters {2}", new Object[]
+ logger.log( LogService.LOG_DEBUG, "invoked {0}: {1}: parameters {2}", new Object[]
{ getMethodNamePrefix(), getMethodName(), Arrays.asList( params ) }, null );
return new MethodResult((m_method.getReturnType() != Void.TYPE), (Map) result);
}
else
{
- getLogger().log( LogService.LOG_WARNING, "Method {0} cannot be called on null object",
+ logger.log( LogService.LOG_WARNING, "Method {0} cannot be called on null object",
new Object[]
{ getMethodName() }, null );
}
}
catch ( IllegalStateException ise )
{
- getLogger().log( LogService.LOG_DEBUG, ise.getMessage(), null );
+ logger.log( LogService.LOG_DEBUG, ise.getMessage(), null );
return null;
}
catch ( IllegalAccessException ex )
@@ -255,7 +247,7 @@
// 112.3.1 If the method is not is not declared protected or
// public, SCR must log an error message with the log service,
// if present, and ignore the method
- getLogger().log( LogService.LOG_DEBUG, "Method {0} cannot be called", new Object[]
+ logger.log( LogService.LOG_DEBUG, "Method {0} cannot be called", new Object[]
{ getMethodName() }, ex );
}
catch ( InvocationTargetException ex )
@@ -267,7 +259,7 @@
throw new InvocationTargetException( t );
}
- // assume success (also if the mehotd is not available or accessible)
+ // assume success (also if the method is not available or accessible)
return MethodResult.VOID; // TODO: or null ??
}
@@ -304,11 +296,13 @@
* the method is returned. Enforcing accessibility is required to support
* invocation of protected methods.
*
+ *
* @param clazz The <code>Class</code> which provides the method.
* @param name The name of the method.
* @param parameterTypes The parameters to the method. Passing
* <code>null</code> is equivalent to using an empty array.
*
+ * @param logger
* @return The named method with enforced accessibility or <code>null</code>
* if no such method exists in the class.
*
@@ -319,7 +313,7 @@
* trying to access the desired method.
*/
public /* static */ Method getMethod( Class clazz, String name, Class[] parameterTypes, boolean acceptPrivate,
- boolean acceptPackage ) throws SuitableMethodNotAccessibleException,
+ boolean acceptPackage, SimpleLogger logger ) throws SuitableMethodNotAccessibleException,
InvocationTargetException
{
try
@@ -340,10 +334,10 @@
{
// thrown if no method is declared with the given name and
// parameters
- if ( getLogger().isLogEnabled( LogService.LOG_DEBUG ) )
+ if ( logger.isLogEnabled( LogService.LOG_DEBUG ) )
{
String argList = ( parameterTypes != null ) ? Arrays.asList( parameterTypes ).toString() : "";
- getLogger().log( LogService.LOG_DEBUG, "Declared Method {0}.{1}({2}) not found", new Object[]
+ logger.log( LogService.LOG_DEBUG, "Declared Method {0}.{1}({2}) not found", new Object[]
{ clazz.getName(), name, argList }, null );
}
}
@@ -352,7 +346,7 @@
// may be thrown if a method would be found but the signature
// contains throws declaration for an exception which cannot
// be loaded
- if ( getLogger().isLogEnabled( LogService.LOG_WARNING ) )
+ if ( logger.isLogEnabled( LogService.LOG_WARNING ) )
{
StringBuffer buf = new StringBuffer();
buf.append( "Failure loooking up method " ).append( name ).append( '(' );
@@ -365,7 +359,7 @@
}
}
buf.append( ") in class class " ).append( clazz.getName() ).append( ". Assuming no such method." );
- getLogger().log( LogService.LOG_WARNING, buf.toString(), cdfe );
+ logger.log( LogService.LOG_WARNING, buf.toString(), cdfe );
}
}
catch ( SuitableMethodNotAccessibleException e)
@@ -386,7 +380,7 @@
/**
* Returns <code>true</code> if the method is acceptable to be returned from the
- * {@link #getMethod(Class, String, Class[], boolean, boolean)} and also
+ * {@link #getMethod(Class, String, Class[], boolean, boolean, SimpleLogger)} and also
* makes the method accessible.
* <p>
* This method returns <code>true</code> iff:
@@ -475,6 +469,7 @@
*
*
*
+ *
* @param componentInstance The component instance on which to call the
* method
* @param rawParameter The parameter container providing the actual
@@ -482,6 +477,7 @@
* @param methodCallFailureResult The result to return from this method if
* calling the method resulted in an exception.
*
+ * @param logger
* @return <code>true</code> if the method was called successfully or the
* method was not found and was not required. <code>false</code> if
* the method was not found but required.
@@ -489,15 +485,15 @@
* found and called, but the method threw an exception.
*/
public MethodResult invoke( final Object componentInstance, final Object rawParameter,
- final MethodResult methodCallFailureResult )
+ final MethodResult methodCallFailureResult, SimpleLogger logger )
{
try
{
- return m_state.invoke( this, componentInstance, rawParameter );
+ return m_state.invoke( this, componentInstance, rawParameter, logger );
}
catch ( InvocationTargetException ite )
{
- getLogger().log( LogService.LOG_ERROR, "The {0} method has thrown an exception", new Object[]
+ logger.log( LogService.LOG_ERROR, "The {0} method has thrown an exception", new Object[]
{ getMethodName() }, ite.getCause() );
}
@@ -505,19 +501,19 @@
}
- public boolean methodExists()
+ public boolean methodExists( SimpleLogger logger )
{
- return m_state.methodExists( this );
+ return m_state.methodExists( this, logger );
}
private static interface State
{
- MethodResult invoke( final BaseMethod baseMethod, final Object componentInstance, final Object rawParameter )
+ MethodResult invoke( final BaseMethod baseMethod, final Object componentInstance, final Object rawParameter, SimpleLogger logger )
throws InvocationTargetException;
- boolean methodExists( final BaseMethod baseMethod );
+ boolean methodExists( final BaseMethod baseMethod, SimpleLogger logger );
}
private static class NotApplicable implements State
@@ -526,13 +522,13 @@
private static final State INSTANCE = new NotApplicable();
- public MethodResult invoke( final BaseMethod baseMethod, final Object componentInstance, final Object rawParameter )
+ public MethodResult invoke( final BaseMethod baseMethod, final Object componentInstance, final Object rawParameter, SimpleLogger logger )
{
return MethodResult.VOID;
}
- public boolean methodExists( final BaseMethod baseMethod )
+ public boolean methodExists( final BaseMethod baseMethod, SimpleLogger logger )
{
return true;
}
@@ -543,40 +539,40 @@
private static final State INSTANCE = new NotResolved();
- private void resolve( final BaseMethod baseMethod )
+ private void resolve( final BaseMethod baseMethod, SimpleLogger logger )
{
- baseMethod.getLogger().log( LogService.LOG_DEBUG, "getting {0}: {1}", new Object[]
+ logger.log( LogService.LOG_DEBUG, "getting {0}: {1}", new Object[]
{baseMethod.getMethodNamePrefix(), baseMethod.getMethodName()}, null );
// resolve the method
Method method;
try
{
- method = baseMethod.findMethod();
+ method = baseMethod.findMethod( logger );
}
catch ( InvocationTargetException ex )
{
method = null;
- baseMethod.getLogger().log( LogService.LOG_WARNING, "{0} cannot be found", new Object[]
+ logger.log( LogService.LOG_WARNING, "{0} cannot be found", new Object[]
{baseMethod.getMethodName()}, ex.getTargetException() );
}
- baseMethod.setMethod( method );
+ baseMethod.setMethod( method, logger );
}
- public MethodResult invoke( final BaseMethod baseMethod, final Object componentInstance, final Object rawParameter )
+ public MethodResult invoke( final BaseMethod baseMethod, final Object componentInstance, final Object rawParameter, SimpleLogger logger )
throws InvocationTargetException
{
- resolve( baseMethod );
- return baseMethod.getState().invoke( baseMethod, componentInstance, rawParameter );
+ resolve( baseMethod, logger );
+ return baseMethod.getState().invoke( baseMethod, componentInstance, rawParameter, logger );
}
- public boolean methodExists( final BaseMethod baseMethod )
+ public boolean methodExists( final BaseMethod baseMethod, SimpleLogger logger )
{
- resolve( baseMethod );
- return baseMethod.getState().methodExists( baseMethod );
+ resolve( baseMethod, logger );
+ return baseMethod.getState().methodExists( baseMethod, logger );
}
}
@@ -585,18 +581,18 @@
private static final State INSTANCE = new NotFound();
- public MethodResult invoke( final BaseMethod baseMethod, final Object componentInstance, final Object rawParameter )
+ public MethodResult invoke( final BaseMethod baseMethod, final Object componentInstance, final Object rawParameter, SimpleLogger logger )
{
// 112.3.1 If the method is not found , SCR must log an error
// message with the log service, if present, and ignore the
// method
- baseMethod.getLogger().log( LogService.LOG_ERROR, "{0} method [{1}] not found", new Object[]
+ logger.log( LogService.LOG_ERROR, "{0} method [{1}] not found", new Object[]
{ baseMethod.getMethodNamePrefix(), baseMethod.getMethodName() }, null );
return null;
}
- public boolean methodExists( final BaseMethod baseMethod )
+ public boolean methodExists( final BaseMethod baseMethod, SimpleLogger logger )
{
return false;
}
@@ -607,14 +603,14 @@
private static final State INSTANCE = new Resolved();
- public MethodResult invoke( final BaseMethod baseMethod, final Object componentInstance, final Object rawParameter )
+ public MethodResult invoke( final BaseMethod baseMethod, final Object componentInstance, final Object rawParameter, SimpleLogger logger )
throws InvocationTargetException
{
- return baseMethod.invokeMethod( componentInstance, rawParameter );
+ return baseMethod.invokeMethod( componentInstance, rawParameter, logger );
}
- public boolean methodExists( final BaseMethod baseMethod )
+ public boolean methodExists( final BaseMethod baseMethod, SimpleLogger logger )
{
return true;
}
diff --git a/scr/src/main/java/org/apache/felix/scr/impl/helper/BindMethod.java b/scr/src/main/java/org/apache/felix/scr/impl/helper/BindMethod.java
index 2c0f91b..b1f8438 100644
--- a/scr/src/main/java/org/apache/felix/scr/impl/helper/BindMethod.java
+++ b/scr/src/main/java/org/apache/felix/scr/impl/helper/BindMethod.java
@@ -23,7 +23,6 @@
import java.lang.reflect.Method;
import org.apache.felix.scr.impl.Activator;
-import org.apache.felix.scr.impl.manager.AbstractComponentManager;
import org.apache.felix.scr.impl.manager.RefPair;
import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceReference;
@@ -49,10 +48,10 @@
private int m_paramStyle;
- public BindMethod( final SimpleLogger logger, final String methodName,
+ public BindMethod( final String methodName,
final Class componentClass, final String referenceClassName, final boolean isDS11, final boolean isDS12Felix )
{
- super( logger, methodName, componentClass, isDS11, isDS12Felix );
+ super( methodName, componentClass, isDS11, isDS12Felix );
m_referenceClassName = referenceClassName;
}
@@ -63,17 +62,19 @@
* the class hierarchy is traversed until a method is found or the root
* of the class hierarchy is reached without finding a method.
*
+ *
* @param targetClass The class in which to look for the method
* @param acceptPrivate <code>true</code> if private methods should be
* considered.
* @param acceptPackage <code>true</code> if package private methods should
* be considered.
+ * @param logger
* @return The requested method or <code>null</code> if no acceptable method
* can be found in the target class or any super class.
* @throws InvocationTargetException If an unexpected Throwable is caught
* trying to find the requested method.
*/
- protected Method doFindMethod( Class targetClass, boolean acceptPrivate, boolean acceptPackage )
+ protected Method doFindMethod( Class targetClass, boolean acceptPrivate, boolean acceptPackage, SimpleLogger logger )
throws SuitableMethodNotAccessibleException, InvocationTargetException
{
// 112.3.1 The method is searched for using the following priority
@@ -86,9 +87,9 @@
// flag indicating a suitable but inaccessible method has been found
boolean suitableMethodNotAccessible = false;
- if ( getLogger().isLogEnabled( LogService.LOG_DEBUG ) )
+ if ( logger.isLogEnabled( LogService.LOG_DEBUG ) )
{
- getLogger().log( LogService.LOG_DEBUG,
+ logger.log( LogService.LOG_DEBUG,
"doFindMethod: Looking for method " + targetClass.getName() + "." + getMethodName(), null );
}
@@ -96,12 +97,12 @@
Method method;
try
{
- method = getServiceReferenceMethod( targetClass, acceptPrivate, acceptPackage );
+ method = getServiceReferenceMethod( targetClass, acceptPrivate, acceptPackage, logger );
if ( method != null )
{
- if ( getLogger().isLogEnabled( LogService.LOG_DEBUG ) )
+ if ( logger.isLogEnabled( LogService.LOG_DEBUG ) )
{
- getLogger().log( LogService.LOG_DEBUG, "doFindMethod: Found Method " + method, null );
+ logger.log( LogService.LOG_DEBUG, "doFindMethod: Found Method " + method, null );
}
m_paramStyle = SERVICE_REFERENCE;
return method;
@@ -113,13 +114,13 @@
}
// for further methods we need the class of the service object
- final Class parameterClass = getParameterClass( targetClass );
+ final Class parameterClass = getParameterClass( targetClass, logger );
if ( parameterClass != null )
{
- if ( getLogger().isLogEnabled( LogService.LOG_DEBUG ) )
+ if ( logger.isLogEnabled( LogService.LOG_DEBUG ) )
{
- getLogger().log(
+ logger.log(
LogService.LOG_DEBUG,
"doFindMethod: No method taking ServiceReference found, checking method taking "
+ parameterClass.getName(), null );
@@ -128,7 +129,7 @@
// Case 2 - Service object parameter
try
{
- method = getServiceObjectMethod( targetClass, parameterClass, acceptPrivate, acceptPackage );
+ method = getServiceObjectMethod( targetClass, parameterClass, acceptPrivate, acceptPackage, logger );
if ( method != null )
{
m_paramStyle = SERVICE_OBJECT;
@@ -143,7 +144,7 @@
// Case 3 - Service interface assignement compatible methods
try
{
- method = getServiceObjectAssignableMethod( targetClass, parameterClass, acceptPrivate, acceptPackage );
+ method = getServiceObjectAssignableMethod( targetClass, parameterClass, acceptPrivate, acceptPackage, logger );
if ( method != null )
{
m_paramStyle = SERVICE_OBJECT;
@@ -162,7 +163,7 @@
// Case 4 - same as case 2, but + Map param (DS 1.1 only)
try
{
- method = getServiceObjectWithMapMethod( targetClass, parameterClass, acceptPrivate, acceptPackage );
+ method = getServiceObjectWithMapMethod( targetClass, parameterClass, acceptPrivate, acceptPackage, logger );
if ( method != null )
{
m_paramStyle = SERVICE_OBJECT_AND_MAP;
@@ -193,9 +194,9 @@
}
}
- else if ( getLogger().isLogEnabled( LogService.LOG_WARNING ) )
+ else if ( logger.isLogEnabled( LogService.LOG_WARNING ) )
{
- getLogger().log(
+ logger.log(
LogService.LOG_WARNING,
"doFindMethod: Cannot check for methods taking parameter class " + m_referenceClassName + ": "
+ targetClass.getName() + " does not see it", null );
@@ -205,7 +206,7 @@
// the suitable methods are accessible, we have to terminate
if ( suitableMethodNotAccessible )
{
- getLogger().log( LogService.LOG_ERROR,
+ logger.log( LogService.LOG_ERROR,
"doFindMethod: Suitable but non-accessible method found in class {0}", new Object[]
{ targetClass.getName() }, null );
throw new SuitableMethodNotAccessibleException();
@@ -229,14 +230,14 @@
* if the class loader of the <code>targetClass</code> cannot see that
* class.
*/
- private Class getParameterClass( final Class targetClass )
+ private Class getParameterClass( final Class targetClass, SimpleLogger logger )
{
- if ( getLogger().isLogEnabled( LogService.LOG_DEBUG ) )
+ if ( logger.isLogEnabled( LogService.LOG_DEBUG ) )
{
- getLogger().log(
+ logger.log(
LogService.LOG_DEBUG,
- "getParameterClass: Looking for interface class " + m_referenceClassName + "through loader of "
- + targetClass.getName(), null );
+ "getParameterClass: Looking for interface class {0} through loader of {1}",
+ new Object[] {m_referenceClassName, targetClass.getName()}, null );
}
try
@@ -250,10 +251,10 @@
}
final Class referenceClass = loader.loadClass( m_referenceClassName );
- if ( getLogger().isLogEnabled( LogService.LOG_DEBUG ) )
+ if ( logger.isLogEnabled( LogService.LOG_DEBUG ) )
{
- getLogger().log( LogService.LOG_DEBUG,
- "getParameterClass: Found class " + referenceClass.getName(), null );
+ logger.log( LogService.LOG_DEBUG,
+ "getParameterClass: Found class {0}", new Object[] {referenceClass.getName()}, null );
}
return referenceClass;
}
@@ -263,9 +264,9 @@
// super class so we try this class next
}
- if ( getLogger().isLogEnabled( LogService.LOG_DEBUG ) )
+ if ( logger.isLogEnabled( LogService.LOG_DEBUG ) )
{
- getLogger().log( LogService.LOG_DEBUG,
+ logger.log( LogService.LOG_DEBUG,
"getParameterClass: Not found through component class, using PackageAdmin service", null );
}
@@ -282,19 +283,19 @@
{
try
{
- if ( getLogger().isLogEnabled( LogService.LOG_DEBUG ) )
+ if ( logger.isLogEnabled( LogService.LOG_DEBUG ) )
{
- getLogger().log(
+ logger.log(
LogService.LOG_DEBUG,
- "getParameterClass: Checking Bundle " + pkg[i].getExportingBundle().getSymbolicName()
- + "/" + pkg[i].getExportingBundle().getBundleId(), null );
+ "getParameterClass: Checking Bundle {0}/{1}",
+ new Object[] {pkg[i].getExportingBundle().getSymbolicName(), pkg[i].getExportingBundle().getBundleId()}, null );
}
Class referenceClass = pkg[i].getExportingBundle().loadClass( m_referenceClassName );
- if ( getLogger().isLogEnabled( LogService.LOG_DEBUG ) )
+ if ( logger.isLogEnabled( LogService.LOG_DEBUG ) )
{
- getLogger().log( LogService.LOG_DEBUG,
- "getParameterClass: Found class " + referenceClass.getName(), null );
+ logger.log( LogService.LOG_DEBUG,
+ "getParameterClass: Found class {0}", new Object[] {referenceClass.getName()}, null );
}
return referenceClass;
}
@@ -304,23 +305,23 @@
}
}
}
- else if ( getLogger().isLogEnabled( LogService.LOG_DEBUG ) )
+ else if ( logger.isLogEnabled( LogService.LOG_DEBUG ) )
{
- getLogger().log( LogService.LOG_DEBUG,
- "getParameterClass: No bundles exporting package " + referenceClassPackage + " found ", null );
+ logger.log( LogService.LOG_DEBUG,
+ "getParameterClass: No bundles exporting package {0} found", new Object[] {referenceClassPackage}, null );
}
}
- else if ( getLogger().isLogEnabled( LogService.LOG_DEBUG ) )
+ else if ( logger.isLogEnabled( LogService.LOG_DEBUG ) )
{
- getLogger().log( LogService.LOG_DEBUG,
+ logger.log( LogService.LOG_DEBUG,
"getParameterClass: PackageAdmin service not available, cannot find class", null );
}
// class cannot be found, neither through the component nor from an
// export, so we fall back to assuming Object
- if ( getLogger().isLogEnabled( LogService.LOG_DEBUG ) )
+ if ( logger.isLogEnabled( LogService.LOG_DEBUG ) )
{
- getLogger().log( LogService.LOG_DEBUG,
+ logger.log( LogService.LOG_DEBUG,
"getParameterClass: No class found, falling back to class Object", null );
}
return OBJECT_CLASS;
@@ -331,30 +332,6 @@
* Returns a method taking a single <code>ServiceReference</code> object
* as a parameter or <code>null</code> if no such method exists.
*
- * @param targetClass The class in which to look for the method. Only this
- * class is searched for the method.
- * @param acceptPrivate <code>true</code> if private methods should be
- * considered.
- * @param acceptPackage <code>true</code> if package private methods should
- * be considered.
- * @return The requested method or <code>null</code> if no acceptable method
- * can be found in the target class.
- * @throws SuitableMethodNotAccessibleException If a suitable method was
- * found which is not accessible
- * @throws InvocationTargetException If an unexpected Throwable is caught
- * trying to find the requested method.
- */
- private Method getServiceReferenceMethod( final Class targetClass, boolean acceptPrivate, boolean acceptPackage )
- throws SuitableMethodNotAccessibleException, InvocationTargetException
- {
- return getMethod( targetClass, getMethodName(), new Class[]
- { SERVICE_REFERENCE_CLASS }, acceptPrivate, acceptPackage );
- }
-
-
- /**
- * Returns a method taking a single parameter of the exact type declared
- * for the service reference or <code>null</code> if no such method exists.
*
* @param targetClass The class in which to look for the method. Only this
* class is searched for the method.
@@ -362,6 +339,34 @@
* considered.
* @param acceptPackage <code>true</code> if package private methods should
* be considered.
+ * @param logger
+ * @return The requested method or <code>null</code> if no acceptable method
+ * can be found in the target class.
+ * @throws SuitableMethodNotAccessibleException If a suitable method was
+ * found which is not accessible
+ * @throws InvocationTargetException If an unexpected Throwable is caught
+ * trying to find the requested method.
+ */
+ private Method getServiceReferenceMethod( final Class targetClass, boolean acceptPrivate, boolean acceptPackage, SimpleLogger logger )
+ throws SuitableMethodNotAccessibleException, InvocationTargetException
+ {
+ return getMethod( targetClass, getMethodName(), new Class[]
+ { SERVICE_REFERENCE_CLASS }, acceptPrivate, acceptPackage, logger );
+ }
+
+
+ /**
+ * Returns a method taking a single parameter of the exact type declared
+ * for the service reference or <code>null</code> if no such method exists.
+ *
+ *
+ * @param targetClass The class in which to look for the method. Only this
+ * class is searched for the method.
+ * @param acceptPrivate <code>true</code> if private methods should be
+ * considered.
+ * @param acceptPackage <code>true</code> if package private methods should
+ * be considered.
+ * @param logger
* @return The requested method or <code>null</code> if no acceptable method
* can be found in the target class.
* @throws SuitableMethodNotAccessibleException If a suitable method was
@@ -370,10 +375,10 @@
* trying to find the requested method.
*/
private Method getServiceObjectMethod( final Class targetClass, final Class parameterClass, boolean acceptPrivate,
- boolean acceptPackage ) throws SuitableMethodNotAccessibleException, InvocationTargetException
+ boolean acceptPackage, SimpleLogger logger ) throws SuitableMethodNotAccessibleException, InvocationTargetException
{
return getMethod( targetClass, getMethodName(), new Class[]
- { parameterClass }, acceptPrivate, acceptPackage );
+ { parameterClass }, acceptPrivate, acceptPackage, logger );
}
@@ -382,27 +387,29 @@
* compatible with the declared service type or <code>null</code> if no
* such method exists.
*
+ *
* @param targetClass The class in which to look for the method. Only this
* class is searched for the method.
* @param acceptPrivate <code>true</code> if private methods should be
* considered.
* @param acceptPackage <code>true</code> if package private methods should
* be considered.
+ * @param logger
* @return The requested method or <code>null</code> if no acceptable method
* can be found in the target class.
* @throws SuitableMethodNotAccessibleException If a suitable method was
* found which is not accessible
*/
private Method getServiceObjectAssignableMethod( final Class targetClass, final Class parameterClass,
- boolean acceptPrivate, boolean acceptPackage ) throws SuitableMethodNotAccessibleException
+ boolean acceptPrivate, boolean acceptPackage, SimpleLogger logger ) throws SuitableMethodNotAccessibleException
{
// Get all potential bind methods
Method candidateBindMethods[] = targetClass.getDeclaredMethods();
boolean suitableNotAccessible = false;
- if ( getLogger().isLogEnabled( LogService.LOG_DEBUG ) )
+ if ( logger.isLogEnabled( LogService.LOG_DEBUG ) )
{
- getLogger().log(
+ logger.log(
LogService.LOG_DEBUG,
"getServiceObjectAssignableMethod: Checking " + candidateBindMethods.length
+ " declared method in class " + targetClass.getName(), null );
@@ -412,9 +419,9 @@
for ( int i = 0; i < candidateBindMethods.length; i++ )
{
Method method = candidateBindMethods[i];
- if ( getLogger().isLogEnabled( LogService.LOG_DEBUG ) )
+ if ( logger.isLogEnabled( LogService.LOG_DEBUG ) )
{
- getLogger().log( LogService.LOG_DEBUG, "getServiceObjectAssignableMethod: Checking " + method, null );
+ logger.log( LogService.LOG_DEBUG, "getServiceObjectAssignableMethod: Checking " + method, null );
}
// Get the parameters for the current method
@@ -426,9 +433,9 @@
if ( parameters.length == 1 && method.getName().equals( getMethodName() ) )
{
- if ( getLogger().isLogEnabled( LogService.LOG_DEBUG ) )
+ if ( logger.isLogEnabled( LogService.LOG_DEBUG ) )
{
- getLogger().log( LogService.LOG_DEBUG, "getServiceObjectAssignableMethod: Considering " + method, null );
+ logger.log( LogService.LOG_DEBUG, "getServiceObjectAssignableMethod: Considering " + method, null );
}
// Get the parameter type
@@ -447,9 +454,9 @@
// suitable method is not accessible, flag for exception
suitableNotAccessible = true;
}
- else if ( getLogger().isLogEnabled( LogService.LOG_DEBUG ) )
+ else if ( logger.isLogEnabled( LogService.LOG_DEBUG ) )
{
- getLogger().log(
+ logger.log(
LogService.LOG_DEBUG,
"getServiceObjectAssignableMethod: Parameter failure: Required " + theParameter + "; actual "
+ parameterClass.getName(), null );
@@ -475,12 +482,14 @@
* type declared for the service reference and the second being a
* <code>Map</code> or <code>null</code> if no such method exists.
*
+ *
* @param targetClass The class in which to look for the method. Only this
* class is searched for the method.
* @param acceptPrivate <code>true</code> if private methods should be
* considered.
* @param acceptPackage <code>true</code> if package private methods should
* be considered.
+ * @param logger
* @return The requested method or <code>null</code> if no acceptable method
* can be found in the target class.
* @throws SuitableMethodNotAccessibleException If a suitable method was
@@ -489,11 +498,11 @@
* trying to find the requested method.
*/
private Method getServiceObjectWithMapMethod( final Class targetClass, final Class parameterClass,
- boolean acceptPrivate, boolean acceptPackage ) throws SuitableMethodNotAccessibleException,
+ boolean acceptPrivate, boolean acceptPackage, SimpleLogger logger ) throws SuitableMethodNotAccessibleException,
InvocationTargetException
{
return getMethod( targetClass, getMethodName(), new Class[]
- { parameterClass, MAP_CLASS }, acceptPrivate, acceptPackage );
+ { parameterClass, MAP_CLASS }, acceptPrivate, acceptPackage, logger );
}
@@ -554,19 +563,19 @@
return null;
}
- public boolean getServiceObject( RefPair refPair, BundleContext context )
+ public boolean getServiceObject( RefPair refPair, BundleContext context, SimpleLogger logger )
{
//??? this resolves which we need.... better way?
- if ( refPair.getServiceObject() == null && methodExists() )
+ if ( refPair.getServiceObject() == null && methodExists( logger ) )
{
if (m_paramStyle == SERVICE_OBJECT || m_paramStyle == SERVICE_OBJECT_AND_MAP) {
Object service = context.getService( refPair.getRef() );
if ( service == null )
{
refPair.setFailed();
- getLogger().log(
+ logger.log(
LogService.LOG_WARNING,
- "Could not get service from ref " + refPair.getRef(), null );
+ "Could not get service from ref {0}", new Object[] {refPair.getRef()}, null );
return false;
}
refPair.setServiceObject( service );
diff --git a/scr/src/main/java/org/apache/felix/scr/impl/helper/BindMethods.java b/scr/src/main/java/org/apache/felix/scr/impl/helper/BindMethods.java
index 8f547c0..30531de 100644
--- a/scr/src/main/java/org/apache/felix/scr/impl/helper/BindMethods.java
+++ b/scr/src/main/java/org/apache/felix/scr/impl/helper/BindMethods.java
@@ -32,26 +32,24 @@
private final UpdatedMethod m_updated;
private final UnbindMethod m_unbind;
- BindMethods( SimpleLogger logger, ReferenceMetadata m_dependencyMetadata, Class instanceClass,
+ BindMethods( ReferenceMetadata m_dependencyMetadata, Class instanceClass,
final boolean isDS11, final boolean isDS12Felix )
{
- m_bind = new BindMethod( logger,
+ m_bind = new BindMethod(
m_dependencyMetadata.getBind(),
instanceClass,
m_dependencyMetadata.getInterface(),
isDS11, isDS12Felix
);
- m_updated = new UpdatedMethod( logger,
+ m_updated = new UpdatedMethod(
m_dependencyMetadata.getUpdated(),
instanceClass,
- m_dependencyMetadata.getName(),
m_dependencyMetadata.getInterface(),
isDS11, isDS12Felix
);
- m_unbind = new UnbindMethod( logger,
+ m_unbind = new UnbindMethod(
m_dependencyMetadata.getUnbind(),
instanceClass,
- m_dependencyMetadata.getName(),
m_dependencyMetadata.getInterface(),
isDS11, isDS12Felix
);
diff --git a/scr/src/main/java/org/apache/felix/scr/impl/helper/ComponentMethods.java b/scr/src/main/java/org/apache/felix/scr/impl/helper/ComponentMethods.java
index 3759b7f..8d94814 100644
--- a/scr/src/main/java/org/apache/felix/scr/impl/helper/ComponentMethods.java
+++ b/scr/src/main/java/org/apache/felix/scr/impl/helper/ComponentMethods.java
@@ -39,7 +39,7 @@
private final Map bindMethodMap = new HashMap();//<String, BindMethods>
- public synchronized void initComponentMethods(SimpleLogger logger, ComponentMetadata componentMetadata, Class implementationObjectClass)
+ public synchronized void initComponentMethods( ComponentMetadata componentMetadata, Class implementationObjectClass )
{
if (m_activateMethod != null)
{
@@ -47,18 +47,18 @@
}
boolean isDS11 = componentMetadata.isDS11();
boolean isDS12Felix = componentMetadata.isDS12Felix();
- m_activateMethod = new ActivateMethod( logger, componentMetadata.getActivate(), componentMetadata
+ m_activateMethod = new ActivateMethod( componentMetadata.getActivate(), componentMetadata
.isActivateDeclared(), implementationObjectClass, isDS11, isDS12Felix );
- m_deactivateMethod = new DeactivateMethod( logger, componentMetadata.getDeactivate(),
+ m_deactivateMethod = new DeactivateMethod( componentMetadata.getDeactivate(),
componentMetadata.isDeactivateDeclared(), implementationObjectClass, isDS11, isDS12Felix );
- m_modifiedMethod = new ModifiedMethod( logger, componentMetadata.getModified(), implementationObjectClass, isDS11, isDS12Felix );
+ m_modifiedMethod = new ModifiedMethod( componentMetadata.getModified(), implementationObjectClass, isDS11, isDS12Felix );
for ( Iterator it = componentMetadata.getDependencies().iterator(); it.hasNext(); )
{
ReferenceMetadata referenceMetadata = ( ReferenceMetadata ) it.next();
String refName = referenceMetadata.getName();
- BindMethods bindMethods = new BindMethods(logger, referenceMetadata, implementationObjectClass, isDS11, isDS12Felix);
+ BindMethods bindMethods = new BindMethods( referenceMetadata, implementationObjectClass, isDS11, isDS12Felix);
bindMethodMap.put( refName, bindMethods );
}
}
diff --git a/scr/src/main/java/org/apache/felix/scr/impl/helper/DeactivateMethod.java b/scr/src/main/java/org/apache/felix/scr/impl/helper/DeactivateMethod.java
index 152aa2f..a74c4df 100644
--- a/scr/src/main/java/org/apache/felix/scr/impl/helper/DeactivateMethod.java
+++ b/scr/src/main/java/org/apache/felix/scr/impl/helper/DeactivateMethod.java
@@ -19,9 +19,6 @@
package org.apache.felix.scr.impl.helper;
-import org.apache.felix.scr.impl.manager.AbstractComponentManager;
-
-
public class DeactivateMethod extends ActivateMethod
{
@@ -29,10 +26,10 @@
{ COMPONENT_CONTEXT_CLASS, BUNDLE_CONTEXT_CLASS, MAP_CLASS, Integer.TYPE, INTEGER_CLASS };
- public DeactivateMethod( final SimpleLogger logger, final String methodName,
- final boolean methodRequired, final Class componentClass, final boolean isDS11, final boolean isDS12Felix )
+ public DeactivateMethod( final String methodName,
+ final boolean methodRequired, final Class componentClass, final boolean isDS11, final boolean isDS12Felix )
{
- super( logger, methodName, methodRequired, componentClass, isDS11, isDS12Felix );
+ super( methodName, methodRequired, componentClass, isDS11, isDS12Felix );
}
diff --git a/scr/src/main/java/org/apache/felix/scr/impl/helper/ModifiedMethod.java b/scr/src/main/java/org/apache/felix/scr/impl/helper/ModifiedMethod.java
index c660e56c..68966c4 100644
--- a/scr/src/main/java/org/apache/felix/scr/impl/helper/ModifiedMethod.java
+++ b/scr/src/main/java/org/apache/felix/scr/impl/helper/ModifiedMethod.java
@@ -19,16 +19,13 @@
package org.apache.felix.scr.impl.helper;
-import org.apache.felix.scr.impl.manager.AbstractComponentManager;
-
-
public class ModifiedMethod extends ActivateMethod
{
- public ModifiedMethod( final SimpleLogger logger, final String methodName,
- final Class componentClass, final boolean isDS11, final boolean isDS12Felix )
+ public ModifiedMethod( final String methodName,
+ final Class componentClass, final boolean isDS11, final boolean isDS12Felix )
{
- super( logger, methodName, methodName != null, componentClass, isDS11, isDS12Felix );
+ super( methodName, methodName != null, componentClass, isDS11, isDS12Felix );
}
diff --git a/scr/src/main/java/org/apache/felix/scr/impl/helper/UnbindMethod.java b/scr/src/main/java/org/apache/felix/scr/impl/helper/UnbindMethod.java
index 3b9d677..c5d4cff 100644
--- a/scr/src/main/java/org/apache/felix/scr/impl/helper/UnbindMethod.java
+++ b/scr/src/main/java/org/apache/felix/scr/impl/helper/UnbindMethod.java
@@ -19,19 +19,16 @@
package org.apache.felix.scr.impl.helper;
-import org.apache.felix.scr.impl.manager.AbstractComponentManager;
-
-
/**
* Component method to be invoked on service unbinding.
*/
public class UnbindMethod extends BindMethod
{
- public UnbindMethod( final SimpleLogger logger, final String methodName,
- final Class componentClass, final String referenceName, final String referenceClassName, final boolean isDS11, final boolean isDS12Felix )
+ public UnbindMethod( final String methodName,
+ final Class componentClass, final String referenceClassName, final boolean isDS11, final boolean isDS12Felix )
{
- super( logger, methodName, componentClass, referenceClassName, isDS11, isDS12Felix );
+ super( methodName, componentClass, referenceClassName, isDS11, isDS12Felix );
}
diff --git a/scr/src/main/java/org/apache/felix/scr/impl/helper/UpdatedMethod.java b/scr/src/main/java/org/apache/felix/scr/impl/helper/UpdatedMethod.java
index 8d3fe91..80f24b6 100644
--- a/scr/src/main/java/org/apache/felix/scr/impl/helper/UpdatedMethod.java
+++ b/scr/src/main/java/org/apache/felix/scr/impl/helper/UpdatedMethod.java
@@ -19,19 +19,16 @@
package org.apache.felix.scr.impl.helper;
-import org.apache.felix.scr.impl.manager.AbstractComponentManager;
-
-
/**
* Component method to be invoked on service property update of a bound service.
*/
public class UpdatedMethod extends BindMethod
{
- public UpdatedMethod( final SimpleLogger logger, final String methodName,
- final Class componentClass, final String referenceName, final String referenceClassName, final boolean isDS11, final boolean isDS12Felix )
+ public UpdatedMethod( final String methodName,
+ final Class componentClass, final String referenceClassName, final boolean isDS11, final boolean isDS12Felix )
{
- super( logger, methodName, componentClass, referenceClassName, isDS11, isDS12Felix );
+ super( methodName, componentClass, referenceClassName, isDS11, isDS12Felix );
}
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 07ad20f..fd48364 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
@@ -784,7 +784,7 @@
log( LogService.LOG_ERROR, "Could not load implementation object class", e );
return false;
}
- m_componentMethods.initComponentMethods( this, m_componentMetadata, implementationObjectClass );
+ m_componentMethods.initComponentMethods( m_componentMetadata, implementationObjectClass );
for ( DependencyManager dependencyManager : m_dependencyManagers )
{
diff --git a/scr/src/main/java/org/apache/felix/scr/impl/manager/DependencyManager.java b/scr/src/main/java/org/apache/felix/scr/impl/manager/DependencyManager.java
index 3613d8a..6bf977c 100644
--- a/scr/src/main/java/org/apache/felix/scr/impl/manager/DependencyManager.java
+++ b/scr/src/main/java/org/apache/felix/scr/impl/manager/DependencyManager.java
@@ -309,7 +309,7 @@
}
if (isActive())
{
- m_bindMethods.getBind().getServiceObject( refPair, m_componentManager.getActivator().getBundleContext());
+ m_bindMethods.getBind().getServiceObject( refPair, m_componentManager.getActivator().getBundleContext(), m_componentManager );
}
return refPair;
}
@@ -387,7 +387,7 @@
{
synchronized (refPair)
{
- if (m_bindMethods.getBind().getServiceObject( refPair, m_componentManager.getActivator().getBundleContext()))
+ if (m_bindMethods.getBind().getServiceObject( refPair, m_componentManager.getActivator().getBundleContext(), m_componentManager ))
{
success = true;
}
@@ -433,7 +433,7 @@
RefPair<T> refPair = new RefPair<T>( serviceReference );
if (isActive())
{
- m_bindMethods.getBind().getServiceObject( refPair, m_componentManager.getActivator().getBundleContext());
+ m_bindMethods.getBind().getServiceObject( refPair, m_componentManager.getActivator().getBundleContext(), m_componentManager );
}
return refPair;
}
@@ -497,7 +497,7 @@
{
synchronized (refPair)
{
- success |= m_bindMethods.getBind().getServiceObject( refPair, m_componentManager.getActivator().getBundleContext());
+ success |= m_bindMethods.getBind().getServiceObject( refPair, m_componentManager.getActivator().getBundleContext(), m_componentManager );
}
}
return success;
@@ -584,7 +584,7 @@
{
synchronized (refPair)
{
- success |= m_bindMethods.getBind().getServiceObject( refPair, m_componentManager.getActivator().getBundleContext());
+ success |= m_bindMethods.getBind().getServiceObject( refPair, m_componentManager.getActivator().getBundleContext(), m_componentManager );
}
refs.add(refPair) ;
}
@@ -636,7 +636,7 @@
{
synchronized ( refPair )
{
- m_bindMethods.getBind().getServiceObject( refPair, m_componentManager.getActivator().getBundleContext() );
+ m_bindMethods.getBind().getServiceObject( refPair, m_componentManager.getActivator().getBundleContext(), m_componentManager );
}
if ( !refPair.isFailed() )
{
@@ -691,7 +691,7 @@
nextRefPair = tracked.values().iterator().next();
synchronized ( nextRefPair )
{
- if (!m_bindMethods.getBind().getServiceObject( nextRefPair, m_componentManager.getActivator().getBundleContext() ))
+ if (!m_bindMethods.getBind().getServiceObject( nextRefPair, m_componentManager.getActivator().getBundleContext(), m_componentManager ))
{
//TODO error???
}
@@ -745,7 +745,7 @@
RefPair<T> refPair = tracked.values().iterator().next();
synchronized ( refPair )
{
- success |= m_bindMethods.getBind().getServiceObject( refPair, m_componentManager.getActivator().getBundleContext() );
+ success |= m_bindMethods.getBind().getServiceObject( refPair, m_componentManager.getActivator().getBundleContext(), m_componentManager );
}
if (refPair.isFailed())
{
@@ -861,7 +861,7 @@
RefPair<T> refPair = tracked.values().iterator().next();
synchronized ( refPair )
{
- success |= m_bindMethods.getBind().getServiceObject( refPair, m_componentManager.getActivator().getBundleContext() );
+ success |= m_bindMethods.getBind().getServiceObject( refPair, m_componentManager.getActivator().getBundleContext(), m_componentManager );
}
this.refPair = refPair;
}
@@ -1416,7 +1416,7 @@
//something else got the reference and may be binding it.
return;
}
- m_bindMethods.getBind().getServiceObject( refPair, m_componentManager.getActivator().getBundleContext() );
+ m_bindMethods.getBind().getServiceObject( refPair, m_componentManager.getActivator().getBundleContext(), m_componentManager );
}
m_componentManager.invokeBindMethod( this, refPair, trackingCount );
}
@@ -1456,7 +1456,7 @@
return true;
}
}
- MethodResult result = m_bindMethods.getBind().invoke( componentInstance, refPair, MethodResult.VOID );
+ MethodResult result = m_bindMethods.getBind().invoke( componentInstance, refPair, MethodResult.VOID, m_componentManager );
if ( result == null )
{
return false;
@@ -1515,7 +1515,7 @@
return;
}
}
- if ( !m_bindMethods.getUpdated().getServiceObject( refPair, m_componentManager.getActivator().getBundleContext() ))
+ if ( !m_bindMethods.getUpdated().getServiceObject( refPair, m_componentManager.getActivator().getBundleContext(), m_componentManager ))
{
m_componentManager.log( LogService.LOG_WARNING,
"DependencyManager : invokeUpdatedMethod : Service not available from service registry for ServiceReference {0} for reference {1}",
@@ -1523,7 +1523,7 @@
return;
}
- MethodResult methodResult = m_bindMethods.getUpdated().invoke( componentInstance, refPair, MethodResult.VOID );
+ MethodResult methodResult = m_bindMethods.getUpdated().invoke( componentInstance, refPair, MethodResult.VOID, m_componentManager );
if ( methodResult != null)
{
m_componentManager.setServiceProperties( methodResult );
@@ -1587,7 +1587,7 @@
"DependencyManager : invokeUnbindMethod : Component set, but reference not present", null );
return;
}
- if ( !m_bindMethods.getUnbind().getServiceObject( refPair, m_componentManager.getActivator().getBundleContext() ))
+ if ( !m_bindMethods.getUnbind().getServiceObject( refPair, m_componentManager.getActivator().getBundleContext(), m_componentManager ))
{
m_componentManager.log( LogService.LOG_WARNING,
"DependencyManager : invokeUnbindMethod : Service not available from service registry for ServiceReference {0} for reference {1}",
@@ -1595,7 +1595,7 @@
return;
}
- MethodResult methodResult = m_bindMethods.getUnbind().invoke( componentInstance, refPair, MethodResult.VOID );
+ MethodResult methodResult = m_bindMethods.getUnbind().invoke( componentInstance, refPair, MethodResult.VOID, m_componentManager );
if ( methodResult != null )
{
m_componentManager.setServiceProperties( methodResult );
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 cbb67e3..f29fb00 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
@@ -287,7 +287,7 @@
// 5. Call the activate method, if present
final MethodResult result = getComponentMethods().getActivateMethod().invoke( implementationObject, new ActivatorParameter(
- componentContext, 1 ), null );
+ componentContext, 1 ), null, this );
if ( result == null )
{
// make sure the implementation object is not available
@@ -321,7 +321,7 @@
// method throws an exception, SCR must log an error message containing the
// exception with the Log Service and continue) has already been logged
final MethodResult result = getComponentMethods().getDeactivateMethod().invoke( implementationObject, new ActivatorParameter( componentContext,
- reason ), null );
+ reason ), null, this );
if ( result != null )
{
setServiceProperties( result );
@@ -649,7 +649,7 @@
protected MethodResult invokeModifiedMethod()
{
return getComponentMethods().getModifiedMethod().invoke( getInstance(),
- new ActivatorParameter( m_componentContext, -1 ), MethodResult.VOID );
+ new ActivatorParameter( m_componentContext, -1 ), MethodResult.VOID, this );
}
protected boolean hasInstance()
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 e4e609c..e97e010 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
@@ -249,14 +249,14 @@
{
Object instance = componentContext.getInstance();
result = modifiedMethod.invoke( instance,
- new ActivateMethod.ActivatorParameter( componentContext, -1 ), MethodResult.VOID );
+ new ActivateMethod.ActivatorParameter( componentContext, -1 ), MethodResult.VOID, this );
}
for ( BundleComponentContext componentContext : tmpImplementationObjects.values() )
{
Object instance = componentContext.getInstance();
result = modifiedMethod.invoke( instance,
- new ActivateMethod.ActivatorParameter( componentContext, -1 ), MethodResult.VOID );
+ new ActivateMethod.ActivatorParameter( componentContext, -1 ), MethodResult.VOID, this );
}
return result;
diff --git a/scr/src/test/java/org/apache/felix/scr/impl/helper/ActivateMethodTest.java b/scr/src/test/java/org/apache/felix/scr/impl/helper/ActivateMethodTest.java
index 973e5c7..2833eaf 100644
--- a/scr/src/test/java/org/apache/felix/scr/impl/helper/ActivateMethodTest.java
+++ b/scr/src/test/java/org/apache/felix/scr/impl/helper/ActivateMethodTest.java
@@ -271,8 +271,8 @@
}
};
ImmediateComponentManager icm = new ImmediateComponentManager( null, null, metadata, new ComponentMethods() );
- ActivateMethod am = new ActivateMethod( icm, methodName, methodName != null, obj.getClass(), true, false );
- am.invoke( obj, new ActivateMethod.ActivatorParameter( m_ctx, -1 ), null );
+ ActivateMethod am = new ActivateMethod( methodName, methodName != null, obj.getClass(), true, false );
+ am.invoke( obj, new ActivateMethod.ActivatorParameter( m_ctx, -1 ), null, icm );
Method m = get(am, "m_method");
assertNotNull( m );
assertEquals( methodName, m.getName() );
@@ -299,8 +299,8 @@
}
};
ImmediateComponentManager icm = new ImmediateComponentManager( null, null, metadata, new ComponentMethods() );
- ActivateMethod am = new ActivateMethod( icm, methodName, methodName != null, obj.getClass(), true, false );
- am.invoke( obj, new ActivateMethod.ActivatorParameter( m_ctx, -1 ), null );
+ ActivateMethod am = new ActivateMethod( methodName, methodName != null, obj.getClass(), true, false );
+ am.invoke( obj, new ActivateMethod.ActivatorParameter( m_ctx, -1 ), null, icm );
assertNull( get( am, "m_method" ) );
assertNull( obj.getCalledMethod() );
}
diff --git a/scr/src/test/java/org/apache/felix/scr/impl/helper/BindMethodTest.java b/scr/src/test/java/org/apache/felix/scr/impl/helper/BindMethodTest.java
index e184790..f3989bb 100644
--- a/scr/src/test/java/org/apache/felix/scr/impl/helper/BindMethodTest.java
+++ b/scr/src/test/java/org/apache/felix/scr/impl/helper/BindMethodTest.java
@@ -21,7 +21,6 @@
import junit.framework.TestCase;
-import org.apache.felix.scr.impl.manager.AbstractComponentManager;
import org.apache.felix.scr.impl.manager.ImmediateComponentManager;
import org.apache.felix.scr.impl.manager.RefPair;
import org.apache.felix.scr.impl.manager.components.FakeService;
@@ -434,11 +433,11 @@
}
};
ImmediateComponentManager icm = new ImmediateComponentManager( null, null, metadata, new ComponentMethods() );
- BindMethod bm = new BindMethod( icm, methodName, component.getClass(),
+ BindMethod bm = new BindMethod( methodName, component.getClass(),
FakeService.class.getName(), isDS11, false );
RefPair refPair = new RefPair( m_serviceReference );
- assertTrue( bm.getServiceObject( refPair, m_context ) );
- bm.invoke( component, refPair, null );
+ assertTrue( bm.getServiceObject( refPair, m_context, icm ) );
+ bm.invoke( component, refPair, null, icm );
assertEquals( expectCallPerformed, component.callPerformed );
}
}