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 15:17:13 UTC

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

Author: werpu
Date: Wed Sep 16 13:17:12 2009
New Revision: 815758

URL: http://svn.apache.org/viewvc?rev=815758&view=rev
Log:
http://issues.apache.org/jira/browse/EXTSCRIPT-18

ongoing implementation works on the qdox source scanner

Added:
    myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/test/java/org/apache/myfaces/scripting/Probe.java
      - copied, changed from r815757, myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/test/java/org/apache/myfaces/scripting/QDoxTest.java
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
    myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/test/java/org/apache/myfaces/scripting/QDoxTest.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=815758&r1=815757&r2=815758&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 13:17:12 2009
@@ -27,9 +27,12 @@
 
 public class BeanImplementationListener implements SourceClassAnnotationListener {
 
-  
+    
 
-    public void register(String annotationName, Map<String, String> params) {
-        //To change body of implemented methods use File | Settings | File Templates.
+    public boolean supportsAnnotation(Class annotation) {
+        return annotation.equals(javax.faces.bean.ManagedBean.class);
+    }
+
+    public void register(String className, String annotationName, Map<String, String> params) {
     }
 }

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=815758&r1=815757&r2=815758&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 13:17:12 2009
@@ -18,10 +18,19 @@
  */
 package org.apache.myfaces.scripting.jsf2.annotation;
 
+import java.util.Map;
+
 /**
  * @author Werner Punz (latest modification by $Author$)
  * @version $Revision$ $Date$
  */
 
-public class BehaviorImplementationListener {
+public class BehaviorImplementationListener implements SourceClassAnnotationListener {
+    public boolean supportsAnnotation(Class annotation) {
+        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.
+    }
 }

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=815758&r1=815757&r2=815758&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 13:17:12 2009
@@ -26,7 +26,11 @@
  */
 
 public class ComponentImplementationListener implements SourceClassAnnotationListener {
-    public void register(String annotationName, Map<String, String> params) {
-        //To change body of implemented methods use File | Settings | File Templates.
+    public boolean supportsAnnotation(Class annotation) {
+        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.
     }
 }

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=815758&r1=815757&r2=815758&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 13:17:12 2009
@@ -18,10 +18,21 @@
  */
 package org.apache.myfaces.scripting.jsf2.annotation;
 
+import java.util.Map;
+
 /**
  * @author Werner Punz (latest modification by $Author$)
  * @version $Revision$ $Date$
  */
 
-public class ConverterImplementationListener {
+public class ConverterImplementationListener implements SourceClassAnnotationListener {
+
+    public boolean supportsAnnotation(Class annotation) {
+        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.
+    }
+
 }

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=815758&r1=815757&r2=815758&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 13:17:12 2009
@@ -26,7 +26,11 @@
  */
 
 public class RendererImplementationListener implements SourceClassAnnotationListener {
-    public void register(String annotationName, Map<String, String> params) {
-        //To change body of implemented methods use File | Settings | File Templates.
+    public boolean supportsAnnotation(Class annotation) {
+        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.
     }
 }

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=815758&r1=815757&r2=815758&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 13:17:12 2009
@@ -22,6 +22,7 @@
 import com.thoughtworks.qdox.model.JavaSource;
 import com.thoughtworks.qdox.model.JavaClass;
 import com.thoughtworks.qdox.model.Type;
+import com.thoughtworks.qdox.model.Annotation;
 
 import java.util.List;
 import java.util.LinkedList;
@@ -44,15 +45,28 @@
 
     public SourceAnnotationScanner(String... sourcePaths) {
 
+        initSourcePaths(sourcePaths);
+
+        initDefaultListeners();
+
+    }
+
+    private void initSourcePaths(String... sourcePaths) {
         for (String sourcePath : sourcePaths) {
             File sourcePathFile = new File(sourcePath);
             if (sourcePathFile.exists()) {
                 _builder.addSourceTree(sourcePathFile);
             }
         }
+    }
 
+    private void initDefaultListeners() {
         _listeners.add(new BeanImplementationListener());
-
+        _listeners.add(new BehaviorImplementationListener());
+        _listeners.add(new ComponentImplementationListener());
+        _listeners.add(new ConverterImplementationListener());
+        _listeners.add(new RendererImplementationListener());
+        _listeners.add(new ValidatorImplementationListener());
     }
 
 
@@ -60,23 +74,31 @@
      * builds up the parsing chain and then notifies its observers
      * on the found data
      */
-    public void doiIt() {
-        JavaSource []sources = _builder.getSources();
-        for(JavaSource source: sources) {
-            String packageName = source.getPackage();
+    public void scanSources() {
+        JavaSource[] sources = _builder.getSources();
+        for (JavaSource source : sources) {
+            String packageName = source.getPackage().toString();
             JavaClass[] classes = source.getClasses();
-            for(JavaClass clazz: classes) {
-                Type[] annotations = clazz.getImplements();
-                if(clazz.getName().contains("Bean2")) {
-                    //todo to reverse engineer the missing
-                    //  annotation detection docs of qdox
-                    System.out.println("debugpoint found");
+            for (JavaClass clazz : classes) {
+                Annotation[] anns = clazz.getAnnotations();
+                for (Annotation ann : anns) {
+
+                    for (SourceClassAnnotationListener listener : _listeners) {
+                        if (listener.supportsAnnotation(ann.getClass())) {
+                            listener.register(clazz.getName(), ann.getType().getValue(), ann.getPropertyMap());
+                        }
+                    }
                 }
             }
         }
+    }
 
-
+    public void clearListeners() {
+        _listeners.clear();
     }
 
+    public void addListener(SourceClassAnnotationListener listener) {
+        _listeners.add(listener);
+    }
 
 }

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=815758&r1=815757&r2=815758&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 13:17:12 2009
@@ -30,7 +30,9 @@
 
 public interface SourceClassAnnotationListener {
 
-    public void register(String annotationName, Map<String, String> params);
+    public boolean supportsAnnotation(Class annotation);
+
+    public void register(String className, 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=815758&r1=815757&r2=815758&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 13:17:12 2009
@@ -18,10 +18,19 @@
  */
 package org.apache.myfaces.scripting.jsf2.annotation;
 
+import java.util.Map;
+
 /**
  * @author Werner Punz (latest modification by $Author$)
  * @version $Revision$ $Date$
  */
 
-public class ValidatorImplementationListener {
+public class ValidatorImplementationListener implements SourceClassAnnotationListener {
+    public boolean supportsAnnotation(Class annotation) {
+        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.
+    }
 }

Copied: myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/test/java/org/apache/myfaces/scripting/Probe.java (from r815757, myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/test/java/org/apache/myfaces/scripting/QDoxTest.java)
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/test/java/org/apache/myfaces/scripting/Probe.java?p2=myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/test/java/org/apache/myfaces/scripting/Probe.java&p1=myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/test/java/org/apache/myfaces/scripting/QDoxTest.java&r1=815757&r2=815758&rev=815758&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/test/java/org/apache/myfaces/scripting/QDoxTest.java (original)
+++ myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/test/java/org/apache/myfaces/scripting/Probe.java Wed Sep 16 13:17:12 2009
@@ -18,10 +18,23 @@
  */
 package org.apache.myfaces.scripting;
 
+import org.junit.Ignore;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+
 /**
  * @author Werner Punz (latest modification by $Author$)
  * @version $Revision$ $Date$
+ *
+ * Testprobe for the qdox evaluation testbed
  */
 
-public class QDoxTest {
+@ManagedBean(name = "TestProbe")
+@SessionScoped
+@Ignore
+public class Probe {
+
+    
+    
 }

Modified: myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/test/java/org/apache/myfaces/scripting/QDoxTest.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/test/java/org/apache/myfaces/scripting/QDoxTest.java?rev=815758&r1=815757&r2=815758&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/test/java/org/apache/myfaces/scripting/QDoxTest.java (original)
+++ myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/test/java/org/apache/myfaces/scripting/QDoxTest.java Wed Sep 16 13:17:12 2009
@@ -18,10 +18,76 @@
  */
 package org.apache.myfaces.scripting;
 
+import com.thoughtworks.qdox.JavaDocBuilder;
+import com.thoughtworks.qdox.model.JavaSource;
+import com.thoughtworks.qdox.model.JavaPackage;
+import com.thoughtworks.qdox.model.JavaClass;
+import com.thoughtworks.qdox.model.Annotation;
+import static junit.framework.Assert.fail;
+import static junit.framework.Assert.assertTrue;
+import org.junit.Test;
+import org.junit.Ignore;
+
+import java.io.File;
+import java.io.IOException;
+
 /**
  * @author Werner Punz (latest modification by $Author$)
  * @version $Revision$ $Date$
+ *          <p/>
+ *          Testing ground for qdox evaluation
+ *
+ *
+ * we set it to ignore because it is a testing
+ * 
+ * class to evaluate how to handle qdox
+ * on java sources
  */
 
+@Ignore
 public class QDoxTest {
+
+    //TODO replace this with maven specific dirs
+    static final String sourceProbe = "/Users/werpu2/development/workspace/extensions-scripting3/core/myfaces2-extensions/src/test/java/org/apache/myfaces/scripting/Probe.java";
+
+    private JavaSource[] scanIt() throws IOException {
+        JavaDocBuilder _builder = new JavaDocBuilder();
+        _builder.addSource(new File(sourceProbe));
+        JavaSource[] sources = _builder.getSources();
+
+        return sources;
+
+    }
+
+    //@Test
+    public void probeSource() {
+
+        try {
+            JavaSource[] sources = scanIt();
+
+            boolean managedBeanFound = false;
+            for (JavaSource source : sources) {
+                JavaPackage pckg = source.getPackage();
+                assertTrue(pckg.getName().equals("org.apache.myfaces.scripting"));
+                JavaClass[] classes = source.getClasses();
+                for (JavaClass clazz : classes) {
+                    Annotation[] annotations = clazz.getAnnotations();
+                    for (Annotation annot : annotations) {
+                        System.out.println(annot.toString());
+                        managedBeanFound |= annot.getType().getValue().equals("javax.faces.bean.ManagedBean");
+                        if(managedBeanFound) {
+                            break;
+                        }
+                    }
+                }
+            }
+
+            assertTrue(managedBeanFound);
+
+        } catch (IOException e) {
+            fail(e.toString());
+        }
+
+    }
+
 }