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.
}
}