WW-4347 Adds support for JDK8 lambdas

Project: http://git-wip-us.apache.org/repos/asf/struts/repo
Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/e0110969
Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/e0110969
Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/e0110969

Branch: refs/heads/master
Commit: e01109697f877890b4538d6d540463341fbcbac5
Parents: 63fa04e
Author: Lukasz Lenart <lukaszlen...@apache.org>
Authored: Tue Sep 16 09:37:37 2014 +0200
Committer: Lukasz Lenart <lukaszlen...@apache.org>
Committed: Tue Sep 16 09:37:37 2014 +0200

----------------------------------------------------------------------
 pom.xml                                         |  6 +--
 xwork-core/pom.xml                              |  4 +-
 .../xwork2/util/finder/ClassFinder.java         | 42 +++++++++++++++-----
 3 files changed, 38 insertions(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/struts/blob/e0110969/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 9a20885..a3fbae5 100644
--- a/pom.xml
+++ b/pom.xml
@@ -86,7 +86,7 @@
         <currentVersion>${project.version}</currentVersion>
         
<struts2.springPlatformVersion>3.0.5.RELEASE</struts2.springPlatformVersion>
         <ognl.version>3.0.6</ognl.version>
-        <asm.version>3.3</asm.version>
+        <asm.version>5.0.2</asm.version>
         <tiles.version>2.0.6</tiles.version>
 
         <!-- SCM Site Configuration -->
@@ -564,12 +564,12 @@
                 <version>${ognl.version}</version>
             </dependency>
             <dependency>
-                <groupId>asm</groupId>
+                <groupId>org.ow2.asm</groupId>
                 <artifactId>asm</artifactId>
                 <version>${asm.version}</version>
             </dependency>
             <dependency>
-                <groupId>asm</groupId>
+                <groupId>org.ow2.asm</groupId>
                 <artifactId>asm-commons</artifactId>
                 <version>${asm.version}</version>
             </dependency>

http://git-wip-us.apache.org/repos/asf/struts/blob/e0110969/xwork-core/pom.xml
----------------------------------------------------------------------
diff --git a/xwork-core/pom.xml b/xwork-core/pom.xml
index d8fdc46..86bb0c1 100644
--- a/xwork-core/pom.xml
+++ b/xwork-core/pom.xml
@@ -126,11 +126,11 @@
             <artifactId>ognl</artifactId>
         </dependency>
         <dependency>
-            <groupId>asm</groupId>
+            <groupId>org.ow2.asm</groupId>
             <artifactId>asm</artifactId>
         </dependency>
         <dependency>
-            <groupId>asm</groupId>
+            <groupId>org.ow2.asm</groupId>
             <artifactId>asm-commons</artifactId>
         </dependency>
         <dependency>

http://git-wip-us.apache.org/repos/asf/struts/blob/e0110969/xwork-core/src/main/java/com/opensymphony/xwork2/util/finder/ClassFinder.java
----------------------------------------------------------------------
diff --git 
a/xwork-core/src/main/java/com/opensymphony/xwork2/util/finder/ClassFinder.java 
b/xwork-core/src/main/java/com/opensymphony/xwork2/util/finder/ClassFinder.java
index 986d89f..f337eb9 100644
--- 
a/xwork-core/src/main/java/com/opensymphony/xwork2/util/finder/ClassFinder.java
+++ 
b/xwork-core/src/main/java/com/opensymphony/xwork2/util/finder/ClassFinder.java
@@ -26,7 +26,8 @@ import org.objectweb.asm.AnnotationVisitor;
 import org.objectweb.asm.ClassReader;
 import org.objectweb.asm.FieldVisitor;
 import org.objectweb.asm.MethodVisitor;
-import org.objectweb.asm.commons.EmptyVisitor;
+import org.objectweb.asm.ClassVisitor;
+import org.objectweb.asm.Opcodes;
 
 import java.io.File;
 import java.io.IOException;
@@ -714,7 +715,7 @@ public class ClassFinder {
                 InputStream in = resource.openStream();
                 try {
                     ClassReader classReader = new ClassReader(in);
-                    classReader.accept(new InfoBuildingVisitor(), 
ClassReader.SKIP_DEBUG);
+                    classReader.accept(new InfoBuildingClassVisitor(), 
ClassReader.SKIP_DEBUG);
                 } finally {
                     in.close();
                 }
@@ -727,13 +728,15 @@ public class ClassFinder {
 
     }
 
-    public class InfoBuildingVisitor extends EmptyVisitor {
+    public class InfoBuildingClassVisitor extends ClassVisitor {
         private Info info;
 
-        public InfoBuildingVisitor() {
+        public InfoBuildingClassVisitor() {
+            super(Opcodes.ASM5);
         }
 
-        public InfoBuildingVisitor(Info info) {
+        public InfoBuildingClassVisitor(Info info) {
+            this();
             this.info = info;
         }
 
@@ -785,7 +788,7 @@ public class ClassFinder {
             AnnotationInfo annotationInfo = new AnnotationInfo(desc);
             info.getAnnotations().add(annotationInfo);
             getAnnotationInfos(annotationInfo.getName()).add(info);
-            return new InfoBuildingVisitor(annotationInfo);
+            return null;
         }
 
         @Override
@@ -793,7 +796,7 @@ public class ClassFinder {
             ClassInfo classInfo = ((ClassInfo) info);
             FieldInfo fieldInfo = new FieldInfo(classInfo, name, desc);
             classInfo.getFields().add(fieldInfo);
-            return new InfoBuildingVisitor(fieldInfo);
+            return null;
         }
 
         @Override
@@ -801,7 +804,28 @@ public class ClassFinder {
             ClassInfo classInfo = ((ClassInfo) info);
             MethodInfo methodInfo = new MethodInfo(classInfo, name, desc);
             classInfo.getMethods().add(methodInfo);
-            return new InfoBuildingVisitor(methodInfo);
+            return new InfoBuildingMethodVisitor(methodInfo);
+        }
+    }
+
+    public class InfoBuildingMethodVisitor extends MethodVisitor {
+        private Info info;
+
+        public InfoBuildingMethodVisitor() {
+            super(Opcodes.ASM5);
+        }
+
+        public InfoBuildingMethodVisitor(Info info) {
+            this();
+            this.info = info;
+        }
+
+        @Override
+        public AnnotationVisitor visitAnnotation(String desc, boolean visible) 
{
+            AnnotationInfo annotationInfo = new AnnotationInfo(desc);
+            info.getAnnotations().add(annotationInfo);
+            getAnnotationInfos(annotationInfo.getName()).add(info);
+            return null;
         }
 
         @Override
@@ -810,7 +834,7 @@ public class ClassFinder {
             List<AnnotationInfo> annotationInfos = 
methodInfo.getParameterAnnotations(param);
             AnnotationInfo annotationInfo = new AnnotationInfo(desc);
             annotationInfos.add(annotationInfo);
-            return new InfoBuildingVisitor(annotationInfo);
+            return null;
         }
     }
 

Reply via email to