package org.audit4j.core.annotation;
import static org.junit.Assert.assertTrue;
import java.io.IOException;
import java.net.URL;
import java.util.Enumeration;
import java.util.Map.Entry;
import java.util.Set;
import org.audit4j.core.Mock.ClassAnnotationMock;
import org.audit4j.core.extra.scannotation.AnnotationDB;
import org.audit4j.core.extra.scannotation.ClasspathUrlFinder;
import org.audit4j.core.util.Log;
import org.audit4j.core.util.StopWatch;
import org.junit.Before;
import org.junit.Test;
public class AnnotationDBTest {
AnnotationDB db = null;
StopWatch watch;
@Before
public void before() {
watch = new StopWatch();
}
@Test
public void testHasAnnotation() {
watch.start("annotationDB");
URL url = ClasspathUrlFinder.findClassBase(ClassAnnotationMock.class);
System.out.println(url);
db = new AnnotationDB();
db.setScanClassAnnotations(true);
try {
db.scanArchives(url);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
watch.stop();
Log.info(watch.getLastTaskTime() + ":" + watch.getLastTaskTimeMillis() + "ms");
watch.reset();
watch.start("testgetIndexClass");
boolean result = db.getAnnotationIndex().get(Audit.class.getName())
.contains(ClassAnnotationMock.class.getName());
watch.stop();
Log.info(watch.getLastTaskTime() + ":" + watch.getLastTaskTimeMillis() + "ms");
assertTrue(result);
}
public static void main(String[] args) {
System.out.println("as");
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
String packageName = "org.audit4j.core.Mock";
String path = packageName.replace('.', '/');
URL url = null;
try {
final Enumeration<URL> urls = classLoader.getResources(path);
while (urls.hasMoreElements()) {
url = urls.nextElement();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
url = ClasspathUrlFinder.findClassBase(ClassAnnotationMock.class);
AnnotationDB db = new AnnotationDB();
String[] packages = {"org.audit4j.core.option.annotation"};
db.setScanClassAnnotations(true);
try {
db.scanArchives(url);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
db.getClassIndex();
for (Entry<String, Set<String>> entry :db.getClassIndex().entrySet()) {
System.out.println(entry.getKey());
}
}
}