Skip to content

Commit

Permalink
use ArrayUtils.contains instead of List.contains to improve performance
Browse files Browse the repository at this point in the history
  • Loading branch information
cnsgithub committed Apr 18, 2018
1 parent 8697b3a commit 38c663b
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 14 deletions.
23 changes: 10 additions & 13 deletions src/main/java/org/primefaces/renderkit/SelectRenderer.java
Expand Up @@ -15,12 +15,7 @@
*/
package org.primefaces.renderkit;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.RandomAccess;
import org.primefaces.util.ArrayUtils;

import javax.el.ELException;
import javax.el.ExpressionFactory;
Expand All @@ -37,8 +32,12 @@
import javax.faces.model.SelectItem;
import javax.faces.model.SelectItemGroup;
import java.lang.reflect.Array;
import java.util.Arrays;
import java.util.Collections;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.RandomAccess;

public class SelectRenderer extends InputRenderer {

Expand Down Expand Up @@ -300,21 +299,19 @@ protected String[] restoreAndCheckDisabledSelectItems(FacesContext context, UIIn
throws FacesException {
List<String> restoredSubmittedValues = new ArrayList<String>();
String msg = "Disabled select item has been submitted";
List<Object> oldVals = oldValues == null ? Collections.emptyList() : Arrays.asList(oldValues);
List<String> newSubmittedValsStr = newSubmittedValues == null ? Collections.<String>emptyList() : Arrays.asList(newSubmittedValues);
for (SelectItem selectItem : getSelectItems(context, component)) {
String selectItemValStr = getOptionAsString(context, component, component.getConverter(), selectItem.getValue());
if (selectItem.isDisabled()) {
if (newSubmittedValsStr.contains(selectItemValStr) && !oldVals.contains(selectItemValStr)) {
if (ArrayUtils.contains(newSubmittedValues, selectItemValStr) && !ArrayUtils.contains(oldValues, selectItemValStr)) {
// disabled select item has been selected
throw new FacesException(msg);
}
if (oldVals.contains(selectItemValStr)) {
if (ArrayUtils.contains(oldValues, selectItemValStr)) {
restoredSubmittedValues.add(selectItemValStr);
}
}
else {
if (newSubmittedValsStr.contains(selectItemValStr)) {
if (ArrayUtils.contains(newSubmittedValues, selectItemValStr)) {
restoredSubmittedValues.add(selectItemValStr);
}
}
Expand Down
16 changes: 15 additions & 1 deletion src/main/java/org/primefaces/util/ArrayUtils.java
Expand Up @@ -20,7 +20,21 @@ public class ArrayUtils {
private ArrayUtils() {
}

public static boolean contains(String[] array, String searchedText) {
public static boolean contains(Object[] array, Object object) {
if (array == null || array.length == 0) {
return false;
}

for (int i = 0; i < array.length; i++) {
if (array[i].equals(object)) {
return true;
}
}

return false;
}

public static boolean containsIgnoreCase(String[] array, String searchedText) {

if (array == null || array.length == 0) {
return false;
Expand Down

0 comments on commit 38c663b

Please sign in to comment.