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