@Override public PerTenantConfig compute(final Long key, final CacheLoaderArgument cacheLoaderArgument) { final Long tenantRecordId = key; final InternalTenantContext internalTenantContext = new InternalTenantContext(tenantRecordId); if (cacheLoaderArgument.getArgs() == null || !(cacheLoaderArgument.getArgs()[0] instanceof LoaderCallback)) { throw new IllegalArgumentException("Missing LoaderCallback from the arguments "); } final LoaderCallback loader = (LoaderCallback) cacheLoaderArgument.getArgs()[0]; final String jsonValue = tenantApi.getTenantConfig(internalTenantContext); try { return loader.loadConfig(jsonValue); } catch (final IOException e) { throw new IllegalArgumentException("Failed to deserialize per tenant config for tenant recordId = " + tenantRecordId, e); } }
@Test(groups = "fast") public void testWithNoConfig() throws Exception { // We Use the per-tenant config and specify a empty list of plugins Mockito.when(tenantInternalApi.getTenantConfig(Mockito.any(InternalCallContext.class))).thenReturn("{\"org.killbill.invoice.plugin\":\"\"}"); // We register one plugin registerPlugin(PLUGIN_1); final Collection<String> result = invoicePluginDispatcher.getResultingPluginNameList(internalCallContext); // Se expect to seee the list of registered plugins assertEquals(result.size(), 1); final Iterator<String> iterator = result.iterator(); assertEquals(iterator.next(), PLUGIN_1); }
@Override public PerTenantConfig compute(final Long key, final CacheLoaderArgument cacheLoaderArgument) { final Long tenantRecordId = key; final InternalTenantContext internalTenantContext = new InternalTenantContext(tenantRecordId); if (cacheLoaderArgument.getArgs() == null || !(cacheLoaderArgument.getArgs()[0] instanceof LoaderCallback)) { throw new IllegalArgumentException("Missing LoaderCallback from the arguments "); } final LoaderCallback loader = (LoaderCallback) cacheLoaderArgument.getArgs()[0]; final String jsonValue = tenantApi.getTenantConfig(internalTenantContext); try { return loader.loadConfig(jsonValue); } catch (final IOException e) { throw new IllegalArgumentException("Failed to deserialize per tenant config for tenant recordId = " + tenantRecordId, e); } }