https://issues.apache.org/jira/browse/EXTSCRIPT-97
fixed
git-svn-id: https://svn.apache.org/repos/asf/myfaces/extensions/scripting/trunk@926524 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/core/myfaces2-extensions/src/main/java/org/apache/myfaces/scripting/jsf2/annotation/BeanImplementationListener.java b/core/myfaces2-extensions/src/main/java/org/apache/myfaces/scripting/jsf2/annotation/BeanImplementationListener.java
index e5bf607..d34c23d 100644
--- a/core/myfaces2-extensions/src/main/java/org/apache/myfaces/scripting/jsf2/annotation/BeanImplementationListener.java
+++ b/core/myfaces2-extensions/src/main/java/org/apache/myfaces/scripting/jsf2/annotation/BeanImplementationListener.java
@@ -18,6 +18,7 @@
*/
package org.apache.myfaces.scripting.jsf2.annotation;
+import org.apache.commons.lang.StringUtils;
import org.apache.myfaces.config.RuntimeConfig;
import org.apache.myfaces.config.element.NavigationRule;
import org.apache.myfaces.config.impl.digester.elements.ManagedBean;
@@ -54,7 +55,6 @@
return annotation.equals(javax.faces.bean.ManagedBean.class);
}
-
public void register(Class clazz, java.lang.annotation.Annotation ann) {
String annotationName = ann.getClass().getName();
@@ -63,6 +63,9 @@
javax.faces.bean.ManagedBean annCasted = (javax.faces.bean.ManagedBean) ann;
String beanName = annCasted.name();
+ if (StringUtils.isBlank(beanName)) {
+ beanName = normalizeName(clazz.getName());
+ }
beanName = beanName.replaceAll("\"", "");
//we need to reregister for every bean due to possible managed prop
@@ -105,13 +108,13 @@
private void handleManagedpropertiesCompiled(ManagedBean mbean, Field[] fields) {
for (Field field : fields) {
if (log.isLoggable(Level.FINEST)) {
- log.log(Level.FINEST," Scanning field '" + field.getName() + "'");
+ log.log(Level.FINEST, " Scanning field '" + field.getName() + "'");
}
javax.faces.bean.ManagedProperty property = (javax.faces.bean.ManagedProperty) field
.getAnnotation(javax.faces.bean.ManagedProperty.class);
if (property != null) {
if (log.isLoggable(Level.FINE)) {
- log.log(Level.FINE," Field '" + field.getName()
+ log.log(Level.FINE, " Field '" + field.getName()
+ "' has a @ManagedProperty annotation");
}
@@ -156,6 +159,19 @@
return mbean == null || !mbean.getManagedBeanClassName().equals(clazz.getName());
}
+ /**
+ * name normalizer for automated name mapping
+ * (aka if no name attribute is given in the annotation)
+ *
+ * @param className the classname to be mapped (can be with package=
+ * @return the normalized jsf bean name
+ */
+ private String normalizeName(String className) {
+ String name = className.substring(className.lastIndexOf(".") + 1);
+
+ return name.substring(0, 1).toLowerCase() + name.substring(1);
+ }
+
@SuppressWarnings("unchecked")
public void purge(String className) {
RuntimeConfig config = getRuntimeConfig();
diff --git a/examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/instantbean/HelloBean.java b/examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/instantbean/HelloBean.java
index e9572bb..cfeb03e 100644
--- a/examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/instantbean/HelloBean.java
+++ b/examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/instantbean/HelloBean.java
@@ -27,7 +27,7 @@
* @version $Revision$ $Date$
*/
-@ManagedBean(name="hello")
+@ManagedBean
@RequestScoped
public class HelloBean {
private String hello = "Hello world from an instant bean";
@@ -37,7 +37,7 @@
}
public String getHello() {
- return hello + addedMethod();
+ return hello;
}
public void setHello(String hello) {
diff --git a/examples/myfaces20-example/src/main/webapp/helloWorld2.xhtml b/examples/myfaces20-example/src/main/webapp/helloWorld2.xhtml
index bcffbb8..ce00e66 100644
--- a/examples/myfaces20-example/src/main/webapp/helloWorld2.xhtml
+++ b/examples/myfaces20-example/src/main/webapp/helloWorld2.xhtml
@@ -10,7 +10,7 @@
<ui:composition template="/template.xhtml">
<ui:define name="body">
<h1 style="color: yellow;">
- <h:outputText value="#{hello.hello}" />
+ <h:outputText value="#{helloBean.hello}" />
</h1>
</ui:define>
</ui:composition>