Ask Questions and Find Answers
Important:
Ask is now read-only. You can review any existing questions and answers, but not add anything new.
But - don't panic! While ask is no more, we've replaced it with discuss - the new Liferay Discussion Forum! Read more here here or just visit the site here:
discuss.liferay.com
How to use the rest builder correctly to return custom products.
I am trying to use the rest builder to build an api that returns the products based on a specific category id.
package ProductEndpoint.internal.resource.v1_0;
import com.liferay.petra.function.UnsafeBiConsumer;
import com.liferay.petra.function.UnsafeFunction;
import com.liferay.portal.kernel.search.Sort;
import com.liferay.portal.kernel.search.filter.Filter;
import com.liferay.portal.vulcan.pagination.Page;
import com.liferay.portal.vulcan.pagination.Pagination;
import java.util.Collection;
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.ServiceScope;
import ProductEndpoint.dto.v1_0.Product;
import ProductEndpoint.resource.v1_0.ProductResource;
//import com.liferay.headless.commerce.admin.catalog.client.*;
//import com.liferay.headless.commerce.admin.catalog.client.dto.v1_0.Product;
//import com.liferay.headless.commerce.admin.catalog.client.pagination.Pagination;
//import com.liferay.headless.commerce.admin.catalog.client.resource.v1_0.ProductResource;
/**
* @author kyounes
*/
@Component(properties = "OSGI-INF/liferay/rest/v1_0/product.properties", scope = ServiceScope.PROTOTYPE, service = ProductResource.class)
public class ProductResourceImpl extends BaseProductResourceImpl {
@Override
public Page < Product > getProductPages(String search, Filter filter, Pagination pagination, Sort[] sorts)
throws Exception {
com.liferay.headless.commerce.admin.catalog.client.resource.v1_0.ProductResource.Builder builder = com.liferay.headless.commerce.admin.catalog.client.resource.v1_0.ProductResource.builder();
com.liferay.headless.commerce.admin.catalog.client.resource.v1_0.ProductResource productResource = builder.authentication("test@liferay.com", "test").build();
com.liferay.headless.commerce.admin.catalog.client.pagination.Pagination pagination2 = com.liferay.headless.commerce.admin.catalog.client.pagination.Pagination.of(1, 200);
try {
System.out.println(productResource.getProductsPage(null, null, pagination2, null));
} catch (Exception e) {
System.out.println(e);
};
//
com.liferay.headless.commerce.admin.catalog.client.pagination.Page < com.liferay.headless.commerce.admin.catalog.client.dto.v1_0.Product > page = productResource
.getProductsPage(null, null, pagination2, null);
return super.getProductPages(search, filter, pagination, sorts);
}
@Override
public void setContextBatchUnsafeBiConsumer(
UnsafeBiConsumer < Collection < Product > , UnsafeFunction < Product, Product, Exception > , Exception > contextBatchUnsafeBiConsumer) {
// TODO Auto-generated method stub
}
}
RIght now I am using the
`com.liferay.headless.commerce.admin.catalog.client` headless api to
get the products; however, the rest-builder uses the
`com.liferay.portal.vulcan.pagination.Page` for pagination while the
headless api uses com.liferay.headless.commerce.admin.catalog.client.pagination.Pagination.
Right now I am looping over each liferay commerce product and
mapping it to my product.
I would love a comprehensive explanation on the right approach of
achiving such a task, as I am pretty new to this and I would love to
understand more.
Thanks.