You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by pm...@apache.org on 2007/04/27 19:57:31 UTC

svn commit: r533179 - in /myfaces/core/branches/jsf12/impl/src/main/java/org/apache/myfaces: config/impl/digester/DigesterFacesConfigUnmarshallerImpl.java config/impl/digester/elements/ResourceBundle.java el/unified/resolver/ResourceBundleResolver.java

Author: pmcmahan
Date: Fri Apr 27 10:57:29 2007
New Revision: 533179

URL: http://svn.apache.org/viewvc?view=rev&rev=533179
Log:
MYFACES-1607 flesh out implementation of ResourceBundleResolver.getFeatureDescriptors()

Modified:
    myfaces/core/branches/jsf12/impl/src/main/java/org/apache/myfaces/config/impl/digester/DigesterFacesConfigUnmarshallerImpl.java
    myfaces/core/branches/jsf12/impl/src/main/java/org/apache/myfaces/config/impl/digester/elements/ResourceBundle.java
    myfaces/core/branches/jsf12/impl/src/main/java/org/apache/myfaces/el/unified/resolver/ResourceBundleResolver.java

Modified: myfaces/core/branches/jsf12/impl/src/main/java/org/apache/myfaces/config/impl/digester/DigesterFacesConfigUnmarshallerImpl.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/jsf12/impl/src/main/java/org/apache/myfaces/config/impl/digester/DigesterFacesConfigUnmarshallerImpl.java?view=diff&rev=533179&r1=533178&r2=533179
==============================================================================
--- myfaces/core/branches/jsf12/impl/src/main/java/org/apache/myfaces/config/impl/digester/DigesterFacesConfigUnmarshallerImpl.java (original)
+++ myfaces/core/branches/jsf12/impl/src/main/java/org/apache/myfaces/config/impl/digester/DigesterFacesConfigUnmarshallerImpl.java Fri Apr 27 10:57:29 2007
@@ -68,6 +68,7 @@
         digester.addSetNext("faces-config/application/resource-bundle", "addResourceBundle");
         digester.addCallMethod("faces-config/application/resource-bundle/base-name", "setBaseName", 0);
         digester.addCallMethod("faces-config/application/resource-bundle/var", "setVar", 0);
+        digester.addCallMethod("faces-config/application/resource-bundle/display-name", "setDisplayName", 0);
         // 1.2 specific end
         
         digester.addObjectCreate("faces-config/factory", Factory.class);

Modified: myfaces/core/branches/jsf12/impl/src/main/java/org/apache/myfaces/config/impl/digester/elements/ResourceBundle.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/jsf12/impl/src/main/java/org/apache/myfaces/config/impl/digester/elements/ResourceBundle.java?view=diff&rev=533179&r1=533178&r2=533179
==============================================================================
--- myfaces/core/branches/jsf12/impl/src/main/java/org/apache/myfaces/config/impl/digester/elements/ResourceBundle.java (original)
+++ myfaces/core/branches/jsf12/impl/src/main/java/org/apache/myfaces/config/impl/digester/elements/ResourceBundle.java Fri Apr 27 10:57:29 2007
@@ -23,6 +23,7 @@
 {
     private String baseName;
     private String var;
+    private String displayName;
 
     /**
      * @return the baseName
@@ -56,5 +57,13 @@
     public void setVar(String var)
     {
         this.var = var;
+    }
+
+    public String getDisplayName() {
+        return displayName;
+    }
+
+    public void setDisplayName(String displayName) {
+        this.displayName = displayName;
     }
 }

Modified: myfaces/core/branches/jsf12/impl/src/main/java/org/apache/myfaces/el/unified/resolver/ResourceBundleResolver.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/jsf12/impl/src/main/java/org/apache/myfaces/el/unified/resolver/ResourceBundleResolver.java?view=diff&rev=533179&r1=533178&r2=533179
==============================================================================
--- myfaces/core/branches/jsf12/impl/src/main/java/org/apache/myfaces/el/unified/resolver/ResourceBundleResolver.java (original)
+++ myfaces/core/branches/jsf12/impl/src/main/java/org/apache/myfaces/el/unified/resolver/ResourceBundleResolver.java Fri Apr 27 10:57:29 2007
@@ -17,7 +17,9 @@
 package org.apache.myfaces.el.unified.resolver;
 
 import java.beans.FeatureDescriptor;
+import java.util.ArrayList;
 import java.util.Iterator;
+import java.util.Map;
 import java.util.ResourceBundle;
 import javax.el.ELContext;
 import javax.el.ELException;
@@ -27,6 +29,8 @@
 import javax.faces.application.Application;
 import javax.faces.context.FacesContext;
 
+import org.apache.myfaces.config.RuntimeConfig;
+
 /**
  * See JSF 1.2 spec section 5.6.1.4
  *
@@ -34,6 +38,12 @@
  */
 public class ResourceBundleResolver extends ELResolver {
     
+    /**
+     * RuntimeConfig is instantiated once per servlet and never changes--we can
+     * safely cache it
+     */
+    private RuntimeConfig runtimeConfig;
+    
     /** Creates a new instance of ResourceBundleResolver */
     public ResourceBundleResolver() {
     }
@@ -107,9 +117,15 @@
        
         if (base != null) return null;
         
-        // TODO fix this?
-        // throw new UnsupportedOperationException("Can't implement without a list of all resource bundles??????");
-        return null; // noop
+        ArrayList<FeatureDescriptor> descriptors = new ArrayList<FeatureDescriptor>();
+        
+        Map<String, org.apache.myfaces.config.impl.digester.elements.ResourceBundle> resourceBundles = runtimeConfig(context).getResourceBundles();
+        
+        for (org.apache.myfaces.config.impl.digester.elements.ResourceBundle resourceBundle : resourceBundles.values()) {
+            descriptors.add(makeDescriptor(resourceBundle));
+        }
+        
+        return descriptors.iterator();
     }
 
     public Class<?> getCommonPropertyType(ELContext context, Object base) {
@@ -134,4 +150,27 @@
         return null;
     }
     
+    protected RuntimeConfig runtimeConfig(ELContext context) {
+        FacesContext facesContext = facesContext(context);
+        
+        // application-level singleton - we can safely cache this
+        if (this.runtimeConfig == null) {
+            this.runtimeConfig = RuntimeConfig.getCurrentInstance(facesContext.getExternalContext());
+        }
+        
+        return runtimeConfig;
+    }
+
+    private FeatureDescriptor makeDescriptor(org.apache.myfaces.config.impl.digester.elements.ResourceBundle bundle) {
+        FeatureDescriptor fd = new FeatureDescriptor();
+        fd.setValue(ELResolver.RESOLVABLE_AT_DESIGN_TIME, Boolean.TRUE);
+        fd.setName(bundle.getVar());
+        fd.setDisplayName(bundle.getDisplayName());
+        fd.setValue(ELResolver.TYPE, ResourceBundle.class);
+        fd.setShortDescription("");
+        fd.setExpert(false);
+        fd.setHidden(false);
+        fd.setPreferred(true);
+        return fd;
+    }
 }