svn commit: r1817650 - /ofbiz/ofbiz-framework/trunk/applications/product/src/main/java/org/apache/ofbiz/product/product/

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

svn commit: r1817650 - /ofbiz/ofbiz-framework/trunk/applications/product/src/main/java/org/apache/ofbiz/product/product/

mbrohl
Author: mbrohl
Date: Sat Dec  9 18:08:26 2017
New Revision: 1817650

URL: http://svn.apache.org/viewvc?rev=1817650&view=rev
Log:
Improved: Fixing defects reported by FindBugs, package
org.apache.ofbiz.product.product.
(OFBIZ-9807)

Thanks Julian Leichert for reporting and providing the patch.

Modified:
    ofbiz/ofbiz-framework/trunk/applications/product/src/main/java/org/apache/ofbiz/product/product/KeywordIndex.java
    ofbiz/ofbiz-framework/trunk/applications/product/src/main/java/org/apache/ofbiz/product/product/ProductContentWrapper.java
    ofbiz/ofbiz-framework/trunk/applications/product/src/main/java/org/apache/ofbiz/product/product/ProductEvents.java
    ofbiz/ofbiz-framework/trunk/applications/product/src/main/java/org/apache/ofbiz/product/product/ProductPromoContentWrapper.java
    ofbiz/ofbiz-framework/trunk/applications/product/src/main/java/org/apache/ofbiz/product/product/ProductSearch.java
    ofbiz/ofbiz-framework/trunk/applications/product/src/main/java/org/apache/ofbiz/product/product/ProductSearchSession.java
    ofbiz/ofbiz-framework/trunk/applications/product/src/main/java/org/apache/ofbiz/product/product/ProductServices.java

Modified: ofbiz/ofbiz-framework/trunk/applications/product/src/main/java/org/apache/ofbiz/product/product/KeywordIndex.java
URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/applications/product/src/main/java/org/apache/ofbiz/product/product/KeywordIndex.java?rev=1817650&r1=1817649&r2=1817650&view=diff
==============================================================================
--- ofbiz/ofbiz-framework/trunk/applications/product/src/main/java/org/apache/ofbiz/product/product/KeywordIndex.java (original)
+++ ofbiz/ofbiz-framework/trunk/applications/product/src/main/java/org/apache/ofbiz/product/product/KeywordIndex.java Sat Dec  9 18:08:26 2017
@@ -22,6 +22,7 @@ import java.io.IOException;
 import java.sql.Timestamp;
 import java.util.LinkedList;
 import java.util.List;
+import java.util.Locale;
 import java.util.Map;
 import java.util.Set;
 import java.util.TreeMap;
@@ -92,7 +93,7 @@ public class KeywordIndex {
         } catch (Exception e) {
             Debug.logWarning("Could not parse weight number: " + e.toString(), module);
         }
-        keywords.put(product.getString("productId").toLowerCase(), Long.valueOf(pidWeight));
+        keywords.put(product.getString("productId").toLowerCase(Locale.getDefault()), Long.valueOf(pidWeight));
 
         // Product fields - default is 0 if not found in the properties file
         if (!"0".equals(EntityUtilProperties.getPropertyValue("prodsearch", "index.weight.Product.productName", "0", delegator))) {
@@ -227,7 +228,6 @@ public class KeywordIndex {
             int weight = 1;
 
             try {
-                Delegator delegator = value.getDelegator();
                 weight = EntityUtilProperties.getPropertyAsInteger("prodsearch", "index.weight." + value.getEntityName() + "." + fieldName, 1).intValue();
             } catch (Exception e) {
                 Debug.logWarning("Could not parse weight number: " + e.toString(), module);

Modified: ofbiz/ofbiz-framework/trunk/applications/product/src/main/java/org/apache/ofbiz/product/product/ProductContentWrapper.java
URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/applications/product/src/main/java/org/apache/ofbiz/product/product/ProductContentWrapper.java?rev=1817650&r1=1817649&r2=1817650&view=diff
==============================================================================
--- ofbiz/ofbiz-framework/trunk/applications/product/src/main/java/org/apache/ofbiz/product/product/ProductContentWrapper.java (original)
+++ ofbiz/ofbiz-framework/trunk/applications/product/src/main/java/org/apache/ofbiz/product/product/ProductContentWrapper.java Sat Dec  9 18:08:26 2017
@@ -124,9 +124,7 @@ public class ProductContentWrapper imple
                 outString = outString == null? "" : outString;
             }
             outString = encoder.sanitize(outString, null);
-            if (productContentCache != null) {
-                productContentCache.put(cacheKey, outString);
-            }
+            productContentCache.put(cacheKey, outString);
             return outString;
         } catch (GeneralException e) {
             Debug.logError(e, "Error rendering ProductContent, inserting empty String", module);

Modified: ofbiz/ofbiz-framework/trunk/applications/product/src/main/java/org/apache/ofbiz/product/product/ProductEvents.java
URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/applications/product/src/main/java/org/apache/ofbiz/product/product/ProductEvents.java?rev=1817650&r1=1817649&r2=1817650&view=diff
==============================================================================
--- ofbiz/ofbiz-framework/trunk/applications/product/src/main/java/org/apache/ofbiz/product/product/ProductEvents.java (original)
+++ ofbiz/ofbiz-framework/trunk/applications/product/src/main/java/org/apache/ofbiz/product/product/ProductEvents.java Sat Dec  9 18:08:26 2017
@@ -669,7 +669,7 @@ public class ProductEvents {
                 // remove productFeatureAppl IFF: productFeatureAppl != null && (description is empty/null || description is different than existing)
                 if (productFeatureAppl != null && (description == null || !description.equals(productFeatureAndAppl.getString("description")))) {
                     // if descriptionsToRemove is not null, only remove if description is in that set
-                    if (descriptionsToRemove == null || (descriptionsToRemove != null && descriptionsToRemove.contains(productFeatureAndAppl.getString("description")))) {
+                    if (descriptionsToRemove == null || descriptionsToRemove.contains(productFeatureAndAppl.getString("description"))) {
                         // okay, almost there: before removing it if this is a virtual product check to make SURE this feature's description doesn't exist on any of the variants; wouldn't want to remove something we should have kept around...
                         if ("Y".equals(product.getString("isVirtual"))) {
                             boolean foundFeatureOnVariant = false;
@@ -706,7 +706,7 @@ public class ProductEvents {
             }
         }
 
-        if (description != null && (productFeatureAndAppl == null || (productFeatureAndAppl != null && !descriptionsForThisType.contains(description)))) {
+        if (description != null && (productFeatureAndAppl == null || !descriptionsForThisType.contains(description))) {
             // need to add an appl, and possibly the feature
 
             // see if a feature exists with the type and description specified (if doesn't exist will create later)

Modified: ofbiz/ofbiz-framework/trunk/applications/product/src/main/java/org/apache/ofbiz/product/product/ProductPromoContentWrapper.java
URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/applications/product/src/main/java/org/apache/ofbiz/product/product/ProductPromoContentWrapper.java?rev=1817650&r1=1817649&r2=1817650&view=diff
==============================================================================
--- ofbiz/ofbiz-framework/trunk/applications/product/src/main/java/org/apache/ofbiz/product/product/ProductPromoContentWrapper.java (original)
+++ ofbiz/ofbiz-framework/trunk/applications/product/src/main/java/org/apache/ofbiz/product/product/ProductPromoContentWrapper.java Sat Dec  9 18:08:26 2017
@@ -129,9 +129,7 @@ public class ProductPromoContentWrapper
                 outString = outString == null? "" : outString;
             }
             outString = encoder.sanitize(outString, null);
-            if (productPromoContentCache != null) {
-                productPromoContentCache.put(cacheKey, outString);
-            }
+            productPromoContentCache.put(cacheKey, outString);
             return outString;
         } catch (GeneralException e) {
             Debug.logError(e, "Error rendering ProductPromoContent, inserting empty String", module);

Modified: ofbiz/ofbiz-framework/trunk/applications/product/src/main/java/org/apache/ofbiz/product/product/ProductSearch.java
URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/applications/product/src/main/java/org/apache/ofbiz/product/product/ProductSearch.java?rev=1817650&r1=1817649&r2=1817650&view=diff
==============================================================================
--- ofbiz/ofbiz-framework/trunk/applications/product/src/main/java/org/apache/ofbiz/product/product/ProductSearch.java (original)
+++ ofbiz/ofbiz-framework/trunk/applications/product/src/main/java/org/apache/ofbiz/product/product/ProductSearch.java Sat Dec  9 18:08:26 2017
@@ -880,24 +880,43 @@ public class ProductSearch {
         }
 
         @Override
+        public int hashCode() {
+            final int prime = 31;
+            int result = 1;
+            result = prime * result + ((prodCatalogId == null) ? 0 : prodCatalogId.hashCode());
+            result = prime * result + ((productCategories == null) ? 0 : productCategories.hashCode());
+            return result;
+        }
+
+        @Override
         public boolean equals(Object obj) {
-            ProductSearchConstraint psc = (ProductSearchConstraint) obj;
-            if (psc instanceof CatalogConstraint) {
-                CatalogConstraint that = (CatalogConstraint) psc;
-                if (this.prodCatalogId == null) {
-                    if (that.prodCatalogId != null) {
-                        return false;
-                    }
-                } else {
-                    if (!this.prodCatalogId.equals(that.prodCatalogId)) {
-                        return false;
-                    }
-                }
+            if (this == obj) {
                 return true;
-            } else {
+            }
+            if (obj == null) {
+                return false;
+            }
+            if (!(obj instanceof CatalogConstraint)) {
+                return false;
+            }
+            CatalogConstraint other = (CatalogConstraint) obj;
+            if (prodCatalogId == null) {
+                if (other.prodCatalogId != null) {
+                    return false;
+                }
+            } else if (!prodCatalogId.equals(other.prodCatalogId)) {
+                return false;
+            }
+            if (productCategories == null) {
+                if (other.productCategories != null) {
+                    return false;
+                }
+            } else if (!productCategories.equals(other.productCategories)) {
                 return false;
             }
+            return true;
         }
+
     }
 
     @SuppressWarnings("serial")
@@ -973,27 +992,47 @@ public class ProductSearch {
         }
 
         @Override
+        public int hashCode() {
+            final int prime = 31;
+            int result = 1;
+            result = prime * result + ((exclude == null) ? 0 : exclude.hashCode());
+            result = prime * result + (includeSubCategories ? 1231 : 1237);
+            result = prime * result + ((productCategoryId == null) ? 0 : productCategoryId.hashCode());
+            return result;
+        }
+
+        @Override
         public boolean equals(Object obj) {
-            ProductSearchConstraint psc = (ProductSearchConstraint) obj;
-            if (psc instanceof CategoryConstraint) {
-                CategoryConstraint that = (CategoryConstraint) psc;
-                if (this.includeSubCategories != that.includeSubCategories) {
+            if (this == obj) {
+                return true;
+            }
+            if (obj == null) {
+                return false;
+            }
+            if (!(obj instanceof CategoryConstraint)) {
+                return false;
+            }
+            CategoryConstraint other = (CategoryConstraint) obj;
+            if (exclude == null) {
+                if (other.exclude != null) {
                     return false;
                 }
-                if (this.productCategoryId == null) {
-                    if (that.productCategoryId != null) {
-                        return false;
-                    }
-                } else {
-                    if (!this.productCategoryId.equals(that.productCategoryId)) {
-                        return false;
-                    }
+            } else if (!exclude.equals(other.exclude)) {
+                return false;
+            }
+            if (includeSubCategories != other.includeSubCategories) {
+                return false;
+            }
+            if (productCategoryId == null) {
+                if (other.productCategoryId != null) {
+                    return false;
                 }
-                return true;
-            } else {
+            } else if (!productCategoryId.equals(other.productCategoryId)) {
                 return false;
             }
+            return true;
         }
+
     }
 
     @SuppressWarnings("serial")
@@ -1058,24 +1097,43 @@ public class ProductSearch {
         }
 
         @Override
+        public int hashCode() {
+            final int prime = 31;
+            int result = 1;
+            result = prime * result + ((exclude == null) ? 0 : exclude.hashCode());
+            result = prime * result + ((productFeatureId == null) ? 0 : productFeatureId.hashCode());
+            return result;
+        }
+
+        @Override
         public boolean equals(Object obj) {
-            ProductSearchConstraint psc = (ProductSearchConstraint) obj;
-            if (psc instanceof FeatureConstraint) {
-                FeatureConstraint that = (FeatureConstraint) psc;
-                if (this.productFeatureId == null) {
-                    if (that.productFeatureId != null) {
-                        return false;
-                    }
-                } else {
-                    if (!this.productFeatureId.equals(that.productFeatureId)) {
-                        return false;
-                    }
-                }
+            if (this == obj) {
                 return true;
-            } else {
+            }
+            if (obj == null) {
                 return false;
             }
+            if (!(obj instanceof FeatureConstraint)) {
+                return false;
+            }
+            FeatureConstraint other = (FeatureConstraint) obj;
+            if (exclude == null) {
+                if (other.exclude != null) {
+                    return false;
+                }
+            } else if (!exclude.equals(other.exclude)) {
+                return false;
+            }
+            if (productFeatureId == null) {
+                if (other.productFeatureId != null) {
+                    return false;
+                }
+            } else if (!productFeatureId.equals(other.productFeatureId)) {
+                return false;
+            }
+            return true;
         }
+
     }
 
 
@@ -1140,24 +1198,43 @@ public class ProductSearch {
         }
 
         @Override
+        public int hashCode() {
+            final int prime = 31;
+            int result = 1;
+            result = prime * result + ((exclude == null) ? 0 : exclude.hashCode());
+            result = prime * result + ((productFeatureCategoryId == null) ? 0 : productFeatureCategoryId.hashCode());
+            return result;
+        }
+
+        @Override
         public boolean equals(Object obj) {
-            ProductSearchConstraint psc = (ProductSearchConstraint) obj;
-            if (psc instanceof FeatureCategoryConstraint) {
-                FeatureCategoryConstraint that = (FeatureCategoryConstraint) psc;
-                if (this.productFeatureCategoryId == null) {
-                    if (that.productFeatureCategoryId != null) {
-                        return false;
-                    }
-                } else {
-                    if (!this.productFeatureCategoryId.equals(that.productFeatureCategoryId)) {
-                        return false;
-                    }
-                }
+            if (this == obj) {
                 return true;
-            } else {
+            }
+            if (obj == null) {
                 return false;
             }
+            if (!(obj instanceof FeatureCategoryConstraint)) {
+                return false;
+            }
+            FeatureCategoryConstraint other = (FeatureCategoryConstraint) obj;
+            if (exclude == null) {
+                if (other.exclude != null) {
+                    return false;
+                }
+            } else if (!exclude.equals(other.exclude)) {
+                return false;
+            }
+            if (productFeatureCategoryId == null) {
+                if (other.productFeatureCategoryId != null) {
+                    return false;
+                }
+            } else if (!productFeatureCategoryId.equals(other.productFeatureCategoryId)) {
+                return false;
+            }
+            return true;
         }
+
     }
 
     @SuppressWarnings("serial")
@@ -1220,24 +1297,43 @@ public class ProductSearch {
         }
 
         @Override
+        public int hashCode() {
+            final int prime = 31;
+            int result = 1;
+            result = prime * result + ((exclude == null) ? 0 : exclude.hashCode());
+            result = prime * result + ((productFeatureGroupId == null) ? 0 : productFeatureGroupId.hashCode());
+            return result;
+        }
+
+        @Override
         public boolean equals(Object obj) {
-            ProductSearchConstraint psc = (ProductSearchConstraint) obj;
-            if (psc instanceof FeatureGroupConstraint) {
-                FeatureGroupConstraint that = (FeatureGroupConstraint) psc;
-                if (this.productFeatureGroupId == null) {
-                    if (that.productFeatureGroupId != null) {
-                        return false;
-                    }
-                } else {
-                    if (!this.productFeatureGroupId.equals(that.productFeatureGroupId)) {
-                        return false;
-                    }
-                }
+            if (this == obj) {
                 return true;
-            } else {
+            }
+            if (obj == null) {
+                return false;
+            }
+            if (!(obj instanceof FeatureGroupConstraint)) {
                 return false;
             }
+            FeatureGroupConstraint other = (FeatureGroupConstraint) obj;
+            if (exclude == null) {
+                if (other.exclude != null) {
+                    return false;
+                }
+            } else if (!exclude.equals(other.exclude)) {
+                return false;
+            }
+            if (productFeatureGroupId == null) {
+                if (other.productFeatureGroupId != null) {
+                    return false;
+                }
+            } else if (!productFeatureGroupId.equals(other.productFeatureGroupId)) {
+                return false;
+            }
+            return true;
         }
+
     }
 
 
@@ -1315,24 +1411,43 @@ public class ProductSearch {
         }
 
         @Override
+        public int hashCode() {
+            final int prime = 31;
+            int result = 1;
+            result = prime * result + ((exclude == null) ? 0 : exclude.hashCode());
+            result = prime * result + ((productFeatureIdSet == null) ? 0 : productFeatureIdSet.hashCode());
+            return result;
+        }
+
+        @Override
         public boolean equals(Object obj) {
-            ProductSearchConstraint psc = (ProductSearchConstraint) obj;
-            if (psc instanceof FeatureSetConstraint) {
-                FeatureSetConstraint that = (FeatureSetConstraint) psc;
-                if (this.productFeatureIdSet == null) {
-                    if (that.productFeatureIdSet != null) {
-                        return false;
-                    }
-                } else {
-                    if (!this.productFeatureIdSet.equals(that.productFeatureIdSet)) {
-                        return false;
-                    }
-                }
+            if (this == obj) {
                 return true;
-            } else {
+            }
+            if (obj == null) {
+                return false;
+            }
+            if (!(obj instanceof FeatureSetConstraint)) {
+                return false;
+            }
+            FeatureSetConstraint other = (FeatureSetConstraint) obj;
+            if (exclude == null) {
+                if (other.exclude != null) {
+                    return false;
+                }
+            } else if (!exclude.equals(other.exclude)) {
+                return false;
+            }
+            if (productFeatureIdSet == null) {
+                if (other.productFeatureIdSet != null) {
+                    return false;
+                }
+            } else if (!productFeatureIdSet.equals(other.productFeatureIdSet)) {
                 return false;
             }
+            return true;
         }
+
     }
 
     @SuppressWarnings("serial")
@@ -1424,36 +1539,51 @@ public class ProductSearch {
         }
 
         @Override
+        public int hashCode() {
+            final int prime = 31;
+            int result = 1;
+            result = prime * result + (anyPrefix ? 1231 : 1237);
+            result = prime * result + (anySuffix ? 1231 : 1237);
+            result = prime * result + (isAnd ? 1231 : 1237);
+            result = prime * result + ((keywordsString == null) ? 0 : keywordsString.hashCode());
+            result = prime * result + (removeStems ? 1231 : 1237);
+            return result;
+        }
+
+        @Override
         public boolean equals(Object obj) {
-            ProductSearchConstraint psc = (ProductSearchConstraint) obj;
-            if (psc instanceof KeywordConstraint) {
-                KeywordConstraint that = (KeywordConstraint) psc;
-                if (this.anyPrefix != that.anyPrefix) {
-                    return false;
-                }
-                if (this.anySuffix != that.anySuffix) {
-                    return false;
-                }
-                if (this.isAnd != that.isAnd) {
-                    return false;
-                }
-                if (this.removeStems != that.removeStems) {
+            if (this == obj) {
+                return true;
+            }
+            if (obj == null) {
+                return false;
+            }
+            if (!(obj instanceof KeywordConstraint)) {
+                return false;
+            }
+            KeywordConstraint other = (KeywordConstraint) obj;
+            if (anyPrefix != other.anyPrefix) {
+                return false;
+            }
+            if (anySuffix != other.anySuffix) {
+                return false;
+            }
+            if (isAnd != other.isAnd) {
+                return false;
+            }
+            if (keywordsString == null) {
+                if (other.keywordsString != null) {
                     return false;
                 }
-                if (this.keywordsString == null) {
-                    if (that.keywordsString != null) {
-                        return false;
-                    }
-                } else {
-                    if (!this.keywordsString.equals(that.keywordsString)) {
-                        return false;
-                    }
-                }
-                return true;
-            } else {
+            } else if (!keywordsString.equals(other.keywordsString)) {
                 return false;
             }
+            if (removeStems != other.removeStems) {
+                return false;
+            }
+            return true;
         }
+
     }
 
     @SuppressWarnings("serial")
@@ -1480,33 +1610,43 @@ public class ProductSearch {
         }
 
         @Override
+        public int hashCode() {
+            final int prime = 31;
+            int result = 1;
+            result = prime * result + ((fromDate == null) ? 0 : fromDate.hashCode());
+            result = prime * result + ((thruDate == null) ? 0 : thruDate.hashCode());
+            return result;
+        }
+
+        @Override
         public boolean equals(Object obj) {
-            ProductSearchConstraint psc = (ProductSearchConstraint) obj;
-            if (psc instanceof LastUpdatedRangeConstraint) {
-                LastUpdatedRangeConstraint that = (LastUpdatedRangeConstraint) psc;
-                if (this.fromDate == null) {
-                    if (that.fromDate != null) {
-                        return false;
-                    }
-                } else {
-                    if (!this.fromDate.equals(that.fromDate)) {
-                        return false;
-                    }
+            if (this == obj) {
+                return true;
+            }
+            if (obj == null) {
+                return false;
+            }
+            if (!(obj instanceof LastUpdatedRangeConstraint)) {
+                return false;
+            }
+            LastUpdatedRangeConstraint other = (LastUpdatedRangeConstraint) obj;
+            if (fromDate == null) {
+                if (other.fromDate != null) {
+                    return false;
                 }
-                if (this.thruDate == null) {
-                    if (that.thruDate != null) {
-                        return false;
-                    }
-                } else {
-                    if (!this.thruDate.equals(that.thruDate)) {
-                        return false;
-                    }
+            } else if (!fromDate.equals(other.fromDate)) {
+                return false;
+            }
+            if (thruDate == null) {
+                if (other.thruDate != null) {
+                    return false;
                 }
-                return true;
-            } else {
+            } else if (!thruDate.equals(other.thruDate)) {
                 return false;
             }
+            return true;
         }
+
     }
 
     @SuppressWarnings("serial")
@@ -1556,17 +1696,51 @@ public class ProductSearch {
         }
 
         @Override
-        public boolean equals(Object o) {
-            if (o instanceof StoreGroupPriceConstraint) {
-                StoreGroupPriceConstraint other = (StoreGroupPriceConstraint) o;
-                if (other.productStoreGroupId.equals(productStoreGroupId) &&
-                       other.productPriceTypeId.equals(productPriceTypeId) &&
-                       other.currencyUomId.equals(currencyUomId)) {
-                    return true;
+        public int hashCode() {
+            final int prime = 31;
+            int result = 1;
+            result = prime * result + ((currencyUomId == null) ? 0 : currencyUomId.hashCode());
+            result = prime * result + ((productPriceTypeId == null) ? 0 : productPriceTypeId.hashCode());
+            result = prime * result + ((productStoreGroupId == null) ? 0 : productStoreGroupId.hashCode());
+            return result;
+        }
+
+        @Override
+        public boolean equals(Object obj) {
+            if (this == obj) {
+                return true;
+            }
+            if (obj == null) {
+                return false;
+            }
+            if (!(obj instanceof StoreGroupPriceConstraint)) {
+                return false;
+            }
+            StoreGroupPriceConstraint other = (StoreGroupPriceConstraint) obj;
+            if (currencyUomId == null) {
+                if (other.currencyUomId != null) {
+                    return false;
                 }
+            } else if (!currencyUomId.equals(other.currencyUomId)) {
+                return false;
             }
-            return false;
+            if (productPriceTypeId == null) {
+                if (other.productPriceTypeId != null) {
+                    return false;
+                }
+            } else if (!productPriceTypeId.equals(other.productPriceTypeId)) {
+                return false;
+            }
+            if (productStoreGroupId == null) {
+                if (other.productStoreGroupId != null) {
+                    return false;
+                }
+            } else if (!productStoreGroupId.equals(other.productStoreGroupId)) {
+                return false;
+            }
+            return true;
         }
+
     }
 
     @SuppressWarnings("serial")
@@ -1647,33 +1821,51 @@ public class ProductSearch {
         }
 
         @Override
+        public int hashCode() {
+            final int prime = 31;
+            int result = 1;
+            result = prime * result + ((currencyUomId == null) ? 0 : currencyUomId.hashCode());
+            result = prime * result + ((highPrice == null) ? 0 : highPrice.hashCode());
+            result = prime * result + ((lowPrice == null) ? 0 : lowPrice.hashCode());
+            return result;
+        }
+
+        @Override
         public boolean equals(Object obj) {
-            ProductSearchConstraint psc = (ProductSearchConstraint) obj;
-            if (psc instanceof ListPriceRangeConstraint) {
-                ListPriceRangeConstraint that = (ListPriceRangeConstraint) psc;
-                if (this.lowPrice == null) {
-                    if (that.lowPrice != null) {
-                        return false;
-                    }
-                } else {
-                    if (this.lowPrice.compareTo(that.lowPrice) != 0) {
-                        return false;
-                    }
+            if (this == obj) {
+                return true;
+            }
+            if (obj == null) {
+                return false;
+            }
+            if (!(obj instanceof ListPriceRangeConstraint)) {
+                return false;
+            }
+            ListPriceRangeConstraint other = (ListPriceRangeConstraint) obj;
+            if (currencyUomId == null) {
+                if (other.currencyUomId != null) {
+                    return false;
                 }
-                if (this.highPrice == null) {
-                    if (that.highPrice != null) {
-                        return false;
-                    }
-                } else {
-                    if (this.highPrice.compareTo(that.highPrice) != 0) {
-                        return false;
-                    }
+            } else if (!currencyUomId.equals(other.currencyUomId)) {
+                return false;
+            }
+            if (highPrice == null) {
+                if (other.highPrice != null) {
+                    return false;
                 }
-                return true;
-            } else {
+            } else if (!highPrice.equals(other.highPrice)) {
+                return false;
+            }
+            if (lowPrice == null) {
+                if (other.lowPrice != null) {
+                    return false;
+                }
+            } else if (!lowPrice.equals(other.lowPrice)) {
                 return false;
             }
+            return true;
         }
+
     }
 
     @SuppressWarnings("serial")
@@ -1707,24 +1899,35 @@ public class ProductSearch {
         }
 
         @Override
+        public int hashCode() {
+            final int prime = 31;
+            int result = 1;
+            result = prime * result + ((supplierPartyId == null) ? 0 : supplierPartyId.hashCode());
+            return result;
+        }
+
+        @Override
         public boolean equals(Object obj) {
-            ProductSearchConstraint psc = (ProductSearchConstraint) obj;
-            if (psc instanceof SupplierConstraint) {
-                SupplierConstraint that = (SupplierConstraint) psc;
-                if (this.supplierPartyId == null) {
-                    if (that.supplierPartyId != null) {
-                        return false;
-                    }
-                } else {
-                    if (!this.supplierPartyId.equals(that.supplierPartyId)) {
-                        return false;
-                    }
-                }
+            if (this == obj) {
                 return true;
-            } else {
+            }
+            if (obj == null) {
                 return false;
             }
+            if (!(obj instanceof SupplierConstraint)) {
+                return false;
+            }
+            SupplierConstraint other = (SupplierConstraint) obj;
+            if (supplierPartyId == null) {
+                if (other.supplierPartyId != null) {
+                    return false;
+                }
+            } else if (!supplierPartyId.equals(other.supplierPartyId)) {
+                return false;
+            }
+            return true;
         }
+
     }
 
     @SuppressWarnings("serial")
@@ -1749,13 +1952,25 @@ public class ProductSearch {
         }
 
         @Override
+        public int hashCode() {
+            final int prime = 31;
+            int result = 1;
+            result = prime * result;
+            return result;
+        }
+
+        @Override
         public boolean equals(Object obj) {
-            ProductSearchConstraint psc = (ProductSearchConstraint) obj;
-            if (psc instanceof ExcludeVariantsConstraint) {
+            if (this == obj) {
                 return true;
-            } else {
+            }
+            if (obj == null) {
+                return false;
+            }
+            if (!(obj instanceof ExcludeVariantsConstraint)) {
                 return false;
             }
+            return true;
         }
     }
 
@@ -1781,13 +1996,25 @@ public class ProductSearch {
         }
 
         @Override
+        public int hashCode() {
+            final int prime = 31;
+            int result = 1;
+            result = prime * result;
+            return result;
+        }
+
+        @Override
         public boolean equals(Object obj) {
-            ProductSearchConstraint psc = (ProductSearchConstraint) obj;
-            if (psc instanceof AvailabilityDateConstraint) {
+            if (this == obj) {
                 return true;
-            } else {
+            }
+            if (obj == null) {
+                return false;
+            }
+            if (!(obj instanceof AvailabilityDateConstraint)) {
                 return false;
             }
+            return true;
         }
     }
 
@@ -1818,7 +2045,7 @@ public class ProductSearch {
 
                 EntityComparisonOperator<?,?> operator = EntityOperator.EQUALS;
 
-                if (UtilValidate.isNotEmpty(include) && include == Boolean.FALSE) {
+                if (UtilValidate.isNotEmpty(include) && !include) {
                     operator = EntityOperator.NOT_EQUAL;
                 }
 
@@ -1851,7 +2078,7 @@ public class ProductSearch {
 
             StringBuilder msgBuf = new StringBuilder();
 
-            if (UtilValidate.isNotEmpty(include) && include == Boolean.FALSE) {
+            if (UtilValidate.isNotEmpty(include) && !include) {
                 msgBuf.append(UtilProperties.getMessage(resourceCommon, "CommonExclude", locale));
                 msgBuf.append(" ");
             } else {
@@ -1875,13 +2102,25 @@ public class ProductSearch {
         }
 
         @Override
+        public int hashCode() {
+            final int prime = 31;
+            int result = 1;
+            result = prime * result;
+            return result;
+        }
+
+        @Override
         public boolean equals(Object obj) {
-            ProductSearchConstraint psc = (ProductSearchConstraint) obj;
-            if (psc instanceof GoodIdentificationConstraint) {
+            if (this == obj) {
                 return true;
-            } else {
+            }
+            if(obj == null) {
                 return false;
             }
+            if (!(obj instanceof GoodIdentificationConstraint)) {
+                return false;
+            }
+            return true;
         }
     }
 
@@ -1909,24 +2148,43 @@ public class ProductSearch {
         }
 
         @Override
+        public int hashCode() {
+            final int prime = 31;
+            int result = 1;
+            result = prime * result + ((keyword == null) ? 0 : keyword.hashCode());
+            result = prime * result + ((productFieldName == null) ? 0 : productFieldName.hashCode());
+            return result;
+        }
+
+        @Override
         public boolean equals(Object obj) {
-            ProductSearchConstraint psc = (ProductSearchConstraint) obj;
-            if (psc instanceof ProductFieldConstraint) {
-                ProductFieldConstraint that = (ProductFieldConstraint) psc;
-                if (this.keyword == null) {
-                    if (that.keyword != null) {
-                        return false;
-                    }
-                } else {
-                    if (!this.keyword.equals(that.keyword)) {
-                        return false;
-                    }
-                }
+            if (this == obj) {
                 return true;
-            } else {
+            }
+            if (obj == null) {
+                return false;
+            }
+            if (!(obj instanceof ProductFieldConstraint)) {
                 return false;
             }
+            ProductFieldConstraint other = (ProductFieldConstraint) obj;
+            if (keyword == null) {
+                if (other.keyword != null) {
+                    return false;
+                }
+            } else if (!keyword.equals(other.keyword)) {
+                return false;
+            }
+            if (productFieldName == null) {
+                if (other.productFieldName != null) {
+                    return false;
+                }
+            } else if (!productFieldName.equals(other.productFieldName)) {
+                return false;
+            }
+            return true;
         }
+
     }
 
     // ======================================================================

Modified: ofbiz/ofbiz-framework/trunk/applications/product/src/main/java/org/apache/ofbiz/product/product/ProductSearchSession.java
URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/applications/product/src/main/java/org/apache/ofbiz/product/product/ProductSearchSession.java?rev=1817650&r1=1817649&r2=1817650&view=diff
==============================================================================
--- ofbiz/ofbiz-framework/trunk/applications/product/src/main/java/org/apache/ofbiz/product/product/ProductSearchSession.java (original)
+++ ofbiz/ofbiz-framework/trunk/applications/product/src/main/java/org/apache/ofbiz/product/product/ProductSearchSession.java Sat Dec  9 18:08:26 2017
@@ -29,6 +29,7 @@ import java.util.LinkedList;
 import java.util.List;
 import java.util.Locale;
 import java.util.Map;
+import java.util.Map.Entry;
 import java.util.Set;
 
 import javax.servlet.ServletContext;
@@ -472,7 +473,6 @@ public class ProductSearchSession {
     public static String searchGetSortOrderString(boolean detailed, HttpServletRequest request) {
         Locale locale = UtilHttp.getLocale(request);
         ResultSortOrder resultSortOrder = ProductSearchOptions.getResultSortOrder(request);
-        if (resultSortOrder == null) return "";
         return resultSortOrder.prettyPrintSortOrder(detailed, locale);
     }
 
@@ -633,7 +633,8 @@ public class ProductSearchSession {
             }
         }
 
-        for (String parameterName: parameters.keySet()) {
+        for (Entry<String, Object> entry : parameters.entrySet()) {
+            String parameterName = entry.getKey();
             if (parameterName.startsWith("SEARCH_FEAT") && !parameterName.startsWith("SEARCH_FEAT_EXC")) {
                 String productFeatureId = (String) parameters.get(parameterName);
                 if (UtilValidate.isNotEmpty(productFeatureId)) {
@@ -744,12 +745,12 @@ public class ProductSearchSession {
         if (UtilValidate.isNotEmpty(parameters.get("LIST_PRICE_RANGE")) || UtilValidate.isNotEmpty(parameters.get("S_LPR"))) {
             String listPriceRangeStr = (String) parameters.get("LIST_PRICE_RANGE");
             if (UtilValidate.isEmpty(listPriceRangeStr)) listPriceRangeStr = (String) parameters.get("S_LPR");
-            int underscoreIndex = listPriceRangeStr.indexOf("_");
+            int underscoreIndex = listPriceRangeStr.indexOf('_');
             String listPriceLowStr;
             String listPriceHighStr;
             if (underscoreIndex >= 0) {
-                listPriceLowStr = listPriceRangeStr.substring(0, listPriceRangeStr.indexOf("_"));
-                listPriceHighStr = listPriceRangeStr.substring(listPriceRangeStr.indexOf("_") + 1);
+                listPriceLowStr = listPriceRangeStr.substring(0, listPriceRangeStr.indexOf('_'));
+                listPriceHighStr = listPriceRangeStr.substring(listPriceRangeStr.indexOf('_') + 1);
             } else {
                 // no underscore: assume it is a low range with no high range, ie the ending underscore was left off
                 listPriceLowStr = listPriceRangeStr;
@@ -894,9 +895,7 @@ public class ProductSearchSession {
         }
 
         String pag = productSearchOptions.getPaging();
-        if (paging != null) {
-            paging = pag;
-        }
+        paging = pag;
 
         lowIndex = viewIndex * viewSize;
         highIndex = (viewIndex + 1) * viewSize;
@@ -916,7 +915,7 @@ public class ProductSearchSession {
 
             int addOnTopTotalListSize = 0;
             int addOnTopListSize = 0;
-            List<GenericValue> addOnTopProductCategoryMembers = new LinkedList<GenericValue>();
+            List<GenericValue> addOnTopProductCategoryMembers;
             if (UtilValidate.isNotEmpty(addOnTopProdCategoryId)) {
                 // always include the members of the addOnTopProdCategoryId
                 Timestamp now = UtilDateTime.nowTimestamp();
@@ -1161,25 +1160,23 @@ public class ProductSearchSession {
             searchParamString.append(topProductCategoryId);
         }
         ResultSortOrder resultSortOrder = productSearchOptions.getResultSortOrder();
-        if (resultSortOrder != null) {
-            if (resultSortOrder instanceof ProductSearch.SortKeywordRelevancy) {
-                searchParamString.append("&amp;S_O=SKR");
-            } else if (resultSortOrder instanceof ProductSearch.SortProductField) {
-                ProductSearch.SortProductField spf = (ProductSearch.SortProductField) resultSortOrder;
-                searchParamString.append("&amp;S_O=SPF:");
-                searchParamString.append(spf.fieldName);
-            } else if (resultSortOrder instanceof ProductSearch.SortProductPrice) {
-                ProductSearch.SortProductPrice spp = (ProductSearch.SortProductPrice) resultSortOrder;
-                searchParamString.append("&amp;S_O=SPP:");
-                searchParamString.append(spp.productPriceTypeId);
-            } else if (resultSortOrder instanceof ProductSearch.SortProductFeature) {
-                ProductSearch.SortProductFeature spf = (ProductSearch.SortProductFeature) resultSortOrder;
-                searchParamString.append("&amp;S_O=SPFT:");
-                searchParamString.append(spf.productFeatureTypeId);
-            }
-            searchParamString.append("&amp;S_A=");
-            searchParamString.append(resultSortOrder.isAscending() ? "Y" : "N");
+        if (resultSortOrder instanceof ProductSearch.SortKeywordRelevancy) {
+            searchParamString.append("&amp;S_O=SKR");
+        } else if (resultSortOrder instanceof ProductSearch.SortProductField) {
+            ProductSearch.SortProductField spf = (ProductSearch.SortProductField) resultSortOrder;
+            searchParamString.append("&amp;S_O=SPF:");
+            searchParamString.append(spf.fieldName);
+        } else if (resultSortOrder instanceof ProductSearch.SortProductPrice) {
+            ProductSearch.SortProductPrice spp = (ProductSearch.SortProductPrice) resultSortOrder;
+            searchParamString.append("&amp;S_O=SPP:");
+            searchParamString.append(spp.productPriceTypeId);
+        } else if (resultSortOrder instanceof ProductSearch.SortProductFeature) {
+            ProductSearch.SortProductFeature spf = (ProductSearch.SortProductFeature) resultSortOrder;
+            searchParamString.append("&amp;S_O=SPFT:");
+            searchParamString.append(spf.productFeatureTypeId);
         }
+        searchParamString.append("&amp;S_A=");
+        searchParamString.append(resultSortOrder.isAscending() ? "Y" : "N");
 
         return searchParamString.toString();
     }

Modified: ofbiz/ofbiz-framework/trunk/applications/product/src/main/java/org/apache/ofbiz/product/product/ProductServices.java
URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/applications/product/src/main/java/org/apache/ofbiz/product/product/ProductServices.java?rev=1817650&r1=1817649&r2=1817650&view=diff
==============================================================================
--- ofbiz/ofbiz-framework/trunk/applications/product/src/main/java/org/apache/ofbiz/product/product/ProductServices.java (original)
+++ ofbiz/ofbiz-framework/trunk/applications/product/src/main/java/org/apache/ofbiz/product/product/ProductServices.java Sat Dec  9 18:08:26 2017
@@ -34,6 +34,7 @@ import java.util.LinkedList;
 import java.util.List;
 import java.util.Locale;
 import java.util.Map;
+import java.util.Map.Entry;
 import java.util.Set;
 
 import org.apache.ofbiz.base.util.Debug;
@@ -420,9 +421,9 @@ public class ProductServices {
         boolean checkViewAllow = (cvaBool == null ? false : cvaBool);
         String prodCatalogId = (String) context.get("prodCatalogId");
         Boolean bidirectional = (Boolean) context.get("bidirectional");
-        bidirectional = bidirectional == null ? false : bidirectional;
+        bidirectional = bidirectional == null ? Boolean.FALSE : bidirectional;
         Boolean sortDescending = (Boolean) context.get("sortDescending");
-        sortDescending = sortDescending == null ? false : sortDescending;
+        sortDescending = sortDescending == null ? Boolean.FALSE : sortDescending;
 
         if (productId == null && productIdTo == null) {
             errMsg = UtilProperties.getMessage(resourceError,
@@ -597,7 +598,8 @@ public class ProductServices {
         }
 
         // loop through the keysets and get the sub-groups
-        for (String key: group.keySet()) {
+        for (Entry<String, Object> entry : group.entrySet()) {
+            String key = entry.getKey();
             List<String> itemList = UtilGenerics.checkList(group.get(key));
 
             if (UtilValidate.isNotEmpty(itemList)) {
@@ -961,12 +963,12 @@ public class ProductServices {
             String fileLocation = filenameExpander.expandString(UtilMisc.toMap("location", "products", "id", id, "viewtype", viewType, "sizetype", "original"));
             String filePathPrefix = "";
             String filenameToUse = fileLocation;
-            if (fileLocation.lastIndexOf("/") != -1) {
-                filePathPrefix = fileLocation.substring(0, fileLocation.lastIndexOf("/") + 1); // adding 1 to include the trailing slash
-                filenameToUse = fileLocation.substring(fileLocation.lastIndexOf("/") + 1);
+            if (fileLocation.lastIndexOf('/') != -1) {
+                filePathPrefix = fileLocation.substring(0, fileLocation.lastIndexOf('/') + 1); // adding 1 to include the trailing slash
+                filenameToUse = fileLocation.substring(fileLocation.lastIndexOf('/') + 1);
             }
 
-            List<GenericValue> fileExtension = new LinkedList<GenericValue>();
+            List<GenericValue> fileExtension;
             try {
                 fileExtension = EntityQuery.use(delegator).from("FileExtension").where("mimeTypeId", (String) context.get("_uploadedFile_contentType")).queryList();
             } catch (GenericEntityException e) {
@@ -997,7 +999,12 @@ public class ProductServices {
                     try {
                         File[] files = targetDir.listFiles();
                         for (File file : files) {
-                            if (file.isFile()) file.delete();
+                            if (file.isFile()) {
+                                if (!file.delete()) {
+                                    Debug.logError("File : " + file.getName() + ", couldn't be deleted", module);
+                                }
+                            }
+
                         }
                     } catch (SecurityException e) {
                         Debug.logError(e,module);
@@ -1007,7 +1014,11 @@ public class ProductServices {
                     try {
                         File[] files = targetDir.listFiles();
                         for (File file : files) {
-                            if (file.isFile() && file.getName().startsWith(productId + "_View_" + viewNumber)) file.delete();
+                            if (file.isFile() && file.getName().startsWith(productId + "_View_" + viewNumber)) {
+                                if (!file.delete()) {
+                                    Debug.logError("File : " + file.getName() + ", couldn't be deleted", module);
+                                }
+                            }
                         }
                     } catch (SecurityException e) {
                         Debug.logError(e,module);
@@ -1065,9 +1076,9 @@ public class ProductServices {
                 imageUrl = imageUrlMap.get(sizeType);
                 if( UtilValidate.isNotEmpty(imageUrl)) {
                     try {
-                        GenericValue productContentType = EntityQuery.use(delegator).from("ProductContentType").where("productContentTypeId", "XTRA_IMG_" + viewNumber + "_" + sizeType.toUpperCase()).cache().queryOne();
+                        GenericValue productContentType = EntityQuery.use(delegator).from("ProductContentType").where("productContentTypeId", "XTRA_IMG_" + viewNumber + "_" + sizeType.toUpperCase(Locale.getDefault())).cache().queryOne();
                         if (UtilValidate.isNotEmpty(productContentType)) {
-                            result = addImageResource(dispatcher, delegator, context, imageUrl, "XTRA_IMG_" + viewNumber + "_" + sizeType.toUpperCase());
+                            result = addImageResource(dispatcher, delegator, context, imageUrl, "XTRA_IMG_" + viewNumber + "_" + sizeType.toUpperCase(Locale.getDefault()));
                             if( ServiceUtil.isError(result)) {
                                 Debug.logError(ServiceUtil.getErrorMessage(result), module);
                                 return result;
@@ -1132,7 +1143,7 @@ public class ProductServices {
                     } else {
                         dataResourceCtx.put("dataResourceTypeId", "SHORT_TEXT");
                         dataResourceCtx.put("mimeTypeId", "text/html");
-                        Map<String, Object> dataResourceResult = new HashMap<String, Object>();
+                        Map<String, Object> dataResourceResult;
                         try {
                             dataResourceResult = dispatcher.runSync("createDataResource", dataResourceCtx);
                         } catch (GenericServiceException e) {
@@ -1163,7 +1174,7 @@ public class ProductServices {
             } else {
                 dataResourceCtx.put("dataResourceTypeId", "SHORT_TEXT");
                 dataResourceCtx.put("mimeTypeId", "text/html");
-                Map<String, Object> dataResourceResult = new HashMap<String, Object>();
+                Map<String, Object> dataResourceResult;
                 try {
                     dataResourceResult = dispatcher.runSync("createDataResource", dataResourceCtx);
                 } catch (GenericServiceException e) {
@@ -1175,7 +1186,7 @@ public class ProductServices {
                 contentCtx.put("contentTypeId", "DOCUMENT");
                 contentCtx.put("dataResourceId", dataResourceResult.get("dataResourceId"));
                 contentCtx.put("userLogin", userLogin);
-                Map<String, Object> contentResult = new HashMap<String, Object>();
+                Map<String, Object> contentResult;
                 try {
                     contentResult = dispatcher.runSync("createContent", contentCtx);
                 } catch (GenericServiceException e) {
@@ -1260,12 +1271,13 @@ public class ProductServices {
             String fileLocation = filenameExpander.expandString(UtilMisc.toMap("location", "products", "type", "promo", "id", id));
             String filePathPrefix = "";
             String filenameToUse = fileLocation;
-            if (fileLocation.lastIndexOf("/") != -1) {
-                filePathPrefix = fileLocation.substring(0, fileLocation.lastIndexOf("/") + 1); // adding 1 to include the trailing slash
-                filenameToUse = fileLocation.substring(fileLocation.lastIndexOf("/") + 1);
+            if (fileLocation.lastIndexOf('/') != -1) {
+                filePathPrefix = fileLocation.substring(0, fileLocation.lastIndexOf('/') + 1); // adding 1 to include
+                                                                                               // the trailing slash
+                filenameToUse = fileLocation.substring(fileLocation.lastIndexOf('/') + 1);
             }
 
-            List<GenericValue> fileExtension = new LinkedList<GenericValue>();
+            List<GenericValue> fileExtension;
             try {
                 fileExtension = EntityQuery.use(delegator).from("FileExtension").where("mimeTypeId", EntityOperator.EQUALS, (String) context.get("_uploadedFile_contentType")).queryList();
             } catch (GenericEntityException e) {
@@ -1280,7 +1292,9 @@ public class ProductServices {
 
             File makeResourceDirectory  = new File(imageServerPath + "/" + filePathPrefix);
             if (!makeResourceDirectory.exists()) {
-                makeResourceDirectory.mkdirs();
+                if (!makeResourceDirectory.mkdirs()) {
+                    Debug.logError("Directory :" + makeResourceDirectory.getPath() + ", couldn't be created", module);
+                }
             }
 
             File file = new File(imageServerPath + "/" + filePathPrefix + filenameToUse);
@@ -1343,7 +1357,7 @@ public class ProductServices {
                         } else {
                             dataResourceCtx.put("dataResourceTypeId", "SHORT_TEXT");
                             dataResourceCtx.put("mimeTypeId", "text/html");
-                            Map<String, Object> dataResourceResult = new HashMap<String, Object>();
+                            Map<String, Object> dataResourceResult;
                             try {
                                 dataResourceResult = dispatcher.runSync("createDataResource", dataResourceCtx);
                             } catch (GenericServiceException e) {
@@ -1374,7 +1388,7 @@ public class ProductServices {
                 } else {
                     dataResourceCtx.put("dataResourceTypeId", "SHORT_TEXT");
                     dataResourceCtx.put("mimeTypeId", "text/html");
-                    Map<String, Object> dataResourceResult = new HashMap<String, Object>();
+                    Map<String, Object> dataResourceResult;
                     try {
                         dataResourceResult = dispatcher.runSync("createDataResource", dataResourceCtx);
                     } catch (GenericServiceException e) {
@@ -1386,7 +1400,7 @@ public class ProductServices {
                     contentCtx.put("contentTypeId", "DOCUMENT");
                     contentCtx.put("dataResourceId", dataResourceResult.get("dataResourceId"));
                     contentCtx.put("userLogin", userLogin);
-                    Map<String, Object> contentResult = new HashMap<String, Object>();
+                    Map<String, Object> contentResult;
                     try {
                         contentResult = dispatcher.runSync("createContent", contentCtx);
                     } catch (GenericServiceException e) {