package com.salesmanager.shop.tags; import javax.inject.Inject; import javax.servlet.http.HttpServletRequest; import javax.servlet.jsp.JspException; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.config.AutowireCapableBeanFactory; import org.springframework.web.context.WebApplicationContext; import org.springframework.web.servlet.tags.RequestContextAwareTag; import com.salesmanager.core.model.catalog.product.description.ProductDescription; import com.salesmanager.core.model.merchant.MerchantStore; import com.salesmanager.shop.constants.Constants; import com.salesmanager.shop.utils.FilePathUtils; public class ProductDescriptionUrlTag extends RequestContextAwareTag { /** * */ private static final long serialVersionUID = 6319855234657139862L; private static final Logger LOGGER = LoggerFactory.getLogger(ProductDescriptionUrlTag.class); private ProductDescription productDescription; @Inject private FilePathUtils filePathUtils; /** * Created the product url for the store front */ public int doStartTagInternal() throws JspException { try { if (filePathUtils==null) { WebApplicationContext wac = getRequestContext().getWebApplicationContext(); AutowireCapableBeanFactory factory = wac.getAutowireCapableBeanFactory(); factory.autowireBean(this); } HttpServletRequest request = (HttpServletRequest) pageContext .getRequest(); MerchantStore merchantStore = (MerchantStore)request.getAttribute(Constants.MERCHANT_STORE); //*** IF USED FROM ADMIN THE STORE WILL BE NULL, THEN TRY TO USE ADMIN STORE if(merchantStore==null) { merchantStore = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE); } StringBuilder productPath = new StringBuilder(); String baseUrl = filePathUtils.buildStoreUri(merchantStore, request); productPath.append(baseUrl); if(!StringUtils.isBlank(this.getProductDescription().getSeUrl())) { productPath.append(Constants.PRODUCT_URI).append("/"); productPath.append(this.getProductDescription().getSeUrl()); } else { productPath.append(Constants.PRODUCT_ID_URI).append("/"); productPath.append(this.getProductDescription().getProduct().getSku()); } productPath.append(Constants.URL_EXTENSION); pageContext.getOut().print(productPath.toString()); } catch (Exception ex) { LOGGER.error("Error while getting content url", ex); } return SKIP_BODY; } public int doEndTag() { return EVAL_PAGE; } public void setProductDescription(ProductDescription productDescription) { this.productDescription = productDescription; } public ProductDescription getProductDescription() { return productDescription; } }