We are trying to get all ProductBOs from CatalogCategoryBO with following code:
final CatalogBORepository catalogBORepository = applicationBO.getRepository("CatalogBORepository");
final CatalogCategoryBO catalogCategoryBO = catalogBORepository.getCatalogBOByCatalogName(catalogName).getCatalogCategoryBOByName(catalogCategoryName);
final CatalogCategoryBOCommonProductAssignmentExtension assignmentExtension = catalogCategoryBO.getExtension(CatalogCategoryBOCommonProductAssignmentExtension.class);
return assignmentExtension.getSortedProducts(applicationBO.getDefaultLocale());
But this does not always work as expected. After debugging I found out that main reason is BusinessObjectRepositoryContext:
((BusinessObjectRepositoryContext)catalogCategoryBO.getContext().getVariable("CurrentBusinessObjectRepositoryContext");
which is different based on location from which we call given method (organization or channel).
The same problem is described here: https://support.intershop.com/kb/index.php/Display/IS-22604
Is there some workaround or better way to get all assigned ProductBOs from CatalogCategoryBO?
We are using Intershop B2C version 7.9.1.2.
One possibility is to call pipeline for getting products as suggested by Willem Evertse, another one is to fetch CatalogBORepository and CatalogCategoryBO within block of:
try (ApplicationContext applicationContext = application.forceApplicationContext()) {
// your code here
}