shopizer-uncached

Fixed admin controllers

12/7/2016 1:12:58 PM

Details

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 c69da9b..aea9afe 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
-#Tue Dec 06 10:34:21 EST 2016
+#Wed Dec 07 08:47:11 EST 2016
 version=2.5.0-SNAPSHOT
 groupId=com.shopizer
 m2e.projectName=shopizer-shipping-distance-processor
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 981c398..d5ac78b 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
-#Tue Dec 06 10:34:24 EST 2016
+#Wed Dec 07 08:47:12 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 0ce7bc0..91211f3 100644
Binary files a/sm-shop/SALESMANAGER.h2.db and b/sm-shop/SALESMANAGER.h2.db differ
diff --git a/sm-shop/SALESMANAGER.trace.db b/sm-shop/SALESMANAGER.trace.db
new file mode 100644
index 0000000..b2053f3
--- /dev/null
+++ b/sm-shop/SALESMANAGER.trace.db
@@ -0,0 +1,6 @@
+12-06 15:27:42 jdbc[3]: exception
+org.h2.jdbc.JdbcSQLException: The object is already closed [90007-176]
+12-06 15:27:42 jdbc[3]: exception
+org.h2.jdbc.JdbcSQLException: The object is already closed [90007-176]
+12-06 15:27:42 jdbc[3]: exception
+org.h2.jdbc.JdbcSQLException: The object is already closed [90007-176]
diff --git a/sm-shop/src/main/java/com/salesmanager/shop/admin/controller/configurations/CacheController.java b/sm-shop/src/main/java/com/salesmanager/shop/admin/controller/configurations/CacheController.java
index ca62dac..4100609 100644
--- a/sm-shop/src/main/java/com/salesmanager/shop/admin/controller/configurations/CacheController.java
+++ b/sm-shop/src/main/java/com/salesmanager/shop/admin/controller/configurations/CacheController.java
@@ -10,6 +10,10 @@ import javax.servlet.http.HttpServletResponse;
 
 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;
@@ -56,8 +60,8 @@ public class CacheController {
 	
 	
 	@PreAuthorize("hasRole('AUTH')")
-	@RequestMapping(value="/admin/cache/clear.html", method=RequestMethod.POST, produces="application/json")
-	public @ResponseBody String clearCache(HttpServletRequest request, HttpServletResponse response) {
+	@RequestMapping(value="/admin/cache/clear.html", method=RequestMethod.POST)
+	public @ResponseBody ResponseEntity<String> clearCache(HttpServletRequest request, HttpServletResponse response) {
 		String cacheKey = request.getParameter("cacheKey");
 
 		AjaxResponse resp = new AjaxResponse();
@@ -83,7 +87,9 @@ public class CacheController {
 		}
 		
 		String returnString = resp.toJSONString();
-		return returnString;
+		final HttpHeaders httpHeaders= new HttpHeaders();
+	    httpHeaders.setContentType(MediaType.APPLICATION_JSON_UTF8);
+		return new ResponseEntity<String>(returnString,httpHeaders,HttpStatus.OK);
 	}
 	
 
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 32408fb..790f9d0 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
@@ -297,8 +297,8 @@ public class OptionsController {
 		
 	}
 	
-	@RequestMapping(value="/admin/options/remove.html", method=RequestMethod.POST, produces="application/json")
-	public @ResponseBody String deleteOption(HttpServletRequest request, HttpServletResponse response, Locale locale) {
+	@RequestMapping(value="/admin/options/remove.html", method=RequestMethod.POST)
+	public @ResponseBody ResponseEntity<String> deleteOption(HttpServletRequest request, HttpServletResponse response, Locale locale) {
 		String sid = request.getParameter("optionId");
 
 		MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
@@ -332,8 +332,9 @@ public class OptionsController {
 		}
 		
 		String returnString = resp.toJSONString();
-		
-		return returnString;
+		final HttpHeaders httpHeaders= new HttpHeaders();
+	    httpHeaders.setContentType(MediaType.APPLICATION_JSON_UTF8);
+		return new ResponseEntity<String>(returnString,httpHeaders,HttpStatus.OK);
 	}
 
 }
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 61bf9e3..33f060b 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
@@ -334,8 +334,8 @@ public class OptionsValueController {
 	}
 	
 	@PreAuthorize("hasRole('PRODUCTS')")
-	@RequestMapping(value="/admin/optionsvalues/remove.html", method=RequestMethod.POST, produces="application/json")
-	public @ResponseBody String deleteOptionValue(HttpServletRequest request, HttpServletResponse response, Locale locale) {
+	@RequestMapping(value="/admin/optionsvalues/remove.html", method=RequestMethod.POST)
+	public @ResponseBody ResponseEntity<String> deleteOptionValue(HttpServletRequest request, HttpServletResponse response, Locale locale) {
 		String sid = request.getParameter("optionValueId");
 
 		MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
@@ -370,13 +370,14 @@ public class OptionsValueController {
 		}
 		
 		String returnString = resp.toJSONString();
-		
-		return returnString;
+		final HttpHeaders httpHeaders= new HttpHeaders();
+	    httpHeaders.setContentType(MediaType.APPLICATION_JSON_UTF8);
+		return new ResponseEntity<String>(returnString,httpHeaders,HttpStatus.OK);
 	}
 	
 	@PreAuthorize("hasRole('PRODUCTS')")
-	@RequestMapping(value="/admin/optionsvalues/removeImage.html", method=RequestMethod.POST, produces="application/json")
-	public @ResponseBody String removeImage(HttpServletRequest request, HttpServletResponse response, Locale locale) {
+	@RequestMapping(value="/admin/optionsvalues/removeImage.html", method=RequestMethod.POST)
+	public @ResponseBody ResponseEntity<String> removeImage(HttpServletRequest request, HttpServletResponse response, Locale locale) {
 		String optionValueId = request.getParameter("optionId");
 
 		MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
@@ -406,8 +407,9 @@ public class OptionsValueController {
 		}
 		
 		String returnString = resp.toJSONString();
-		
-		return returnString;
+		final HttpHeaders httpHeaders= new HttpHeaders();
+	    httpHeaders.setContentType(MediaType.APPLICATION_JSON_UTF8);
+		return new ResponseEntity<String>(returnString,httpHeaders,HttpStatus.OK);
 	}
 	
 	
diff --git a/sm-shop/src/main/java/com/salesmanager/shop/admin/controller/products/ProductAttributeController.java b/sm-shop/src/main/java/com/salesmanager/shop/admin/controller/products/ProductAttributeController.java
index 80c87cb..8fc0719 100644
--- a/sm-shop/src/main/java/com/salesmanager/shop/admin/controller/products/ProductAttributeController.java
+++ b/sm-shop/src/main/java/com/salesmanager/shop/admin/controller/products/ProductAttributeController.java
@@ -17,6 +17,10 @@ import com.salesmanager.shop.utils.LabelUtils;
 import org.apache.commons.lang3.RandomStringUtils;
 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;
@@ -84,14 +88,16 @@ public class ProductAttributeController {
 
 	@SuppressWarnings({ "rawtypes", "unchecked" })
 	@PreAuthorize("hasRole('PRODUCTS')")
-	@RequestMapping(value="/admin/products/attributes/page.html", method=RequestMethod.POST, produces="application/json;charset=UTF-8")
-	public @ResponseBody String pageAttributes(HttpServletRequest request, HttpServletResponse response) {
+	@RequestMapping(value="/admin/products/attributes/page.html", method=RequestMethod.POST)
+	public @ResponseBody ResponseEntity<String> pageAttributes(HttpServletRequest request, HttpServletResponse response) {
 
 		//String attribute = request.getParameter("attribute");
 		String sProductId = request.getParameter("productId");
 		
 		
 		AjaxResponse resp = new AjaxResponse();
+		final HttpHeaders httpHeaders= new HttpHeaders();
+	    httpHeaders.setContentType(MediaType.APPLICATION_JSON_UTF8);
 		
 		Long productId;
 		Product product = null;
@@ -102,7 +108,7 @@ public class ProductAttributeController {
 			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);
 		}
 
 		
@@ -159,7 +165,7 @@ public class ProductAttributeController {
 		}
 		
 		String returnString = resp.toJSONString();
-		return returnString;
+		return new ResponseEntity<String>(returnString,httpHeaders,HttpStatus.OK);
 
 
 	}
@@ -388,13 +394,15 @@ public class ProductAttributeController {
 	}
 	
 	@PreAuthorize("hasRole('PRODUCTS')")
-	@RequestMapping(value="/admin/attributes/attribute/remove.html", method=RequestMethod.POST, produces="application/json")
-	public @ResponseBody String deleteProductPrice(HttpServletRequest request, HttpServletResponse response, Locale locale) {
+	@RequestMapping(value="/admin/attributes/attribute/remove.html", method=RequestMethod.POST)
+	public @ResponseBody ResponseEntity<String> deleteProductPrice(HttpServletRequest request, HttpServletResponse response, Locale locale) {
 		String sAttributeid = request.getParameter("attributeId");
 
 		
 		MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
 		AjaxResponse resp = new AjaxResponse();
+		final HttpHeaders httpHeaders= new HttpHeaders();
+	    httpHeaders.setContentType(MediaType.APPLICATION_JSON_UTF8);
 
 		
 		try {
@@ -407,7 +415,8 @@ public class ProductAttributeController {
 
 				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);
 			} 
 			
 
@@ -425,15 +434,14 @@ public class ProductAttributeController {
 		}
 		
 		String returnString = resp.toJSONString();
-		
-		return returnString;
+		return new ResponseEntity<String>(returnString,httpHeaders,HttpStatus.OK);
 	}
 	
 	
 	@SuppressWarnings({ "rawtypes", "unchecked" })
 	@PreAuthorize("hasRole('PRODUCTS')")
-	@RequestMapping(value="/admin/products/attributes/getAttributeType.html", method=RequestMethod.POST, produces="application/json")
-	public @ResponseBody String checkAttributeType(HttpServletRequest request, HttpServletResponse response, Locale locale) {
+	@RequestMapping(value="/admin/products/attributes/getAttributeType.html", method=RequestMethod.POST)
+	public @ResponseBody ResponseEntity<String> checkAttributeType(HttpServletRequest request, HttpServletResponse response, Locale locale) {
 
 		String sOptionId = request.getParameter("optionId");
 
@@ -442,6 +450,9 @@ public class ProductAttributeController {
 		
 		
 		AjaxResponse resp = new AjaxResponse();
+		final HttpHeaders httpHeaders= new HttpHeaders();
+	    httpHeaders.setContentType(MediaType.APPLICATION_JSON_UTF8);
+		
 		
 		Long prodoptionId;
 		ProductOption productOption = null;
@@ -452,7 +463,7 @@ public class ProductAttributeController {
 			resp.setStatus(AjaxPageableResponse.RESPONSE_STATUS_FAIURE);
 			resp.setErrorString("Product Option id is not valid");
 			String returnString = resp.toJSONString();
-			return returnString;
+			return new ResponseEntity<String>(returnString,httpHeaders,HttpStatus.OK);
 		}
 
 		
@@ -464,13 +475,15 @@ public class ProductAttributeController {
 			if(productOption==null) {
 				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);
 			}
 			
 			if(productOption.getMerchantStore().getId().intValue()!=store.getId().intValue()) {
 				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);
 			}
 			
 
@@ -491,7 +504,7 @@ public class ProductAttributeController {
 		}
 		
 		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/ProductImagesController.java b/sm-shop/src/main/java/com/salesmanager/shop/admin/controller/products/ProductImagesController.java
index 3381613..32bf48d 100644
--- a/sm-shop/src/main/java/com/salesmanager/shop/admin/controller/products/ProductImagesController.java
+++ b/sm-shop/src/main/java/com/salesmanager/shop/admin/controller/products/ProductImagesController.java
@@ -18,6 +18,10 @@ import org.apache.commons.lang3.StringUtils;
 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.security.access.prepost.PreAuthorize;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
@@ -112,13 +116,15 @@ public class ProductImagesController {
 
 	@SuppressWarnings({ "rawtypes", "unchecked" })
 	@PreAuthorize("hasRole('PRODUCTS')")
-	@RequestMapping(value="/admin/products/images/page.html", method=RequestMethod.POST, produces="application/json;text/plain;charset=UTF-8")
-	public @ResponseBody String pageProductImages(HttpServletRequest request, HttpServletResponse response) {
+	@RequestMapping(value="/admin/products/images/page.html", method=RequestMethod.POST)
+	public @ResponseBody ResponseEntity<String> pageProductImages(HttpServletRequest request, HttpServletResponse response) {
 
 		String sProductId = request.getParameter("productId");
 		
 		
 		AjaxResponse resp = new AjaxResponse();
+		final HttpHeaders httpHeaders= new HttpHeaders();
+	    httpHeaders.setContentType(MediaType.APPLICATION_JSON_UTF8);
 		
 		Long productId;
 		Product product = null;
@@ -129,7 +135,7 @@ public class ProductImagesController {
 			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);
 		}
 
 		
@@ -141,7 +147,10 @@ public class ProductImagesController {
 			MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
 			
 			if(product.getMerchantStore().getId().intValue()!=store.getId().intValue()) {
-				return "redirect:/admin/products/products.html";
+				resp.setStatus(AjaxPageableResponse.RESPONSE_STATUS_FAIURE);
+				resp.setErrorString("Merchant id is not valid");
+				String returnString = resp.toJSONString();
+				return new ResponseEntity<String>(returnString,httpHeaders,HttpStatus.OK);
 			}
 
 			Set<ProductImage> images = product.getImages();
@@ -173,7 +182,7 @@ public class ProductImagesController {
 		}
 		
 		String returnString = resp.toJSONString();
-		return returnString;
+		return new ResponseEntity<String>(returnString,httpHeaders,HttpStatus.OK);
 
 
 	}
@@ -182,13 +191,15 @@ public class ProductImagesController {
 
 	@SuppressWarnings({ "rawtypes", "unchecked" })
 	@PreAuthorize("hasRole('PRODUCTS')")
-	@RequestMapping(value="/admin/products/images/url/page.html", method=RequestMethod.POST, produces="application/json")
-	public @ResponseBody String pageProductImagesUrl(HttpServletRequest request, HttpServletResponse response) {
+	@RequestMapping(value="/admin/products/images/url/page.html", method=RequestMethod.POST)
+	public @ResponseBody ResponseEntity<String> pageProductImagesUrl(HttpServletRequest request, HttpServletResponse response) {
 
 		String sProductId = request.getParameter("productId");
 		
 		
 		AjaxResponse resp = new AjaxResponse();
+		final HttpHeaders httpHeaders= new HttpHeaders();
+	    httpHeaders.setContentType(MediaType.APPLICATION_JSON_UTF8);
 		
 		Long productId;
 		Product product = null;
@@ -199,7 +210,7 @@ public class ProductImagesController {
 			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);
 		}
 
 		
@@ -211,7 +222,10 @@ public class ProductImagesController {
 			MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
 
 			if(product.getMerchantStore().getId().intValue()!=store.getId().intValue()) {
-				return "redirect:/admin/products/products.html";
+				resp.setStatus(AjaxPageableResponse.RESPONSE_STATUS_FAIURE);
+				resp.setErrorString("Merchant id is not valid");
+				String returnString = resp.toJSONString();
+				return new ResponseEntity<String>(returnString,httpHeaders,HttpStatus.OK);
 			}
 			
 			Set<ProductImage> images = product.getImages();
@@ -246,7 +260,7 @@ public class ProductImagesController {
 		}
 		
 		String returnString = resp.toJSONString();
-		return returnString;
+		return new ResponseEntity<String>(returnString,httpHeaders,HttpStatus.OK);
 
 
 	}
@@ -367,19 +381,19 @@ public class ProductImagesController {
 
 		
 	@PreAuthorize("hasRole('PRODUCTS')")
-	@RequestMapping(value="/admin/products/images/remove.html", method=RequestMethod.POST, produces="application/json")
-	public @ResponseBody String deleteImage(HttpServletRequest request, HttpServletResponse response, Locale locale) {
+	@RequestMapping(value="/admin/products/images/remove.html", method=RequestMethod.POST)
+	public @ResponseBody ResponseEntity<String> deleteImage(HttpServletRequest request, HttpServletResponse response, Locale locale) {
 		String sImageId = request.getParameter("id");
 
 		
 		MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
 		AjaxResponse resp = new AjaxResponse();
+		final HttpHeaders httpHeaders= new HttpHeaders();
+	    httpHeaders.setContentType(MediaType.APPLICATION_JSON_UTF8);
 
 		
 		try {
-			
-			
-		
+
 				
 			Long imageId = Long.parseLong(sImageId);
 
@@ -387,14 +401,16 @@ public class ProductImagesController {
 			ProductImage productImage = productImageService.getById(imageId);
 			if(productImage==null) {
 				resp.setStatusMessage(messages.getMessage("message.unauthorized", locale));
-				resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);			
-				return resp.toJSONString();
+				resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
+				String returnString = resp.toJSONString();
+				return new ResponseEntity<String>(returnString,httpHeaders,HttpStatus.OK);
 			}
 			
 			if(productImage.getProduct().getMerchantStore().getId().intValue()!=store.getId().intValue()) {
 				resp.setStatusMessage(messages.getMessage("message.unauthorized", locale));
-				resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);			
-				return resp.toJSONString();
+				resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);	
+				String returnString = resp.toJSONString();
+				return new ResponseEntity<String>(returnString,httpHeaders,HttpStatus.OK);
 			}
 			
 			productImageService.removeProductImage(productImage);
@@ -410,19 +426,20 @@ public class ProductImagesController {
 		}
 		
 		String returnString = resp.toJSONString();
-		
-		return returnString;
+		return new ResponseEntity<String>(returnString,httpHeaders,HttpStatus.OK);
 	}
 	
 	
 	@PreAuthorize("hasRole('PRODUCTS')")
-	@RequestMapping(value="/admin/products/images/defaultImage.html", method=RequestMethod.POST, produces="application/json")
-	public @ResponseBody String setDefaultImage(final HttpServletRequest request, 
+	@RequestMapping(value="/admin/products/images/defaultImage.html", method=RequestMethod.POST)
+	public @ResponseBody ResponseEntity<String> setDefaultImage(final HttpServletRequest request, 
 												final HttpServletResponse response, 
 												final Locale locale) {
 		final String sImageId = request.getParameter("id");
 		final MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
 		final AjaxResponse resp = new AjaxResponse();
+		final HttpHeaders httpHeaders= new HttpHeaders();
+	    httpHeaders.setContentType(MediaType.APPLICATION_JSON_UTF8);
 
 		try {
 			final Long imageId = Long.parseLong(sImageId);
@@ -431,13 +448,15 @@ public class ProductImagesController {
 			if (productImage == null) {
 				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);
 			}
 			
 			if (productImage.getProduct().getMerchantStore().getId().intValue() != store.getId().intValue()) {
 				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);
 			}
 			
 			productImage.setDefaultImage(true);
@@ -458,8 +477,8 @@ public class ProductImagesController {
 			resp.setErrorMessage(e);
 		}
 		
-		final String returnString = resp.toJSONString();
-		return returnString;
+		String returnString = resp.toJSONString();
+		return new ResponseEntity<String>(returnString,httpHeaders,HttpStatus.OK);
 	}
 
 	
diff --git a/sm-shop/src/main/java/com/salesmanager/shop/admin/controller/products/ProductKeywordsController.java b/sm-shop/src/main/java/com/salesmanager/shop/admin/controller/products/ProductKeywordsController.java
index d6bcd3d..be55a35 100644
--- a/sm-shop/src/main/java/com/salesmanager/shop/admin/controller/products/ProductKeywordsController.java
+++ b/sm-shop/src/main/java/com/salesmanager/shop/admin/controller/products/ProductKeywordsController.java
@@ -15,6 +15,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;
@@ -133,14 +137,16 @@ public class ProductKeywordsController {
 	}
 	
 	@PreAuthorize("hasRole('PRODUCTS')")
-	@RequestMapping(value="/admin/products/product/removeKeyword.html", method=RequestMethod.POST, produces="application/json")
-	public @ResponseBody String removeKeyword(@RequestParam("id") long productId, HttpServletRequest request, HttpServletResponse response, Locale locale) {
+	@RequestMapping(value="/admin/products/product/removeKeyword.html", method=RequestMethod.POST)
+	public @ResponseBody ResponseEntity<String> removeKeyword(@RequestParam("id") long productId, HttpServletRequest request, HttpServletResponse response, Locale locale) {
 
 		
 		String code = request.getParameter("code");
 		MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
 		
 		AjaxResponse resp = new AjaxResponse();
+		final HttpHeaders httpHeaders= new HttpHeaders();
+	    httpHeaders.setContentType(MediaType.APPLICATION_JSON_UTF8);
 
 		
 		try {
@@ -159,14 +165,14 @@ public class ProductKeywordsController {
 				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);
 			}
 			
 			Set<ProductDescription> descriptions = product.getDescriptions();
@@ -219,23 +225,21 @@ public class ProductKeywordsController {
 		}
 		
 		String returnString = resp.toJSONString();
-		
-		return returnString;
+		return new ResponseEntity<String>(returnString,httpHeaders,HttpStatus.OK);
 	}
 	
 	
 	@SuppressWarnings("unchecked")
 	@PreAuthorize("hasRole('PRODUCTS')")
-	@RequestMapping(value="/admin/products/product/keywords/paging.html", method=RequestMethod.POST, produces="application/json;charset=UTF-8")
-	public @ResponseBody String pageKeywords(HttpServletRequest request, HttpServletResponse response) {
+	@RequestMapping(value="/admin/products/product/keywords/paging.html", method=RequestMethod.POST)
+	public @ResponseBody ResponseEntity<String> pageKeywords(HttpServletRequest request, HttpServletResponse response) {
 		
 		String sProductId = request.getParameter("id");
 		MerchantStore store = (MerchantStore)request.getAttribute(Constants.ADMIN_STORE);
-		
-		Language language = (Language)request.getAttribute("LANGUAGE");
-		
-		
+
 		AjaxResponse resp = new AjaxResponse();
+		final HttpHeaders httpHeaders= new HttpHeaders();
+	    httpHeaders.setContentType(MediaType.APPLICATION_JSON_UTF8);
 		
 		Long productId;
 		Product product = null;
@@ -246,7 +250,7 @@ public class ProductKeywordsController {
 			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);
 		}
 
 		
@@ -259,14 +263,14 @@ public class ProductKeywordsController {
 				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);
 			}
 			
 			
@@ -314,7 +318,7 @@ public class ProductKeywordsController {
 		}
 		
 		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/user/PermissionController.java b/sm-shop/src/main/java/com/salesmanager/shop/admin/controller/user/PermissionController.java
index bda6cc9..6ea3619 100644
--- a/sm-shop/src/main/java/com/salesmanager/shop/admin/controller/user/PermissionController.java
+++ b/sm-shop/src/main/java/com/salesmanager/shop/admin/controller/user/PermissionController.java
@@ -9,6 +9,10 @@ import com.salesmanager.shop.admin.model.web.Menu;
 import com.salesmanager.shop.utils.LabelUtils;
 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;
@@ -59,9 +63,9 @@ public class PermissionController {
 
 	@SuppressWarnings("unchecked")
 	@PreAuthorize("hasRole('STORE_ADMIN')")
-	@RequestMapping(value = "/admin/permissions/paging.html", method = RequestMethod.POST, produces = "application/json")
+	@RequestMapping(value = "/admin/permissions/paging.html", method = RequestMethod.POST)
 	public @ResponseBody
-	String pagePermissions(HttpServletRequest request,
+	ResponseEntity<String> pagePermissions(HttpServletRequest request,
 			HttpServletResponse response) {
 		//String permissionName = request.getParameter("name");
 
@@ -90,8 +94,9 @@ public class PermissionController {
 		}
 
 		String returnString = resp.toJSONString();
-
-		return returnString;
+		final HttpHeaders httpHeaders= new HttpHeaders();
+	    httpHeaders.setContentType(MediaType.APPLICATION_JSON_UTF8);
+		return new ResponseEntity<String>(returnString,httpHeaders,HttpStatus.OK);
 	}
 
 	@SuppressWarnings("unused")
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 2d1fb58..eeb94b9 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
-#Tue Dec 06 10:34:25 EST 2016
+#Wed Dec 07 08:47:14 EST 2016
 version=2.5.0-SNAPSHOT
 groupId=com.shopizer
 m2e.projectName=sm-shop