summaryrefslogtreecommitdiff
blob: 6f4638a1bf1da29c7e49e120b95e4c428975140b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
--- gradle/utils.gradle.orig	2015-11-01 21:06:26.246486000 +0000
+++ gradle/utils.gradle	2015-11-01 21:06:57.719486000 +0000
@@ -16,57 +16,47 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-import org.codehaus.groovy.classgen.AnnotationVisitor
-import org.objectweb.asm.ClassWriter
-import org.objectweb.asm.FieldVisitor
-import org.objectweb.asm.Label
-import org.objectweb.asm.MethodVisitor
-
-import static org.objectweb.asm.Opcodes.*
-
-buildscript {
-    repositories {
-        mavenCentral()
-    }
-    dependencies {
-        classpath "org.ow2.asm:asm:$asmVersion"
-    }
-}
+import static org.objectweb.asm.Opcodes.ACC_PUBLIC;
+import static org.objectweb.asm.Opcodes.ACC_STATIC;
+import static org.objectweb.asm.Opcodes.ACC_SUPER;
+import static org.objectweb.asm.Opcodes.ALOAD;
+import static org.objectweb.asm.Opcodes.ATHROW;
+import static org.objectweb.asm.Opcodes.INVOKESPECIAL;
+import static org.objectweb.asm.Opcodes.RETURN;
+import static org.objectweb.asm.Opcodes.V1_5;
+
+import java.io.File;
+import java.io.FileOutputStream;
+
+import org.objectweb.asm.ClassWriter;
+import org.objectweb.asm.Label;
+import org.objectweb.asm.MethodVisitor;
 
-/**
- * This tasks generates an utility class which allows sneaky throwing.
- */
-task exceptionUtils {
-    ext.classFiles = [
-            "${buildDir}/generated-classes/org/codehaus/groovy/runtime/ExceptionUtils.class",
-            "${compileJava.destinationDir}/org/codehaus/groovy/runtime/ExceptionUtils.class"]
-    outputs.files classFiles
+public class ExceptionUtils {
+	private final static String gentooClassDestination = "target/classes/org/codehaus/groovy/runtime/ExceptionUtils.class";
 
-    doLast {
+	public static void main(String[] args) {
         ClassWriter cw = new ClassWriter(0);
-        FieldVisitor fv;
         MethodVisitor mv;
-        AnnotationVisitor av0;
-
-        cw.visit(V1_5, ACC_PUBLIC + ACC_SUPER, 'org/codehaus/groovy/runtime/ExceptionUtils', null, 'java/lang/Object', null);
 
-        cw.visitSource('ExceptionUtils.java', null);
+        cw.visit(V1_5, ACC_PUBLIC + ACC_SUPER, "org/codehaus/groovy/runtime/ExceptionUtils", null, "java/lang/Object", null);
+        cw.visitSource("ExceptionUtils.java", null);	
 
-        mv = cw.visitMethod(ACC_PUBLIC, '<init>', '()V', null, null);
+        mv = cw.visitMethod(ACC_PUBLIC, "<init>", "()V", null, null);
         mv.visitCode();
         Label l0 = new Label();
         mv.visitLabel(l0);
         mv.visitLineNumber(18, l0);
         mv.visitVarInsn(ALOAD, 0);
-        mv.visitMethodInsn(INVOKESPECIAL, 'java/lang/Object', '<init>', '()V', false);
+        mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "<init>", "()V", false);
         mv.visitInsn(RETURN);
         Label l1 = new Label();
         mv.visitLabel(l1);
-        mv.visitLocalVariable('this', 'Lorg/codehaus/groovy/runtime/ExceptionUtils;', null, l0, l1, 0);
+        mv.visitLocalVariable("this", "Lorg/codehaus/groovy/runtime/ExceptionUtils;", null, l0, l1, 0);
         mv.visitMaxs(1, 1);
         mv.visitEnd();
 
-        mv = cw.visitMethod(ACC_PUBLIC + ACC_STATIC, 'sneakyThrow', '(Ljava/lang/Throwable;)V', null, null);
+        mv = cw.visitMethod(ACC_PUBLIC + ACC_STATIC, "sneakyThrow", "(Ljava/lang/Throwable;)V", null, null);
         mv.visitCode();
         Label l2 = new Label();
         mv.visitLabel(l2);
@@ -75,19 +65,21 @@
         mv.visitInsn(ATHROW);
         Label l3 = new Label();
         mv.visitLabel(l3);
-        mv.visitLocalVariable('e', 'Ljava/lang/Throwable;', null, l2, l3, 0);
+        mv.visitLocalVariable("e", "Ljava/lang/Throwable;", null, l2, l3, 0);
         mv.visitMaxs(1, 1);
         mv.visitEnd();
 
         cw.visitEnd();
+        FileOutputStream fos = null;
 
-        logger.lifecycle('Generating ExceptionUtils')
-        classFiles.each { classFile ->
-            def output = file(classFile)
-            output.parentFile.mkdirs()
-            output.withOutputStream {
-                it << cw.toByteArray()
-            }
-        }
-    }
+        File f = new File(gentooClassDestination);
+        f.getParentFile().mkdirs();
+        try {
+			fos = new FileOutputStream(f);
+			fos.write(cw.toByteArray());
+			fos.close();
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+	}
 }