25
25
import java .lang .reflect .Method ;
26
26
import java .lang .reflect .Modifier ;
27
27
import java .util .ArrayList ;
28
- import java .util .Arrays ;
29
28
import java .util .Collection ;
30
29
import java .util .List ;
31
30
import org .junit .Assume ;
37
36
38
37
/**
39
38
* Tests that Channel and Server builders properly hide the static constructors.
39
+ *
40
+ * <p>This test does nothing on Java 9.
40
41
*/
41
42
@ RunWith (Parameterized .class )
42
43
public class ChannelAndServerBuilderTest {
@@ -49,39 +50,25 @@ public class ChannelAndServerBuilderTest {
49
50
*/
50
51
@ Parameters (name = "class={0}" )
51
52
public static Collection <Object []> params () throws Exception {
52
- @ SuppressWarnings ("unchecked" )
53
- Collection <Class <?>> classesToCheck = Arrays .asList (
54
- Class .forName ("io.grpc.netty.NettyServerBuilder" ),
55
- Class .forName ("io.grpc.netty.NettyChannelBuilder" ),
56
- Class .forName ("io.grpc.okhttp.OkHttpChannelBuilder" ),
57
- Class .forName ("io.grpc.internal.AbstractServerImplBuilder" ),
58
- Class .forName ("io.grpc.internal.AbstractManagedChannelImplBuilder" ),
59
- Class .forName ("io.grpc.inprocess.InProcessChannelBuilder" ),
60
- Class .forName ("io.grpc.inprocess.InProcessServerBuilder" ),
61
- Class .forName ("io.grpc.ForwardingChannelBuilder" ));
62
-
63
53
ClassLoader loader = ChannelAndServerBuilderTest .class .getClassLoader ();
64
- Collection <ClassInfo > infos = ClassPath .from (loader ).getTopLevelClassesRecursive ("io.grpc" );
65
- // If infos is empty, then we can't verify our hard-coded list. Assume that's due to Java 9.
66
- if (!infos .isEmpty ()) {
67
- List <Class <?>> classes = new ArrayList <Class <?>>();
68
- for (ClassInfo classInfo : infos ) {
69
- Class <?> clazz = Class .forName (classInfo .getName (), false /*initialize*/ , loader );
70
- if (ServerBuilder .class .isAssignableFrom (clazz ) && clazz != ServerBuilder .class ) {
71
- classes .add (clazz );
72
- } else if (ManagedChannelBuilder .class .isAssignableFrom (clazz )
73
- && clazz != ManagedChannelBuilder .class ) {
74
- classes .add (clazz );
75
- }
76
- }
77
- Truth .assertWithMessage ("Unable to find any builder classes" ).that (classes ).isNotEmpty ();
78
- Truth .assertThat (classes ).containsExactlyElementsIn (classesToCheck );
54
+ Collection <ClassInfo > classInfos =
55
+ ClassPath .from (loader ).getTopLevelClassesRecursive ("io.grpc" );
56
+ // Java 9 doesn't expose the URLClassLoader, which breaks searching through the classpath
57
+ if (classInfos .isEmpty ()) {
58
+ return new ArrayList <Object []>();
79
59
}
80
- List <Object []> params = new ArrayList <Object []>();
81
- for (Class <?> clazz : classesToCheck ) {
82
- params .add (new Object []{clazz });
60
+ List <Object []> classes = new ArrayList <Object []>();
61
+ for (ClassInfo classInfo : classInfos ) {
62
+ Class <?> clazz = Class .forName (classInfo .getName (), false /*initialize*/ , loader );
63
+ if (ServerBuilder .class .isAssignableFrom (clazz ) && clazz != ServerBuilder .class ) {
64
+ classes .add (new Object []{clazz });
65
+ } else if (ManagedChannelBuilder .class .isAssignableFrom (clazz )
66
+ && clazz != ManagedChannelBuilder .class ) {
67
+ classes .add (new Object []{clazz });
68
+ }
83
69
}
84
- return params ;
70
+ Truth .assertWithMessage ("Unable to find any builder classes" ).that (classes ).isNotEmpty ();
71
+ return classes ;
85
72
}
86
73
87
74
@ Test
0 commit comments