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 BaseMethod
BaseMethod.MethodInfo<T> -
Field Summary
FieldsFields inherited from interface 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_methodNamefield in the giventargetClass.private MethodgetComponentObjectsMethod(Class<?> targetClass, boolean acceptPrivate, boolean acceptPackage, ComponentLogger logger) private MethodgetMapMethod(Class<?> targetClass, Class<?> parameterClass, boolean acceptPrivate, boolean acceptPackage, ComponentLogger logger) Returns a method taking a single map parameter ornullif no such method exists.protected Stringprotected Object[]getParameters(Method method, BindParameters bp) Returns the parameter array created from therawParameterusing the actual parameter type list of themethod.<S,T> boolean getServiceObject(BindParameters parameters, org.osgi.framework.BundleContext context) private MethodgetServiceObjectAssignableMethod(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 ornullif no such method exists.private MethodgetServiceObjectAssignableWithMapMethod(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 aMapornullif no such method exists.private MethodgetServiceObjectMethod(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 ornullif no such method exists.private MethodgetServiceObjectWithMapMethod(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 aMapornullif no such method exists.private MethodgetServiceReferenceMethod(Class<?> targetClass, boolean acceptPrivate, boolean acceptPackage, ComponentLogger logger) Returns a method taking a singleServiceReferenceobject as a parameter ornullif no such method exists.protected voidsetTypes(List<ValueUtils.ValueType> types) Methods inherited from class BaseMethod
accept, getComponentClass, getDSVersion, getMethod, getMethod, getMethodName, getPackageName, getState, invoke, isDS12Felix, methodExists, returnValue, setMethodMethods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface 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_methodNamefield 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:
doFindMethodin classBaseMethod<BindParameters, List<ValueUtils.ValueType>>- Parameters:
targetClass- The class in which to look for the methodacceptPrivate-trueif private methods should be considered.acceptPackage-trueif package private methods should be considered.logger-- Returns:
- The requested method or
nullif 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:
setTypesin 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 singleServiceReferenceobject as a parameter ornullif no such method exists.- Parameters:
targetClass- The class in which to look for the method. Only this class is searched for the method.acceptPrivate-trueif private methods should be considered.acceptPackage-trueif package private methods should be considered.logger-- Returns:
- The requested method or
nullif 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 ornullif no such method exists.- Parameters:
targetClass- The class in which to look for the method. Only this class is searched for the method.acceptPrivate-trueif private methods should be considered.acceptPackage-trueif package private methods should be considered.logger-- Returns:
- The requested method or
nullif 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 ornullif no such method exists.- Parameters:
targetClass- The class in which to look for the method. Only this class is searched for the method.acceptPrivate-trueif private methods should be considered.acceptPackage-trueif package private methods should be considered.logger-- Returns:
- The requested method or
nullif 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 aMapornullif no such method exists.- Parameters:
targetClass- The class in which to look for the method. Only this class is searched for the method.acceptPrivate-trueif private methods should be considered.acceptPackage-trueif package private methods should be considered.logger-- Returns:
- The requested method or
nullif 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 aMapornullif no such method exists.- Parameters:
targetClass- The class in which to look for the method. Only this class is searched for the method.acceptPrivate-trueif private methods should be considered.acceptPackage-trueif package private methods should be considered.- Returns:
- The requested method or
nullif 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 ornullif no such method exists.- Parameters:
targetClass- The class in which to look for the method. Only this class is searched for the method.acceptPrivate-trueif private methods should be considered.acceptPackage-trueif package private methods should be considered.logger-- Returns:
- The requested method or
nullif 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:
getServiceObjectin interfaceReferenceMethod
-
getParameters
Description copied from class:BaseMethodReturns the parameter array created from therawParameterusing the actual parameter type list of themethod.- Specified by:
getParametersin classBaseMethod<BindParameters, List<ValueUtils.ValueType>>- Parameters:
method-bp-- Returns:
-
getMethodNamePrefix
- Overrides:
getMethodNamePrefixin classBaseMethod<BindParameters, List<ValueUtils.ValueType>>
-