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 2010/01/15 17:47:24 UTC
svn commit: r899700 - in /myfaces/extensions/scripting/trunk:
core/core/src/main/java/org/apache/myfaces/scripting/loaders/java/
core/myfaces2-extensions/src/main/java/org/apache/myfaces/scripting/jsf2/annotation/
examples/myfaces20-example/src/main/we...
Author: werpu
Date: Fri Jan 15 16:47:23 2010
New Revision: 899700
URL: http://svn.apache.org/viewvc?rev=899700&view=rev
Log:
https://issues.apache.org/jira/browse/EXTSCRIPT-46
fixes for jsf2 improved annotation handling now in place
Modified:
myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/loaders/java/ScannerClassloader.java
myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/main/java/org/apache/myfaces/scripting/jsf2/annotation/GenericAnnotationScanner.java
myfaces/extensions/scripting/trunk/examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/renderer/JavaTestRenderer1.java
myfaces/extensions/scripting/trunk/examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/test/TestBean2.java
myfaces/extensions/scripting/trunk/examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/test/TestBean3.java
Modified: myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/loaders/java/ScannerClassloader.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/loaders/java/ScannerClassloader.java?rev=899700&r1=899699&r2=899700&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/loaders/java/ScannerClassloader.java (original)
+++ myfaces/extensions/scripting/trunk/core/core/src/main/java/org/apache/myfaces/scripting/loaders/java/ScannerClassloader.java Fri Jan 15 16:47:23 2010
@@ -1,5 +1,7 @@
package org.apache.myfaces.scripting.loaders.java;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.apache.myfaces.scripting.core.util.ClassUtils;
import org.apache.myfaces.scripting.core.util.FileUtils;
import org.apache.myfaces.scripting.core.util.WeavingContext;
@@ -10,26 +12,24 @@
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
+import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
/**
* A specialized non tainting classloader for our scanners
+ *
*/
public class ScannerClassloader extends ClassLoader {
File tempDir = null;
- int _scriptingEngine;
- String _engineExtension;
- static Map<String, Class> _alreadyScanned = new HashMap<String, Class>();
+ Map<String, Class> _alreadyScanned = new HashMap<String, Class>();
public ScannerClassloader(ClassLoader classLoader, int scriptingEngine, String engineExtension, File tempDir) {
super(classLoader);
this.tempDir = tempDir;
- _scriptingEngine = scriptingEngine;
- _engineExtension = engineExtension;
}
@Override
@@ -103,5 +103,9 @@
}
}
+
+
+
+
}
Modified: myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/main/java/org/apache/myfaces/scripting/jsf2/annotation/GenericAnnotationScanner.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/main/java/org/apache/myfaces/scripting/jsf2/annotation/GenericAnnotationScanner.java?rev=899700&r1=899699&r2=899700&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/main/java/org/apache/myfaces/scripting/jsf2/annotation/GenericAnnotationScanner.java (original)
+++ myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/main/java/org/apache/myfaces/scripting/jsf2/annotation/GenericAnnotationScanner.java Fri Jan 15 16:47:23 2010
@@ -24,6 +24,8 @@
import org.apache.myfaces.scripting.api.ScriptingWeaver;
import org.apache.myfaces.scripting.core.util.WeavingContext;
import org.apache.myfaces.scripting.loaders.groovy.GroovyScriptingWeaver;
+import org.apache.myfaces.scripting.loaders.java.RecompiledClassLoader;
+import org.apache.myfaces.scripting.loaders.java.ScannerClassloader;
import org.apache.myfaces.scripting.refresh.ReloadingMetadata;
import javax.faces.context.FacesContext;
@@ -49,7 +51,6 @@
ScriptingWeaver _weaver = null;
-
public GenericAnnotationScanner() {
initDefaultListeners();
}
@@ -63,7 +64,6 @@
_sourcePaths.addFirst(sourcePath);
}
-
Collection<java.lang.annotation.Annotation> filterAnnotations(java.lang.annotation.Annotation[] anns) {
List<java.lang.annotation.Annotation> retVal = new ArrayList<java.lang.annotation.Annotation>(anns.length);
if (anns == null) {
@@ -117,28 +117,47 @@
}
for (String className : _weaver.loadPossibleDynamicClasses()) {
- Class clazz = _weaver.loadScriptingClassFromName(className);
- //called already by loadScriptingClassFromName
-
+ //TODO replace the standard scanner with our Scanning one here
- //TODO unify this, problem is due to the initial class dependency scan
- //we already have the classes but unlike in groovy they are not tainted
- //hence we do not have the annotations yet scanned
- //in groovy we have the initial scan not done hence
- //the annotations are scanned on the fly!
- if (clazz != null ) {
- java.lang.annotation.Annotation[] anns = clazz.getAnnotations();
- if (anns != null && anns.length > 0) {
- addOrMoveAnnotations(clazz);
+ //TODO we need another loader here which adds the meta information if not present to our
+ //managed beans
+ try {
+ ScannerClassloader loader = new ScannerClassloader(Thread.currentThread().getContextClassLoader(), -1, null, RecompiledClassLoader.tempDir);
+
+ Class clazz = null;
+ //in case the class does not exist we have to load it from our weavingcontext
+ //otherwise we do just a scan on the class to avoid side behavior
+ if (WeavingContext.getFileChangedDaemon().getClassMap().get(className) == null) {
+ clazz = _weaver.loadScriptingClassFromName(className);
} else {
- removeAnnotations(clazz);
+ clazz = loader.loadClass(className);
}
+
+ //TODO we have the problem here that this code
+ //in the worst case resets the class
+ //that causes a problem with our bean refreshes afterwards
+ //which have to take care of the problem
+
+ //TODO unify this, problem is due to the initial class dependency scan
+ //we already have the classes but unlike in groovy they are not tainted
+ //hence we do not have the annotations yet scanned
+ //in groovy we have the initial scan not done hence
+ //the annotations are scanned on the fly!
+ if (clazz != null) {
+ java.lang.annotation.Annotation[] anns = clazz.getAnnotations();
+ if (anns != null && anns.length > 0) {
+ addOrMoveAnnotations(clazz);
+ } else {
+ removeAnnotations(clazz);
+ }
+ }
+ } catch (ClassNotFoundException e) {
+ e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
}
}
}
-
/**
* add or moves a class level annotation
* to a new place
@@ -185,7 +204,6 @@
}
}
-
private void annotationMoved(Class clazz, java.lang.annotation.Annotation ann, AnnotationScanListener listener) {
//case class exists but it has been moved to anoter annotation
String registeredAnnotation = _registeredAnnotations.get(clazz.getName());
@@ -194,7 +212,6 @@
}
}
-
public void clearListeners() {
_listeners.clear();
}
Modified: myfaces/extensions/scripting/trunk/examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/renderer/JavaTestRenderer1.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/renderer/JavaTestRenderer1.java?rev=899700&r1=899699&r2=899700&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/renderer/JavaTestRenderer1.java (original)
+++ myfaces/extensions/scripting/trunk/examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/renderer/JavaTestRenderer1.java Fri Jan 15 16:47:23 2010
@@ -42,8 +42,8 @@
* the annotation is dynamic you can change it on the fly or move it from one
* class to the other
*/
-
@FacesRenderer(componentFamily = "javax.faces.Input", rendererType = "at.irian.JavaTestRenderer")
+
public class JavaTestRenderer1 extends HtmlTextRendererBase {
static Log log = LogFactory.getLog(JavaTestRenderer1.class);
Modified: myfaces/extensions/scripting/trunk/examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/test/TestBean2.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/test/TestBean2.java?rev=899700&r1=899699&r2=899700&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/test/TestBean2.java (original)
+++ myfaces/extensions/scripting/trunk/examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/test/TestBean2.java Fri Jan 15 16:47:23 2010
@@ -12,11 +12,9 @@
import java.io.InputStreamReader;
import java.io.IOException;
-
public class TestBean2 {
-
- String sayHello = "hello world test";
+ String sayHello = "hello world test xxx";
String hello2 = "hello from added attribute";
String hello3 = "hello from added attribute 2";
Modified: myfaces/extensions/scripting/trunk/examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/test/TestBean3.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/test/TestBean3.java?rev=899700&r1=899699&r2=899700&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/test/TestBean3.java (original)
+++ myfaces/extensions/scripting/trunk/examples/myfaces20-example/src/main/webapp/WEB-INF/java/org/apache/myfaces/javaloader/test/TestBean3.java Fri Jan 15 16:47:23 2010
@@ -25,8 +25,9 @@
+
+
private String myText() {
-
return "Hello World from bean3";
}