shopizer-uncached

Fixed admin controllers

12/7/2016 4:25:42 PM

Changes

Details

diff --git a/shopizer-canadapost/target/classes/META-INF/maven/com.shopizer/shopizer-shipping-canadapost-module/pom.properties b/shopizer-canadapost/target/classes/META-INF/maven/com.shopizer/shopizer-shipping-canadapost-module/pom.properties
index ef02ea7..136681d 100644
--- a/shopizer-canadapost/target/classes/META-INF/maven/com.shopizer/shopizer-shipping-canadapost-module/pom.properties
+++ b/shopizer-canadapost/target/classes/META-INF/maven/com.shopizer/shopizer-shipping-canadapost-module/pom.properties
@@ -1,5 +1,5 @@
 #Generated by Maven Integration for Eclipse
-#Tue Dec 06 10:34:23 EST 2016
+#Wed Dec 07 12:22:33 EST 2016
 version=2.5.0-SNAPSHOT
 groupId=com.shopizer
 m2e.projectName=shopizer-canadapost
diff --git a/shopizer-shipping-distance-module/target/classes/META-INF/maven/com.shopizer/shopizer-shipping-distance-processor/pom.properties b/shopizer-shipping-distance-module/target/classes/META-INF/maven/com.shopizer/shopizer-shipping-distance-processor/pom.properties
index aea9afe..29893e7 100644
--- a/shopizer-shipping-distance-module/target/classes/META-INF/maven/com.shopizer/shopizer-shipping-distance-processor/pom.properties
+++ b/shopizer-shipping-distance-module/target/classes/META-INF/maven/com.shopizer/shopizer-shipping-distance-processor/pom.properties
@@ -1,5 +1,5 @@
 #Generated by Maven Integration for Eclipse
-#Wed Dec 07 08:47:11 EST 2016
+#Wed Dec 07 12:22:33 EST 2016
 version=2.5.0-SNAPSHOT
 groupId=com.shopizer
 m2e.projectName=shopizer-shipping-distance-processor
diff --git a/sm-core/.classpath b/sm-core/.classpath
index b130f32..fc5f96c 100644
--- a/sm-core/.classpath
+++ b/sm-core/.classpath
@@ -27,7 +27,7 @@
 			<attribute name="maven.pomderived" value="true"/>
 		</attributes>
 	</classpathentry>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER">
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8">
 		<attributes>
 			<attribute name="maven.pomderived" value="true"/>
 		</attributes>
diff --git a/sm-core/src/main/java/com/salesmanager/core/business/repositories/catalog/product/attribute/ProductOptionRepository.java b/sm-core/src/main/java/com/salesmanager/core/business/repositories/catalog/product/attribute/ProductOptionRepository.java
index 1ea57cd..bd8030f 100644
--- a/sm-core/src/main/java/com/salesmanager/core/business/repositories/catalog/product/attribute/ProductOptionRepository.java
+++ b/sm-core/src/main/java/com/salesmanager/core/business/repositories/catalog/product/attribute/ProductOptionRepository.java
@@ -12,6 +12,9 @@ public interface ProductOptionRepository extends JpaRepository<ProductOption, Lo
 	@Query("select p from ProductOption p join fetch p.merchantStore pm left join fetch p.descriptions pd where p.id = ?1")
 	ProductOption findOne(Long id);
 	
+	@Query("select p from ProductOption p join fetch p.merchantStore pm left join fetch p.descriptions pd where p.id = ?2 and pm.id = ?1")
+	ProductOption findOne(Integer storeId, Long id);
+	
 	@Query("select distinct p from ProductOption p join fetch p.merchantStore pm left join fetch p.descriptions pd where pm.id = ?1 and pd.language.id = ?2")
 	List<ProductOption> findByStoreId(Integer storeId, Integer languageId);
 	
diff --git a/sm-core/src/main/java/com/salesmanager/core/business/repositories/catalog/product/attribute/ProductOptionValueRepository.java b/sm-core/src/main/java/com/salesmanager/core/business/repositories/catalog/product/attribute/ProductOptionValueRepository.java
index 9bee5cf..e34f83d 100644
--- a/sm-core/src/main/java/com/salesmanager/core/business/repositories/catalog/product/attribute/ProductOptionValueRepository.java
+++ b/sm-core/src/main/java/com/salesmanager/core/business/repositories/catalog/product/attribute/ProductOptionValueRepository.java
@@ -12,6 +12,9 @@ public interface ProductOptionValueRepository extends JpaRepository<ProductOptio
 	@Query("select p from ProductOptionValue p join fetch p.merchantStore pm left join fetch p.descriptions pd where p.id = ?1")
 	ProductOptionValue findOne(Long id);
 	
+	@Query("select p from ProductOptionValue p join fetch p.merchantStore pm left join fetch p.descriptions pd where p.id = ?2  and pm.id = ?1")
+	ProductOptionValue findOne(Integer storeId, Long id);
+	
 	@Query("select distinct p from ProductOptionValue p join fetch p.merchantStore pm left join fetch p.descriptions pd where pm.id = ?1 and pd.language.id = ?2")
 	List<ProductOptionValue> findByStoreId(Integer storeId, Integer languageId);
 	
diff --git a/sm-core/src/main/java/com/salesmanager/core/business/services/catalog/product/attribute/ProductOptionService.java b/sm-core/src/main/java/com/salesmanager/core/business/services/catalog/product/attribute/ProductOptionService.java
index eee20b2..7e0abd4 100644
--- a/sm-core/src/main/java/com/salesmanager/core/business/services/catalog/product/attribute/ProductOptionService.java
+++ b/sm-core/src/main/java/com/salesmanager/core/business/services/catalog/product/attribute/ProductOptionService.java
@@ -26,6 +26,8 @@ public interface ProductOptionService extends SalesManagerEntityService<Long, Pr
 
 	ProductOption getByCode(MerchantStore store, String optionCode);
 	
+	ProductOption getById(MerchantStore store, Long optionId);
+	
 
 
 
diff --git a/sm-core/src/main/java/com/salesmanager/core/business/services/catalog/product/attribute/ProductOptionServiceImpl.java b/sm-core/src/main/java/com/salesmanager/core/business/services/catalog/product/attribute/ProductOptionServiceImpl.java
index bb12952..6e6127a 100644
--- a/sm-core/src/main/java/com/salesmanager/core/business/services/catalog/product/attribute/ProductOptionServiceImpl.java
+++ b/sm-core/src/main/java/com/salesmanager/core/business/services/catalog/product/attribute/ProductOptionServiceImpl.java
@@ -96,6 +96,11 @@ public class ProductOptionServiceImpl extends
 	public ProductOption getByCode(MerchantStore store, String optionCode) {
 		return productOptionRepository.findByCode(store.getId(), optionCode);
 	}
+
+	@Override
+	public ProductOption getById(MerchantStore store, Long optionId) {
+		return productOptionRepository.findOne(store.getId(), optionId);
+	}
 	
 
 	
diff --git a/sm-core/src/main/java/com/salesmanager/core/business/services/catalog/product/attribute/ProductOptionValueService.java b/sm-core/src/main/java/com/salesmanager/core/business/services/catalog/product/attribute/ProductOptionValueService.java
index d9e745b..ba51bb9 100644
--- a/sm-core/src/main/java/com/salesmanager/core/business/services/catalog/product/attribute/ProductOptionValueService.java
+++ b/sm-core/src/main/java/com/salesmanager/core/business/services/catalog/product/attribute/ProductOptionValueService.java
@@ -4,6 +4,7 @@ import java.util.List;
 
 import com.salesmanager.core.business.exception.ServiceException;
 import com.salesmanager.core.business.services.common.generic.SalesManagerEntityService;
+import com.salesmanager.core.model.catalog.product.attribute.ProductOption;
 import com.salesmanager.core.model.catalog.product.attribute.ProductOptionValue;
 import com.salesmanager.core.model.merchant.MerchantStore;
 import com.salesmanager.core.model.reference.language.Language;
@@ -23,5 +24,7 @@ public interface ProductOptionValueService extends SalesManagerEntityService<Lon
 			Language language) throws ServiceException;
 
 	ProductOptionValue getByCode(MerchantStore store, String optionValueCode);
+	
+	ProductOptionValue getById(MerchantStore store, Long optionValueId);
 
 }
diff --git a/sm-core/src/main/java/com/salesmanager/core/business/services/catalog/product/attribute/ProductOptionValueServiceImpl.java b/sm-core/src/main/java/com/salesmanager/core/business/services/catalog/product/attribute/ProductOptionValueServiceImpl.java
index 9b4c64b..97f64c6 100644
--- a/sm-core/src/main/java/com/salesmanager/core/business/services/catalog/product/attribute/ProductOptionValueServiceImpl.java
+++ b/sm-core/src/main/java/com/salesmanager/core/business/services/catalog/product/attribute/ProductOptionValueServiceImpl.java
@@ -96,5 +96,11 @@ public class ProductOptionValueServiceImpl extends
 	}
 
 
+	@Override
+	public ProductOptionValue getById(MerchantStore store, Long optionValueId) {
+		return productOptionValueRepository.findOne(store.getId(), optionValueId);
+	}
+
+
 
 }
diff --git a/sm-search/target/classes/META-INF/maven/com.shopizer/sm-search/pom.properties b/sm-search/target/classes/META-INF/maven/com.shopizer/sm-search/pom.properties
index d5ac78b..66fdff2 100644
--- a/sm-search/target/classes/META-INF/maven/com.shopizer/sm-search/pom.properties
+++ b/sm-search/target/classes/META-INF/maven/com.shopizer/sm-search/pom.properties
@@ -1,5 +1,5 @@
 #Generated by Maven Integration for Eclipse
-#Wed Dec 07 08:47:12 EST 2016
+#Wed Dec 07 12:22:34 EST 2016
 version=2.5.0-SNAPSHOT
 groupId=com.shopizer
 m2e.projectName=sm-search
diff --git a/sm-shop/SALESMANAGER.h2.db b/sm-shop/SALESMANAGER.h2.db
index 91211f3..5c69647 100644
Binary files a/sm-shop/SALESMANAGER.h2.db and b/sm-shop/SALESMANAGER.h2.db differ
diff --git a/sm-shop/SALESMANAGER.lock.db b/sm-shop/SALESMANAGER.lock.db
new file mode 100644
index 0000000..a70ca21
--- /dev/null
+++ b/sm-shop/SALESMANAGER.lock.db
@@ -0,0 +1,4 @@
+#FileLock
+#Wed Dec 07 12:54:00 EST 2016
+id=158da6ba84f0de30e9d2ccdf431a8bbe31bdde9e97f
+method=file
diff --git a/sm-shop/src/main/java/com/salesmanager/shop/admin/controller/products/OptionsController.java b/sm-shop/src/main/java/com/salesmanager/shop/admin/controller/products/OptionsController.java
index 790f9d0..9eba25d 100644
--- a/sm-shop/src/main/java/com/salesmanager/shop/admin/controller/products/OptionsController.java
+++ b/sm-shop/src/main/java/com/salesmanager/shop/admin/controller/products/OptionsController.java
@@ -87,7 +87,7 @@ public class OptionsController {
 		if(optionId!=null && optionId!=0) {//edit mode
 			
 			
-			option = productOptionService.getById(optionId);
+			option = productOptionService.getById(store, optionId);
 			
 			
 			if(option==null) {
diff --git a/sm-shop/src/main/java/com/salesmanager/shop/admin/controller/products/OptionsValueController.java b/sm-shop/src/main/java/com/salesmanager/shop/admin/controller/products/OptionsValueController.java
index 33f060b..1a94559 100644
--- a/sm-shop/src/main/java/com/salesmanager/shop/admin/controller/products/OptionsValueController.java
+++ b/sm-shop/src/main/java/com/salesmanager/shop/admin/controller/products/OptionsValueController.java
@@ -100,12 +100,12 @@ public class OptionsValueController {
 		if(optionId!=null && optionId!=0) {//edit mode
 			
 			
-			//option = productOptionValueService.getById(store, optionId);
-			option = productOptionValueService.getByCode(store, optionId.toString());
+			option = productOptionValueService.getById(store, optionId);
+			//option = productOptionValueService.getByCode(store, optionId.toString());
 			
 			
 			if(option==null) {
-				return "redirect:/admin/options/optionsvalues.html";
+				return "redirect:/admin/options/optionvalues.html";
 			}
 			
 			Set<ProductOptionValueDescription> optionDescriptions = option.getDescriptions();
diff --git a/sm-shop/src/main/java/com/salesmanager/shop/admin/controller/products/ProductPriceController.java b/sm-shop/src/main/java/com/salesmanager/shop/admin/controller/products/ProductPriceController.java
index e7397e6..2f25664 100644
--- a/sm-shop/src/main/java/com/salesmanager/shop/admin/controller/products/ProductPriceController.java
+++ b/sm-shop/src/main/java/com/salesmanager/shop/admin/controller/products/ProductPriceController.java
@@ -20,6 +20,10 @@ import com.salesmanager.shop.utils.LabelUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
@@ -85,8 +89,8 @@ public class ProductPriceController {
 	}
 	
 	@PreAuthorize("hasRole('PRODUCTS')")
-	@RequestMapping(value="/admin/products/prices/paging.html", method=RequestMethod.POST, produces="application/json;charset=UTF-8")
-	public @ResponseBody String pagePrices(HttpServletRequest request, HttpServletResponse response) {
+	@RequestMapping(value="/admin/products/prices/paging.html", method=RequestMethod.POST)
+	public @ResponseBody ResponseEntity<String> pagePrices(HttpServletRequest request, HttpServletResponse response) {
 
 		String sProductId = request.getParameter("productId");
 		MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
@@ -95,6 +99,8 @@ public class ProductPriceController {
 		
 		
 		AjaxResponse resp = new AjaxResponse();
+		final HttpHeaders httpHeaders= new HttpHeaders();
+	    httpHeaders.setContentType(MediaType.APPLICATION_JSON_UTF8);
 		
 		Long productId;
 		Product product = null;
@@ -105,7 +111,7 @@ public class ProductPriceController {
 			resp.setStatus(AjaxPageableResponse.RESPONSE_STATUS_FAIURE);
 			resp.setErrorString("Product id is not valid");
 			String returnString = resp.toJSONString();
-			return returnString;
+			return new ResponseEntity<String>(returnString,httpHeaders,HttpStatus.OK);
 		}
 
 		
@@ -118,14 +124,14 @@ public class ProductPriceController {
 				resp.setStatus(AjaxPageableResponse.RESPONSE_STATUS_FAIURE);
 				resp.setErrorString("Product id is not valid");
 				String returnString = resp.toJSONString();
-				return returnString;
+				return new ResponseEntity<String>(returnString,httpHeaders,HttpStatus.OK);
 			}
 			
 			if(product.getMerchantStore().getId().intValue()!=store.getId().intValue()) {
 				resp.setStatus(AjaxPageableResponse.RESPONSE_STATUS_FAIURE);
 				resp.setErrorString("Product id is not valid");
 				String returnString = resp.toJSONString();
-				return returnString;
+				return new ResponseEntity<String>(returnString,httpHeaders,HttpStatus.OK);
 			}
 			
 			ProductAvailability defaultAvailability = null;
@@ -144,7 +150,7 @@ public class ProductPriceController {
 				resp.setStatus(AjaxPageableResponse.RESPONSE_STATUS_FAIURE);
 				resp.setErrorString("Product id is not valid");
 				String returnString = resp.toJSONString();
-				return returnString;
+				return new ResponseEntity<String>(returnString,httpHeaders,HttpStatus.OK);
 			}
 			
 			Set<ProductPrice> prices = defaultAvailability.getPrices();
@@ -188,7 +194,7 @@ public class ProductPriceController {
 		}
 		
 		String returnString = resp.toJSONString();
-		return returnString;
+		return new ResponseEntity<String>(returnString,httpHeaders,HttpStatus.OK);
 	}
 	
 	
@@ -436,13 +442,15 @@ public class ProductPriceController {
 	}
 	
 	@PreAuthorize("hasRole('PRODUCTS')")
-	@RequestMapping(value="/admin/products/price/remove.html", method=RequestMethod.POST, produces="application/json")
-	public @ResponseBody String deleteProductPrice(HttpServletRequest request, HttpServletResponse response, Locale locale) {
+	@RequestMapping(value="/admin/products/price/remove.html", method=RequestMethod.POST)
+	public @ResponseBody ResponseEntity<String> deleteProductPrice(HttpServletRequest request, HttpServletResponse response, Locale locale) {
 		String sPriceid = request.getParameter("priceId");
 
 		
 		MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
 		AjaxResponse resp = new AjaxResponse();
+		final HttpHeaders httpHeaders= new HttpHeaders();
+	    httpHeaders.setContentType(MediaType.APPLICATION_JSON_UTF8);
 
 		
 		try {
@@ -455,7 +463,8 @@ public class ProductPriceController {
 
 				resp.setStatusMessage(messages.getMessage("message.unauthorized", locale));
 				resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);			
-				return resp.toJSONString();
+				String returnString = resp.toJSONString();
+				return new ResponseEntity<String>(returnString,httpHeaders,HttpStatus.OK);
 			} 
 			
 			productPriceService.delete(price);
@@ -472,8 +481,7 @@ public class ProductPriceController {
 		}
 		
 		String returnString = resp.toJSONString();
-		
-		return returnString;
+		return new ResponseEntity<String>(returnString,httpHeaders,HttpStatus.OK);
 	}
 		
 	
diff --git a/sm-shop/src/main/java/com/salesmanager/shop/admin/controller/products/ProductReviewController.java b/sm-shop/src/main/java/com/salesmanager/shop/admin/controller/products/ProductReviewController.java
index 1c47fa1..c435823 100644
--- a/sm-shop/src/main/java/com/salesmanager/shop/admin/controller/products/ProductReviewController.java
+++ b/sm-shop/src/main/java/com/salesmanager/shop/admin/controller/products/ProductReviewController.java
@@ -16,6 +16,10 @@ import com.salesmanager.shop.utils.LabelUtils;
 import org.apache.commons.collections4.CollectionUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
@@ -74,14 +78,16 @@ public class ProductReviewController {
 	
 	@SuppressWarnings({ "rawtypes", "unchecked" })
 	@PreAuthorize("hasRole('PRODUCTS')")
-	@RequestMapping(value="/admin/products/reviews/paging.html", method=RequestMethod.POST, produces="application/json;charset=UTF-8")
-	public @ResponseBody String pageProductReviews(HttpServletRequest request, HttpServletResponse response) {
+	@RequestMapping(value="/admin/products/reviews/paging.html", method=RequestMethod.POST)
+	public @ResponseBody ResponseEntity<String> pageProductReviews(HttpServletRequest request, HttpServletResponse response) {
 
 		String sProductId = request.getParameter("productId");
 		MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
 		
 		
 		AjaxResponse resp = new AjaxResponse();
+		final HttpHeaders httpHeaders= new HttpHeaders();
+	    httpHeaders.setContentType(MediaType.APPLICATION_JSON_UTF8);
 		
 		Long productId;
 		Product product = null;
@@ -92,7 +98,7 @@ public class ProductReviewController {
 			resp.setStatus(AjaxPageableResponse.RESPONSE_STATUS_FAIURE);
 			resp.setErrorString("Product id is not valid");
 			String returnString = resp.toJSONString();
-			return returnString;
+			return new ResponseEntity<String>(returnString,httpHeaders,HttpStatus.OK);
 		}
 
 		
@@ -105,14 +111,14 @@ public class ProductReviewController {
 				resp.setStatus(AjaxPageableResponse.RESPONSE_STATUS_FAIURE);
 				resp.setErrorString("Product id is not valid");
 				String returnString = resp.toJSONString();
-				return returnString;
+				return new ResponseEntity<String>(returnString,httpHeaders,HttpStatus.OK);
 			}
 			
 			if(product.getMerchantStore().getId().intValue()!=store.getId().intValue()) {
 				resp.setStatus(AjaxPageableResponse.RESPONSE_STATUS_FAIURE);
 				resp.setErrorString("Product id is not valid");
 				String returnString = resp.toJSONString();
-				return returnString;
+				return new ResponseEntity<String>(returnString,httpHeaders,HttpStatus.OK);
 			}
 			
 			
@@ -150,20 +156,22 @@ public class ProductReviewController {
 		}
 		
 		String returnString = resp.toJSONString();
-		return returnString;
+		return new ResponseEntity<String>(returnString,httpHeaders,HttpStatus.OK);
 
 
 	}
 	
 	@PreAuthorize("hasRole('PRODUCTS')")
-	@RequestMapping(value="/admin/products/reviews/remove.html", method=RequestMethod.POST, produces="application/json")
-	public @ResponseBody String deleteProductReview(HttpServletRequest request, HttpServletResponse response, Locale locale) {
+	@RequestMapping(value="/admin/products/reviews/remove.html", method=RequestMethod.POST)
+	public @ResponseBody ResponseEntity<String> deleteProductReview(HttpServletRequest request, HttpServletResponse response, Locale locale) {
 		String sReviewid = request.getParameter("reviewId");
 
 		
 		MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
 		
 		AjaxResponse resp = new AjaxResponse();
+		final HttpHeaders httpHeaders= new HttpHeaders();
+	    httpHeaders.setContentType(MediaType.APPLICATION_JSON_UTF8);
 
 		
 		try {
@@ -178,7 +186,8 @@ public class ProductReviewController {
 
 				resp.setStatusMessage(messages.getMessage("message.unauthorized", locale));
 				resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);			
-				return resp.toJSONString();
+				String returnString = resp.toJSONString();
+				return new ResponseEntity<String>(returnString,httpHeaders,HttpStatus.OK);
 			} 
 			
 
@@ -196,8 +205,7 @@ public class ProductReviewController {
 		}
 		
 		String returnString = resp.toJSONString();
-		
-		return returnString;
+		return new ResponseEntity<String>(returnString,httpHeaders,HttpStatus.OK);
 	}
 	
 	
diff --git a/sm-shop/src/main/java/com/salesmanager/shop/admin/controller/products/RelatedItemsController.java b/sm-shop/src/main/java/com/salesmanager/shop/admin/controller/products/RelatedItemsController.java
index b78db60..66e5519 100644
--- a/sm-shop/src/main/java/com/salesmanager/shop/admin/controller/products/RelatedItemsController.java
+++ b/sm-shop/src/main/java/com/salesmanager/shop/admin/controller/products/RelatedItemsController.java
@@ -17,6 +17,10 @@ import com.salesmanager.shop.admin.model.web.Menu;
 import com.salesmanager.shop.constants.Constants;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
@@ -81,11 +85,13 @@ public class RelatedItemsController {
 	
 	@SuppressWarnings({ "rawtypes", "unchecked" })
 	@PreAuthorize("hasRole('PRODUCTS')")
-	@RequestMapping(value="/admin/catalogue/related/paging.html", method=RequestMethod.POST, produces="application/json;charset=UTF-8")
-	public @ResponseBody String pageRelatedItems(HttpServletRequest request, HttpServletResponse response) {
+	@RequestMapping(value="/admin/catalogue/related/paging.html", method=RequestMethod.POST)
+	public @ResponseBody ResponseEntity<String> pageRelatedItems(HttpServletRequest request, HttpServletResponse response) {
 		
 		String sProductId = request.getParameter("productId");
 		AjaxResponse resp = new AjaxResponse();
+		final HttpHeaders httpHeaders= new HttpHeaders();
+	    httpHeaders.setContentType(MediaType.APPLICATION_JSON_UTF8);
 		
 		try {
 			
@@ -102,7 +108,7 @@ public class RelatedItemsController {
 				resp.setStatus(AjaxPageableResponse.RESPONSE_STATUS_FAIURE);
 				resp.setErrorString("Product id is not valid");
 				String returnString = resp.toJSONString();
-				return returnString;
+				return new ResponseEntity<String>(returnString,httpHeaders,HttpStatus.OK);
 			}
 			
 			
@@ -142,18 +148,20 @@ public class RelatedItemsController {
 		}
 		
 		String returnString = resp.toJSONString();
-		return returnString;
+		return new ResponseEntity<String>(returnString,httpHeaders,HttpStatus.OK);
 
 
 	}
 	
 	@PreAuthorize("hasRole('PRODUCTS')")
-	@RequestMapping(value="/admin/catalogue/related/addItem.html", method=RequestMethod.POST, produces="application/json")
-	public @ResponseBody String addItem(HttpServletRequest request, HttpServletResponse response) {
+	@RequestMapping(value="/admin/catalogue/related/addItem.html", method=RequestMethod.POST)
+	public @ResponseBody ResponseEntity<String> addItem(HttpServletRequest request, HttpServletResponse response) {
 		
 		String productId = request.getParameter("productId");
 		String baseProductId = request.getParameter("baseProductId");
 		AjaxResponse resp = new AjaxResponse();
+		final HttpHeaders httpHeaders= new HttpHeaders();
+	    httpHeaders.setContentType(MediaType.APPLICATION_JSON_UTF8);
 		
 		try {
 			
@@ -167,24 +175,28 @@ public class RelatedItemsController {
 			
 			if(product==null) {
 				resp.setStatus(AjaxPageableResponse.RESPONSE_STATUS_FAIURE);
-				return resp.toJSONString();
+				String returnString = resp.toJSONString();
+				return new ResponseEntity<String>(returnString,httpHeaders,HttpStatus.OK);
 			}
 			
 			if(product.getMerchantStore().getId().intValue()!=store.getId().intValue()) {
 				resp.setStatus(AjaxPageableResponse.RESPONSE_STATUS_FAIURE);
-				return resp.toJSONString();
+				String returnString = resp.toJSONString();
+				return new ResponseEntity<String>(returnString,httpHeaders,HttpStatus.OK);
 			}
 			
 			Product baseProduct = productService.getById(lBaseProductId);
 			
 			if(baseProduct==null) {
 				resp.setStatus(AjaxPageableResponse.RESPONSE_STATUS_FAIURE);
-				return resp.toJSONString();
+				String returnString = resp.toJSONString();
+				return new ResponseEntity<String>(returnString,httpHeaders,HttpStatus.OK);
 			}
 			
 			if(baseProduct.getMerchantStore().getId().intValue()!=store.getId().intValue()) {
 				resp.setStatus(AjaxPageableResponse.RESPONSE_STATUS_FAIURE);
-				return resp.toJSONString();
+				String returnString = resp.toJSONString();
+				return new ResponseEntity<String>(returnString,httpHeaders,HttpStatus.OK);
 			}
 
 
@@ -207,17 +219,19 @@ public class RelatedItemsController {
 		}
 		
 		String returnString = resp.toJSONString();
-		return returnString;
+		return new ResponseEntity<String>(returnString,httpHeaders,HttpStatus.OK);
 		
 	}
 	
 	@PreAuthorize("hasRole('PRODUCTS')")
-	@RequestMapping(value="/admin/catalogue/related/removeItem.html", method=RequestMethod.POST, produces="application/json")
-	public @ResponseBody String removeItem(HttpServletRequest request, HttpServletResponse response) {
+	@RequestMapping(value="/admin/catalogue/related/removeItem.html", method=RequestMethod.POST)
+	public @ResponseBody ResponseEntity<String> removeItem(HttpServletRequest request, HttpServletResponse response) {
 		
 		String productId = request.getParameter("productId");
 		String baseProductId = request.getParameter("baseProductId");
 		AjaxResponse resp = new AjaxResponse();
+		final HttpHeaders httpHeaders= new HttpHeaders();
+	    httpHeaders.setContentType(MediaType.APPLICATION_JSON_UTF8);
 		
 		try {
 			
@@ -231,24 +245,28 @@ public class RelatedItemsController {
 			
 			if(product==null) {
 				resp.setStatus(AjaxPageableResponse.RESPONSE_STATUS_FAIURE);
-				return resp.toJSONString();
+				String returnString = resp.toJSONString();
+				return new ResponseEntity<String>(returnString,httpHeaders,HttpStatus.OK);
 			}
 			
 			if(product.getMerchantStore().getId().intValue()!=store.getId().intValue()) {
 				resp.setStatus(AjaxPageableResponse.RESPONSE_STATUS_FAIURE);
-				return resp.toJSONString();
+				String returnString = resp.toJSONString();
+				return new ResponseEntity<String>(returnString,httpHeaders,HttpStatus.OK);
 			}
 			
 			Product baseProduct = productService.getById(lBaseProductId);
 			
 			if(baseProduct==null) {
 				resp.setStatus(AjaxPageableResponse.RESPONSE_STATUS_FAIURE);
-				return resp.toJSONString();
+				String returnString = resp.toJSONString();
+				return new ResponseEntity<String>(returnString,httpHeaders,HttpStatus.OK);
 			}
 			
 			if(baseProduct.getMerchantStore().getId().intValue()!=store.getId().intValue()) {
 				resp.setStatus(AjaxPageableResponse.RESPONSE_STATUS_FAIURE);
-				return resp.toJSONString();
+				String returnString = resp.toJSONString();
+				return new ResponseEntity<String>(returnString,httpHeaders,HttpStatus.OK);
 			}
 			
 			ProductRelationship relationship = null;
@@ -263,12 +281,14 @@ public class RelatedItemsController {
 			
 			if(relationship==null) {
 				resp.setStatus(AjaxPageableResponse.RESPONSE_STATUS_FAIURE);
-				return resp.toJSONString();
+				String returnString = resp.toJSONString();
+				return new ResponseEntity<String>(returnString,httpHeaders,HttpStatus.OK);
 			}
 			
 			if(relationship.getStore().getId().intValue()!=store.getId().intValue()) {
 				resp.setStatus(AjaxPageableResponse.RESPONSE_STATUS_FAIURE);
-				return resp.toJSONString();
+				String returnString = resp.toJSONString();
+				return new ResponseEntity<String>(returnString,httpHeaders,HttpStatus.OK);
 			}
 
 
@@ -286,7 +306,7 @@ public class RelatedItemsController {
 		}
 		
 		String returnString = resp.toJSONString();
-		return returnString;
+		return new ResponseEntity<String>(returnString,httpHeaders,HttpStatus.OK);
 		
 	}
 	
diff --git a/sm-shop/src/main/java/com/salesmanager/shop/store/controller/search/SearchController.java b/sm-shop/src/main/java/com/salesmanager/shop/store/controller/search/SearchController.java
index 634a649..b38deb3 100644
--- a/sm-shop/src/main/java/com/salesmanager/shop/store/controller/search/SearchController.java
+++ b/sm-shop/src/main/java/com/salesmanager/shop/store/controller/search/SearchController.java
@@ -26,6 +26,10 @@ import org.apache.commons.collections4.CollectionUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
 import org.springframework.web.bind.annotation.*;
@@ -80,11 +84,13 @@ public class SearchController {
 	 * @return
 	 * @throws Exception
 	 */
-	@RequestMapping(value="/services/public/search/{store}/{language}/autocomplete.html", produces="application/json;charset=UTF-8")
+	//@RequestMapping(value="/services/public/search/{store}/{language}/autocomplete", produces="application/json;charset=UTF-8")
+	@RequestMapping(value="/services/public/search/{store}/{language}/autocomplete")
 	@ResponseBody
-	public String autocomplete(@RequestParam("q") String query, @PathVariable String store, @PathVariable final String language, Model model, HttpServletRequest request, HttpServletResponse response)  {
+	public ResponseEntity<String> autocomplete(@RequestParam("q") String query, @PathVariable String store, @PathVariable final String language, Model model, HttpServletRequest request, HttpServletResponse response)  {
 	
-		
+		final HttpHeaders httpHeaders= new HttpHeaders();
+	    httpHeaders.setContentType(MediaType.APPLICATION_JSON_UTF8);
 		MerchantStore merchantStore = (MerchantStore)request.getAttribute(Constants.MERCHANT_STORE);
 
 		if(merchantStore!=null) {
@@ -110,7 +116,8 @@ public class SearchController {
 		AutoCompleteRequest req = new AutoCompleteRequest(store,language);
 		/** formatted toJSONString because of te specific field names required in the UI **/
 		SearchKeywords keywords = searchService.searchForKeywords(req.getCollectionName(), req.toJSONString(query), AUTOCOMPLETE_ENTRIES_COUNT);
-		return keywords.toJSONString();
+		//return keywords.toJSONString();
+		return new ResponseEntity<String>(keywords.toJSONString(),httpHeaders,HttpStatus.OK);
 		
 		} catch (Exception e) {
 			LOGGER.error("Exception while autocomplete " + e);
diff --git a/sm-shop/src/main/webapp/pages/shop/templates/bootstrap/sections/navbar.jsp b/sm-shop/src/main/webapp/pages/shop/templates/bootstrap/sections/navbar.jsp
index e8bd11f..0ceee19 100644
--- a/sm-shop/src/main/webapp/pages/shop/templates/bootstrap/sections/navbar.jsp
+++ b/sm-shop/src/main/webapp/pages/shop/templates/bootstrap/sections/navbar.jsp
@@ -30,7 +30,7 @@ $(document).ready(function() {
 
 
 	    remote: {
-    		url: '<c:url value="/services/public/search/${requestScope.MERCHANT_STORE.code}/${requestScope.LANGUAGE.code}/autocomplete.html"/>?q=%QUERY',
+    		url: '<c:url value="/services/public/search/${requestScope.MERCHANT_STORE.code}/${requestScope.LANGUAGE.code}/autocomplete"/>?q=%QUERY',
         	filter: function (parsedResponse) {
             	// parsedResponse is the array returned from your backend
             	console.log(parsedResponse);
diff --git a/sm-shop/src/main/webapp/pages/shop/templates/bootstrap3/sections/navbar.jsp b/sm-shop/src/main/webapp/pages/shop/templates/bootstrap3/sections/navbar.jsp
index 5e8f552..4d747fa 100644
--- a/sm-shop/src/main/webapp/pages/shop/templates/bootstrap3/sections/navbar.jsp
+++ b/sm-shop/src/main/webapp/pages/shop/templates/bootstrap3/sections/navbar.jsp
@@ -39,7 +39,7 @@ $(document).ready(function() {
 		prefetch: '<c:out value="${requestScope.CONFIGS['defaultSearchConfigPath'][requestScope.LANGUAGE.code]}"/>',
 		  </c:if>
 	    </c:if>
-		 remote: '<c:url value="/services/public/search/${requestScope.MERCHANT_STORE.code}/${requestScope.LANGUAGE.code}/autocomplete.html"/>?q=%QUERY'
+		 remote: '<c:url value="/services/public/search/${requestScope.MERCHANT_STORE.code}/${requestScope.LANGUAGE.code}/autocomplete"/>?q=%QUERY'
 
 	});
    
diff --git a/sm-shop/src/main/webapp/pages/shop/templates/exoticamobilia/sections/header.jsp b/sm-shop/src/main/webapp/pages/shop/templates/exoticamobilia/sections/header.jsp
index bc18816..5f1cf6f 100644
--- a/sm-shop/src/main/webapp/pages/shop/templates/exoticamobilia/sections/header.jsp
+++ b/sm-shop/src/main/webapp/pages/shop/templates/exoticamobilia/sections/header.jsp
@@ -52,7 +52,7 @@ $(document).ready(function() {
 		     prefetch: '<c:out value="${requestScope.CONFIGS['defaultSearchConfigPath'][requestScope.LANGUAGE.code]}"/>',
 		  </c:if>
 	    </c:if>
-	    remote: '<c:url value="/services/public/search/${requestScope.MERCHANT_STORE.code}/${requestScope.LANGUAGE.code}/autocomplete.html"/>?q=%QUERY'
+	    remote: '<c:url value="/services/public/search/${requestScope.MERCHANT_STORE.code}/${requestScope.LANGUAGE.code}/autocomplete"/>?q=%QUERY'
 
 	});
    
diff --git a/sm-shop/target/m2e-wtp/web-resources/META-INF/maven/com.shopizer/sm-shop/pom.properties b/sm-shop/target/m2e-wtp/web-resources/META-INF/maven/com.shopizer/sm-shop/pom.properties
index eeb94b9..490acc2 100644
--- a/sm-shop/target/m2e-wtp/web-resources/META-INF/maven/com.shopizer/sm-shop/pom.properties
+++ b/sm-shop/target/m2e-wtp/web-resources/META-INF/maven/com.shopizer/sm-shop/pom.properties
@@ -1,5 +1,5 @@
 #Generated by Maven Integration for Eclipse
-#Wed Dec 07 08:47:14 EST 2016
+#Wed Dec 07 12:22:37 EST 2016
 version=2.5.0-SNAPSHOT
 groupId=com.shopizer
 m2e.projectName=sm-shop