public class ServiceRegistryImpl extends Object implements ServiceRegistry
ServiceRegistry
which is backed by a
data access object that handles reading and writing data related to registry
entries from a backend datastore.Constructor and Description |
---|
ServiceRegistryImpl() |
Modifier and Type | Method and Description |
---|---|
List<ServiceInfo> |
getAllOnlineServices()
Returns an unmodifiable list of
ServiceInfo for all services in
the registry that have a status of ServiceEndpointStatus.ONLINE . |
List<ServiceInfo> |
getAllServices()
Returns an unmodifiable list of
ServiceInfo for all services in
the registry. |
List<ServiceInfo> |
getAllServicesForApplication(String applicationId)
Returns an unmodifiable list of
ServiceInfo for all services that
have an application id which matches the given application id, regardless of
their status. |
List<ServiceInfo> |
getAllServicesForInstance(String instanceId)
Returns an unmodifiable list of
ServiceInfo for all services that
have an instance id which matches the given instance id, regardless of
their status. |
DataObjectService |
getDataObjectService() |
List<ServiceInfo> |
getOnlineServicesByName(QName serviceName)
Returns an unmodifiable list of
ServiceInfo for all services that have a status
of ServiceEndpointStatus.ONLINE with the given name. |
ServiceDescriptor |
getServiceDescriptor(String serviceDescriptorId)
Returns the
ServiceDescriptor which has the given id. |
List<ServiceDescriptor> |
getServiceDescriptors(List<String> serviceDescriptorIds)
Returns an unmodifiable list of
ServiceDescriptor which match the
given list of service descriptor ids. |
ServiceEndpoint |
publishService(ServiceEndpoint serviceEndpoint)
Publishes the given
ServiceEndpoint to the registry. |
List<ServiceEndpoint> |
publishServices(List<ServiceEndpoint> serviceEndpoints)
Publishes the list of
ServiceEndpoint s to the registry. |
RemoveAndPublishResult |
removeAndPublish(List<String> removeServiceIds,
List<ServiceEndpoint> publishServiceEndpoints)
Performs a single atomic operation of removing and publishing a set of
services in the registry.
|
ServiceEndpoint |
removeServiceEndpoint(String serviceId)
Removes the service from the registry with the given service id if it
exists.
|
List<ServiceEndpoint> |
removeServiceEndpoints(List<String> serviceIds)
As
ServiceRegistry.removeServiceEndpoint(String) but removes all services that
match the given list of service ids. |
void |
setDataObjectService(DataObjectService dataObjectService) |
void |
takeInstanceOffline(String instanceId)
Flips the status of all services that match the given instance id to the
status of {@link ServiceEndpointStatus#OFFLINE.
|
boolean |
updateStatus(String serviceId,
ServiceEndpointStatus status)
Updates the status for the service with the given id to the given
ServiceEndpointStatus . |
List<String> |
updateStatuses(List<String> serviceIds,
ServiceEndpointStatus status)
As per
ServiceRegistry.updateStatus(String, ServiceEndpointStatus) but updates
mutliple statuses as part of a single operation. |
public ServiceRegistryImpl()
public List<ServiceInfo> getOnlineServicesByName(QName serviceName) throws RiceIllegalArgumentException
ServiceRegistry
ServiceInfo
for all services that have a status
of ServiceEndpointStatus.ONLINE
with the given name. If there
are no services with the given name, this method should return an empty
list.
It is typical in clustered environments and other situations that more than one online service might be available for a given service name. It is intended that a client of the registry will use an available endpoint of their choosing to connect to and invoke the service.
getOnlineServicesByName
in interface ServiceRegistry
serviceName
- the name of the service to locateServiceInfo
for online services with the given name.
If no services were found, an empty list will be returned, but this method should never
return null.RiceIllegalArgumentException
- if serviceName is nullpublic List<ServiceInfo> getAllOnlineServices()
ServiceRegistry
ServiceInfo
for all services in
the registry that have a status of ServiceEndpointStatus.ONLINE
.
If there are no online services in the registry, this method will return
an empty list.getAllOnlineServices
in interface ServiceRegistry
ServiceInfo
for all online services
in the registry. If no services were found, an empty list will be
returned, but this method should never return null.public List<ServiceInfo> getAllServices()
ServiceRegistry
ServiceInfo
for all services in
the registry. If there are no services in the registry, this method will
return an empty list.getAllServices
in interface ServiceRegistry
ServiceInfo
for all services in the
registry. If no services were found, an empty list will be returned, but
this method should never return null.public List<ServiceInfo> getAllServicesForInstance(String instanceId) throws RiceIllegalArgumentException
ServiceRegistry
ServiceInfo
for all services that
have an instance id which matches the given instance id, regardless of
their status. If there are no services published for the given instance,
this method should return an empty list.getAllServicesForInstance
in interface ServiceRegistry
instanceId
- the instance id of the services to locateServiceInfo
for all services in the
registry for the given instance idRiceIllegalArgumentException
- if instanceId is a null or blank valuepublic List<ServiceInfo> getAllServicesForApplication(String applicationId) throws RiceIllegalArgumentException
ServiceRegistry
ServiceInfo
for all services that
have an application id which matches the given application id, regardless of
their status. If there are no services published for the given application,
this method should return an empty list.getAllServicesForApplication
in interface ServiceRegistry
applicationId
- the application id of the services to locateServiceInfo
for all services in the
registry for the given application idRiceIllegalArgumentException
- if applicationId is a null or blank valuepublic ServiceDescriptor getServiceDescriptor(String serviceDescriptorId) throws RiceIllegalArgumentException
ServiceRegistry
ServiceDescriptor
which has the given id. If there
is no descriptor for the id, this method will return null.getServiceDescriptor
in interface ServiceRegistry
RiceIllegalArgumentException
public List<ServiceDescriptor> getServiceDescriptors(List<String> serviceDescriptorIds) throws RiceIllegalArgumentException
ServiceRegistry
ServiceDescriptor
which match the
given list of service descriptor ids. The list that is returned from this
method may be smaller than the list of ids that were supplied. This
happens in cases where a service descriptor for a given id in the list
could not be found.getServiceDescriptors
in interface ServiceRegistry
serviceDescriptorIds
- the list of service descriptor ids for which to
locate the corresponding service descriptorRiceIllegalArgumentException
- if serviceDescriptorIds is nullpublic ServiceEndpoint publishService(ServiceEndpoint serviceEndpoint) throws RiceIllegalArgumentException
ServiceRegistry
ServiceEndpoint
to the registry. If there
is no service id on the ServiceInfo
then this constitutes a new
registry endpoint, so it will be added to the registry. If the given
endpoint already has a ServiceInfo
with a service id, then the
corresponding entry in the registry will be updated instead.publishService
in interface ServiceRegistry
serviceEndpoint
- the service endpoint to publishRiceIllegalArgumentException
- if serviceEndpoint is nullpublic List<ServiceEndpoint> publishServices(List<ServiceEndpoint> serviceEndpoints) throws RiceIllegalArgumentException
ServiceRegistry
ServiceEndpoint
s to the registry. This
functions the same way as executing ServiceRegistry.publishService(ServiceEndpoint)
on each individual ServiceEndpoint
. However, it performs this as
an atomic operation, so if there is an error when publishing one service
endpoint in the list, then none of the endpoints will be published.publishServices
in interface ServiceRegistry
serviceEndpoints
- the list of service endpoints to publishServiceRegistry.publishService(ServiceEndpoint)
for details). This list will always be the same size and in the same
order as the list of service endpoints that were supplied for publshing.RiceIllegalArgumentException
- if serviceEndpoints is null or if any
ServiceEndpoint
within the list is nullpublic ServiceEndpoint removeServiceEndpoint(String serviceId) throws RiceIllegalArgumentException
ServiceRegistry
ServiceEndpoint
entry will be
returned. Otherwise, this method will return null.removeServiceEndpoint
in interface ServiceRegistry
serviceId
- the id of the service to removeServiceEndpoint
if a service with the given
id exists in the registry, if no such service exists, this method will
return nullRiceIllegalArgumentException
- if serviceId is null or a blank valuepublic List<ServiceEndpoint> removeServiceEndpoints(List<String> serviceIds) throws RiceIllegalArgumentException
ServiceRegistry
ServiceRegistry.removeServiceEndpoint(String)
but removes all services that
match the given list of service ids. It could be the case that some of
the given ids do not match a service in the registry, in this case that
ServiceEndpoint
would not be included in the resulting list of
services that were removed. Because of this, the list that is returned
from this method may be smaller then the list of ids that were supplied.removeServiceEndpoints
in interface ServiceRegistry
serviceIds
- the list of service ids to remove from the registryRiceIllegalArgumentException
- if serviceIds is null or if one of
the ids in the list is null or blankpublic RemoveAndPublishResult removeAndPublish(List<String> removeServiceIds, List<ServiceEndpoint> publishServiceEndpoints)
ServiceRegistry
Behaviorally, this operation is equivalent to performing a
ServiceRegistry.removeServiceEndpoints(List)
followed by a
ServiceRegistry.publishServices(List)
, except that a null list is valid for
either removeServiceIds
or publishServiceEndpoints
. In
the case that a null or empty list is passed for either of these, that
particular portion of the operation will not be performed.
This method returns a RemoveAndPublishResult
which contains
a list of the services that were successfully removed as well as those
that were published.
removeAndPublish
in interface ServiceRegistry
removeServiceIds
- the list of ids of the services to remove, if
this parameter is null or an empty list, then no remove operation will
be executedpublishServiceEndpoints
- the list of service endpoints to publish,
if this parameter is null or an empty list, then no publish operation
will be executedpublic boolean updateStatus(String serviceId, ServiceEndpointStatus status) throws RiceIllegalArgumentException
ServiceRegistry
ServiceEndpointStatus
.updateStatus
in interface ServiceRegistry
serviceId
- the id of the service for which to update the statusstatus
- the status to update this service toRiceIllegalArgumentException
- if serviceId is null or a blank valuepublic List<String> updateStatuses(List<String> serviceIds, ServiceEndpointStatus status) throws RiceIllegalArgumentException
ServiceRegistry
ServiceRegistry.updateStatus(String, ServiceEndpointStatus)
but updates
mutliple statuses as part of a single operation.
This method returns a List of ids of the services that were updated. If a given service id does not exist in the registry, that id won't be included in the result. So the resuling list of updated ids may be smaller than the given list of service ids (though it will never be null).
updateStatuses
in interface ServiceRegistry
serviceIds
- the list of ids of the services for which to update the statusstatus
- the status to update the services toRiceIllegalArgumentException
- if serviceIds is null or if any of
the entries in the list is null or has a blank valuepublic void takeInstanceOffline(String instanceId) throws RiceIllegalArgumentException
ServiceRegistry
takeInstanceOffline
in interface ServiceRegistry
instanceId
- the id of the instance for which to set all services to
the offline statusRiceIllegalArgumentException
- if instanceId is null or a blank valuepublic DataObjectService getDataObjectService()
public void setDataObjectService(DataObjectService dataObjectService)
Copyright © 2005–2016 The Kuali Foundation. All rights reserved.