You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by lo...@apache.org on 2010/04/23 23:10:59 UTC

svn commit: r937522 - /myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUISelectItem.java

Author: lofwyr
Date: Fri Apr 23 21:10:58 2010
New Revision: 937522

URL: http://svn.apache.org/viewvc?rev=937522&view=rev
Log:
TOBAGO-877: Better support of typed literals in <tc:selectItem> and <f:selectItem>

Added:
    myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUISelectItem.java

Added: myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUISelectItem.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUISelectItem.java?rev=937522&view=auto
==============================================================================
--- myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUISelectItem.java (added)
+++ myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUISelectItem.java Fri Apr 23 21:10:58 2010
@@ -0,0 +1,54 @@
+package org.apache.myfaces.tobago.internal.component;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.myfaces.tobago.component.OnComponentPopulated;
+import org.apache.myfaces.tobago.util.ComponentUtils;
+
+import javax.faces.component.UISelectItem;
+import javax.faces.context.FacesContext;
+
+public class AbstractUISelectItem extends UISelectItem implements OnComponentPopulated {
+
+  private static final Log LOG = LogFactory.getLog(AbstractUISelectItem.class);
+
+  private boolean itemValueLiteral;
+
+  public void onComponentPopulated(FacesContext facesContext) {
+    if (itemValueLiteral) {
+      Object converted = ComponentUtils.getConvertedValue(
+          FacesContext.getCurrentInstance(), (javax.faces.component.UIInput) getParent(), (String)getItemValue());
+      super.setItemValue(converted);
+    }
+  }
+
+  @Override
+  public void setItemValue(Object itemValue) {
+    if (itemValue instanceof String) {
+      itemValueLiteral = true;
+    } else if (itemValue == null) {
+      // ignore
+    } else {
+      LOG.warn("Unexpected type of literal for attribute 'itemValue': "
+          + "type=" + itemValue.getClass().getName() + " value='" + itemValue + "'.");
+    }
+    super.setItemValue(itemValue);
+  }
+}