/** * Sencha GXT 3.1.1 - Sencha for GWT * Copyright(c) 2007-2014, Sencha, Inc. * licensing@sencha.com * * http://www.sencha.com/products/gxt/license/ */ package com.dldinternet.aws.cfn.stacker.desktopapp.client.servicebus; import java.util.HashMap; public class ServiceBus { private HashMap serviceProviders = new HashMap(); public ServiceBus() { } @SuppressWarnings("unchecked") public T invoke(T serviceRequest) { ServiceProvider serviceProvider = (ServiceProvider) serviceProviders.get(serviceRequest.getClass()); if (serviceProvider == null) { throw new IllegalStateException("No service provider, serviceRequest=" + serviceRequest.getClass().getName()); } serviceProvider.onServiceRequest(serviceRequest); return serviceRequest; // for one step access to getters } public void registerServiceProvider(Class serviceRequestClass, ServiceProvider serviceProvider) { Object previousServiceProvider = serviceProviders.put(serviceRequestClass, serviceProvider); if (previousServiceProvider != null) { throw new IllegalStateException("Provider already defined, serviceRequest=" + serviceRequestClass.getName() + ", serviceProvider=" + serviceProvider.getClass().getName()); } } public void removeServiceProvider(Class serviceRequestClass) { serviceProviders.remove(serviceRequestClass); } }