Bekijk de onderstaande video om te zien hoe je onze site als een web app op je startscherm installeert.
Opmerking: Deze functie is mogelijk niet beschikbaar in sommige browsers.
package be.djdb.aplugin;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.lang.reflect.Method;
import java.net.URL;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;
import java.util.jar.JarEntry;
import java.util.jar.JarInputStream;
import be.djdb.MyPlug;
import be.djdb.MyPlugin;
import be.djdb.Plugble;
import be.djdb.UnConstruct;
@UnConstruct
public class MyPluginscan {
List<Class> classes1 ;
List<Class> plugble ;
List<MyPlugin> Plugins ;
public MyPluginscan(String packageName,String productname) {
classes1 = getClasses(packageName);
}
public List getClasseNamesInPackage (String jarName ){
ArrayList classes = new ArrayList ();
try{
JarInputStream jarFile = new JarInputStream(new FileInputStream (jarName));
JarEntry jarEntry;
while(true) {
jarEntry=jarFile.getNextJarEntry ();
assert jarEntry != null;
if(isClassfile(jarEntry.getName ())){
classes.add (jarEntry.getName().replaceAll("/", "\\."));
}
}
}catch( Exception e){
e.printStackTrace ();
}
return classes;
}
private List<Class> getClasses(String packageName) {
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
assert classLoader != null;
String path = packageName.replace('.', '/');
try {
Enumeration<URL> resources = classLoader.getResources(path);
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
public static List<Class> findClasses(File directory) throws ClassNotFoundException {
List<Class> classes = new ArrayList<Class>();
if (!directory.exists()) {
return classes;
}
File[] files = directory.listFiles();
for (File file : files) {
String fname = file.getAbsolutePath();
if (file.isDirectory()) {
assert !file.getName().contains(".");
if (!file.getName().startsWith(".svn")){
System.out.println(fname);
classes.addAll(findClasses(file));
}
} else if (isClassfile(fname)) {
System.out.println("isclass:"+fname);
System.out.println(file.getName().substring(0, file.getName().length() - 6));
//packageName + '.' +
Class theclass = Class.forName(file.getName().substring(0, file.getName().length() - 6));
if (isplugin(theclass)){
//classes.add(theclass);
}
}
}
return classes;
}
public static boolean isClassfile(String name){
return name.endsWith(".class");//name.startsWith (this.packageName)
}
private static boolean isplugin(Class aclass){
return aclass.isAnnotationPresent(MyPlug.class);
}
@UnConstruct
private String getpluginname(Class aclass){
return aclass.getAnnotation(MyPlug.class).toString();//TODO not ready
}
private void print(Class aclass){
System.out.println(" |-class:"+ aclass.getName());
for (Method m : aclass.getMethods()) {//forName(args[0])
System.out.println("|-->Methode"+ m.getName());
}
}
private void methodescan(Class aclass){
int passed = 0, failed = 0;
for (Method m : aclass.getMethods()) {//Class.forName(args[0])
if (m.isAnnotationPresent(Plugble.class)) {
try {
m.invoke(null);
passed++;
} catch (Throwable ex) {
System.out.printf("Test %s failed: %s %n", m, ex.getCause());
failed++;
}
}
}
}
}
We gebruiken essentiële cookies om deze site te laten werken, en optionele cookies om de ervaring te verbeteren.