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

svn commit: r815798 - /myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/main/java/org/apache/myfaces/scripting/jsf2/annotation/

Author: werpu
Date: Wed Sep 16 14:23:11 2009
New Revision: 815798

URL: http://svn.apache.org/viewvc?rev=815798&view=rev
Log:
https://issues.apache.org/jira/browse/EXTSCRIPT-1
ongoing works on the annotation listeners so that we can register annotated beans
at a lazy scan into the runnint application

Modified:
    myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/main/java/org/apache/myfaces/scripting/jsf2/annotation/BeanImplementationListener.java
    myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/main/java/org/apache/myfaces/scripting/jsf2/annotation/BehaviorImplementationListener.java
    myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/main/java/org/apache/myfaces/scripting/jsf2/annotation/ComponentImplementationListener.java
    myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/main/java/org/apache/myfaces/scripting/jsf2/annotation/ConverterImplementationListener.java
    myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/main/java/org/apache/myfaces/scripting/jsf2/annotation/RendererImplementationListener.java
    myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/main/java/org/apache/myfaces/scripting/jsf2/annotation/SourceAnnotationScanner.java
    myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/main/java/org/apache/myfaces/scripting/jsf2/annotation/SourceClassAnnotationListener.java
    myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/main/java/org/apache/myfaces/scripting/jsf2/annotation/ValidatorImplementationListener.java

Modified: myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/main/java/org/apache/myfaces/scripting/jsf2/annotation/BeanImplementationListener.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/main/java/org/apache/myfaces/scripting/jsf2/annotation/BeanImplementationListener.java?rev=815798&r1=815797&r2=815798&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/main/java/org/apache/myfaces/scripting/jsf2/annotation/BeanImplementationListener.java (original)
+++ myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/main/java/org/apache/myfaces/scripting/jsf2/annotation/BeanImplementationListener.java Wed Sep 16 14:23:11 2009
@@ -18,21 +18,71 @@
  */
 package org.apache.myfaces.scripting.jsf2.annotation;
 
+import org.apache.myfaces.config.RuntimeConfig;
+import org.apache.myfaces.config.impl.digester.elements.ManagedBean;
+
+import javax.faces.context.FacesContext;
 import java.util.Map;
+import java.util.HashMap;
+import java.util.Collections;
+
+import com.thoughtworks.qdox.model.JavaClass;
 
 /**
  * @author Werner Punz (latest modification by $Author$)
  * @version $Revision$ $Date$
+ *          <p/>
+ *          bean implementation listener which registers new java sources
+ *          into the runtime config, note this class is not thread safe
+ *          it is only allowed to be called from a single thread
  */
 
 public class BeanImplementationListener implements SourceClassAnnotationListener {
 
-    
+    static Map<String, ManagedBean> _alreadyRegistered = new HashMap<String, ManagedBean>();
 
     public boolean supportsAnnotation(Class annotation) {
         return annotation.equals(javax.faces.bean.ManagedBean.class);
     }
 
-    public void register(String className, String annotationName, Map<String, String> params) {
+
+    public boolean hasToReregister(String name, JavaClass clazz) {
+        return !_alreadyRegistered.containsKey(name);
+    }
+
+
+    /**
+     * reregistration strategy:
+     * <p/>
+     * managed properties have changed
+     * or class has changed
+     * or class does not exist at all
+     *
+     * @param clazz
+     * @param annotationName
+     * @param params
+     */
+    public void register(JavaClass clazz, String annotationName, Map<String, String> params) {
+        RuntimeConfig config = getRuntimeConfig();
+
+        String beanName = params.get("name");
+        if (!hasToReregister(beanName, clazz)) {
+            return;
+        }
+
+        ManagedBean mbean = new ManagedBean();
+        mbean.setBeanClass(clazz.getName());
+        mbean.setName(beanName);
+
+        _alreadyRegistered.put(beanName, mbean);
+
+        config.addManagedBean(beanName, mbean);
+    }
+
+
+    protected RuntimeConfig getRuntimeConfig() {
+        final FacesContext facesContext = FacesContext.getCurrentInstance();
+        return RuntimeConfig.getCurrentInstance(facesContext.getExternalContext());
     }
+
 }

Modified: myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/main/java/org/apache/myfaces/scripting/jsf2/annotation/BehaviorImplementationListener.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/main/java/org/apache/myfaces/scripting/jsf2/annotation/BehaviorImplementationListener.java?rev=815798&r1=815797&r2=815798&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/main/java/org/apache/myfaces/scripting/jsf2/annotation/BehaviorImplementationListener.java (original)
+++ myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/main/java/org/apache/myfaces/scripting/jsf2/annotation/BehaviorImplementationListener.java Wed Sep 16 14:23:11 2009
@@ -18,6 +18,8 @@
  */
 package org.apache.myfaces.scripting.jsf2.annotation;
 
+import com.thoughtworks.qdox.model.JavaClass;
+
 import java.util.Map;
 
 /**
@@ -30,7 +32,7 @@
         return false;  //To change body of implemented methods use File | Settings | File Templates.
     }
 
-    public void register(String className, String annotationName, Map<String, String> params) {
+    public void register(JavaClass clazz, String annotationName, Map<String, String> params) {
         //To change body of implemented methods use File | Settings | File Templates.
     }
 }

Modified: myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/main/java/org/apache/myfaces/scripting/jsf2/annotation/ComponentImplementationListener.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/main/java/org/apache/myfaces/scripting/jsf2/annotation/ComponentImplementationListener.java?rev=815798&r1=815797&r2=815798&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/main/java/org/apache/myfaces/scripting/jsf2/annotation/ComponentImplementationListener.java (original)
+++ myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/main/java/org/apache/myfaces/scripting/jsf2/annotation/ComponentImplementationListener.java Wed Sep 16 14:23:11 2009
@@ -18,6 +18,8 @@
  */
 package org.apache.myfaces.scripting.jsf2.annotation;
 
+import com.thoughtworks.qdox.model.JavaClass;
+
 import java.util.Map;
 
 /**
@@ -30,7 +32,7 @@
         return false;  //To change body of implemented methods use File | Settings | File Templates.
     }
 
-    public void register(String className, String annotationName, Map<String, String> params) {
+    public void register(JavaClass clazz, String annotationName, Map<String, String> params) {
          //To change body of implemented methods use File | Settings | File Templates.
     }
 }

Modified: myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/main/java/org/apache/myfaces/scripting/jsf2/annotation/ConverterImplementationListener.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/main/java/org/apache/myfaces/scripting/jsf2/annotation/ConverterImplementationListener.java?rev=815798&r1=815797&r2=815798&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/main/java/org/apache/myfaces/scripting/jsf2/annotation/ConverterImplementationListener.java (original)
+++ myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/main/java/org/apache/myfaces/scripting/jsf2/annotation/ConverterImplementationListener.java Wed Sep 16 14:23:11 2009
@@ -18,6 +18,8 @@
  */
 package org.apache.myfaces.scripting.jsf2.annotation;
 
+import com.thoughtworks.qdox.model.JavaClass;
+
 import java.util.Map;
 
 /**
@@ -31,7 +33,7 @@
         return false;  //To change body of implemented methods use File | Settings | File Templates.
     }
 
-    public void register(String className, String annotationName, Map<String, String> params) {
+    public void register(JavaClass clazz, String annotationName, Map<String, String> params) {
         //To change body of implemented methods use File | Settings | File Templates.
     }
 

Modified: myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/main/java/org/apache/myfaces/scripting/jsf2/annotation/RendererImplementationListener.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/main/java/org/apache/myfaces/scripting/jsf2/annotation/RendererImplementationListener.java?rev=815798&r1=815797&r2=815798&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/main/java/org/apache/myfaces/scripting/jsf2/annotation/RendererImplementationListener.java (original)
+++ myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/main/java/org/apache/myfaces/scripting/jsf2/annotation/RendererImplementationListener.java Wed Sep 16 14:23:11 2009
@@ -18,6 +18,8 @@
  */
 package org.apache.myfaces.scripting.jsf2.annotation;
 
+import com.thoughtworks.qdox.model.JavaClass;
+
 import java.util.Map;
 
 /**
@@ -30,7 +32,6 @@
         return false;  //To change body of implemented methods use File | Settings | File Templates.
     }
 
-    public void register(String className, String annotationName, Map<String, String> params) {
-         //To change body of implemented methods use File | Settings | File Templates.
+    public void register(JavaClass clazz, String annotationName, Map<String, String> params) {
     }
 }

Modified: myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/main/java/org/apache/myfaces/scripting/jsf2/annotation/SourceAnnotationScanner.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/main/java/org/apache/myfaces/scripting/jsf2/annotation/SourceAnnotationScanner.java?rev=815798&r1=815797&r2=815798&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/main/java/org/apache/myfaces/scripting/jsf2/annotation/SourceAnnotationScanner.java (original)
+++ myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/main/java/org/apache/myfaces/scripting/jsf2/annotation/SourceAnnotationScanner.java Wed Sep 16 14:23:11 2009
@@ -28,6 +28,10 @@
 import java.util.LinkedList;
 import java.io.File;
 
+import org.apache.myfaces.config.RuntimeConfig;
+
+import javax.faces.context.FacesContext;
+
 /**
  * @author Werner Punz (latest modification by $Author$)
  * @version $Revision$ $Date$
@@ -51,6 +55,7 @@
 
     }
 
+
     private void initSourcePaths(String... sourcePaths) {
         for (String sourcePath : sourcePaths) {
             File sourcePathFile = new File(sourcePath);
@@ -85,7 +90,7 @@
 
                     for (SourceClassAnnotationListener listener : _listeners) {
                         if (listener.supportsAnnotation(ann.getClass())) {
-                            listener.register(clazz.getName(), ann.getType().getValue(), ann.getPropertyMap());
+                            listener.register(clazz, ann.getType().getValue(), ann.getPropertyMap());
                         }
                     }
                 }

Modified: myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/main/java/org/apache/myfaces/scripting/jsf2/annotation/SourceClassAnnotationListener.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/main/java/org/apache/myfaces/scripting/jsf2/annotation/SourceClassAnnotationListener.java?rev=815798&r1=815797&r2=815798&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/main/java/org/apache/myfaces/scripting/jsf2/annotation/SourceClassAnnotationListener.java (original)
+++ myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/main/java/org/apache/myfaces/scripting/jsf2/annotation/SourceClassAnnotationListener.java Wed Sep 16 14:23:11 2009
@@ -18,6 +18,8 @@
  */
 package org.apache.myfaces.scripting.jsf2.annotation;
 
+import com.thoughtworks.qdox.model.JavaClass;
+
 import java.util.Map;
 
 /**
@@ -32,7 +34,7 @@
 
     public boolean supportsAnnotation(Class annotation);
 
-    public void register(String className, String annotationName, Map<String, String> params);
+    public void register(JavaClass clazz, String annotationName, Map<String, String> params);
 
 
 }

Modified: myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/main/java/org/apache/myfaces/scripting/jsf2/annotation/ValidatorImplementationListener.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/main/java/org/apache/myfaces/scripting/jsf2/annotation/ValidatorImplementationListener.java?rev=815798&r1=815797&r2=815798&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/main/java/org/apache/myfaces/scripting/jsf2/annotation/ValidatorImplementationListener.java (original)
+++ myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/main/java/org/apache/myfaces/scripting/jsf2/annotation/ValidatorImplementationListener.java Wed Sep 16 14:23:11 2009
@@ -18,6 +18,8 @@
  */
 package org.apache.myfaces.scripting.jsf2.annotation;
 
+import com.thoughtworks.qdox.model.JavaClass;
+
 import java.util.Map;
 
 /**
@@ -30,7 +32,7 @@
         return false;  //To change body of implemented methods use File | Settings | File Templates.
     }
 
-    public void register(String className, String annotationName, Map<String, String> params) {
+    public void register(JavaClass clazz, String annotationName, Map<String, String> params) {
         //To change body of implemented methods use File | Settings | File Templates.
     }
 }