ensure initial value is set when using DataProvider. CLK-745

git-svn-id: https://svn.apache.org/repos/asf/click/trunk/click@1053753 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/framework/src/org/apache/click/control/Select.java b/framework/src/org/apache/click/control/Select.java
index f297089..cad1977 100644
--- a/framework/src/org/apache/click/control/Select.java
+++ b/framework/src/org/apache/click/control/Select.java
@@ -871,6 +871,9 @@
      */
     public void setOptionList(List options) {
         optionList = options;
+        if (optionList != null) {
+            setInitialValue();
+        }
     }
 
     /**
diff --git a/framework/test/org/apache/click/control/SelectTest.java b/framework/test/org/apache/click/control/SelectTest.java
index a6db38e..239cd7c 100644
--- a/framework/test/org/apache/click/control/SelectTest.java
+++ b/framework/test/org/apache/click/control/SelectTest.java
@@ -23,6 +23,7 @@
 import java.util.List;
 import junit.framework.TestCase;
 import org.apache.click.MockContext;
+import org.apache.click.dataprovider.DataProvider;
 
 /**
  * Test Select behavior.
@@ -149,4 +150,37 @@
         // restored
         select.getSelectedValues().add("male");
     }
+
+    /**
+     *
+     */
+    public void testSetInitialValue() {
+        // Setup Select
+        Select select  = new Select("gender");
+        select.add(new Option("male"));
+        select.add(new Option("female"));
+
+        String expectedValue = "male";
+
+        // Test initial value
+        assertEquals(expectedValue, select.getValue());
+        select.setValue(null);
+        select.setOptionList(null);
+
+        select.setDataProvider(new DataProvider() {
+
+            public List getData() {
+                List list = new ArrayList();
+                list.add(new Option("male"));
+                list.add(new Option("female"));
+                return list;
+            }
+        });
+
+        // Trigger dataProvider
+        select.getOptionList();
+
+        // Test initial value
+        assertEquals(expectedValue, select.getValue());
+    }
 }