Package jadex.bridge.service.component
Class ProvidedServicesComponentFeature
- java.lang.Object
 - 
- jadex.bridge.component.impl.AbstractComponentFeature
 - 
- jadex.bridge.service.component.ProvidedServicesComponentFeature
 
 
 
- 
- All Implemented Interfaces:
 IComponentFeature,IExternalProvidedServicesFeature,IProvidedServicesFeature
public class ProvidedServicesComponentFeature extends jadex.bridge.component.impl.AbstractComponentFeature implements IProvidedServicesFeature
Feature for provided services. 
- 
- 
Field Summary
Fields Modifier and Type Field Description protected java.util.Map<IServiceIdentifier,ProvidedServiceInfo>serviceinfosThe map of provided service infos.protected java.util.Map<IServiceIdentifier,MethodListenerHandler>servicelistenersThe map of provided service infos.protected java.util.Map<java.lang.Class<?>,java.util.Collection<IInternalService>>servicesThe map of platform services. 
- 
Constructor Summary
Constructors Constructor Description ProvidedServicesComponentFeature(IInternalAccess component, ComponentCreationInfo cinfo)Factory method constructor for instance level. 
- 
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddInterceptor(IServiceInvocationInterceptor interceptor, java.lang.Object service, int pos)Add a service interceptor.voidaddMethodInvocationListener(IServiceIdentifier sid, MethodInfo mi, IMethodInvocationListener listener)Add a method invocation handler.protected voidaddService(IInternalService service, ProvidedServiceInfo info)Add a service.IFuture<java.lang.Void>addService(java.lang.String name, java.lang.Class<?> type, IServiceInvocationInterceptor[] ics, java.lang.Object service, ProvidedServiceInfo info)Add a service to the component.IFuture<java.lang.Void>addService(java.lang.String name, java.lang.Class<?> type, java.lang.Object service)Add a service to the platform.IFuture<java.lang.Void>addService(java.lang.String name, java.lang.Class<?> type, java.lang.Object service, ProvidedServiceInfo info)Add a service to the platform.IFuture<java.lang.Void>addService(java.lang.String name, java.lang.Class<?> type, java.lang.Object service, PublishInfo pi, ServiceScope scope)Add a service to the platform.IFuture<java.lang.Void>addService(java.lang.String name, java.lang.Class<?> type, java.lang.Object service, java.lang.String proxytype)Add a service to the platform.IFuture<java.lang.Object>createServiceImplementation(ProvidedServiceInfo info, IValueFetcher fetcher)Create a service implementation from description.protected java.util.Collection<IInternalService>getAllServices()Get all services in a single collection.IServiceInvocationInterceptor[]getInterceptors(java.lang.Object service)Get the interceptors of a service.java.lang.ObjectgetProvidedService(IServiceIdentifier sid)Get the provided service implementation object by id.<T> TgetProvidedService(java.lang.Class<T> clazz)Get provided (declared) service.IServicegetProvidedService(java.lang.String name)Get provided (declared) service.protected ProvidedServiceInfogetProvidedServiceInfo(IServiceIdentifier sid)Get the provided service info for a service.java.lang.ObjectgetProvidedServiceRawImpl(IServiceIdentifier sid)Get the provided service implementation object by id.<T> TgetProvidedServiceRawImpl(java.lang.Class<T> clazz)Get the raw implementation of the provided service.java.lang.ObjectgetProvidedServiceRawImpl(java.lang.String name)Get the provided service implementation object by name.<T> T[]getProvidedServices(java.lang.Class<T> clazz)Get provided (declared) service.static IFuture<IPublishService>getPublishService(IInternalAccess instance, java.lang.String type, ServiceScope scope, java.util.Iterator<IPublishService> services)Get the publish service for a publish type (e.g.java.util.Map<java.lang.Class<?>,java.util.Collection<IInternalService>>getServices()Get the services.IFuture<java.lang.Class<?>>getServiceType(IServiceIdentifier sid)IFuture<java.util.Collection<java.lang.Class<?>>>getServiceTypes(IServiceIdentifier sid)booleanhasMethodListeners(IServiceIdentifier sid, MethodInfo mi)Test if service and method has listeners.booleanhasUserBody()Check if the feature potentially executed user code in body.IFuture<java.lang.Void>init()Initialize the feature.protected IFuture<java.lang.Void>initService(IInternalService is)Init a service, i.e.protected IFuture<java.lang.Void>initServices(java.util.Iterator<IInternalService> services)Init the services one by one.voidnotifyMethodListeners(IServiceIdentifier sid, boolean start, java.lang.Object proxy, java.lang.reflect.Method method, java.lang.Object[] args, java.lang.Object callid, ServiceInvocationContext context)Notify listeners that a service method has been called.voidremoveInterceptor(IServiceInvocationInterceptor interceptor, java.lang.Object service)Remove a service interceptor.voidremoveMethodInvocationListener(IServiceIdentifier sid, MethodInfo mi, IMethodInvocationListener listener)Remove a method invocation handler.protected voidremoveService(IInternalService service)Remove a service.IFuture<java.lang.Void>removeService(IServiceIdentifier sid)Removes a service from the platform (shutdowns also the service).IFuture<java.lang.Void>serviceShutdowned(IInternalService service)Called after a service has been shutdowned.IFuture<java.lang.Void>serviceStarted(IInternalService service)Called after a service has been started.IFuture<java.lang.Void>setTags(IServiceIdentifier sid, java.lang.String... tags)Sets the tags of a service.IFuture<java.lang.Void>shutdown()Called when the feature is shutdowned.protected IFuture<java.lang.Void>shutdownServices(java.util.Iterator<IInternalService> services)Shutdown the services one by one. 
 - 
 
- 
- 
Field Detail
- 
services
protected java.util.Map<java.lang.Class<?>,java.util.Collection<IInternalService>> services
The map of platform services. 
- 
servicelisteners
protected java.util.Map<IServiceIdentifier,MethodListenerHandler> servicelisteners
The map of provided service infos. (sid -> method listener) 
- 
serviceinfos
protected java.util.Map<IServiceIdentifier,ProvidedServiceInfo> serviceinfos
The map of provided service infos. (sid -> provided service info) 
 - 
 
- 
Constructor Detail
- 
ProvidedServicesComponentFeature
public ProvidedServicesComponentFeature(IInternalAccess component, ComponentCreationInfo cinfo)
Factory method constructor for instance level. 
 - 
 
- 
Method Detail
- 
init
public IFuture<java.lang.Void> init()
Initialize the feature.- Specified by:
 initin interfaceIComponentFeature- Overrides:
 initin classjadex.bridge.component.impl.AbstractComponentFeature
 
- 
hasUserBody
public boolean hasUserBody()
Check if the feature potentially executed user code in body. Allows blocking operations in user bodies by using separate steps for each feature. Non-user-body-features are directly executed for speed. If unsure just return true. ;-)- Specified by:
 hasUserBodyin interfaceIComponentFeature- Overrides:
 hasUserBodyin classjadex.bridge.component.impl.AbstractComponentFeature
 
- 
shutdown
public IFuture<java.lang.Void> shutdown()
Called when the feature is shutdowned.- Specified by:
 shutdownin interfaceIComponentFeature- Overrides:
 shutdownin classjadex.bridge.component.impl.AbstractComponentFeature
 
- 
addService
protected void addService(IInternalService service, ProvidedServiceInfo info)
Add a service.- Parameters:
 service- The service object.info- The service info.
 
- 
getProvidedServiceInfo
protected ProvidedServiceInfo getProvidedServiceInfo(IServiceIdentifier sid)
Get the provided service info for a service.- Parameters:
 sid- The service identifier.- Returns:
 - The provided service info.
 
 
- 
removeService
protected void removeService(IInternalService service)
Remove a service.- Parameters:
 service- The service object.info- The service info.
 
- 
createServiceImplementation
public IFuture<java.lang.Object> createServiceImplementation(ProvidedServiceInfo info, IValueFetcher fetcher)
Create a service implementation from description. 
- 
getAllServices
protected java.util.Collection<IInternalService> getAllServices()
Get all services in a single collection. 
- 
initServices
protected IFuture<java.lang.Void> initServices(java.util.Iterator<IInternalService> services)
Init the services one by one. 
- 
initService
protected IFuture<java.lang.Void> initService(IInternalService is)
Init a service, i.e. set the component (internal access) and call startService. 
- 
serviceStarted
public IFuture<java.lang.Void> serviceStarted(IInternalService service)
Called after a service has been started. 
- 
serviceShutdowned
public IFuture<java.lang.Void> serviceShutdowned(IInternalService service)
Called after a service has been shutdowned. 
- 
getPublishService
public static IFuture<IPublishService> getPublishService(IInternalAccess instance, java.lang.String type, ServiceScope scope, java.util.Iterator<IPublishService> services)
Get the publish service for a publish type (e.g. web service).- Parameters:
 type- The type.services- The iterator of publish services (can be null).- Returns:
 - The publish service.
 
 
- 
shutdownServices
protected IFuture<java.lang.Void> shutdownServices(java.util.Iterator<IInternalService> services)
Shutdown the services one by one. 
- 
getProvidedService
public IService getProvidedService(java.lang.String name)
Get provided (declared) service.- Specified by:
 getProvidedServicein interfaceIProvidedServicesFeature- Parameters:
 name- The service name.- Returns:
 - The service.
 
 
- 
getProvidedServiceRawImpl
public <T> T getProvidedServiceRawImpl(java.lang.Class<T> clazz)
Get the raw implementation of the provided service.- Specified by:
 getProvidedServiceRawImplin interfaceIProvidedServicesFeature- Parameters:
 clazz- The class.- Returns:
 - The raw object.
 
 
- 
getProvidedServiceRawImpl
public java.lang.Object getProvidedServiceRawImpl(java.lang.String name)
Get the provided service implementation object by name.- Specified by:
 getProvidedServiceRawImplin interfaceIProvidedServicesFeature- Parameters:
 name- The service name.- Returns:
 - The service.
 
 
- 
getProvidedService
public java.lang.Object getProvidedService(IServiceIdentifier sid)
Get the provided service implementation object by id.- Specified by:
 getProvidedServicein interfaceIProvidedServicesFeature- Parameters:
 name- The service identifier.- Returns:
 - The service.
 
 
- 
getProvidedServiceRawImpl
public java.lang.Object getProvidedServiceRawImpl(IServiceIdentifier sid)
Get the provided service implementation object by id.- Specified by:
 getProvidedServiceRawImplin interfaceIProvidedServicesFeature- Parameters:
 name- The service identifier.- Returns:
 - The service.
 
 
- 
getProvidedServices
public <T> T[] getProvidedServices(java.lang.Class<T> clazz)
Get provided (declared) service.- Specified by:
 getProvidedServicesin interfaceIProvidedServicesFeature- Parameters:
 clazz- The interface.- Returns:
 - The service.
 
 
- 
getProvidedService
public <T> T getProvidedService(java.lang.Class<T> clazz)
Get provided (declared) service.- Specified by:
 getProvidedServicein interfaceIProvidedServicesFeature- Parameters:
 clazz- The interface.- Returns:
 - The service.
 
 
- 
getServices
public java.util.Map<java.lang.Class<?>,java.util.Collection<IInternalService>> getServices()
Get the services.- Returns:
 - The services.
 
 
- 
addService
public IFuture<java.lang.Void> addService(java.lang.String name, java.lang.Class<?> type, java.lang.Object service)
Add a service to the platform. If under the same name and type a service was contained, the old one is removed and shutdowned.- Specified by:
 addServicein interfaceIExternalProvidedServicesFeature- Parameters:
 type- The public service interface.service- The service.- Returns:
 - A future that is done when the service has completed starting.
 
 
- 
addService
public IFuture<java.lang.Void> addService(java.lang.String name, java.lang.Class<?> type, java.lang.Object service, java.lang.String proxytype)
Add a service to the platform. If under the same name and type a service was contained, the old one is removed and shutdowned.- Specified by:
 addServicein interfaceIExternalProvidedServicesFeature- Parameters:
 type- The public service interface.service- The service.type- The proxy type (@see{BasicServiceInvocationHandler}).
 
- 
addService
public IFuture<java.lang.Void> addService(java.lang.String name, java.lang.Class<?> type, java.lang.Object service, PublishInfo pi, ServiceScope scope)
Add a service to the platform. If under the same name and type a service was contained, the old one is removed and shutdowned.- Specified by:
 addServicein interfaceIExternalProvidedServicesFeature- Parameters:
 type- The public service interface.service- The service.scope- The service scope.
 
- 
addService
public IFuture<java.lang.Void> addService(java.lang.String name, java.lang.Class<?> type, java.lang.Object service, ProvidedServiceInfo info)
Add a service to the platform. If under the same name and type a service was contained, the old one is removed and shutdowned.- Specified by:
 addServicein interfaceIExternalProvidedServicesFeature- Parameters:
 type- The public service interface.info- The config settings.
 
- 
setTags
public IFuture<java.lang.Void> setTags(IServiceIdentifier sid, java.lang.String... tags)
Sets the tags of a service.- Specified by:
 setTagsin interfaceIExternalProvidedServicesFeature- Parameters:
 sid- The Service identifier.tags- The tags.- Returns:
 - New service identifier.
 
 
- 
removeService
public IFuture<java.lang.Void> removeService(IServiceIdentifier sid)
Removes a service from the platform (shutdowns also the service).- Specified by:
 removeServicein interfaceIExternalProvidedServicesFeature- Parameters:
 service- The service.- Returns:
 - A future that is done when the service has completed its shutdown.
 
 
- 
getServiceTypes
public IFuture<java.util.Collection<java.lang.Class<?>>> getServiceTypes(IServiceIdentifier sid)
 
- 
getServiceType
public IFuture<java.lang.Class<?>> getServiceType(IServiceIdentifier sid)
 
- 
addService
public IFuture<java.lang.Void> addService(java.lang.String name, java.lang.Class<?> type, IServiceInvocationInterceptor[] ics, java.lang.Object service, ProvidedServiceInfo info)
Add a service to the component.- Parameters:
 type- The service interface.service- The service.proxytype- The proxy type (@see{BasicServiceInvocationHandler}).
 
- 
addMethodInvocationListener
public void addMethodInvocationListener(IServiceIdentifier sid, MethodInfo mi, IMethodInvocationListener listener)
Add a method invocation handler.- Specified by:
 addMethodInvocationListenerin interfaceIProvidedServicesFeature- Parameters:
 sid- The service identifier.mi- The method info.listener- The method listener.
 
- 
removeMethodInvocationListener
public void removeMethodInvocationListener(IServiceIdentifier sid, MethodInfo mi, IMethodInvocationListener listener)
Remove a method invocation handler.- Specified by:
 removeMethodInvocationListenerin interfaceIProvidedServicesFeature- Parameters:
 sid- The service identifier.mi- The method info.listener- The method listener.
 
- 
notifyMethodListeners
public void notifyMethodListeners(IServiceIdentifier sid, boolean start, java.lang.Object proxy, java.lang.reflect.Method method, java.lang.Object[] args, java.lang.Object callid, ServiceInvocationContext context)
Notify listeners that a service method has been called.- Specified by:
 notifyMethodListenersin interfaceIProvidedServicesFeature
 
- 
hasMethodListeners
public boolean hasMethodListeners(IServiceIdentifier sid, MethodInfo mi)
Test if service and method has listeners.- Specified by:
 hasMethodListenersin interfaceIProvidedServicesFeature- Parameters:
 sid- The service identifier.mi- The method info.
 
- 
addInterceptor
public void addInterceptor(IServiceInvocationInterceptor interceptor, java.lang.Object service, int pos)
Add a service interceptor.- Specified by:
 addInterceptorin interfaceIProvidedServicesFeature- Parameters:
 interceptor- The interceptor.service- The service.pos- The position (0=first, -1=last-1, i.e. one before method invocation).
 
- 
removeInterceptor
public void removeInterceptor(IServiceInvocationInterceptor interceptor, java.lang.Object service)
Remove a service interceptor.- Specified by:
 removeInterceptorin interfaceIProvidedServicesFeature- Parameters:
 interceptor- The interceptor.service- The service.
 
- 
getInterceptors
public IServiceInvocationInterceptor[] getInterceptors(java.lang.Object service)
Get the interceptors of a service.- Specified by:
 getInterceptorsin interfaceIProvidedServicesFeature- Parameters:
 service- The service.- Returns:
 - The interceptors.
 
 
 - 
 
 -