aboutsummaryrefslogtreecommitdiff
path: root/src_eclipseagent/java/lombok/eclipse
diff options
context:
space:
mode:
authorReinier Zwitserloot <reinier@tipit.to>2009-09-29 17:15:24 +0200
committerReinier Zwitserloot <reinier@tipit.to>2009-09-29 17:15:24 +0200
commitb3d191e30023a4d80ffc88646446f2df0bc2f353 (patch)
treef3a4592ef412ca60deaa59c3af245fb2056fca95 /src_eclipseagent/java/lombok/eclipse
parent27a3efeb1cb6f79ecefc6e641ba78de6d69406c3 (diff)
downloadlombok-b3d191e30023a4d80ffc88646446f2df0bc2f353.tar.gz
lombok-b3d191e30023a4d80ffc88646446f2df0bc2f353.tar.bz2
lombok-b3d191e30023a4d80ffc88646446f2df0bc2f353.zip
Everything seems to be working smoothly! Perhaps time to make this the main branch...
Diffstat (limited to 'src_eclipseagent/java/lombok/eclipse')
-rw-r--r--src_eclipseagent/java/lombok/eclipse/ClassLoaderWorkaround.java134
-rw-r--r--src_eclipseagent/java/lombok/eclipse/PatchFixes.java14
-rw-r--r--src_eclipseagent/java/lombok/eclipse/package-info.java27
3 files changed, 0 insertions, 175 deletions
diff --git a/src_eclipseagent/java/lombok/eclipse/ClassLoaderWorkaround.java b/src_eclipseagent/java/lombok/eclipse/ClassLoaderWorkaround.java
deleted file mode 100644
index 3d8e9ec9..00000000
--- a/src_eclipseagent/java/lombok/eclipse/ClassLoaderWorkaround.java
+++ /dev/null
@@ -1,134 +0,0 @@
-/*
- * Copyright © 2009 Reinier Zwitserloot and Roel Spilker.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-package java.lombok.eclipse;
-
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.util.HashMap;
-import java.util.Map;
-
-
-/**
- * Allows you to inject the lombok classes into any classloader, even if that classloader does not
- * know how to find the lombok classes.
- *
- * Example: Injecting lombok's Eclipse Parser patching code into eclipse's OSGi BundleLoader.
- *
- * @author rzwitserloot
- */
-public class ClassLoaderWorkaround {
- static RuntimeException sneakyThrow(Throwable t) {
- if ( t == null ) throw new NullPointerException("t");
- ClassLoaderWorkaround.<RuntimeException>sneakyThrow0(t);
- return null;
- }
-
- @SuppressWarnings("unchecked")
- private static <T extends Throwable> void sneakyThrow0(Throwable t) throws T {
- throw (T)t;
- }
-
- private static final Map<ClassLoader, Method> transform = new HashMap<ClassLoader, Method>();
-
- public static void transformCompilationUnitDeclarationSwapped(Object cud, Object parser) throws Exception {
- transformCompilationUnitDeclaration(parser, cud);
- }
-
- public static void transformCompilationUnitDeclaration(Object parser, Object cud) throws Exception {
- Method transformMethod = getTransformMethod(cud);
- try {
- transformMethod.invoke(null, parser, cud);
- } catch ( InvocationTargetException e ) {
- throw sneakyThrow(e.getCause());
- }
- }
-
- private static Method getTransformMethod(Object cud) throws ClassNotFoundException {
- ClassLoader contextLoader = Thread.currentThread().getContextClassLoader();
-
- synchronized ( transform ) {
- if ( !transform.containsKey(contextLoader)) {
- transform.put(contextLoader, findTransformMethod(cud));
- }
-
- Method m = transform.get(contextLoader);
- if ( m == null ) throw new ClassNotFoundException("lombok.eclipse.TransformEclipseAST");
- return m;
-
- }
- }
-
- private static Method findTransformMethod(Object cud) throws ClassNotFoundException {
- final ClassLoader parent = cud.getClass().getClassLoader();
- ClassLoader loader = new ClassLoader() {
- @Override public Class<?> loadClass(String name, boolean resolve) throws ClassNotFoundException {
- if ( name.startsWith("lombok.") ) {
- InputStream in = ClassLoader.getSystemClassLoader().getResourceAsStream(name.replace(".", "/") + ".class");
- ByteArrayOutputStream out = new ByteArrayOutputStream();
-
- byte[] b = new byte[65536];
- try {
- while ( true ) {
- int r = in.read(b);
- if ( r == -1 ) break;
- if ( r > 0 ) out.write(b, 0, r);
- }
-
- in.close();
- byte[] data = out.toByteArray();
- Class<?> result = defineClass(name, data, 0, data.length);
- if ( resolve ) resolveClass(result);
- return result;
- } catch ( IOException e ) {
- throw new ClassNotFoundException();
- }
- } else {
- try {
- Class<?> result = ClassLoader.getSystemClassLoader().loadClass(name);
- if ( resolve ) resolveClass(result);
- return result;
- } catch ( ClassNotFoundException e ) {
- Class<?> result = parent.loadClass(name);
- if ( resolve ) resolveClass(result);
- return result;
- }
- }
- }
- };
-
- Class<?> c = loader.loadClass("lombok.eclipse.TransformEclipseAST");
- for ( Method method : c.getMethods() ) {
- if ( method.getName().equals("transform") ) {
- Class<?>[] types = method.getParameterTypes();
- if ( types.length != 2 ) continue;
- if ( !types[0].getName().equals("org.eclipse.jdt.internal.compiler.parser.Parser") ) continue;
- if ( !types[1].getName().equals("org.eclipse.jdt.internal.compiler.ast.CompilationUnitDeclaration") ) continue;
- return method;
- }
- }
-
- throw new ClassNotFoundException("lombok.eclipse.TransformEclipseAST");
- }
-}
diff --git a/src_eclipseagent/java/lombok/eclipse/PatchFixes.java b/src_eclipseagent/java/lombok/eclipse/PatchFixes.java
deleted file mode 100644
index 23c60d32..00000000
--- a/src_eclipseagent/java/lombok/eclipse/PatchFixes.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package java.lombok.eclipse;
-
-public class PatchFixes {
- public static int fixRetrieveStartingCatchPosition(int in) {
- return in;
- }
-
- private static final int BIT24 = 0x800000;
-
- public static boolean checkBit24(Object node) throws Exception {
- int bits = (Integer)(node.getClass().getField("bits").get(node));
- return (bits & BIT24) != 0;
- }
-}
diff --git a/src_eclipseagent/java/lombok/eclipse/package-info.java b/src_eclipseagent/java/lombok/eclipse/package-info.java
deleted file mode 100644
index 2ec8031f..00000000
--- a/src_eclipseagent/java/lombok/eclipse/package-info.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * Copyright © 2009 Reinier Zwitserloot and Roel Spilker.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-/**
- * Workaround package to avoid the OSGi class loader system, which will always refer to the system class loader for any classes in a package
- * that starts with <code>java.</code>
- */
-package java.lombok.eclipse;