summaryrefslogtreecommitdiff
path: root/mysqlhack.py
blob: 7153bdffbe962cf7f4ab2519b56c5b2f0984aa1a (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
#pylint: disable = F0401
"""
A library that makes use of the so called ClassPathHack for jython
to allow proper loading of mysql-connector.jar at runtime.
Import only, no methods.
"""
import java.lang.reflect.Method
import java.io.File
import java.net.URL
import java.net.URLClassLoader
import jarray
from java.lang import Class


# hacky code to add mysql-connector to java's classpath ('classPathHack')
# DO NOT TOUCH, it works, mkay?

jarfile = "lib/mysql-connector.jar"
driver  = "com.mysql.jdbc.Driver"

url       = java.io.File(jarfile).toURL()
sysloader = java.lang.ClassLoader.getSystemClassLoader()
sysclass  = java.net.URLClassLoader
method    = sysclass.getDeclaredMethod("addURL", [java.net.URL])

method.setAccessible(1)
jarray.array([url], java.lang.Object)
method.invoke(sysloader, [url])
Class.forName(driver)