@Nonnull static Inventory.Products toInventoryProducts(@Nonnull Collection<String> products) { final Inventory.Products result = new Inventory.Products(); for (String productId : products) { result.add(new Inventory.Product(productId, true)); } return result; }
@Nonnull private Inventory.Products loadProducts(@Nonnull Inventory.Request request, @Nonnull SQLiteDatabase db) { final Inventory.Products result = new Inventory.Products(); for (String productId : ProductTypes.ALL) { final Inventory.Product product = new Inventory.Product(productId, true); final List<String> skus = request.getSkus(productId); if (!skus.isEmpty()) { product.setPurchases(loadPurchases(skus, db)); } else { Billing.warning("There are no SKUs for \"" + product.id + "\" product. No purchase information will be loaded"); } result.add(product); } return result; }
@Override public void onReady(@Nonnull BillingRequests requests, @Nonnull String productId, boolean billingSupported) { final Product product = new Product(productId, billingSupported); synchronized (mLock) { countDown(); mProducts.add(product); if (!mTask.isCancelled() && product.supported && mTask.getRequest().shouldLoadPurchases(productId)) { loadPurchases(requests, product); } else { countDown(1); } if (!mTask.isCancelled() && product.supported && mTask.getRequest().shouldLoadSkus(productId)) { loadSkus(requests, product); } else { countDown(1); } } }
@Test public void testShouldAddProduct() throws Exception { mProducts.add(new Inventory.Product(ProductTypes.IN_APP, true)); mProducts.add(new Inventory.Product(ProductTypes.SUBSCRIPTION, true)); assertEquals(2, mProducts.size()); assertEquals(ProductTypes.IN_APP, mProducts.get(ProductTypes.IN_APP).id); assertEquals(ProductTypes.SUBSCRIPTION, mProducts.get(ProductTypes.SUBSCRIPTION).id); }