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>