private CurrencyPluginApi getPluginApi() throws CurrencyConversionException { final CurrencyPluginApi result = registry.getServiceForName(config.getDefaultCurrencyProvider()); if (result == null) { throw new CurrencyConversionException(ErrorCode.CURRENCY_NO_SUCH_PAYMENT_PLUGIN, config.getDefaultCurrencyProvider()); } return result; }
private DefaultVersionedCatalog getCatalogFromPlugins(final InternalTenantContext internalTenantContext) throws CatalogApiException { final TenantContext tenantContext = internalCallContextFactory.createTenantContext(internalTenantContext); final Set<String> allServices = pluginRegistry.getAllServices(); for (final String service : allServices) { final CatalogPluginApi plugin = pluginRegistry.getServiceForName(service);
@Override public DefaultNoOpInvoiceProviderPlugin get() { final DefaultNoOpInvoiceProviderPlugin plugin = new DefaultNoOpInvoiceProviderPlugin(); final OSGIServiceDescriptor desc = new OSGIServiceDescriptor() { @Override public String getPluginSymbolicName() { return null; } @Override public String getPluginName() { return instanceName; } @Override public String getRegistrationName() { return instanceName; } }; registry.registerService(desc, plugin); return plugin; } }
private <T> boolean listenForServiceType(final ServiceReference serviceReference, final int eventType, final Class<T> claz, final OSGIServiceRegistration<T> registration) { // Make sure we can retrieve the plugin name final String serviceName = (String) serviceReference.getProperty(OSGIPluginProperties.PLUGIN_NAME_PROP); if (serviceName == null || !checkSanityPluginRegistrationName(serviceName)) { // Quite common for non Killbill bundles logger.debug("Ignoring registered OSGI service {} with no {} property", claz.getName(), OSGIPluginProperties.PLUGIN_NAME_PROP); return true; } final Object theServiceObject = context.getService(serviceReference); // Is that for us? We look for a subclass here for greater flexibility (e.g. HttpServlet for a Servlet service) if (theServiceObject == null || !claz.isAssignableFrom(theServiceObject.getClass())) { return false; } final T theService = (T) theServiceObject; final OSGIServiceDescriptor desc = new DefaultOSGIServiceDescriptor(serviceReference.getBundle().getSymbolicName(), serviceName); switch (eventType) { case ServiceEvent.REGISTERED: final T wrappedService = ContextClassLoaderHelper.getWrappedServiceWithCorrectContextClassLoader(theService); registration.registerService(desc, wrappedService); break; case ServiceEvent.UNREGISTERING: registration.unregisterService(desc.getRegistrationName()); break; default: break; } return true; }
@Override @BeforeMethod(groups = "fast") public void beforeMethod() { if (hasFailed()) { return; } super.beforeMethod(); for (final String name : pluginRegistry.getAllServices()) { pluginRegistry.unregisterService(name); } }
@Override public void serviceChanged(final ServiceEvent event) { if (context == null || (event.getType() != ServiceEvent.REGISTERED && event.getType() != ServiceEvent.UNREGISTERING)) { // We are not initialized or uninterested return; } final ServiceReference serviceReference = event.getServiceReference(); for (OSGIServiceRegistration cur : allRegistrationHandlers) { if (listenForServiceType(serviceReference, event.getType(), cur.getServiceType(), cur)) { break; } } }
private void registerPlugin(final String plugin) { pluginRegistry.registerService(new OSGIServiceDescriptor() { @Override public String getPluginSymbolicName() { return plugin; } @Override public String getPluginName() { return plugin; } @Override public String getRegistrationName() { return plugin; } }, new DefaultNoOpInvoiceProviderPlugin()); } }
@Override public MockPaymentProviderPlugin get() { final MockPaymentProviderPlugin plugin = new MockPaymentProviderPlugin(clock); final OSGIServiceDescriptor desc = new OSGIServiceDescriptor() { @Override public String getPluginSymbolicName() { return null; } @Override public String getPluginName() { return instanceName; } @Override public String getRegistrationName() { return instanceName; } }; registry.registerService(desc, plugin); return plugin; } }
@VisibleForTesting Map<String, InvoicePluginApi> getInvoicePlugins(final InternalTenantContext tenantContext) { final Collection<String> resultingPluginList = getResultingPluginNameList(tenantContext); // Keys ordering matters! final Map<String, InvoicePluginApi> invoicePlugins = new LinkedHashMap<String, InvoicePluginApi>(); for (final String name : resultingPluginList) { final InvoicePluginApi serviceForName = pluginRegistry.getServiceForName(name); invoicePlugins.put(name, serviceForName); } return invoicePlugins; }
@VisibleForTesting final Collection<String> getResultingPluginNameList(final InternalTenantContext tenantContext) { final List<String> configuredPlugins = invoiceConfig.getInvoicePluginNames(tenantContext); final Set<String> registeredPlugins = pluginRegistry.getAllServices(); // No configuration, we return undeterministic list of registered plugins if (configuredPlugins == null || configuredPlugins.isEmpty()) { return registeredPlugins; } else { final List<String> result = new ArrayList<String>(configuredPlugins.size()); for (final String name : configuredPlugins) { if (pluginRegistry.getServiceForName(name) != null) { result.add(name); } } return result; } } }
@BeforeClass(groups = "fast") public void beforeClass() throws Exception { if (hasFailed()) { return; } super.beforeClass(); account = testHelper.createTestAccount("lolo@gmail.com", false); Mockito.when(accountInternalApi.getAccountById(Mockito.<UUID>any(), Mockito.<InternalTenantContext>any())).thenReturn(account); //Mockito.when(nonEntityDao.retrieveIdFromObject(Mockito.<Long>any(), Mockito.<ObjectType>any())).thenReturn(uuid); retryPluginRegistry.registerService(new OSGIServiceDescriptor() { @Override public String getPluginSymbolicName() { return null; } @Override public String getPluginName() { return MockPaymentControlProviderPlugin.PLUGIN_NAME; } @Override public String getRegistrationName() { return MockPaymentControlProviderPlugin.PLUGIN_NAME; } }, mockRetryProviderPlugin); EMPTY_PROPERTIES = PluginPropertySerializer.serialize(ImmutableList.<PluginProperty>of()); }
private PaymentPluginApi getPluginApi() { final PaymentPluginApi pluginApi = registry.getServiceForName(MockPaymentProviderPlugin.PLUGIN_NAME); Assert.assertNotNull(pluginApi); return pluginApi; } }
private DefaultVersionedCatalog getCatalogFromPlugins(final InternalTenantContext internalTenantContext) throws CatalogApiException { final TenantContext tenantContext = internalCallContextFactory.createTenantContext(internalTenantContext); final Set<String> allServices = pluginRegistry.getAllServices(); for (final String service : allServices) { final CatalogPluginApi plugin = pluginRegistry.getServiceForName(service);
@BeforeClass(groups = "slow") public void beforeClass() throws Exception { if (hasFailed()) { return; } super.beforeClass(); this.testInvoicePluginApi = new TestInvoicePluginApi(); pluginRegistry.registerService(new OSGIServiceDescriptor() { @Override public String getPluginSymbolicName() { return "TestInvoicePluginApi"; } @Override public String getPluginName() { return "TestInvoicePluginApi"; } @Override public String getRegistrationName() { return "TestInvoicePluginApi"; } }, testInvoicePluginApi); }
private CurrencyPluginApi getPluginApi() throws CurrencyConversionException { final CurrencyPluginApi result = registry.getServiceForName(config.getDefaultCurrencyProvider()); if (result == null) { throw new CurrencyConversionException(ErrorCode.CURRENCY_NO_SUCH_PAYMENT_PLUGIN, config.getDefaultCurrencyProvider()); } return result; }
@BeforeClass(groups = "slow") public void beforeClass() throws Exception { if (hasFailed()) { return; } super.beforeClass(); this.testEntitlementPluginApi = new TestEntitlementPluginApi(); pluginRegistry.registerService(new OSGIServiceDescriptor() { @Override public String getPluginSymbolicName() { return "TestEntitlementPluginApi"; } @Override public String getPluginName() { return "TestEntitlementPluginApi"; } @Override public String getRegistrationName() { return "TestEntitlementPluginApi"; } }, testEntitlementPluginApi); }
@BeforeClass(groups = "slow") protected void beforeClass() throws Exception { if (hasFailed()) { return; } super.beforeClass(); mockPaymentProviderPlugin = (MockPaymentProviderPlugin) registry.getServiceForName(MockPaymentProviderPlugin.PLUGIN_NAME); }
@BeforeClass(groups = "slow") public void beforeClass() throws Exception { if (hasFailed()) { return; } super.beforeClass(); this.testCatalogPluginApi = new TestCatalogPluginApi(priceOverride, clock, internalCallContext, internalCallContextFactory); pluginRegistry.registerService(new OSGIServiceDescriptor() { @Override public String getPluginSymbolicName() { return "TestCatalogPluginApi"; } @Override public String getPluginName() { return "TestCatalogPluginApi"; } @Override public String getRegistrationName() { return "TestCatalogPluginApi"; } }, testCatalogPluginApi); }
@BeforeClass(groups = "slow") protected void beforeClass() throws Exception { if (hasFailed()) { return; } super.beforeClass(); mockPaymentProviderPlugin = (MockPaymentProviderPlugin) registry.getServiceForName(MockPaymentProviderPlugin.PLUGIN_NAME); }
@BeforeClass(groups = "slow") public void beforeClass() throws Exception { if (hasFailed()) { return; } super.beforeClass(); this.testInvoicePluginApi = new TestInvoicePluginApi(); pluginRegistry.registerService(new OSGIServiceDescriptor() { @Override public String getPluginSymbolicName() { return "TaxInvoicePluginApi"; } @Override public String getPluginName() { return "TaxInvoicePluginApi"; } @Override public String getRegistrationName() { return "TaxInvoicePluginApi"; } }, testInvoicePluginApi); }