shopizer-uncached

json response fixed for MVC 4

11/18/2016 4:33:12 PM

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 c580950..4b7e6f7 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
-#Thu Nov 17 13:15:14 EST 2016
+#Fri Nov 18 09:25:05 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 adbd0e9..aeef9b0 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
-#Thu Nov 17 13:15:13 EST 2016
+#Fri Nov 18 09:25:04 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 10fc92d..2f7d37d 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
-#Thu Nov 17 13:15:14 EST 2016
+#Fri Nov 18 09:25:05 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 b2a1b8e..e71da10 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
index 6347065..054b721 100644
--- a/sm-shop/SALESMANAGER.lock.db
+++ b/sm-shop/SALESMANAGER.lock.db
@@ -1,4 +1,4 @@
 #FileLock
-#Thu Nov 17 12:49:11 EST 2016
-id=15873680ebbb35880e089352470d0b3a736e4e12ea8
+#Fri Nov 18 13:24:02 EST 2016
+id=15878ae544854c043e638338aaf1b1e31c895571d4f
 method=file
diff --git a/sm-shop/src/main/java/com/salesmanager/shop/admin/controller/merchant/MerchantStoreController.java b/sm-shop/src/main/java/com/salesmanager/shop/admin/controller/merchant/MerchantStoreController.java
index afed28a..c7fbe61 100644
--- a/sm-shop/src/main/java/com/salesmanager/shop/admin/controller/merchant/MerchantStoreController.java
+++ b/sm-shop/src/main/java/com/salesmanager/shop/admin/controller/merchant/MerchantStoreController.java
@@ -26,7 +26,9 @@ import com.salesmanager.shop.utils.*;
 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;
@@ -126,7 +128,9 @@ public class MerchantStoreController {
 
 		String returnString = resp.toJSONString();
 
-		return new ResponseEntity<String>(returnString,HttpStatus.OK);
+		final HttpHeaders httpHeaders= new HttpHeaders();
+	    httpHeaders.setContentType(MediaType.APPLICATION_JSON_UTF8);
+		return new ResponseEntity<String>(returnString,httpHeaders,HttpStatus.OK);
 	}
 	
 	@PreAuthorize("hasRole('STORE')")
diff --git a/sm-shop/src/main/java/com/salesmanager/shop/admin/controller/orders/OrdersController.java b/sm-shop/src/main/java/com/salesmanager/shop/admin/controller/orders/OrdersController.java
index 27215fa..8b4005c 100644
--- a/sm-shop/src/main/java/com/salesmanager/shop/admin/controller/orders/OrdersController.java
+++ b/sm-shop/src/main/java/com/salesmanager/shop/admin/controller/orders/OrdersController.java
@@ -20,6 +20,7 @@ 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;
@@ -154,7 +155,9 @@ public class OrdersController {
 		
 		String returnString = resp.toJSONString();
 
-		return new ResponseEntity<String>(returnString,HttpStatus.OK);
+		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/ProductsController.java b/sm-shop/src/main/java/com/salesmanager/shop/admin/controller/products/ProductsController.java
index 5a1e670..c5b381f 100644
--- a/sm-shop/src/main/java/com/salesmanager/shop/admin/controller/products/ProductsController.java
+++ b/sm-shop/src/main/java/com/salesmanager/shop/admin/controller/products/ProductsController.java
@@ -105,7 +105,7 @@ public class ProductsController {
 					LOGGER.error("Product page cannot parse categoryId " + categoryId );
 					resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
 					String returnString = resp.toJSONString();
-					return returnString;
+					return new ResponseEntity<String>(returnString,HttpStatus.BAD_REQUEST);
 				} 
 				
 				
@@ -117,7 +117,7 @@ public class ProductsController {
 					if(category==null || category.getMerchantStore().getId()!=store.getId()) {
 						resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
 						String returnString = resp.toJSONString();
-						return returnString;
+						return new ResponseEntity<String>(returnString,HttpStatus.BAD_REQUEST);
 					}
 					
 					//get all sub categories
diff --git a/sm-shop/src/main/java/com/salesmanager/shop/application/ShopApplicationConfiguration.java b/sm-shop/src/main/java/com/salesmanager/shop/application/ShopApplicationConfiguration.java
index 361f90a..133d3a9 100644
--- a/sm-shop/src/main/java/com/salesmanager/shop/application/ShopApplicationConfiguration.java
+++ b/sm-shop/src/main/java/com/salesmanager/shop/application/ShopApplicationConfiguration.java
@@ -1,5 +1,7 @@
 package com.salesmanager.shop.application;
 
+import java.nio.charset.Charset;
+import java.util.Arrays;
 import java.util.List;
 
 import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
@@ -8,7 +10,9 @@ import org.springframework.context.annotation.ComponentScan;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.context.annotation.Import;
 import org.springframework.context.annotation.ImportResource;
+import org.springframework.http.MediaType;
 import org.springframework.http.converter.HttpMessageConverter;
+import org.springframework.http.converter.StringHttpMessageConverter;
 import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
 import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
 import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
@@ -28,6 +32,7 @@ import com.salesmanager.core.business.configuration.CoreApplicationConfiguration
 @EnableWebSecurity
 public class ShopApplicationConfiguration extends WebMvcConfigurerAdapter{
 	
+	private static final Charset UTF8 = Charset.forName("UTF-8");
 	
     /**
      * Configure TilesConfigurer.
@@ -51,9 +56,18 @@ public class ShopApplicationConfiguration extends WebMvcConfigurerAdapter{
         return resolver;
     }
     
-    /**
+    @Override
+    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
+      StringHttpMessageConverter stringConverter = new StringHttpMessageConverter();
+      stringConverter.setSupportedMediaTypes(Arrays.asList(new MediaType("application", "json", UTF8)));
+      converters.add(stringConverter);
+
+      // Add other converters ...
+    }
+    
+/*    *//**
      * Spring 4 JSON converter
-     */
+     *//*
     @Override
     public void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
         converters.add(mappingJackson2HttpMessageConverter());
@@ -64,6 +78,6 @@ public class ShopApplicationConfiguration extends WebMvcConfigurerAdapter{
         MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
         converter.setObjectMapper(new ObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false));
         return converter;
-    }
+    }*/
 
 }
diff --git a/sm-shop/src/main/java/com/salesmanager/shop/controller/ImagesController.java b/sm-shop/src/main/java/com/salesmanager/shop/controller/ImagesController.java
index a40e73b..bea7c56 100644
--- a/sm-shop/src/main/java/com/salesmanager/shop/controller/ImagesController.java
+++ b/sm-shop/src/main/java/com/salesmanager/shop/controller/ImagesController.java
@@ -97,6 +97,7 @@ public class ImagesController {
 		// example small product image -> /static/DEFAULT/products/TB12345/product1.jpg
 		
 		// example large product image -> /static/DEFAULT/products/TB12345/product1.jpg
+
 		
 		/**
 		 * List of possible imageType
@@ -137,8 +138,57 @@ public class ImagesController {
 	 * @return
 	 * @throws IOException
 	 */
-	@RequestMapping("/static/products/{storeCode}/{productCode}/{imageName}.{extension}")
-	public @ResponseBody byte[] printImage(@PathVariable final String storeCode, @PathVariable final String productCode, @PathVariable final String imageName, @PathVariable final String extension, HttpServletRequest request) throws IOException {
+	@RequestMapping("/static/products/{storeCode}/{productCode}/{imageSize}/{imageName}")
+	public @ResponseBody byte[] printImage(@PathVariable final String storeCode, @PathVariable final String productCode, @PathVariable final String imageSize, @PathVariable final String imageName, HttpServletRequest request) throws IOException {
+
+		// product image small
+		// example small product image -> /static/products/DEFAULT/TB12345/SMALL/product1.jpg
+		
+		// example large product image -> /static/products/DEFAULT/TB12345/LARGE/product1.jpg
+
+
+		/**
+		 * List of possible imageType
+		 * 
+		 */
+		
+		
+		ProductImageSize size = ProductImageSize.SMALL;
+		
+		if(FileContentType.PRODUCTLG.name().equals(imageSize)) {
+			size = ProductImageSize.LARGE;
+		} 
+		
+	
+
+		
+		OutputContentFile image = null;
+		try {
+			image = productImageService.getProductImage(storeCode, productCode, imageName, size);
+		} catch (ServiceException e) {
+			LOGGER.error("Cannot retrieve image " + imageName, e);
+		}
+		if(image!=null) {
+			return image.getFile().toByteArray();
+		} else {
+			//empty image placeholder
+			return null;
+		}
+
+	}
+	
+	/**
+	 * Exclusive method for dealing with product images
+	 * @param storeCode
+	 * @param productCode
+	 * @param imageName
+	 * @param extension
+	 * @param request
+	 * @return
+	 * @throws IOException
+	 */
+	@RequestMapping("/static/products/{storeCode}/{productCode}/{imageName}")
+	public @ResponseBody byte[] printImage(@PathVariable final String storeCode, @PathVariable final String productCode, @PathVariable final String imageName, HttpServletRequest request) throws IOException {
 
 		// product image
 		// example small product image -> /static/products/DEFAULT/TB12345/product1.jpg?size=small
@@ -147,6 +197,7 @@ public class ImagesController {
 		// or
 		//example large product image -> /static/products/DEFAULT/TB12345/product1.jpg?size=large
 		
+
 		/**
 		 * List of possible imageType
 		 * 
@@ -167,7 +218,7 @@ public class ImagesController {
 		
 		OutputContentFile image = null;
 		try {
-			image = productImageService.getProductImage(storeCode, productCode, new StringBuilder().append(imageName).append(".").append(extension).toString(), size);
+			image = productImageService.getProductImage(storeCode, productCode, imageName, size);
 		} catch (ServiceException e) {
 			LOGGER.error("Cannot retrieve image " + imageName, e);
 		}
diff --git a/sm-shop/src/main/java/com/salesmanager/shop/controller/ReferenceController.java b/sm-shop/src/main/java/com/salesmanager/shop/controller/ReferenceController.java
index 180c081..e1e3c9f 100644
--- a/sm-shop/src/main/java/com/salesmanager/shop/controller/ReferenceController.java
+++ b/sm-shop/src/main/java/com/salesmanager/shop/controller/ReferenceController.java
@@ -16,7 +16,9 @@ import org.apache.commons.lang3.StringUtils;
 import org.codehaus.jackson.map.ObjectMapper;
 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.stereotype.Controller;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -114,9 +116,10 @@ public class ReferenceController {
 			resp.setStatus(AjaxResponse.RESPONSE_STATUS_FAIURE);
 		}
 		
-		
+		final HttpHeaders httpHeaders= new HttpHeaders();
+	    httpHeaders.setContentType(MediaType.APPLICATION_JSON_UTF8);
 		String returnString = resp.toJSONString();
-		return new ResponseEntity<String>(returnString,HttpStatus.OK);
+		return new ResponseEntity<String>(returnString,httpHeaders,HttpStatus.OK);
 		
 	}
 	
@@ -165,8 +168,8 @@ public class ReferenceController {
 	}
 	
 	@SuppressWarnings("unchecked")
-	@RequestMapping(value={"/shop/reference/creditCardDates.html"}, method=RequestMethod.GET, produces="application/json;text/plain;charset=UTF-8")
-	public @ResponseBody String getCreditCardDates(HttpServletRequest request, HttpServletResponse response) {
+	@RequestMapping(value={"/shop/reference/creditCardDates.html"}, method=RequestMethod.GET)
+	public @ResponseBody ResponseEntity<String> getCreditCardDates(HttpServletRequest request, HttpServletResponse response) {
 		
 
 		List<String> years = null;
@@ -202,14 +205,16 @@ public class ReferenceController {
 			LOGGER.error("ReferenceControler ",e);
 		}
 		
-		return serialized;
+		final HttpHeaders httpHeaders= new HttpHeaders();
+	    httpHeaders.setContentType(MediaType.APPLICATION_JSON_UTF8);
+		return new ResponseEntity<String>(serialized,httpHeaders,HttpStatus.OK);
 	
 	}
 	
 	
 	@SuppressWarnings("unchecked")
-	@RequestMapping(value={"/shop/reference/monthsOfYear.html"}, method=RequestMethod.GET, produces="application/json;text/plain;charset=UTF-8")
-	public @ResponseBody String getMonthsOfYear(HttpServletRequest request, HttpServletResponse response) {
+	@RequestMapping(value={"/shop/reference/monthsOfYear.html"}, method=RequestMethod.GET)
+	public @ResponseBody ResponseEntity<String> getMonthsOfYear(HttpServletRequest request, HttpServletResponse response) {
 		
 
 		List<String> days = null;
@@ -237,7 +242,9 @@ public class ReferenceController {
 			LOGGER.error("ReferenceControler ",e);
 		}
 		
-		return serialized;
+		final HttpHeaders httpHeaders= new HttpHeaders();
+	    httpHeaders.setContentType(MediaType.APPLICATION_JSON_UTF8);
+		return new ResponseEntity<String>(serialized,httpHeaders,HttpStatus.OK);
 	
 	}
 	
diff --git a/sm-shop/src/main/java/com/salesmanager/shop/filter/AdminFilter.java b/sm-shop/src/main/java/com/salesmanager/shop/filter/AdminFilter.java
index 57a9979..e3e0604 100644
--- a/sm-shop/src/main/java/com/salesmanager/shop/filter/AdminFilter.java
+++ b/sm-shop/src/main/java/com/salesmanager/shop/filter/AdminFilter.java
@@ -9,6 +9,8 @@ import com.salesmanager.core.model.reference.language.Language;
 import com.salesmanager.core.model.user.User;
 import com.salesmanager.shop.admin.model.web.Menu;
 import com.salesmanager.shop.constants.Constants;
+import com.salesmanager.shop.utils.LanguageUtils;
+
 import org.codehaus.jackson.JsonParseException;
 import org.codehaus.jackson.map.JsonMappingException;
 import org.codehaus.jackson.map.ObjectMapper;
@@ -24,6 +26,7 @@ import java.io.InputStream;
 import java.util.ArrayList;
 import java.util.LinkedHashMap;
 import java.util.List;
+import java.util.Locale;
 import java.util.Map;
 
 
@@ -44,6 +47,9 @@ public class AdminFilter extends HandlerInterceptorAdapter {
 	@Inject
 	private CacheUtils cache;
 	
+	@Inject
+	private LanguageUtils languageUtils;
+	
 	public boolean preHandle(
             HttpServletRequest request,
             HttpServletResponse response,
@@ -101,8 +107,10 @@ public class AdminFilter extends HandlerInterceptorAdapter {
 		request.setAttribute(Constants.ADMIN_STORE, store);
 		
 		
-		Language language = (Language) request.getSession().getAttribute("LANGUAGE");
+		Language language = languageUtils.getRequestLanguage(request, response);
 		
+		//Language language = (Language) request.getSession().getAttribute("LANGUAGE");
+
 		if(language==null) {
 			
 			//TODO get the Locale from Spring API, is it simply request.getLocale() ???
@@ -116,11 +124,8 @@ public class AdminFilter extends HandlerInterceptorAdapter {
 			} else {
 				language = store.getDefaultLanguage();
 			}
-			
-			
-			
+
 			request.getSession().setAttribute("LANGUAGE", language);
-			
 
 		}
 		
diff --git a/sm-shop/src/main/java/com/salesmanager/shop/utils/LanguageUtils.java b/sm-shop/src/main/java/com/salesmanager/shop/utils/LanguageUtils.java
index 4ae453e..da77924 100644
--- a/sm-shop/src/main/java/com/salesmanager/shop/utils/LanguageUtils.java
+++ b/sm-shop/src/main/java/com/salesmanager/shop/utils/LanguageUtils.java
@@ -74,7 +74,11 @@ public class LanguageUtils {
 
 		}
 		
-		locale = languageService.toLocale(language);
+		if(language != null) {
+			locale = languageService.toLocale(language);
+		} else {
+			language = languageService.toLanguage(locale);
+		}
 		
 		LocaleResolver localeResolver = RequestContextUtils.getLocaleResolver(request);
 		if(localeResolver!=null) {
diff --git a/sm-shop/src/main/webapp/pages/admin/merchant/merchant.jsp b/sm-shop/src/main/webapp/pages/admin/merchant/merchant.jsp
index e919257..3ce2b58 100644
--- a/sm-shop/src/main/webapp/pages/admin/merchant/merchant.jsp
+++ b/sm-shop/src/main/webapp/pages/admin/merchant/merchant.jsp
@@ -14,7 +14,7 @@
 
 
 $(document).ready(function() {
-	
+
 	if($("#code").val()=="") {
 		$('.btn').addClass('disabled');
 	}
@@ -52,9 +52,12 @@ $.fn.addItems = function(data) {
 };
 
 function getZones(countryCode){
+
+	var url = '<c:url value="/admin/reference/provinces.html"/>?lang=<c:out value="${requestScope.LANGUAGE.code}"/>';	
+
 	$.ajax({
 	  type: 'POST',
-	  url: '<c:url value="/admin/reference/provinces.html"/>',
+	  url: url,
 	  data: 'countryCode=' + countryCode,
 	  dataType: 'json',
 	  success: function(response){
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 7405294..78e5997 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
-#Thu Nov 17 13:15:16 EST 2016
+#Fri Nov 18 09:28:12 EST 2016
 version=2.5.0-SNAPSHOT
 groupId=com.shopizer
 m2e.projectName=sm-shop