Forráskód Böngészése

pom.xml: remove slow test from "recent-coverage" profile

fix: ClassUtils#isLoaded - check parent classloaders
fix: ClassUtils#isChild
fix: ClassUtils#loader

fix: TraceUtils - raw types

tests (83)
Ranides Atterwim 10 éve
szülő
commit
a49dbf4aa2

+ 224 - 208
assira/pom.xml

@@ -1,238 +1,254 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <groupId>net.ranides</groupId>
-        <artifactId>assira.common</artifactId>
-        <version>2.0.1</version>
-    </parent>
-    <name>assira</name>
-    <groupId>net.ranides</groupId>
-    <artifactId>assira</artifactId>
-    <version>2.0.1</version>
-    <packaging>jar</packaging>
+	<modelVersion>4.0.0</modelVersion>
+	<parent>
+		<groupId>net.ranides</groupId>
+		<artifactId>assira.common</artifactId>
+		<version>2.0.1</version>
+	</parent>
+	<name>assira</name>
+	<groupId>net.ranides</groupId>
+	<artifactId>assira</artifactId>
+	<version>2.0.1</version>
+	<packaging>jar</packaging>
 	
 	<properties>
 		<assira.junit.debug>false</assira.junit.debug>
-    </properties>
+	</properties>
 
-    <profiles>
-        <profile>
-            <id>recent-coverage</id>
-            <build>
-                <plugins>
-                    <plugin>
-                        <groupId>org.jacoco</groupId>
-                        <artifactId>jacoco-maven-plugin</artifactId>
-                        <version>0.7.5.201505241946</version>
-                        <configuration>
-                            <excludes>
-                                <exclude>net/ranides/assira/test/**</exclude>
+	<profiles>
+		<profile>
+			<id>recent-coverage</id>
+			<build>
+				<plugins>
+					<plugin>
+						<groupId>org.jacoco</groupId>
+						<artifactId>jacoco-maven-plugin</artifactId>
+						<version>0.7.5.201505241946</version>
+						<configuration>
+							<excludes>
+								<exclude>net/ranides/assira/test/**</exclude>
 								
-                                <!--  klasy dostatecznie przetestowane -->
+								<!--  klasy dostatecznie przetestowane -->
 								
-                                <exclude>net/ranides/assira/collection/ACollection.class</exclude>
-                                <exclude>net/ranides/assira/collection/AIntCollection.class</exclude>
-                                <exclude>net/ranides/assira/collection/HashComparator$*</exclude>
-                                <exclude>net/ranides/assira/collection/HashComparator.class</exclude>
-                                <exclude>net/ranides/assira/collection/HashIntComparator$*</exclude>
-                                <exclude>net/ranides/assira/collection/HashIntComparator.class</exclude>
-                                <exclude>net/ranides/assira/collection/IntComparator.class</exclude>
+								<exclude>net/ranides/assira/collection/ACollection.class</exclude>
+								<exclude>net/ranides/assira/collection/AIntCollection.class</exclude>
+								<exclude>net/ranides/assira/collection/HashComparator$*</exclude>
+								<exclude>net/ranides/assira/collection/HashComparator.class</exclude>
+								<exclude>net/ranides/assira/collection/HashIntComparator$*</exclude>
+								<exclude>net/ranides/assira/collection/HashIntComparator.class</exclude>
+								<exclude>net/ranides/assira/collection/IntComparator.class</exclude>
                                 
-                                <exclude>net/ranides/assira/collection/arrays/ArrayAllocator.class</exclude>
-                                <exclude>net/ranides/assira/collection/arrays/ArraySort.class</exclude>
-                                <exclude>net/ranides/assira/collection/arrays/IntArraySort.class</exclude>
-                                <exclude>net/ranides/assira/collection/arrays/NativeArray$*</exclude>
-                                <exclude>net/ranides/assira/collection/arrays/NativeArray.class</exclude>
-                                <exclude>net/ranides/assira/collection/arrays/NativeArrayAllocator.class</exclude>
-                                <exclude>net/ranides/assira/collection/arrays/NativeArraySort$*</exclude>
-                                <exclude>net/ranides/assira/collection/arrays/NativeArraySort.class</exclude>
+								<exclude>net/ranides/assira/collection/arrays/ArrayAllocator.class</exclude>
+								<exclude>net/ranides/assira/collection/arrays/ArraySort.class</exclude>
+								<exclude>net/ranides/assira/collection/arrays/IntArraySort.class</exclude>
+								<exclude>net/ranides/assira/collection/arrays/NativeArray$*</exclude>
+								<exclude>net/ranides/assira/collection/arrays/NativeArray.class</exclude>
+								<exclude>net/ranides/assira/collection/arrays/NativeArrayAllocator.class</exclude>
+								<exclude>net/ranides/assira/collection/arrays/NativeArraySort$*</exclude>
+								<exclude>net/ranides/assira/collection/arrays/NativeArraySort.class</exclude>
                                 
                                 
-                                <exclude>net/ranides/assira/collection/lists/AIntList$*</exclude>
-                                <exclude>net/ranides/assira/collection/lists/AIntList.class</exclude>
-                                <exclude>net/ranides/assira/collection/lists/IntArrayList$*</exclude>
-                                <exclude>net/ranides/assira/collection/lists/IntArrayList.class</exclude>
-<!--                                <exclude>net/ranides/assira/collection/lists/IntRange$*</exclude>-->
-<!--                                <exclude>net/ranides/assira/collection/lists/IntRange.class</exclude>-->
-                                <exclude>net/ranides/assira/collection/lists/NativeArrayList$*</exclude>
-                                <exclude>net/ranides/assira/collection/lists/NativeArrayList.class</exclude>
+								<exclude>net/ranides/assira/collection/lists/AIntList$*</exclude>
+								<exclude>net/ranides/assira/collection/lists/AIntList.class</exclude>
+								<exclude>net/ranides/assira/collection/lists/IntArrayList$*</exclude>
+								<exclude>net/ranides/assira/collection/lists/IntArrayList.class</exclude>
+								<!--                                <exclude>net/ranides/assira/collection/lists/IntRange$*</exclude>-->
+								<!--                                <exclude>net/ranides/assira/collection/lists/IntRange.class</exclude>-->
+								<exclude>net/ranides/assira/collection/lists/NativeArrayList$*</exclude>
+								<exclude>net/ranides/assira/collection/lists/NativeArrayList.class</exclude>
                                 
-                                <exclude>net/ranides/assira/collection/lookups/AHashLookup$*</exclude>
-                                <exclude>net/ranides/assira/collection/lookups/AHashLookup$*</exclude>
-                                <exclude>net/ranides/assira/collection/lookups/AHashLookup.class</exclude>
-                                <exclude>net/ranides/assira/collection/lookups/AHashLookup.class</exclude>
-                                <exclude>net/ranides/assira/collection/lookups/ALookup$*</exclude>
-                                <exclude>net/ranides/assira/collection/lookups/ALookup.class</exclude>
-                                <exclude>net/ranides/assira/collection/lookups/ASortedLookup$*</exclude>
-                                <exclude>net/ranides/assira/collection/lookups/ASortedLookup.class</exclude>
-                                <exclude>net/ranides/assira/collection/lookups/AVLTreeLookup$*</exclude>
-                                <exclude>net/ranides/assira/collection/lookups/AVLTreeLookup.class</exclude>
-                                <exclude>net/ranides/assira/collection/lookups/CustomLookup.class</exclude>
-                                <exclude>net/ranides/assira/collection/lookups/HashLookup.class</exclude>
-                                <exclude>net/ranides/assira/collection/lookups/IdentLookup.class</exclude>
-                                <exclude>net/ranides/assira/collection/lookups/Lookup$*</exclude>
-                                <exclude>net/ranides/assira/collection/lookups/Lookup.class</exclude>
-                                <exclude>net/ranides/assira/collection/lookups/RBTreeLookup$*</exclude>
-                                <exclude>net/ranides/assira/collection/lookups/RBTreeLookup.class</exclude>
+								<exclude>net/ranides/assira/collection/lookups/AHashLookup$*</exclude>
+								<exclude>net/ranides/assira/collection/lookups/AHashLookup$*</exclude>
+								<exclude>net/ranides/assira/collection/lookups/AHashLookup.class</exclude>
+								<exclude>net/ranides/assira/collection/lookups/AHashLookup.class</exclude>
+								<exclude>net/ranides/assira/collection/lookups/ALookup$*</exclude>
+								<exclude>net/ranides/assira/collection/lookups/ALookup.class</exclude>
+								<exclude>net/ranides/assira/collection/lookups/ASortedLookup$*</exclude>
+								<exclude>net/ranides/assira/collection/lookups/ASortedLookup.class</exclude>
+								<exclude>net/ranides/assira/collection/lookups/AVLTreeLookup$*</exclude>
+								<exclude>net/ranides/assira/collection/lookups/AVLTreeLookup.class</exclude>
+								<exclude>net/ranides/assira/collection/lookups/CustomLookup.class</exclude>
+								<exclude>net/ranides/assira/collection/lookups/HashLookup.class</exclude>
+								<exclude>net/ranides/assira/collection/lookups/IdentLookup.class</exclude>
+								<exclude>net/ranides/assira/collection/lookups/Lookup$*</exclude>
+								<exclude>net/ranides/assira/collection/lookups/Lookup.class</exclude>
+								<exclude>net/ranides/assira/collection/lookups/RBTreeLookup$*</exclude>
+								<exclude>net/ranides/assira/collection/lookups/RBTreeLookup.class</exclude>
                                 
-                                <exclude>net/ranides/assira/collection/maps/AHashMap$*</exclude>
-                                <exclude>net/ranides/assira/collection/maps/AHashMap.class</exclude>
-                                <exclude>net/ranides/assira/collection/maps/AIntHashMap$*</exclude>
-                                <exclude>net/ranides/assira/collection/maps/AIntHashMap.class</exclude>
-                                <exclude>net/ranides/assira/collection/maps/AIntMap$*</exclude>
-                                <exclude>net/ranides/assira/collection/maps/AIntMap.class</exclude>
-                                <exclude>net/ranides/assira/collection/maps/AIntSortedMap$*</exclude>
-                                <exclude>net/ranides/assira/collection/maps/AIntSortedMap.class</exclude>
-                                <exclude>net/ranides/assira/collection/maps/AMap$*</exclude>
-                                <exclude>net/ranides/assira/collection/maps/AMap.class</exclude>
-                                <exclude>net/ranides/assira/collection/maps/ASortedMap$*</exclude>
-                                <exclude>net/ranides/assira/collection/maps/ASortedMap.class</exclude>
-                                <exclude>net/ranides/assira/collection/maps/AVLTreeMap$*</exclude>
-                                <exclude>net/ranides/assira/collection/maps/AVLTreeMap.class</exclude>
-                                <exclude>net/ranides/assira/collection/maps/CustomMap.class</exclude>
-                                <exclude>net/ranides/assira/collection/maps/HashMap$*</exclude>
-                                <exclude>net/ranides/assira/collection/maps/HashMap.class</exclude>
-                                <exclude>net/ranides/assira/collection/maps/HashMultiMap$*</exclude>
-                                <exclude>net/ranides/assira/collection/maps/HashMultiMap.class</exclude>
-                                <exclude>net/ranides/assira/collection/maps/IdentMap.class</exclude>
-                                <exclude>net/ranides/assira/collection/maps/IntAVLTreeMap$*</exclude>
-                                <exclude>net/ranides/assira/collection/maps/IntAVLTreeMap.class</exclude>
-                                <exclude>net/ranides/assira/collection/maps/IntHashMap$*</exclude>
-                                <exclude>net/ranides/assira/collection/maps/IntHashMap.class</exclude>
-                                <exclude>net/ranides/assira/collection/maps/IntHashMultiMap$*</exclude>
-                                <exclude>net/ranides/assira/collection/maps/IntHashMultiMap.class</exclude>
-                                <exclude>net/ranides/assira/collection/maps/IntMap$*</exclude>
-                                <exclude>net/ranides/assira/collection/maps/IntMap.class</exclude>
-                                <exclude>net/ranides/assira/collection/maps/IntMultiMap.class</exclude>
-                                <exclude>net/ranides/assira/collection/maps/IntRBTreeMap$*</exclude>
-                                <exclude>net/ranides/assira/collection/maps/IntRBTreeMap.class</exclude>
-                                <exclude>net/ranides/assira/collection/maps/MultiMap.class</exclude>
-                                <exclude>net/ranides/assira/collection/maps/RBTreeMap$*</exclude>
-                                <exclude>net/ranides/assira/collection/maps/RBTreeMap.class</exclude>
+								<exclude>net/ranides/assira/collection/maps/AHashMap$*</exclude>
+								<exclude>net/ranides/assira/collection/maps/AHashMap.class</exclude>
+								<exclude>net/ranides/assira/collection/maps/AIntHashMap$*</exclude>
+								<exclude>net/ranides/assira/collection/maps/AIntHashMap.class</exclude>
+								<exclude>net/ranides/assira/collection/maps/AIntMap$*</exclude>
+								<exclude>net/ranides/assira/collection/maps/AIntMap.class</exclude>
+								<exclude>net/ranides/assira/collection/maps/AIntSortedMap$*</exclude>
+								<exclude>net/ranides/assira/collection/maps/AIntSortedMap.class</exclude>
+								<exclude>net/ranides/assira/collection/maps/AMap$*</exclude>
+								<exclude>net/ranides/assira/collection/maps/AMap.class</exclude>
+								<exclude>net/ranides/assira/collection/maps/ASortedMap$*</exclude>
+								<exclude>net/ranides/assira/collection/maps/ASortedMap.class</exclude>
+								<exclude>net/ranides/assira/collection/maps/AVLTreeMap$*</exclude>
+								<exclude>net/ranides/assira/collection/maps/AVLTreeMap.class</exclude>
+								<exclude>net/ranides/assira/collection/maps/CustomMap.class</exclude>
+								<exclude>net/ranides/assira/collection/maps/HashMap$*</exclude>
+								<exclude>net/ranides/assira/collection/maps/HashMap.class</exclude>
+								<exclude>net/ranides/assira/collection/maps/HashMultiMap$*</exclude>
+								<exclude>net/ranides/assira/collection/maps/HashMultiMap.class</exclude>
+								<exclude>net/ranides/assira/collection/maps/IdentMap.class</exclude>
+								<exclude>net/ranides/assira/collection/maps/IntAVLTreeMap$*</exclude>
+								<exclude>net/ranides/assira/collection/maps/IntAVLTreeMap.class</exclude>
+								<exclude>net/ranides/assira/collection/maps/IntHashMap$*</exclude>
+								<exclude>net/ranides/assira/collection/maps/IntHashMap.class</exclude>
+								<exclude>net/ranides/assira/collection/maps/IntHashMultiMap$*</exclude>
+								<exclude>net/ranides/assira/collection/maps/IntHashMultiMap.class</exclude>
+								<exclude>net/ranides/assira/collection/maps/IntMap$*</exclude>
+								<exclude>net/ranides/assira/collection/maps/IntMap.class</exclude>
+								<exclude>net/ranides/assira/collection/maps/IntMultiMap.class</exclude>
+								<exclude>net/ranides/assira/collection/maps/IntRBTreeMap$*</exclude>
+								<exclude>net/ranides/assira/collection/maps/IntRBTreeMap.class</exclude>
+								<exclude>net/ranides/assira/collection/maps/MultiMap.class</exclude>
+								<exclude>net/ranides/assira/collection/maps/RBTreeMap$*</exclude>
+								<exclude>net/ranides/assira/collection/maps/RBTreeMap.class</exclude>
                                 
-                                <exclude>net/ranides/assira/collection/rmq/AIntRMQList.class</exclude>
-                                <exclude>net/ranides/assira/collection/rmq/ARMQList.class</exclude>
-                                <exclude>net/ranides/assira/collection/rmq/IntRMQTable.class</exclude>
-                                <exclude>net/ranides/assira/collection/rmq/IntRMQTree$*</exclude>
-                                <exclude>net/ranides/assira/collection/rmq/IntRMQTree.class</exclude>
-                                <exclude>net/ranides/assira/collection/rmq/RMQTable.class</exclude>
-                                <exclude>net/ranides/assira/collection/rmq/RMQTree$*</exclude>
-                                <exclude>net/ranides/assira/collection/rmq/RMQTree.class</exclude>
+								<exclude>net/ranides/assira/collection/rmq/AIntRMQList.class</exclude>
+								<exclude>net/ranides/assira/collection/rmq/ARMQList.class</exclude>
+								<exclude>net/ranides/assira/collection/rmq/IntRMQTable.class</exclude>
+								<exclude>net/ranides/assira/collection/rmq/IntRMQTree$*</exclude>
+								<exclude>net/ranides/assira/collection/rmq/IntRMQTree.class</exclude>
+								<exclude>net/ranides/assira/collection/rmq/RMQTable.class</exclude>
+								<exclude>net/ranides/assira/collection/rmq/RMQTree$*</exclude>
+								<exclude>net/ranides/assira/collection/rmq/RMQTree.class</exclude>
                                 
-                                <exclude>net/ranides/assira/collection/sets/AHashSet$*</exclude>
-                                <exclude>net/ranides/assira/collection/sets/AHashSet.class</exclude>
-                                <exclude>net/ranides/assira/collection/sets/AIdentSet.class</exclude>
-                                <exclude>net/ranides/assira/collection/sets/AIntSet.class</exclude>
-                                <exclude>net/ranides/assira/collection/sets/AIntSortedSet$*</exclude>
-                                <exclude>net/ranides/assira/collection/sets/AIntSortedSet.class</exclude>
-                                <exclude>net/ranides/assira/collection/sets/ASet.class</exclude>
-                                <exclude>net/ranides/assira/collection/sets/ASortedSet$*</exclude>
-                                <exclude>net/ranides/assira/collection/sets/ASortedSet.class</exclude>
-                                <exclude>net/ranides/assira/collection/sets/AVLTreeSet$*</exclude>
-                                <exclude>net/ranides/assira/collection/sets/AVLTreeSet.class</exclude>
-                                <exclude>net/ranides/assira/collection/sets/CustomSet.class</exclude>
-                                <exclude>net/ranides/assira/collection/sets/HashSet.class</exclude>
-                                <exclude>net/ranides/assira/collection/sets/IdentSet.class</exclude>
-                                <exclude>net/ranides/assira/collection/sets/IntAVLTreeSet$*</exclude>
-                                <exclude>net/ranides/assira/collection/sets/IntAVLTreeSet.class</exclude>
-                                <exclude>net/ranides/assira/collection/sets/IntHashSet$*</exclude>
-                                <exclude>net/ranides/assira/collection/sets/IntHashSet.class</exclude>
-                                <exclude>net/ranides/assira/collection/sets/IntRBTreeSet$*</exclude>
-                                <exclude>net/ranides/assira/collection/sets/IntRBTreeSet.class</exclude>
-                                <exclude>net/ranides/assira/collection/sets/RBTreeSet$*</exclude>
-                                <exclude>net/ranides/assira/collection/sets/RBTreeSet.class</exclude>
+								<exclude>net/ranides/assira/collection/sets/AHashSet$*</exclude>
+								<exclude>net/ranides/assira/collection/sets/AHashSet.class</exclude>
+								<exclude>net/ranides/assira/collection/sets/AIdentSet.class</exclude>
+								<exclude>net/ranides/assira/collection/sets/AIntSet.class</exclude>
+								<exclude>net/ranides/assira/collection/sets/AIntSortedSet$*</exclude>
+								<exclude>net/ranides/assira/collection/sets/AIntSortedSet.class</exclude>
+								<exclude>net/ranides/assira/collection/sets/ASet.class</exclude>
+								<exclude>net/ranides/assira/collection/sets/ASortedSet$*</exclude>
+								<exclude>net/ranides/assira/collection/sets/ASortedSet.class</exclude>
+								<exclude>net/ranides/assira/collection/sets/AVLTreeSet$*</exclude>
+								<exclude>net/ranides/assira/collection/sets/AVLTreeSet.class</exclude>
+								<exclude>net/ranides/assira/collection/sets/CustomSet.class</exclude>
+								<exclude>net/ranides/assira/collection/sets/HashSet.class</exclude>
+								<exclude>net/ranides/assira/collection/sets/IdentSet.class</exclude>
+								<exclude>net/ranides/assira/collection/sets/IntAVLTreeSet$*</exclude>
+								<exclude>net/ranides/assira/collection/sets/IntAVLTreeSet.class</exclude>
+								<exclude>net/ranides/assira/collection/sets/IntHashSet$*</exclude>
+								<exclude>net/ranides/assira/collection/sets/IntHashSet.class</exclude>
+								<exclude>net/ranides/assira/collection/sets/IntRBTreeSet$*</exclude>
+								<exclude>net/ranides/assira/collection/sets/IntRBTreeSet.class</exclude>
+								<exclude>net/ranides/assira/collection/sets/RBTreeSet$*</exclude>
+								<exclude>net/ranides/assira/collection/sets/RBTreeSet.class</exclude>
                                 
-                                <exclude>net/ranides/assira/events/Events$*</exclude>
-                                <exclude>net/ranides/assira/events/Events.class</exclude>
-                                <exclude>net/ranides/assira/events/EventBinding$*</exclude>
-                                <exclude>net/ranides/assira/events/EventBinding.class</exclude>
-                                <exclude>net/ranides/assira/events/EventDispatcher.class</exclude>
-                                <exclude>net/ranides/assira/events/EventLock$*</exclude>
-                                <exclude>net/ranides/assira/events/EventLock.class</exclude>
-                                <exclude>net/ranides/assira/events/EventProactor$*</exclude>
-                                <exclude>net/ranides/assira/events/EventProactor.class</exclude>
-                                <exclude>net/ranides/assira/events/EventReactor$*</exclude>
-                                <exclude>net/ranides/assira/events/EventReactor.class</exclude>
+								<exclude>net/ranides/assira/events/Events$*</exclude>
+								<exclude>net/ranides/assira/events/Events.class</exclude>
+								<exclude>net/ranides/assira/events/EventBinding$*</exclude>
+								<exclude>net/ranides/assira/events/EventBinding.class</exclude>
+								<exclude>net/ranides/assira/events/EventDispatcher.class</exclude>
+								<exclude>net/ranides/assira/events/EventLock$*</exclude>
+								<exclude>net/ranides/assira/events/EventLock.class</exclude>
+								<exclude>net/ranides/assira/events/EventProactor$*</exclude>
+								<exclude>net/ranides/assira/events/EventProactor.class</exclude>
+								<exclude>net/ranides/assira/events/EventReactor$*</exclude>
+								<exclude>net/ranides/assira/events/EventReactor.class</exclude>
                                 
-                                <exclude>net/ranides/assira/reflection/util/PackageScanner$*</exclude>
-                                <exclude>net/ranides/assira/reflection/util/PackageScanner.class</exclude>
+								<exclude>net/ranides/assira/reflection/util/PackageScanner$*</exclude>
+								<exclude>net/ranides/assira/reflection/util/PackageScanner.class</exclude>
+								<exclude>net/ranides/assira/reflection/util/ClassTraits.class</exclude>
+								<exclude>net/ranides/assira/reflection/util/ClassUtils$*</exclude>
+								<exclude>net/ranides/assira/reflection/util/ClassUtils.class</exclude>
                                 
-                                <exclude>net/ranides/assira/text/Charsets.class</exclude>
-                                <exclude>net/ranides/assira/text/FormatHex.class</exclude>
-                                <exclude>net/ranides/assira/text/FormatNumber$*</exclude>
-                                <exclude>net/ranides/assira/text/FormatNumber.class</exclude>
-                                <exclude>net/ranides/assira/text/MazoviaCharset$*</exclude>
-                                <exclude>net/ranides/assira/text/MazoviaCharset.class</exclude>
-                                <exclude>net/ranides/assira/text/StrBuilder.class</exclude>
-                                <exclude>net/ranides/assira/text/StrBuilder$*</exclude>
-                                <exclude>net/ranides/assira/text/StrBuilderOptions.class</exclude>
-                                <exclude>net/ranides/assira/text/StringIO.class</exclude>
-                                <exclude>net/ranides/assira/text/StringUtils.class</exclude>
-                                <exclude>net/ranides/assira/text/StringUtils$*</exclude>
-                                <exclude>net/ranides/assira/text/Wildcard.class</exclude>
+								<exclude>net/ranides/assira/text/Charsets.class</exclude>
+								<exclude>net/ranides/assira/text/FormatHex.class</exclude>
+								<exclude>net/ranides/assira/text/FormatNumber$*</exclude>
+								<exclude>net/ranides/assira/text/FormatNumber.class</exclude>
+								<exclude>net/ranides/assira/text/MazoviaCharset$*</exclude>
+								<exclude>net/ranides/assira/text/MazoviaCharset.class</exclude>
+								<exclude>net/ranides/assira/text/StrBuilder.class</exclude>
+								<exclude>net/ranides/assira/text/StrBuilder$*</exclude>
+								<exclude>net/ranides/assira/text/StrBuilderOptions.class</exclude>
+								<exclude>net/ranides/assira/text/StringIO.class</exclude>
+								<exclude>net/ranides/assira/text/StringUtils.class</exclude>
+								<exclude>net/ranides/assira/text/StringUtils$*</exclude>
+								<exclude>net/ranides/assira/text/Wildcard.class</exclude>
                                 
 								<exclude>net/ranides/assira/trace/ExceptionInspector$*</exclude>
 								<exclude>net/ranides/assira/trace/ExceptionInspector.class</exclude>
-                                <exclude>net/ranides/assira/trace/LoggerLevel$*</exclude>
-                                <exclude>net/ranides/assira/trace/LoggerLevel.class</exclude>
-                                <exclude>net/ranides/assira/trace/LoggerUtils.class</exclude>
+								<exclude>net/ranides/assira/trace/LoggerLevel$*</exclude>
+								<exclude>net/ranides/assira/trace/LoggerLevel.class</exclude>
+								<exclude>net/ranides/assira/trace/LoggerUtils.class</exclude>
 								<exclude>net/ranides/assira/trace/StackInspector$*</exclude>
 								<exclude>net/ranides/assira/trace/StackInspector.class</exclude>
 								<exclude>net/ranides/assira/trace/ThreadInspector$*</exclude>
 								<exclude>net/ranides/assira/trace/ThreadInspector.class</exclude>
                                 
-                            </excludes>
-                        </configuration>
-                    </plugin>
-                </plugins>
-            </build>
-        </profile>
-    </profiles>
+							</excludes>
+						</configuration>
+					</plugin>
+					<plugin>
+						<groupId>org.apache.maven.plugins</groupId>
+						<artifactId>maven-surefire-plugin</artifactId>
+						<configuration>
+							<excludes>
+								<exclude>**/EventLockTest.java</exclude>
+								<exclude>**/EventJoinerTest.java</exclude>
+								<exclude>**/EventDispatcherTest.java</exclude>
+								<exclude>**/EventProactorTest.java</exclude>
+								<exclude>**/EventReactorTest.java</exclude>
+							</excludes>
+						</configuration>
+					</plugin>
+				</plugins>
+			</build>
+		</profile>
+	</profiles>
 	
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.jacoco</groupId>
-                <artifactId>jacoco-maven-plugin</artifactId>
-                <version>0.7.5.201505241946</version>
-                <configuration>
-                    <excludes>
-                        <exclude>net/ranides/assira/test/**</exclude>
-                    </excludes>
-                </configuration>
-            </plugin>
-        </plugins>
-    </build>
+	<build>
+		<plugins>
+			<plugin>
+				<groupId>org.jacoco</groupId>
+				<artifactId>jacoco-maven-plugin</artifactId>
+				<version>0.7.5.201505241946</version>
+				<configuration>
+					<excludes>
+						<exclude>net/ranides/assira/test/**</exclude>
+					</excludes>
+				</configuration>
+			</plugin>
+		</plugins>
+	</build>
     
-    <repositories>
-        <repository>
-            <id>ranides.net</id>
-            <name>ranides.net</name>
-            <url>http://maven.ranides.net</url>
-        </repository>
-    </repositories>
+	<repositories>
+		<repository>
+			<id>ranides.net</id>
+			<name>ranides.net</name>
+			<url>http://maven.ranides.net</url>
+		</repository>
+	</repositories>
     
-    <dependencies>
-        <dependency>
-            <artifactId>assira.asm</artifactId>
-            <groupId>net.ranides</groupId>
-        </dependency>
-        <dependency>
-            <groupId>junit</groupId>
-            <artifactId>junit</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>net.ranides</groupId>
-            <artifactId>assira.junit</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.slf4j</groupId>
-            <artifactId>slf4j-api</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>com.google.code.findbugs</groupId>
-            <artifactId>annotations</artifactId>
-        </dependency>
-    </dependencies>
+	<dependencies>
+		<dependency>
+			<artifactId>assira.asm</artifactId>
+			<groupId>net.ranides</groupId>
+		</dependency>
+		<dependency>
+			<groupId>junit</groupId>
+			<artifactId>junit</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>net.ranides</groupId>
+			<artifactId>assira.junit</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>org.slf4j</groupId>
+			<artifactId>slf4j-api</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>com.google.code.findbugs</groupId>
+			<artifactId>annotations</artifactId>
+		</dependency>
+	</dependencies>
 </project>

+ 24 - 14
assira/src/main/java/net/ranides/assira/reflection/util/ClassUtils.java

@@ -99,36 +99,46 @@ public final class ClassUtils {
     
     public static boolean isLoaded(String name) {
         try {
-            return null != Li.FIND_LOADED_CLASS.invoke(loader(), name);
+			for(ClassLoader c = loader(); c!=null; c=c.getParent()) {
+				if(null != Li.FIND_LOADED_CLASS.invoke(c,name) ) {
+					return true;
+				}
+			}
+            return false;
         } catch(ReflectiveOperationException roe) {
             throw ExceptionUtils.rethrow(roe);
         }
     }
     
     public static ClassLoader loader() {
-        ClassLoader caller  = TraceUtils.getCallerType().getClassLoader();
+		// just in case
+//		ClassLoader caller = TraceUtils.getTypes().stream()
+//			.skip(1)
+//			.filter(c -> !c.isSynthetic())
+//			.findFirst().get()
+//			.getClassLoader();
+
+		ClassLoader caller  = TraceUtils.getCallerType().getClassLoader();		
         ClassLoader context = Thread.currentThread ().getContextClassLoader();
         ClassLoader system  = ClassLoader.getSystemClassLoader();
         
         // If 'caller' and 'context' are in a parent-child relationship, choose the child
-        ClassLoader result = isChild(system, context, caller) ? caller : context;
-        
+        ClassLoader result = isChild(context, caller) ? caller : context;
+		
         // Precaution for when deployed as a bootstrap or extension class:
-        if (isChild (null, result, system)) {
+        if (isChild (result, system)) {
             result = system;
         }
-        
         return result;
     }
     
     @SuppressWarnings("PMD.CompareObjectsWithEquals")
-    private static boolean isChild(ClassLoader root, ClassLoader parent, ClassLoader child) {
-        while( child!=null && child!=root) {
-            if( child == parent) {
-                return true;
-            }
-            child = child.getParent();
-        }
+    static boolean isChild(ClassLoader parent, ClassLoader child) {
+		for(ClassLoader c=child; c!=null; c=c.getParent()) {
+			if(c == parent) {
+				return true;
+			}
+		}
         return false;
     }
     
@@ -138,7 +148,7 @@ public final class ClassUtils {
         
         static {
             try {
-                FIND_LOADED_CLASS = ClassLoader.class.getDeclaredMethod("findLoadedClass", new Class[] { String.class });
+                FIND_LOADED_CLASS = ClassLoader.class.getDeclaredMethod("findLoadedClass", new Class<?>[] { String.class });
                 FIND_LOADED_CLASS.setAccessible(true);
             } catch(ReflectiveOperationException ex) {
                 throw ExceptionUtils.rethrow(ex);

+ 0 - 1
assira/src/main/java/net/ranides/assira/reflection/util/ReflectUtils.java

@@ -12,7 +12,6 @@ import java.io.InputStream;
 import java.lang.reflect.AccessibleObject;
 import net.ranides.assira.text.Charsets;
 import net.ranides.assira.text.StringIO;
-import net.ranides.assira.trace.TraceUtils;
 
 /**
  *

+ 20 - 20
assira/src/main/java/net/ranides/assira/trace/TraceUtils.java

@@ -62,7 +62,7 @@ public final class TraceUtils {
         return new FrameList();
     }
     
-    public static List<Class> getTypes() {
+    public static List<Class<?>> getTypes() {
         return AUTO_LIST_RESOLVER.list();
     }
     
@@ -74,7 +74,7 @@ public final class TraceUtils {
         return new FrameList().get(0);
     }
     
-    public static Class getCalleeType() {
+    public static Class<?> getCalleeType() {
         return AUTO_CALLER_RESOLVER.callee();
     }
     
@@ -86,7 +86,7 @@ public final class TraceUtils {
         return new FrameList().get(1);
     }
     
-    public static Class getCallerType() {
+    public static Class<?> getCallerType() {
         return AUTO_CALLER_RESOLVER.caller();
     }
     
@@ -95,7 +95,7 @@ public final class TraceUtils {
     }
     
     @SuppressWarnings("PMD")
-    static List<Class> test_getTypes(Resolver resolver) {
+    static List<Class<?>> test_getTypes(Resolver resolver) {
         return resolver.list();
     }
     
@@ -105,7 +105,7 @@ public final class TraceUtils {
     }
     
 	@SuppressWarnings("PMD")
-    static Class test_getCalleeType(Resolver resolver) {
+    static Class<?> test_getCalleeType(Resolver resolver) {
         return resolver.callee();
     }
     
@@ -115,7 +115,7 @@ public final class TraceUtils {
     }
     
     @SuppressWarnings("PMD")
-    static Class test_getCallerType(Resolver resolver) {
+    static Class<?> test_getCallerType(Resolver resolver) {
         return resolver.caller();
     }
     
@@ -134,7 +134,7 @@ public final class TraceUtils {
         
         String callerName();
         
-        List<Class> list();
+        List<Class<?>> list();
         
         List<String> names();
     }
@@ -180,7 +180,7 @@ public final class TraceUtils {
         }
         
         @Override
-        public List<Class> list() {
+        public List<Class<?>> list() {
             return new ClassArray(super.getClassContext(), FIRST);
         }
 
@@ -216,8 +216,8 @@ public final class TraceUtils {
         }
         
         @Override
-        public List<Class> list() {
-            List<Class> list = new ArrayList<>(64);
+        public List<Class<?>> list() {
+            List<Class<?>> list = new ArrayList<>(64);
             int i=FIRST;
             Class<?> c;
             while(null != (c = sun.reflect.Reflection.getCallerClass(i++))) {
@@ -257,7 +257,7 @@ public final class TraceUtils {
         }
         
         @Override
-        public List<Class> list() {
+        public List<Class<?>> list() {
             throw new UnsupportedOperationException(NSE);
         }
         
@@ -293,7 +293,7 @@ public final class TraceUtils {
         }
 
         @Override
-        public List<Class> list() {
+        public List<Class<?>> list() {
             throw new UnsupportedOperationException(NSE);
         }
         
@@ -309,25 +309,25 @@ public final class TraceUtils {
         
     }
     
-    private static final class ClassArray extends AbstractList<Class> {
+    private static final class ClassArray extends AbstractList<Class<?>> {
         
-        private final Class[] array;
+        private final Class<?>[] array;
         private final int offset;
         private final int length;
 
         @SuppressWarnings("PMD.ArrayIsStoredDirectly")
-        public ClassArray(Class[] array, int offset, int length) {
+        public ClassArray(Class<?>[] array, int offset, int length) {
             this.array = array;
             this.offset = offset;
             this.length = length;
         }
         
-        public ClassArray(Class[] array, int offset) {
+        public ClassArray(Class<?>[] array, int offset) {
             this(array, offset, array.length-offset);
         }
 
         @Override
-        public Class get(int index) {
+        public Class<?> get(int index) {
             return array[offset+index];
         }
 
@@ -340,18 +340,18 @@ public final class TraceUtils {
     
     private static final class NameArray extends AbstractList<String> {
         
-        private final Class[] array;
+        private final Class<?>[] array;
         private final int offset;
         private final int length;
 
         @SuppressWarnings("PMD.ArrayIsStoredDirectly")
-        public NameArray(Class[] array, int offset, int length) {
+        public NameArray(Class<?>[] array, int offset, int length) {
             this.array = array;
             this.offset = offset;
             this.length = length;
         }
         
-        public NameArray(Class[] array, int offset) {
+        public NameArray(Class<?>[] array, int offset) {
             this(array, offset, array.length-offset);
         }
 

+ 19 - 3
assira/src/test/java/net/ranides/assira/events/EventJoinerTest.java

@@ -8,6 +8,7 @@ package net.ranides.assira.events;
 
 import java.util.Arrays;
 import net.ranides.assira.events.mockup.EventHitMap;
+import net.ranides.assira.trace.ExceptionUtils;
 import org.junit.Test;
 import static org.junit.Assert.*;
 
@@ -18,8 +19,8 @@ import static org.junit.Assert.*;
 public class EventJoinerTest {
     
     @Test
-    public void testJoin() throws InterruptedException {
-        EventHitMap hits = new EventHitMap(100);
+    public void testJoin() {
+        EventHitMap hits = new EventHitMap();
 
         EventJoiner joiner = new EventJoiner() {
             @Override
@@ -34,6 +35,7 @@ public class EventJoinerTest {
 
         EventReactor main = EventReactor.newInstance("name", joiner);
 
+		main.addEventListener(Event.class, e -> sleep(200));
         main.addEventListener(Event.class, hits.listener("global") );
         main.addEventListener(TIOEvent.class, hits.listener("io") );
         main.addEventListener(TReadEvent.class, hits.listener("read") );
@@ -61,10 +63,17 @@ public class EventJoinerTest {
         main.signalEvent(new TReadEvent());
         
         main.stop();
-        Thread.sleep(50);
+        sleep(100);
 
         assertEquals(Arrays.asList("exit", "global", "io", "read", "shutdown", "write"), hits.names());
         
+//		System.out.printf("global   = %s%n", hits.values("global"));
+//		System.out.printf("io       = %s%n", hits.values("io"));
+//		System.out.printf("write    = %s%n", hits.values("write"));
+//		System.out.printf("read     = %s%n", hits.values("read"));
+//		System.out.printf("exit     = %s%n", hits.values("exit"));
+//		System.out.printf("shutdown = %s%n", hits.values("shutdown"));
+
         assertEquals(Arrays.asList(0, 1, 4, 7, 8, 11, 13, 15), hits.values("global"));
         assertEquals(Arrays.asList(2, 5, 9), hits.values("io"));
         assertEquals(Arrays.asList(3), hits.values("write"));
@@ -82,4 +91,11 @@ public class EventJoinerTest {
     @SuppressWarnings("PMD")
     class TWriteEvent extends TIOEvent { }
     
+	private static void sleep(long ms) {
+		try {
+			Thread.sleep(ms);
+		} catch (InterruptedException cause) {
+			throw ExceptionUtils.rethrow(cause);
+		}
+	}
 }

+ 2 - 2
assira/src/test/java/net/ranides/assira/events/EventLockTest.java

@@ -223,7 +223,7 @@ public class EventLockTest {
         event = (IOEvent)lock.waitForEvent(500);
         assertEquals(19, event.handle());
         
-        event = (IOEvent)lock.waitForEvent(100);
+        event = (IOEvent)lock.waitForEvent(200);
         assertNull(event);
         
         event = lock.waitForEvent(ReadEvent.class, 500);
@@ -264,7 +264,7 @@ public class EventLockTest {
              main.stop();
         }).start();
         
-        sleep(500);
+        sleep(750);
 
         assertEquals(201, lock.waitForEvent(IOEvent.class).handle());
         assertEquals(202, lock.waitForEvent(IOEvent.class).handle());

+ 0 - 17
assira/src/test/java/net/ranides/assira/events/mockup/EventHitMap.java

@@ -26,18 +26,8 @@ public class EventHitMap {
 
     private final MultiMap<String, Integer> map = new HashMultiMap<>();
         
-        private final int sleep;
-        
         private int counter = 0;
 
-        public EventHitMap() {
-            this.sleep = 0;
-        }
-        
-        public EventHitMap(int sleep) {
-            this.sleep = sleep;
-        }
-        
         public List<String> names() {
             return new ArrayList<>(new TreeSet<>(map.keySet()));
         }
@@ -60,13 +50,6 @@ public class EventHitMap {
 
             @Override
             public void handleEvent(T event) {
-                if(sleep > 0) {
-                    try {
-                        Thread.sleep(sleep);
-                    } catch (InterruptedException ex) {
-                        throw ExceptionUtils.rethrow(ex);
-                    }
-                }
                 synchronized(map) {
                     map.put(name, counter++);
                 }

+ 124 - 2
assira/src/test/java/net/ranides/assira/reflection/util/ClassUtilsTest.java

@@ -6,7 +6,16 @@
  */
 package net.ranides.assira.reflection.util;
 
+import java.io.File;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.net.URLClassLoader;
+import java.util.function.BiFunction;
+import java.util.function.Function;
+import java.util.function.Supplier;
 import net.ranides.assira.collection.mockup.TPoint;
+import net.ranides.assira.junit.NewAssert;
+import net.ranides.assira.trace.ExceptionUtils;
 import org.junit.Test;
 import static org.junit.Assert.*;
 
@@ -46,9 +55,10 @@ public class ClassUtilsTest {
         assertEquals(TPoint.class, ClassUtils.unbox(TPoint.class));
     }
     
+	@SuppressWarnings("PMD")
     @Test
     public void testIsLoaded() {
-        
+        TPoint point = new TPoint(0, 0, 0);
         assertTrue(ClassUtils.isLoaded("net.ranides.assira.collection.mockup.TPoint"));
         
         assertFalse(ClassUtils.isLoaded("net.ranides.assira.reflection.util.ClassUtilsTest$IType1"));
@@ -59,9 +69,121 @@ public class ClassUtilsTest {
         assertFalse(ClassUtils.isLoaded("net.ranides.assira.reflection.util.ClassUtilsTest$IType1$IType2$IType3"));
         b = new IType1.IType2.IType3();
         assertTrue(ClassUtils.isLoaded("net.ranides.assira.reflection.util.ClassUtilsTest$IType1$IType2$IType3"));
-        
+		
+		ClassLoader prev = replace(newLoader(ClassUtils.loader(), "../assira.test/target/assira.test-2.0.0.jar"));
+
+		assertTrue(ClassUtils.isLoaded("net.ranides.assira.collection.mockup.TPoint"));
+		assertTrue(ClassUtils.isLoaded("net.ranides.assira.reflection.util.ClassUtilsTest$IType1"));
+		assertTrue(ClassUtils.isLoaded("net.ranides.assira.reflection.util.ClassUtilsTest$IType1$IType2$IType3"));
+		
+		replace(prev);
     }
+	
+	@Test
+	public void testIsChild() throws Exception {
+		ClassLoader loader0 = getClass().getClassLoader();
+		ClassLoader loader1 = newLoader(loader0, "../assira.rules/target/assira.rules-1.1.jar");
+		ClassLoader loader2 = newLoader(loader1, "../assira.test/target/assira.test-2.0.0.jar");
+		
+		assertTrue(ClassUtils.isChild(loader0, loader2));
+		assertTrue(ClassUtils.isChild(loader0, loader1));
+		assertTrue(ClassUtils.isChild(loader1, loader1));
+		assertTrue(ClassUtils.isChild(loader1, loader2));
+		assertTrue(ClassUtils.isChild(loader2, loader2));
+		
+		assertFalse(ClassUtils.isChild(loader2, loader0));
+		assertFalse(ClassUtils.isChild(loader1, loader0));
+		assertFalse(ClassUtils.isChild(loader2, loader1));
+	}
+	
+	
+	@Test
+	public void testLoader() throws Exception {
+		ClassLoader loader = newLoader(ClassUtils.loader(), "../assira.test/target/assira.test-2.0.0.jar");
+		
+		Function<String,Supplier<Integer>> f1 = newInstance(loader, "net.ranides.assira.test.TypeLoader1");
+		BiFunction<String, ClassLoader, Supplier<Integer>> f2 = newInstance(loader, "net.ranides.assira.test.TypeLoader2");
+		BiFunction<String, Supplier<ClassLoader>, Supplier<Integer>> f3 = newInstance(loader, "net.ranides.assira.test.TypeLoader3");
+		
+		Supplier<Integer> s1 = f1.apply("net.ranides.assira.test.Type1");
+		assertEquals(11, s1.get().intValue());
+		
+		Supplier<Integer> s2 = f2.apply("net.ranides.assira.test.Type2", loader);
+		assertEquals(22, s2.get().intValue());
+		
+		NewAssert.assertThrows(AssertionError.class, ()->{
+			f2.apply("net.ranides.assira.test.Type3", ClassUtils.loader());
+		});
+		NewAssert.assertThrows(AssertionError.class, ()->{
+			f3.apply("net.ranides.assira.test.Type3", ClassUtils::loader);
+		});
+		
+		
+		ClassLoader prev = replace(loader);
+		
+		Supplier<Integer> s3 = f3.apply("net.ranides.assira.test.Type3", ClassUtils::loader);
+		
+		assertEquals(33, s3.get().intValue());
+		
+		replace(prev);
+	}
+	
+	private static ClassLoader newLoader(ClassLoader parent, String path) {
+		File file = new File(path);
+		assertTrue(path + " should exist", file.exists());
+		try {
+			return new URLClassLoader(new URL[]{ file.toURI().toURL() }, parent);
+		} catch(MalformedURLException cause) {
+			throw ExceptionUtils.rethrow(cause);
+		}
+	}
+	
+	@Test
+	public void testIsInstance() {
+		assertTrue(ClassUtils.isInstance(Integer.class, null));
+		assertTrue(ClassUtils.isInstance(int.class, null));
+		
+		assertTrue(ClassUtils.isInstance(long.class, 55L));
+		assertTrue(ClassUtils.isInstance(Long.class, 55L));
+		assertTrue(ClassUtils.isInstance(Number.class, 55L));
+		assertTrue(ClassUtils.isInstance(Object.class, 55L));
+		
+		assertFalse(ClassUtils.isInstance(long.class, 'z'));
+	}
+	
+	@Test
+	public void testIsInstance_Array() {
+		assertTrue(ClassUtils.isInstance(
+			new Class<?>[]{ Integer.class }, 
+			new Object[]{ null }
+		));
+		assertTrue(ClassUtils.isInstance(
+			new Class<?>[]{ Long.class, int.class, Number.class }, 
+			new Object[]{ 11L, 11, 11f }
+		));
+		
+		assertFalse(ClassUtils.isInstance(
+			new Class<?>[]{ int.class, int.class, int.class }, 
+			new Object[]{ 11, 11 }
+		));
+		assertFalse(ClassUtils.isInstance(
+			new Class<?>[]{ int.class, int.class, int.class }, 
+			new Object[]{ 11, 11, 11L }
+		));
+	}
+	
+	@SuppressWarnings("unchecked")
+	private static <T> T newInstance(ClassLoader loader, String name) throws ReflectiveOperationException {
+		return (T)loader.loadClass(name).newInstance();
+	}
+	
+	private static ClassLoader replace(ClassLoader loader) {
+		ClassLoader prev = Thread.currentThread().getContextClassLoader();
+		Thread.currentThread().setContextClassLoader(loader);
+		return prev;
+	}
     
+	@SuppressWarnings("PMD")
     private static final class IType1 {
         private static final class IType2 {
             private static final class IType3 {

+ 3 - 3
assira/src/test/java/net/ranides/assira/trace/TraceUtilsTest.java

@@ -171,9 +171,9 @@ public class TraceUtilsTest {
             Class<?> callee = SI1.class;
             Class<?> caller = SI0.class;
                     
-            List<Class> listAuto = TraceUtils.getTypes();
-            List<Class> listSM   = TraceUtils.test_getTypes(TraceUtils.RESOLVER_SM);
-            List<Class> listSR   = TraceUtils.test_getTypes(TraceUtils.RESOLVER_SR);
+            List<Class<?>> listAuto = TraceUtils.getTypes();
+            List<Class<?>> listSM   = TraceUtils.test_getTypes(TraceUtils.RESOLVER_SM);
+            List<Class<?>> listSR   = TraceUtils.test_getTypes(TraceUtils.RESOLVER_SR);
 
             if(false) { //NOPMD
                 dump(listAuto);