private void exportProducts(File baseDir, Consumer consumer) throws IOException { File productDir = new File(baseDir.getCanonicalPath(), "products"); productDir.mkdir(); Map<String, Product> products = new HashMap<String, Product>(); for (Entitlement entitlement : consumer.getEntitlements()) { for (ProvidedProduct providedProduct : entitlement.getPool().getProvidedProducts()) { // Don't want to call the adapter if not needed, it can be expensive. if (!products.containsKey(providedProduct.getProductId())) { products.put( providedProduct.getProductId(), productAdapter.getProductById(providedProduct.getProductId())); } } // Don't forget the 'main' product! String productId = entitlement.getPool().getProductId(); if (!products.containsKey(productId)) { products.put(productId, productAdapter.getProductById(productId)); } } for (Product product : products.values()) { String path = productDir.getCanonicalPath(); String productId = product.getId(); File file = new File(path, productId + ".json"); FileWriter writer = new FileWriter(file); productExporter.export(mapper, writer, product); writer.close(); // Real products have a numeric id. if (StringUtils.isNumeric(product.getId())) { ProductCertificate cert = productAdapter.getProductCertificate(product); // XXX: not all product adapters implement getProductCertificate, // so just skip over this if we get null back // XXX: need to decide if the cert should always be in the export, or never. if (cert != null) { file = new File(productDir.getCanonicalPath(), product.getId() + ".pem"); writer = new FileWriter(file); productCertExporter.export(writer, cert); writer.close(); } } } }
private void exportProducts(File baseDir, Consumer consumer) throws IOException { File productDir = new File(baseDir.getCanonicalPath(), "products"); productDir.mkdir(); Map<String, Product> products = new HashMap<String, Product>(); for (Entitlement entitlement : consumer.getEntitlements()) { Pool pool = entitlement.getPool(); for (Product providedProduct : pool.getProvidedProducts()) { products.put(providedProduct.getId(), providedProduct); } // Don't forget the 'main' product! Product product = pool.getProduct(); products.put(product.getId(), product); // Also need to check for sub products Product derivedProduct = pool.getDerivedProduct(); if (derivedProduct != null) { products.put(derivedProduct.getId(), derivedProduct); } for (Product derivedProvidedProduct : pool.getDerivedProvidedProducts()) { products.put(derivedProvidedProduct.getId(), derivedProvidedProduct); } } for (Product product : products.values()) { // Clear the owner and UUID so they can be re-generated/assigned on import // product.setUuid(null); // product.setOwner(null); String path = productDir.getCanonicalPath(); String productId = product.getId(); File file = new File(path, productId + ".json"); FileWriter writer = null; try { writer = new FileWriter(file); productExporter.export(mapper, writer, product); } finally { if (writer != null) { writer.close(); } } // Real products have a numeric id. if (StringUtils.isNumeric(product.getId())) { ProductCertificate cert = productAdapter.getProductCertificate(consumer.getOwner(), product.getId()); // XXX: not all product adapters implement getProductCertificate, // so just skip over this if we get null back // XXX: need to decide if the cert should always be in the export, or never. if (cert != null) { file = new File(productDir.getCanonicalPath(), product.getId() + ".pem"); writer = new FileWriter(file); productCertExporter.export(writer, cert); writer.close(); } } } }