Révision 3675
TXM/trunk/bundles/org.txm.groovy.core/.classpath (revision 3675) | ||
---|---|---|
1 |
<?xml version="1.0" encoding="UTF-8"?> |
|
2 |
<classpath> |
|
3 |
<classpathentry kind="src" path="src/java" /> |
|
4 |
<classpathentry exported="true" kind="lib" path="bin/" /> |
|
5 |
<classpathentry kind="con" |
|
6 |
path="org.eclipse.jdt.launching.JRE_CONTAINER" /> |
|
7 |
<classpathentry kind="con" |
|
8 |
path="org.eclipse.pde.core.requiredPlugins"> |
|
9 |
<accessrules> |
|
10 |
<accessrule kind="accessible" pattern="**" /> |
|
11 |
</accessrules> |
|
12 |
</classpathentry> |
|
13 |
<classpathentry kind="con" path="GROOVY_DSL_SUPPORT" /> |
|
14 |
<classpathentry kind="output" path="bin" /> |
|
15 |
</classpath> |
|
1 |
<?xml version="1.0" encoding="UTF-8"?> |
|
2 |
<classpath> |
|
3 |
<classpathentry kind="src" path="src/java"/> |
|
4 |
<classpathentry kind="lib" path="bin/"/> |
|
5 |
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"> |
|
6 |
<attributes> |
|
7 |
<attribute name="module" value="true"/> |
|
8 |
</attributes> |
|
9 |
</classpathentry> |
|
10 |
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"> |
|
11 |
<accessrules> |
|
12 |
<accessrule kind="accessible" pattern="**"/> |
|
13 |
</accessrules> |
|
14 |
</classpathentry> |
|
15 |
<classpathentry kind="con" path="GROOVY_DSL_SUPPORT"/> |
|
16 |
<classpathentry kind="output" path="bin"/> |
|
17 |
</classpath> |
TXM/trunk/bundles/org.txm.groovy.core/src/java/org/txm/groovy/core/TXMClassLoader.java (revision 3675) | ||
---|---|---|
5 | 5 |
import java.util.HashSet; |
6 | 6 |
|
7 | 7 |
import org.eclipse.osgi.internal.loader.EquinoxClassLoader; |
8 |
import org.txm.utils.logger.Log; |
|
8 | 9 |
|
9 |
import cern.colt.Arrays; |
|
10 |
|
|
11 | 10 |
/** |
12 | 11 |
* Class loader that looking for a class in all installed RCP Bundle then load it. |
13 | 12 |
* |
... | ... | |
18 | 17 |
|
19 | 18 |
private HashMap<String, EquinoxClassLoader> loaders; |
20 | 19 |
|
21 |
private HashMap<String, HashSet<EquinoxClassLoader>> packageToLoaders = new HashMap<String, HashSet<EquinoxClassLoader>>();
|
|
20 |
private HashMap<String, HashSet<EquinoxClassLoader>> packageToLoaders; |
|
22 | 21 |
|
23 |
ClassLoader defaultLoader; |
|
22 |
private ClassLoader defaultLoader;
|
|
24 | 23 |
|
24 |
/** |
|
25 |
* |
|
26 |
* @param defaultLoader |
|
27 |
* @param loaders2 |
|
28 |
*/ |
|
25 | 29 |
public TXMClassLoader(ClassLoader defaultLoader, HashSet<EquinoxClassLoader> loaders2) { |
26 | 30 |
this.loaders = new HashMap<>(); |
27 | 31 |
|
28 | 32 |
boolean useFastIndex = GroovyPreferences.getInstance().getBoolean(GroovyPreferences.FAST_PACKAGE_INDEX); |
29 | 33 |
|
34 |
if(useFastIndex) { |
|
35 |
Log.finest("Fast package index option is activated."); //$NON-NLS-1$ |
|
36 |
this.packageToLoaders = new HashMap<String, HashSet<EquinoxClassLoader>>(); |
|
37 |
} |
|
38 |
|
|
30 | 39 |
for (EquinoxClassLoader loader : loaders2) { |
31 | 40 |
|
32 | 41 |
String k = loader.getBundle().getSymbolicName(); |
... | ... | |
35 | 44 |
|
36 | 45 |
if (useFastIndex) { |
37 | 46 |
Dictionary<String, String> d = loader.getBundle().getHeaders(); |
38 |
String packagesString = d.get("Export-Package"); |
|
47 |
String packagesString = d.get("Export-Package"); //$NON-NLS-1$
|
|
39 | 48 |
if (packagesString != null) { |
40 |
packagesString = packagesString.replace("\n", ""); |
|
41 |
for (String p : packagesString.split(",")) { |
|
49 |
packagesString = packagesString.replace("\n", ""); //$NON-NLS-1$ //$NON-NLS-2$
|
|
50 |
for (String p : packagesString.split(",")) { //$NON-NLS-1$
|
|
42 | 51 |
p = p.trim(); |
43 |
if (p.contains(";")) p = p.substring(p.indexOf(";")); |
|
52 |
if (p.contains(";")) p = p.substring(p.indexOf(";")); //$NON-NLS-1$ //$NON-NLS-2$
|
|
44 | 53 |
if (!packageToLoaders.containsKey(p)) { |
45 | 54 |
HashSet<EquinoxClassLoader> tmp = new HashSet<EquinoxClassLoader>(); |
46 | 55 |
packageToLoaders.put(p, tmp); |
... | ... | |
73 | 82 |
p = ""; |
74 | 83 |
} |
75 | 84 |
|
76 |
if (packageToLoaders.containsKey(p)) { |
|
85 |
if (packageToLoaders != null && packageToLoaders.containsKey(p)) {
|
|
77 | 86 |
for (EquinoxClassLoader loader : packageToLoaders.get(p)) { |
78 | 87 |
if (loader != null) { |
79 | 88 |
Class<?> c = loader.loadClass(name); |
80 |
//System.out.println("load from "+loaderName+": "+name);
|
|
89 |
//System.out.println("load from " + loader.getName() + ": " + name);
|
|
81 | 90 |
return c; |
82 | 91 |
} |
83 | 92 |
} |
TXM/trunk/bundles/org.txm.groovy.core/src/java/org/txm/groovy/core/GSERunner.java (revision 3675) | ||
---|---|---|
61 | 61 |
* @return |
62 | 62 |
*/ |
63 | 63 |
public static GSERunner buildDefaultGSE() { |
64 |
File rootDir = new File(Toolbox.getTxmHomePath(), "scripts/groovy/"); |
|
64 |
File rootDir = new File(Toolbox.getTxmHomePath(), "scripts/groovy/"); //$NON-NLS-1$
|
|
65 | 65 |
// check if script root dir was changed |
66 | 66 |
if (defaultScriptRootDir != null && defaultScriptRootDir.equals(rootDir) && defaultGSE != null) { |
67 | 67 |
// try { |
... | ... | |
80 | 80 |
|
81 | 81 |
try { |
82 | 82 |
defaultScriptRootDir = rootDir; |
83 |
Log.fine("GSE roots: " + Arrays.toString(roots)); |
|
83 |
Log.fine("GSE roots: " + Arrays.toString(roots)); //$NON-NLS-1$
|
|
84 | 84 |
defaultGSE = new GSERunner(roots); |
85 | 85 |
} |
86 | 86 |
catch (IOException e) { |
... | ... | |
89 | 89 |
} |
90 | 90 |
|
91 | 91 |
ImportCustomizer imports = new ImportCustomizer(); |
92 |
imports.addStarImports("org.txm.rcp.utils", |
|
93 |
"org.txm.utils", |
|
94 |
"org.txm", |
|
95 |
"org.kohsuke.args4j", |
|
96 |
"org.txm.rcp.swt.widget.parameters"); |
|
97 |
imports.addImports("groovy.transform.Field"); |
|
92 |
imports.addStarImports("org.txm.rcp.utils", //$NON-NLS-1$
|
|
93 |
"org.txm.utils", //$NON-NLS-1$
|
|
94 |
"org.txm", //$NON-NLS-1$
|
|
95 |
"org.kohsuke.args4j", //$NON-NLS-1$
|
|
96 |
"org.txm.rcp.swt.widget.parameters"); //$NON-NLS-1$
|
|
97 |
imports.addImports("groovy.transform.Field"); //$NON-NLS-1$
|
|
98 | 98 |
CompilerConfiguration configuration = new CompilerConfiguration(); |
99 | 99 |
configuration.addCompilationCustomizers(imports); |
100 | 100 |
|
... | ... | |
122 | 122 |
|
123 | 123 |
@Override |
124 | 124 |
public boolean accept(File dir, String name) { |
125 |
return name.endsWith(".jar") || name.endsWith(".so") || name.endsWith(".dylib") || name.endsWith(".dll"); //$NON-NLS-1$ |
|
125 |
return name.endsWith(".jar") || name.endsWith(".so") || name.endsWith(".dylib") || name.endsWith(".dll"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
|
|
126 | 126 |
} |
127 | 127 |
})) { |
128 | 128 |
try { |
... | ... | |
149 | 149 |
// get field sourceCache |
150 | 150 |
Field field; |
151 | 151 |
try { |
152 |
field = gcl.getClass().getSuperclass().getDeclaredField("sourceCache"); |
|
152 |
field = gcl.getClass().getSuperclass().getDeclaredField("sourceCache"); //$NON-NLS-1$
|
|
153 | 153 |
field.setAccessible(true); |
154 | 154 |
Map<String, Class> sourceCache = (Map<String, Class>) field.get(gcl); |
155 | 155 |
|
... | ... | |
157 | 157 |
URLClassLoader classLoader = new URLClassLoader(new URL[]{target.toURI().toURL()}, Thread.currentThread().getContextClassLoader()); |
158 | 158 |
|
159 | 159 |
for (File clazzFile : DeleteDir.scanDirectory(target, true, true)) { |
160 |
if (!clazzFile.getName().endsWith(".class")) continue; |
|
160 |
if (!clazzFile.getName().endsWith(".class")) continue; //$NON-NLS-1$
|
|
161 | 161 |
String fullclassname = clazzFile.getAbsolutePath().substring(target.getAbsolutePath().length()+1); |
162 |
fullclassname = fullclassname.replace("/", "."); |
|
163 |
fullclassname = fullclassname.replace("\\", "."); |
|
162 |
fullclassname = fullclassname.replace("/", "."); //$NON-NLS-1$ //$NON-NLS-2$
|
|
163 |
fullclassname = fullclassname.replace("\\", "."); //$NON-NLS-1$ //$NON-NLS-2$
|
|
164 | 164 |
fullclassname = fullclassname.substring(0, fullclassname.length()-6); |
165 | 165 |
Class<?> clazz = Class.forName(fullclassname, true, classLoader); |
166 | 166 |
sourceCache.put(clazzFile.getAbsolutePath(), clazz); |
... | ... | |
183 | 183 |
|
184 | 184 |
Bundle rcpBundle = BundleUtils.getBundle(bundle); |
185 | 185 |
if (rcpBundle == null) return; |
186 |
String dependanciesString = rcpBundle.getHeaders().get("Require-Bundle"); |
|
186 |
String dependanciesString = rcpBundle.getHeaders().get("Require-Bundle"); //$NON-NLS-1$
|
|
187 | 187 |
if (dependanciesString == null) return; |
188 | 188 |
// System.out.println("Require-Bundle: "+dependanciesString); |
189 | 189 |
for (String dependancy : dependanciesString.split(",")) { |
190 |
String name = dependancy.split(";", 2)[0]; |
|
190 |
String name = dependancy.split(";", 2)[0]; //$NON-NLS-1$
|
|
191 | 191 |
defaultPlugins.add(name); |
192 | 192 |
getDependancies(name, defaultPlugins); |
193 | 193 |
} |
... | ... | |
233 | 233 |
loaders.remove(loader.getParent()); |
234 | 234 |
} |
235 | 235 |
|
236 |
if ("org.txm.rcp".equals(name)) { |
|
236 |
if ("org.txm.rcp".equals(name)) { //$NON-NLS-1$
|
|
237 | 237 |
defaultLoader = loader; |
238 | 238 |
} |
239 | 239 |
// FIXME: debug |
Formats disponibles : Unified diff