Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Correction of some bugs and performance enhancement.
[jaceP2P.git] / src / jaceP2P / Loader.java
1 package jaceP2P;
2
3 import java.net.URL;
4 import java.net.URLClassLoader;
5
6 //import java.io.*;
7
8 public class Loader {
9
10         // constructor
11         public Loader() {
12         };
13
14         // methods
15
16         // decoupe toute la chaine en element ds un tableau:
17         // element 0 : le chemin
18         // element 1 : le nom de l'appli
19         public String[] parse(String name) {
20                 String[] result = new String[2];
21                 int i = 0;
22                 for (i = name.length() - 1; i >= 0; i--) {
23                         // System.out.println(i);
24                         if (name.charAt(i) == '/')
25                                 break;
26                 }
27                 result[0] = name.substring(0, i + 1);
28                 String tmp = name.substring(i + 1, name.length());
29                 int index = tmp.indexOf(".");
30                 if (index != -1) {
31                         tmp = tmp.substring(0, index);
32                 }
33                 result[1] = tmp;
34                 return result;
35         }
36
37         public Class<?> load(String args) {
38                 Class<?> myClass = null;
39                 try {
40                         String urlString = args;
41                         // parser toute la chaine en le path et le nom de l'appli: retour ds
42                         // un tableau a 2 case appele ptc
43                         String[] ptc = parse(urlString);
44                         URL[] urls = new URL[1]; // creer un tablo de 1 case contenant des
45                                                                                 // obj URL de java
46                         urls[0] = new URL(ptc[0]); // le remplir avec 1 objet : l'URL creer
47                                                                                 // a partir du path
48                         URLClassLoader ucl = new URLClassLoader(urls);
49                         myClass = ucl.loadClass(ptc[1]);
50                 } catch (Exception e) {
51                         System.err.println(args + " Class not found!");
52                 }
53                 return myClass;
54         }
55 }