Skip to content

Commit

Permalink
HSEARCH-603 Adjust register API and protect from requests for inexist…
Browse files Browse the repository at this point in the history
…ing services
  • Loading branch information
emmanuelbernard committed Oct 29, 2010
1 parent 9c028f1 commit 6eee495
Show file tree
Hide file tree
Showing 4 changed files with 14 additions and 8 deletions.
Expand Up @@ -69,15 +69,21 @@ private void listAndInstantiateServiceProviders() {
}
}

public <T> T registerServiceUse(Class<ServiceProvider<T>> serviceProviderClass) {
public <T> T registerServiceUse(Class<? extends ServiceProvider<T>> serviceProviderClass) {
@SuppressWarnings( "unchecked")
final ServiceProviderWrapper wrapper = providers.get( serviceProviderClass );
if (wrapper == null) {
throw new SearchException( "Unable to find service related to " + serviceProviderClass);
}
wrapper.increaseCounter();
return (T) wrapper.getServiceProvider().getService();
}

public void unregisterServiceUse(Class<ServiceProvider<?>> serviceProviderClass) {
public void unregisterServiceUse(Class<? extends ServiceProvider<?>> serviceProviderClass) {
final ServiceProviderWrapper wrapper = providers.get( serviceProviderClass );
if (wrapper == null) {
throw new SearchException( "Unable to find service related to " + serviceProviderClass);
}
wrapper.decreaseCounter();
}

Expand Down
Expand Up @@ -325,11 +325,11 @@ public ReentrantLock getDirectoryProviderLock(DirectoryProvider<?> dp) {
return this.dirProviderData.get( dp ).getDirLock();
}

public <T> T registerServiceUse(Class<ServiceProvider<T>> provider) {
public <T> T registerServiceUse(Class<? extends ServiceProvider<T>> provider) {
return serviceManager.registerServiceUse( provider );
}

public void unregisterServiceUse(Class<ServiceProvider<?>> provider) {
public void unregisterServiceUse(Class<? extends ServiceProvider<?>> provider) {
serviceManager.unregisterServiceUse( provider );
}

Expand Down
Expand Up @@ -77,13 +77,13 @@ public interface BuildContext {
* @param <T> class of the service
* @return the service instance
*/
<T> T registerServiceUse(Class<ServiceProvider<T>> provider);
<T> T registerServiceUse(Class<? extends ServiceProvider<T>> provider);

/**
* Release a service from duty. Each call to #registerServiceUse should be coupled with
* a call to #unregisterServiceUse when the service is no longer needed.
*
* @param provider of thr service
*/
void unregisterServiceUse(Class<ServiceProvider<?>> provider);
void unregisterServiceUse(Class<? extends ServiceProvider<?>> provider);
}
Expand Up @@ -606,11 +606,11 @@ public ReentrantLock getDirectoryProviderLock(DirectoryProvider<?> dp) {
return factoryState.getDirectoryProviderData().get( dp ).getDirLock();
}

public <T> T registerServiceUse(Class<ServiceProvider<T>> provider) {
public <T> T registerServiceUse(Class<? extends ServiceProvider<T>> provider) {
return factoryState.getServiceManager().registerServiceUse( provider );
}

public void unregisterServiceUse(Class<ServiceProvider<?>> provider) {
public void unregisterServiceUse(Class<? extends ServiceProvider<?>> provider) {
factoryState.getServiceManager().unregisterServiceUse( provider );
}

Expand Down

0 comments on commit 6eee495

Please sign in to comment.