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/25 10:22:43 UTC

svn commit: r818765 - in /myfaces/extensions/scripting/trunk/core: core-java6/src/main/java/org/apache/myfaces/scripting/loaders/java/jsr199/ core/src/main/java/ core/src/main/java/org/apache/myfaces/scripting/api/ core/src/main/java/org/apache/myfaces...

Author: werpu
Date: Fri Sep 25 08:22:42 2009
New Revision: 818765

URL: http://svn.apache.org/viewvc?rev=818765&view=rev
Log:
overhaul of the reflection code for the next big features
https://issues.apache.org/jira/browse/EXTSCRIPT-18
ongoing works in the compiler facade and annotation part to get dynamic annotation handling in currently annotations are only scanned at startup

Added:
    myfaces/extensions/scripting/trunk/core/core/src/main/java/ideas.txt   (with props)
    myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/main/java/org/apache/myfaces/scripting/jsf2/annotation/JavaAnnotationScanner.java   (contents, props changed)
      - copied, changed from r818764, myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/main/java/org/apache/myfaces/scripting/jsf2/annotation/JavaSourceAnnotationScanner.java
Removed:
    myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/api/AnnotationScannerHolder.java
    myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/main/java/org/apache/myfaces/scripting/jsf2/annotation/JavaSourceAnnotationScanner.java
Modified:
    myfaces/extensions/scripting/trunk/core/core-java6/src/main/java/org/apache/myfaces/scripting/loaders/java/jsr199/CompilerFacade.java
    myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/api/AnnotationScanListener.java
    myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/api/AnnotationScanner.java
    myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/api/DynamicCompiler.java
    myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/util/ProxyUtils.java
    myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/loaders/java/JavaScriptingWeaver.java
    myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/loaders/java/jdk5/CompilerFacade.java
    myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/refresh/FileChangedDaemon.java
    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/ConverterImplementationListener.java
    myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/main/java/org/apache/myfaces/scripting/jsf2/annotation/MapEntityAnnotationScanner.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/SingleEntityAnnotationListener.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/core-java6/src/main/java/org/apache/myfaces/scripting/loaders/java/jsr199/CompilerFacade.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/core/core-java6/src/main/java/org/apache/myfaces/scripting/loaders/java/jsr199/CompilerFacade.java?rev=818765&r1=818764&r2=818765&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/core/core-java6/src/main/java/org/apache/myfaces/scripting/loaders/java/jsr199/CompilerFacade.java (original)
+++ myfaces/extensions/scripting/trunk/core/core-java6/src/main/java/org/apache/myfaces/scripting/loaders/java/jsr199/CompilerFacade.java Fri Sep 25 08:22:42 2009
@@ -57,7 +57,6 @@
     //windows file locking, but since this is not for production we can live with it
     public Class compileFile(String sourceRoot, String classPath, String relativeFileName) throws ClassNotFoundException {
 
-        
         Iterable<? extends JavaFileObject> fileObjects = fileManager.getJavaFileObjects(sourceRoot + FILE_SEPARATOR + relativeFileName);
         fileManager.getTempDir().setLastModified(0);
         String[] options = new String[]{"-cp", fileManager.getClassPath(), "-d", fileManager.getTempDir().getAbsolutePath(), "-sourcepath", sourceRoot, "-g"};
@@ -84,6 +83,11 @@
         return null;
     }
 
+
+    public void compileAllFiles(String sourceRoot, String classPath) throws ClassNotFoundException {
+        //TODO implement this
+    }
+
     private void handleDiagnostics(DiagnosticCollector<JavaFileObject> diagnosticCollector) throws ClassNotFoundException {
         if (diagnosticCollector.getDiagnostics().size() > 0) {
             Log log = LogFactory.getLog(this.getClass());

Added: myfaces/extensions/scripting/trunk/core/core/src/main/java/ideas.txt
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/core/core/src/main/java/ideas.txt?rev=818765&view=auto
==============================================================================
--- myfaces/extensions/scripting/trunk/core/core/src/main/java/ideas.txt (added)
+++ myfaces/extensions/scripting/trunk/core/core/src/main/java/ideas.txt Fri Sep 25 08:22:42 2009
@@ -0,0 +1,47 @@
+Managed property reloading
+
+Problem, managed beans only reload currently at their own level.
+They should reload the entire dependency graph wherever needed.
+
+We face two problems first we can have deep dependency graphs
+Secondly multiple beans can reference the same bean and also
+can have long running scopes.
+
+We cannot for now solve all problems related to dependency graph reloading
+but we can solve most.
+
+First deep graphs.
+
+The copy properties has to be extende, first we have to walk through the entire dependency
+graph and in case of managed properties we have to reload the instances in case
+of having a manged property. (Simply fetch the bean instead of
+simply copying the old one)
+
+Long running beans, this is not really possible to resolve for now because
+we do not have back references to the old beans, programmers
+must use either a manual load for long running beans referencing others, or simply
+live with it.
+
+
+We probably in the long run can introduce a scoped proxy doing it, but then
+we have to work over interfaces again, which is contra productive.
+
+Solution for now we probably have to allow a scoped proxy system within jsf
+not sure how to solve this fully yet.
+
+
+We have to deal in two stages with the problem
+
+first make a forward referencing reloading mechanism for the current state
+secondly deal with parents as soon as we can determine them by
+simply touching the corresponding parent source files, or make a full graph and then even mark
+the precompiled parents as cascadable
+
+
+
+
+
+
+
+
+

Propchange: myfaces/extensions/scripting/trunk/core/core/src/main/java/ideas.txt
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: myfaces/extensions/scripting/trunk/core/core/src/main/java/ideas.txt
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Modified: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/api/AnnotationScanListener.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/api/AnnotationScanListener.java?rev=818765&r1=818764&r2=818765&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/api/AnnotationScanListener.java (original)
+++ myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/api/AnnotationScanListener.java Fri Sep 25 08:22:42 2009
@@ -20,6 +20,7 @@
 
 
 import java.util.Map;
+import java.lang.annotation.Annotation;
 
 /**
  * @author Werner Punz (latest modification by $Author$)
@@ -35,6 +36,6 @@
 
     public void registerSource(Object clazz, String annotationName, Map<String, Object> params);
 
-    public void register(Class clazz, String annotationName, Map<String, Object> params);
+    public void register(Class clazz, Annotation annotationName);
 
 }

Modified: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/api/AnnotationScanner.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/api/AnnotationScanner.java?rev=818765&r1=818764&r2=818765&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/api/AnnotationScanner.java (original)
+++ myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/api/AnnotationScanner.java Fri Sep 25 08:22:42 2009
@@ -3,18 +3,16 @@
 /**
  * @author Werner Punz (latest modification by $Author$)
  * @version $Revision$ $Date$
- *
- * Generic annotation scanner interface
- * which is a helper to plug in external annotation scanners
- * as adapters for the annotation handling
- * we cannot deal with annotations directly in the core
- * because we are bound by the jsf 1.2 lower threshold limit
- * hence this indirection
- *
+ *          <p/>
+ *          Generic annotation scanner interface
+ *          which is a helper to plug in external annotation scanners
+ *          as adapters for the annotation handling
+ *          we cannot deal with annotations directly in the core
+ *          because we are bound by the jsf 1.2 lower threshold limit
+ *          hence this indirection
  */
 public interface AnnotationScanner {
 
-
     public void scanPaths();
 
     public void clearListeners();
@@ -22,4 +20,7 @@
     public void addListener(AnnotationScanListener listener);
 
     public void addScanPath(String scanPath);
+
+    public void scanClass(Class clazz);
+
 }

Modified: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/api/DynamicCompiler.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/api/DynamicCompiler.java?rev=818765&r1=818764&r2=818765&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/api/DynamicCompiler.java (original)
+++ myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/api/DynamicCompiler.java Fri Sep 25 08:22:42 2009
@@ -40,5 +40,8 @@
      * @throws ClassNotFoundException in case of the class neither could be found
      *                                in our sources nor could be referenced in binary form from the classloader
      */
-    Class compileFile(String sourceRoot, String classPath, String filePath) throws ClassNotFoundException;
+    public Class compileFile(String sourceRoot, String classPath, String filePath) throws ClassNotFoundException;
+
+    public void compileAllFiles(String sourceRoot, String classPath) throws ClassNotFoundException;
+
 }

Modified: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/util/ProxyUtils.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/util/ProxyUtils.java?rev=818765&r1=818764&r2=818765&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/util/ProxyUtils.java (original)
+++ myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/core/util/ProxyUtils.java Fri Sep 25 08:22:42 2009
@@ -24,6 +24,7 @@
 import org.apache.myfaces.scripting.api.BaseWeaver;
 import org.apache.myfaces.scripting.core.MethodLevelReloadingHandler;
 import org.apache.myfaces.scripting.core.DummyWeaver;
+import org.apache.myfaces.scripting.refresh.FileChangedDaemon;
 import org.apache.commons.logging.LogFactory;
 import org.apache.commons.logging.Log;
 
@@ -33,7 +34,7 @@
 /**
  * A set of proxy utils called
  * by the various subsystems
- * 
+ *
  * @author Werner Punz
  */
 public class ProxyUtils {
@@ -43,12 +44,11 @@
      * to avoid too many calls into the
      * context classloading hierarchy
      * this should speed things up a little bit.
-     *
+     * <p/>
      * Note we could work with this with static
      * objects as well but since we also have to work with context
      * reloading we probably are safer with filters
      * a reference in the context and a threadLocal variable
-     * 
      */
     static ThreadLocal _weaverHolder = new ThreadLocal();
 
@@ -62,18 +62,21 @@
 
     public static void setWeaver(Object weaver) {
         _weaverHolder.set(weaver);
+        if (FileChangedDaemon.getInstance().getWeavers() == null) {
+            FileChangedDaemon.getInstance().setWeavers((ScriptingWeaver) weaver);
+        }
     }
 
     public static boolean isScriptingEnabled() {
-       return _weaverHolder.get() != null;
+        return _weaverHolder.get() != null;
     }
 
     public static ScriptingWeaver getWeaver() {
         ScriptingWeaver weaver = (ScriptingWeaver) _weaverHolder.get();
-        if(weaver == null) {
+        if (weaver == null) {
             Log log = LogFactory.getLog(ProxyUtils.class);
             log.warn("Scripting Weaver is not set. Disabling script reloading subsystem. Make sure you have the scripting servlet filter enabled in your web.xml");
-            _weaverHolder.set(new DummyWeaver());    
+            _weaverHolder.set(new DummyWeaver());
         }
         return (ScriptingWeaver) _weaverHolder.get();
     }
@@ -82,12 +85,12 @@
      * we create a proxy to an existing object
      * which does reloading of the internal class
      * on method level
-     *
+     * <p/>
      * this works only on classes which implement contractual interfaces
      * it cannot work on things like the navigation handler
      * which rely on base classes
-     * 
-     * @param o the source object to be proxied
+     *
+     * @param o            the source object to be proxied
      * @param theInterface the proxying interface
      * @return a proxied reloading object of type theInterface
      */
@@ -115,7 +118,7 @@
 
     /**
      * unmapping of a proxied object
-     * 
+     *
      * @param o the proxied object
      * @return the unproxied object
      */
@@ -133,9 +136,7 @@
 
 
     public static boolean isDynamic(Class clazz) {
-       return getWeaver().isDynamic(clazz);
+        return getWeaver().isDynamic(clazz);
     }
 
-
-
 }

Modified: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/loaders/java/JavaScriptingWeaver.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/loaders/java/JavaScriptingWeaver.java?rev=818765&r1=818764&r2=818765&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/loaders/java/JavaScriptingWeaver.java (original)
+++ myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/loaders/java/JavaScriptingWeaver.java Fri Sep 25 08:22:42 2009
@@ -143,6 +143,8 @@
             refreshReloadingMetaData(sourceRoot, file, currentClassFile, retVal, ScriptingConst.ENGINE_TYPE_JAVA);
         }
 
+        
+
         return retVal;
     }
 

Modified: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/loaders/java/jdk5/CompilerFacade.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/loaders/java/jdk5/CompilerFacade.java?rev=818765&r1=818764&r2=818765&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/loaders/java/jdk5/CompilerFacade.java (original)
+++ myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/loaders/java/jdk5/CompilerFacade.java Fri Sep 25 08:22:42 2009
@@ -83,6 +83,10 @@
         return null;
     }
 
+    public void compileAllFiles(String sourceRoot, String classPath) throws ClassNotFoundException {
+        //TODO implement this
+    }
+
     private void displayMessages(CompilationResult result) {
         for (CompilationResult.CompilationMessage error : result.getErrors()) {
             log.error(error.getLineNumber()+"-"+error.getMessage());

Modified: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/refresh/FileChangedDaemon.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/refresh/FileChangedDaemon.java?rev=818765&r1=818764&r2=818765&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/refresh/FileChangedDaemon.java (original)
+++ myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/refresh/FileChangedDaemon.java Fri Sep 25 08:22:42 2009
@@ -21,6 +21,7 @@
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.myfaces.scripting.api.ScriptingConst;
+import org.apache.myfaces.scripting.api.ScriptingWeaver;
 
 import java.io.File;
 import java.util.Collections;
@@ -51,6 +52,8 @@
     Map<String, ReloadingMetadata> classMap = Collections.synchronizedMap(new HashMap<String, ReloadingMetadata>());
     boolean running = false;
     Log log = LogFactory.getLog(FileChangedDaemon.class);
+    ScriptingWeaver _weavers = null;
+
 
 
     public static synchronized FileChangedDaemon getInstance() {
@@ -111,5 +114,12 @@
         this.classMap = classMap;
     }
 
+    public ScriptingWeaver getWeavers() {
+        return _weavers;
+    }
+
+    public void setWeavers(ScriptingWeaver weavers) {
+        _weavers = weavers;
+    }
 }
 

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=818765&r1=818764&r2=818765&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 Fri Sep 25 08:22:42 2009
@@ -24,6 +24,7 @@
 import org.apache.myfaces.config.RuntimeConfig;
 import org.apache.myfaces.config.impl.digester.elements.ManagedBean;
 import org.apache.myfaces.scripting.api.AnnotationScanListener;
+import org.apache.myfaces.scripting.core.util.ReflectUtil;
 
 import javax.faces.bean.*;
 import java.lang.reflect.Field;
@@ -40,20 +41,22 @@
  */
 
 public class BeanImplementationListener extends BaseAnnotationScanListener implements AnnotationScanListener {
-    private static final String SCOPE_SESSION = "session";
-    private static final String SCOPE_APPLICATION = "application";
-    private static final String SCOPE_VIEW = "view";
-    private static final String SCOPE_NONE = "none";
-    private static final String SCOPE_CUSTOM = "custom";
+
+    private static final String SCOPE_SESSION       = "session";
+    private static final String SCOPE_APPLICATION   = "application";
+    private static final String SCOPE_VIEW          = "view";
+    private static final String SCOPE_NONE          = "none";
+    private static final String SCOPE_CUSTOM        = "custom";
 
     public boolean supportsAnnotation(String annotation) {
         return annotation.equals(javax.faces.bean.ManagedBean.class.getName());
     }
 
+    public void register(Class clazz, java.lang.annotation.Annotation ann) {
+        String annotationName = ann.getClass().getName();
 
-    public void register(Class clazz, String annotationName, Map<String, Object> params) {
         RuntimeConfig config = getRuntimeConfig();
-        String beanName = (String) params.get("name");
+        String beanName = (String) ReflectUtil.executeMethod(ann, "getName");
         beanName = beanName.replaceAll("\"", "");
         if (!hasToReregister(beanName, clazz)) {
             return;
@@ -67,6 +70,7 @@
 
         _alreadyRegistered.put(beanName, mbean);
         config.addManagedBean(beanName, mbean);
+
     }
 
     private void resolveScope(Class clazz, ManagedBean mbean) {
@@ -86,7 +90,6 @@
         mbean.setScope(scope);
     }
 
-
     /**
      * reregistration strategy:
      * <p/>
@@ -152,7 +155,6 @@
         }
     }
 
-
     private void handleManagedpropertiesCompiled(ManagedBean mbean, Field[] fields) {
         for (Field field : fields) {
             if (log.isTraceEnabled()) {
@@ -181,7 +183,6 @@
         }
     }
 
-
     private void handleManagedproperties(ManagedBean mbean, JavaField[] fields) {
         for (JavaField field : fields) {
             Annotation[] annotations = field.getAnnotations();
@@ -211,7 +212,6 @@
         }
     }
 
-
     /**
      * <p>Return an array of all <code>Field</code>s reflecting declared
      * fields in this class, or in any superclass other than

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=818765&r1=818764&r2=818765&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 Fri Sep 25 08:22:42 2009
@@ -34,7 +34,6 @@
     private static final String PAR_VALUE = "value";
     private static final String PAR_DEFAULT = "forClass";
 
-
     class AnnotationEntry {
         String value;
         Class forClass;
@@ -71,6 +70,10 @@
         }
     }
 
+    public ConverterImplementationListener() {
+        super();
+    }
+
     @Override
     protected void addEntity(Class clazz, Map<String, Object> params) {
         String value = (String) params.get(PAR_VALUE);

Copied: myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/main/java/org/apache/myfaces/scripting/jsf2/annotation/JavaAnnotationScanner.java (from r818764, myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/main/java/org/apache/myfaces/scripting/jsf2/annotation/JavaSourceAnnotationScanner.java)
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/main/java/org/apache/myfaces/scripting/jsf2/annotation/JavaAnnotationScanner.java?p2=myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/main/java/org/apache/myfaces/scripting/jsf2/annotation/JavaAnnotationScanner.java&p1=myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/main/java/org/apache/myfaces/scripting/jsf2/annotation/JavaSourceAnnotationScanner.java&r1=818764&r2=818765&rev=818765&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/main/java/org/apache/myfaces/scripting/jsf2/annotation/JavaSourceAnnotationScanner.java (original)
+++ myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/main/java/org/apache/myfaces/scripting/jsf2/annotation/JavaAnnotationScanner.java Fri Sep 25 08:22:42 2009
@@ -24,6 +24,7 @@
 import com.thoughtworks.qdox.model.JavaSource;
 import org.apache.myfaces.scripting.api.AnnotationScanListener;
 import org.apache.myfaces.scripting.api.AnnotationScanner;
+import org.vafer.dependency.Clazz;
 
 import java.io.File;
 import java.util.LinkedList;
@@ -39,22 +40,19 @@
  *          wherever possible
  */
 
-public class JavaSourceAnnotationScanner extends BaseAnnotationScanListener implements AnnotationScanner {
+public class JavaAnnotationScanner extends BaseAnnotationScanListener implements AnnotationScanner {
 
     List<AnnotationScanListener> _listeners = new LinkedList<AnnotationScanListener>();
     JavaDocBuilder _builder = new JavaDocBuilder();
 
-    public JavaSourceAnnotationScanner() {
+    public JavaAnnotationScanner() {
         initDefaultListeners();
     }
 
-
-    public JavaSourceAnnotationScanner(String... sourcePaths) {
+    public JavaAnnotationScanner(String... sourcePaths) {
 
         initSourcePaths(sourcePaths);
-
         initDefaultListeners();
-
     }
 
     public void addScanPath(String sourcePath) {
@@ -64,10 +62,22 @@
         }
     }
 
+    public void scanClass(Class clazz) {
+        java.lang.annotation.Annotation[] anns = clazz.getAnnotations();
+        for (java.lang.annotation.Annotation ann : anns) {
+
+            for (AnnotationScanListener listener : _listeners) {
+                if (listener.supportsAnnotation(ann.getClass().getName())) {
+                    listener.register(clazz, ann);
+                }
+            }
+        }
+    }
+
 
     private void initSourcePaths(String... sourcePaths) {
         for (String sourcePath : sourcePaths) {
-           addScanPath(sourcePath);
+            addScanPath(sourcePath);
         }
     }
 
@@ -87,7 +97,6 @@
     public void scanPaths() {
         JavaSource[] sources = _builder.getSources();
         for (JavaSource source : sources) {
-            String packageName = source.getPackage().toString();
             JavaClass[] classes = source.getClasses();
             for (JavaClass clazz : classes) {
                 Annotation[] anns = clazz.getAnnotations();

Propchange: myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/main/java/org/apache/myfaces/scripting/jsf2/annotation/JavaAnnotationScanner.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/main/java/org/apache/myfaces/scripting/jsf2/annotation/JavaAnnotationScanner.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Modified: myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/main/java/org/apache/myfaces/scripting/jsf2/annotation/MapEntityAnnotationScanner.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/main/java/org/apache/myfaces/scripting/jsf2/annotation/MapEntityAnnotationScanner.java?rev=818765&r1=818764&r2=818765&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/main/java/org/apache/myfaces/scripting/jsf2/annotation/MapEntityAnnotationScanner.java (original)
+++ myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/main/java/org/apache/myfaces/scripting/jsf2/annotation/MapEntityAnnotationScanner.java Fri Sep 25 08:22:42 2009
@@ -20,8 +20,12 @@
 
 import com.thoughtworks.qdox.model.JavaClass;
 import org.apache.myfaces.scripting.api.AnnotationScanListener;
+import org.apache.myfaces.scripting.core.util.ReflectUtil;
 
+import javax.faces.component.behavior.FacesBehavior;
 import java.util.Map;
+import java.util.HashMap;
+import java.lang.annotation.Annotation;
 
 /**
  * @author Werner Punz (latest modification by $Author$)
@@ -30,17 +34,31 @@
 
 public abstract class MapEntityAnnotationScanner extends BaseAnnotationScanListener implements AnnotationScanListener {
 
+    String[] _annotationParms = null;
+
+    public MapEntityAnnotationScanner(String... annotationParms) {
+        _annotationParms = annotationParms;
+    }
+
 
     public void registerSource(Object sourceClass, String annotationName, Map<String, Object> params) {
         JavaClass clazz = (JavaClass) sourceClass;
         if (hasToReregister(params, clazz)) {
             addEntity(clazz, params);
         }
+
     }
 
-    public void register(Class clazz, String annotationName, Map<String, Object> params) {
-        if (hasToReregister(params, clazz)) {
-            addEntity(clazz, params);
+    public void register(Class clazz, Annotation annotation) {
+
+        Map<String, Object> parms = new HashMap<String, Object>(_annotationParms.length);
+
+        for (String accessor : _annotationParms) {
+            ReflectUtil.fastExecuteMethod(annotation, accessor, new Object[0]);
+        }
+
+        if (hasToReregister(parms, clazz)) {
+            addEntity(clazz, parms);
         }
     }
 
@@ -49,7 +67,6 @@
 
     protected abstract void addEntity(JavaClass clazz, Map<String, Object> params);
 
-
     protected abstract boolean hasToReregister(Map params, Class clazz);
 
     /**

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=818765&r1=818764&r2=818765&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 Fri Sep 25 08:22:42 2009
@@ -38,6 +38,11 @@
     private static final String PAR_RENDERERTYPE = "rendererType";
     private static final String PAR_RENDERKITID = "renderKitId";
 
+    public RendererImplementationListener() {
+        super(PAR_FAMILY, PAR_RENDERERTYPE, PAR_RENDERKITID);
+    }
+
+
     class AnnotationEntry {
         String componentFamily;
         String rendererType;
@@ -128,12 +133,11 @@
 
     @Override
     protected void addEntity(JavaClass clazz, Map<String, Object> params) {
-        
+
         //TODO map this into a compile time thing, we have to compile our source
         //class referenced and then we can process here
         //not possible at source scan time :-(
 
-
     }
 
     @Override

Modified: myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/main/java/org/apache/myfaces/scripting/jsf2/annotation/SingleEntityAnnotationListener.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/main/java/org/apache/myfaces/scripting/jsf2/annotation/SingleEntityAnnotationListener.java?rev=818765&r1=818764&r2=818765&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/main/java/org/apache/myfaces/scripting/jsf2/annotation/SingleEntityAnnotationListener.java (original)
+++ myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/main/java/org/apache/myfaces/scripting/jsf2/annotation/SingleEntityAnnotationListener.java Fri Sep 25 08:22:42 2009
@@ -20,8 +20,10 @@
 
 import com.thoughtworks.qdox.model.JavaClass;
 import org.apache.myfaces.scripting.api.AnnotationScanListener;
+import org.apache.myfaces.scripting.core.util.ReflectUtil;
 
 import java.util.Map;
+import java.lang.annotation.Annotation;
 
 /**
  * @author Werner Punz (latest modification by $Author$)
@@ -39,8 +41,10 @@
         }
     }
 
-    public void register(Class clazz, String annotationName, Map<String, Object> params) {
-        String val = (String) params.get(_entityParamValue);
+    public void register(Class clazz, Annotation annotation) {
+
+
+        String val = (String) ReflectUtil.executeMethod(annotation, _entityParamValue);
         if (hasToReregister(val, clazz)) {
             addEntity(clazz, val);
         }

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=818765&r1=818764&r2=818765&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 Fri Sep 25 08:22:42 2009
@@ -33,6 +33,10 @@
     private static final String PAR_VALUE = "value";
     private static final String PAR_DEFAULT = "default";
 
+    public ValidatorImplementationListener() {
+        super(PAR_VALUE, PAR_DEFAULT);
+    }
+
     class AnnotationEntry {
         String value;
         Boolean theDefault;
@@ -71,8 +75,8 @@
 
 
     public boolean supportsAnnotation(String annotation) {
-         return annotation.equals(FacesValidator.class.getName());
-     }
+        return annotation.equals(FacesValidator.class.getName());
+    }
 
 
     @Override