Class BindMethod
java.lang.Object
org.apache.felix.scr.impl.inject.methods.BaseMethod<BindParameters,List<ValueUtils.ValueType>>
org.apache.felix.scr.impl.inject.methods.BindMethod
- All Implemented Interfaces:
ReferenceMethod
- Direct Known Subclasses:
UnbindMethod
,UpdatedMethod
public class BindMethod
extends BaseMethod<BindParameters,List<ValueUtils.ValueType>>
implements ReferenceMethod
Component method to be invoked on service (un)binding.
-
Nested Class Summary
Nested classes/interfaces inherited from class org.apache.felix.scr.impl.inject.methods.BaseMethod
BaseMethod.MethodInfo<T>
-
Field Summary
FieldsFields inherited from interface org.apache.felix.scr.impl.inject.ReferenceMethod
NOPReferenceMethod
-
Constructor Summary
ConstructorsConstructorDescriptionBindMethod
(String methodName, Class<?> componentClass, String referenceClassName, DSVersion dsVersion, boolean configurableServiceProperties) -
Method Summary
Modifier and TypeMethodDescriptionprotected BaseMethod.MethodInfo
<List<ValueUtils.ValueType>> doFindMethod
(Class<?> targetClass, boolean acceptPrivate, boolean acceptPackage, ComponentLogger logger) Finds the method named in theBaseMethod.m_methodName
field in the giventargetClass
.private Method
getComponentObjectsMethod
(Class<?> targetClass, boolean acceptPrivate, boolean acceptPackage, ComponentLogger logger) private Method
getMapMethod
(Class<?> targetClass, Class<?> parameterClass, boolean acceptPrivate, boolean acceptPackage, ComponentLogger logger) Returns a method taking a single map parameter ornull
if no such method exists.protected String
protected Object[]
getParameters
(Method method, BindParameters bp) Returns the parameter array created from therawParameter
using the actual parameter type list of themethod
.<S,
T> boolean getServiceObject
(BindParameters parameters, org.osgi.framework.BundleContext context) private Method
getServiceObjectAssignableMethod
(Class<?> targetClass, Class<?> parameterClass, boolean acceptPrivate, boolean acceptPackage, ComponentLogger logger) Returns a method taking a single object whose type is assignment compatible with the declared service type ornull
if no such method exists.private Method
getServiceObjectAssignableWithMapMethod
(Class<?> targetClass, Class<?> parameterClass, boolean acceptPrivate, boolean acceptPackage) Returns a method taking two parameters, the first being an object whose type is assignment compatible with the declared service type and the second being aMap
ornull
if no such method exists.private Method
getServiceObjectMethod
(Class<?> targetClass, Class<?> parameterClass, boolean acceptPrivate, boolean acceptPackage, ComponentLogger logger) Returns a method taking a single parameter of the exact type declared for the service reference ornull
if no such method exists.private Method
getServiceObjectWithMapMethod
(Class<?> targetClass, Class<?> parameterClass, boolean acceptPrivate, boolean acceptPackage, ComponentLogger logger) Returns a method taking two parameters, the first being of the exact type declared for the service reference and the second being aMap
ornull
if no such method exists.private Method
getServiceReferenceMethod
(Class<?> targetClass, boolean acceptPrivate, boolean acceptPackage, ComponentLogger logger) Returns a method taking a singleServiceReference
object as a parameter ornull
if no such method exists.protected void
setTypes
(List<ValueUtils.ValueType> types) Methods inherited from class org.apache.felix.scr.impl.inject.methods.BaseMethod
accept, getComponentClass, getDSVersion, getMethod, getMethod, getMethodName, getPackageName, getState, invoke, isDS12Felix, methodExists, returnValue, setMethod
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.apache.felix.scr.impl.inject.ReferenceMethod
invoke
-
Field Details
-
m_referenceClassName
-
m_paramTypes
-
-
Constructor Details
-
BindMethod
-
-
Method Details
-
doFindMethod
protected BaseMethod.MethodInfo<List<ValueUtils.ValueType>> doFindMethod(Class<?> targetClass, boolean acceptPrivate, boolean acceptPackage, ComponentLogger logger) throws SuitableMethodNotAccessibleException, InvocationTargetException Finds the method named in theBaseMethod.m_methodName
field in the giventargetClass
. If the target class has no acceptable method the class hierarchy is traversed until a method is found or the root of the class hierarchy is reached without finding a method.- Specified by:
doFindMethod
in classBaseMethod<BindParameters,
List<ValueUtils.ValueType>> - Parameters:
targetClass
- The class in which to look for the methodacceptPrivate
-true
if private methods should be considered.acceptPackage
-true
if package private methods should be considered.logger
-- Returns:
- The requested method or
null
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.SuitableMethodNotAccessibleException
-
setTypes
- Specified by:
setTypes
in classBaseMethod<BindParameters,
List<ValueUtils.ValueType>>
-
getServiceReferenceMethod
private Method getServiceReferenceMethod(Class<?> targetClass, boolean acceptPrivate, boolean acceptPackage, ComponentLogger logger) throws SuitableMethodNotAccessibleException, InvocationTargetException Returns a method taking a singleServiceReference
object as a parameter ornull
if no such method exists.- Parameters:
targetClass
- The class in which to look for the method. Only this class is searched for the method.acceptPrivate
-true
if private methods should be considered.acceptPackage
-true
if package private methods should be considered.logger
-- Returns:
- The requested method or
null
if no acceptable method can be found in the target class. - Throws:
SuitableMethodNotAccessibleException
- If a suitable method was found which is not accessibleInvocationTargetException
- If an unexpected Throwable is caught trying to find the requested method.
-
getComponentObjectsMethod
private Method getComponentObjectsMethod(Class<?> targetClass, boolean acceptPrivate, boolean acceptPackage, ComponentLogger logger) throws SuitableMethodNotAccessibleException, InvocationTargetException -
getServiceObjectMethod
private Method getServiceObjectMethod(Class<?> targetClass, Class<?> parameterClass, boolean acceptPrivate, boolean acceptPackage, ComponentLogger logger) throws SuitableMethodNotAccessibleException, InvocationTargetException Returns a method taking a single parameter of the exact type declared for the service reference ornull
if no such method exists.- Parameters:
targetClass
- The class in which to look for the method. Only this class is searched for the method.acceptPrivate
-true
if private methods should be considered.acceptPackage
-true
if package private methods should be considered.logger
-- Returns:
- The requested method or
null
if no acceptable method can be found in the target class. - Throws:
SuitableMethodNotAccessibleException
- If a suitable method was found which is not accessibleInvocationTargetException
- If an unexpected Throwable is caught trying to find the requested method.
-
getServiceObjectAssignableMethod
private Method getServiceObjectAssignableMethod(Class<?> targetClass, Class<?> parameterClass, boolean acceptPrivate, boolean acceptPackage, ComponentLogger logger) throws SuitableMethodNotAccessibleException Returns a method taking a single object whose type is assignment compatible with the declared service type ornull
if no such method exists.- Parameters:
targetClass
- The class in which to look for the method. Only this class is searched for the method.acceptPrivate
-true
if private methods should be considered.acceptPackage
-true
if package private methods should be considered.logger
-- Returns:
- The requested method or
null
if no acceptable method can be found in the target class. - Throws:
SuitableMethodNotAccessibleException
- If a suitable method was found which is not accessible
-
getServiceObjectWithMapMethod
private Method getServiceObjectWithMapMethod(Class<?> targetClass, Class<?> parameterClass, boolean acceptPrivate, boolean acceptPackage, ComponentLogger logger) throws SuitableMethodNotAccessibleException, InvocationTargetException Returns a method taking two parameters, the first being of the exact type declared for the service reference and the second being aMap
ornull
if no such method exists.- Parameters:
targetClass
- The class in which to look for the method. Only this class is searched for the method.acceptPrivate
-true
if private methods should be considered.acceptPackage
-true
if package private methods should be considered.logger
-- Returns:
- The requested method or
null
if no acceptable method can be found in the target class. - Throws:
SuitableMethodNotAccessibleException
- If a suitable method was found which is not accessibleInvocationTargetException
- If an unexpected Throwable is caught trying to find the requested method.
-
getServiceObjectAssignableWithMapMethod
private Method getServiceObjectAssignableWithMapMethod(Class<?> targetClass, Class<?> parameterClass, boolean acceptPrivate, boolean acceptPackage) throws SuitableMethodNotAccessibleException Returns a method taking two parameters, the first being an object whose type is assignment compatible with the declared service type and the second being aMap
ornull
if no such method exists.- Parameters:
targetClass
- The class in which to look for the method. Only this class is searched for the method.acceptPrivate
-true
if private methods should be considered.acceptPackage
-true
if package private methods should be considered.- Returns:
- The requested method or
null
if no acceptable method can be found in the target class. - Throws:
SuitableMethodNotAccessibleException
- If a suitable method was found which is not accessible
-
getMapMethod
private Method getMapMethod(Class<?> targetClass, Class<?> parameterClass, boolean acceptPrivate, boolean acceptPackage, ComponentLogger logger) throws SuitableMethodNotAccessibleException, InvocationTargetException Returns a method taking a single map parameter ornull
if no such method exists.- Parameters:
targetClass
- The class in which to look for the method. Only this class is searched for the method.acceptPrivate
-true
if private methods should be considered.acceptPackage
-true
if package private methods should be considered.logger
-- Returns:
- The requested method or
null
if no acceptable method can be found in the target class. - Throws:
SuitableMethodNotAccessibleException
- If a suitable method was found which is not accessibleInvocationTargetException
- If an unexpected Throwable is caught trying to find the requested method.
-
getServiceObject
public <S,T> boolean getServiceObject(BindParameters parameters, org.osgi.framework.BundleContext context) - Specified by:
getServiceObject
in interfaceReferenceMethod
-
getParameters
Description copied from class:BaseMethod
Returns the parameter array created from therawParameter
using the actual parameter type list of themethod
.- Specified by:
getParameters
in classBaseMethod<BindParameters,
List<ValueUtils.ValueType>> - Parameters:
method
-bp
-- Returns:
-
getMethodNamePrefix
- Overrides:
getMethodNamePrefix
in classBaseMethod<BindParameters,
List<ValueUtils.ValueType>>
-