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;
+ }
}