You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by ma...@apache.org on 2009/04/16 09:23:19 UTC

svn commit: r765488 - in /myfaces/trinidad/branches/1.2.11.2-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/facelets: LocalePropertyTagRule.java TrinidadConverterHandler.java

Author: matzew
Date: Thu Apr 16 07:23:19 2009
New Revision: 765488

URL: http://svn.apache.org/viewvc?rev=765488&view=rev
Log:
TRINIDAD-1454 - Facelets: setting locale attribute fails on tr:convertNumber

Thanks to Max Starets for the patch

Added:
    myfaces/trinidad/branches/1.2.11.2-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/facelets/LocalePropertyTagRule.java
Modified:
    myfaces/trinidad/branches/1.2.11.2-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/facelets/TrinidadConverterHandler.java

Added: myfaces/trinidad/branches/1.2.11.2-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/facelets/LocalePropertyTagRule.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/1.2.11.2-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/facelets/LocalePropertyTagRule.java?rev=765488&view=auto
==============================================================================
--- myfaces/trinidad/branches/1.2.11.2-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/facelets/LocalePropertyTagRule.java (added)
+++ myfaces/trinidad/branches/1.2.11.2-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/facelets/LocalePropertyTagRule.java Thu Apr 16 07:23:19 2009
@@ -0,0 +1,94 @@
+/*
+ *  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.
+ */
+package org.apache.myfaces.trinidadinternal.facelets;
+
+import com.sun.facelets.FaceletContext;
+import com.sun.facelets.tag.MetaRule;
+import com.sun.facelets.tag.Metadata;
+import com.sun.facelets.tag.MetadataTarget;
+import com.sun.facelets.tag.TagAttribute;
+
+import com.sun.facelets.tag.TagAttributeException;
+
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+
+import java.util.Locale;
+
+
+class LocalePropertyTagRule extends MetaRule
+{
+  static LocalePropertyTagRule Instance = new LocalePropertyTagRule();
+  
+  private static class LiteralPropertyMetadata extends Metadata
+  {
+    public LiteralPropertyMetadata(Method method, TagAttribute attribute)
+    {
+      _method = method;
+      _attribute = attribute;
+    }
+    
+    public void applyMetadata(FaceletContext ctx, Object instance)
+    {
+      if (_params == null)
+      {
+        Locale loc = new Locale(_attribute.getValue(ctx));        
+        _params = new Object[]{loc};
+      }
+      try
+      {
+        _method.invoke(instance, _params);
+      }
+      catch (InvocationTargetException e)
+      {
+        throw new TagAttributeException(_attribute, e.getCause());
+      }
+      catch (Exception e)
+      {
+        throw new TagAttributeException(_attribute, e);
+      }
+    }
+    
+    private final Method       _method;
+    private final TagAttribute _attribute;
+    private       Object[]     _params;
+  }
+  
+  public Metadata applyRule(String name, TagAttribute attribute,
+                            MetadataTarget meta)
+  {
+    if (meta.getPropertyType(name) == _LOCALE_TYPE && attribute.isLiteral())
+    {
+      Method m = meta.getWriteMethod(name);
+      
+      // if the property is writable
+      if (m != null)
+      {
+        return new LiteralPropertyMetadata(m, attribute);
+      }
+    }
+    
+    return null;
+  }
+  
+
+  
+  static private final Class<? extends Locale> _LOCALE_TYPE = Locale.class;  
+  
+}

Modified: myfaces/trinidad/branches/1.2.11.2-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/facelets/TrinidadConverterHandler.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/1.2.11.2-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/facelets/TrinidadConverterHandler.java?rev=765488&r1=765487&r2=765488&view=diff
==============================================================================
--- myfaces/trinidad/branches/1.2.11.2-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/facelets/TrinidadConverterHandler.java (original)
+++ myfaces/trinidad/branches/1.2.11.2-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/facelets/TrinidadConverterHandler.java Thu Apr 16 07:23:19 2009
@@ -36,6 +36,7 @@
     MetaRuleset m = super.createMetaRuleset(type);
     m.addRule(StringArrayPropertyTagRule.Instance);
     m.addRule(ValueExpressionTagRule.Instance);
+    m.addRule(LocalePropertyTagRule.Instance);
     return m;
   }
 }