< prev index next >

test/jdk/java/util/ServiceLoader/BadProvidersTest.java

Print this page
rev 47454 : [mq]: jdk-new-asm-test.patch


 192         Path classFile = Paths.get("p", "Provider.class");
 193         Files.copy(output.resolve(classFile),
 194                    mods.resolve(TEST2_MODULE).resolve(classFile),
 195                    StandardCopyOption.REPLACE_EXISTING);
 196 
 197         // load providers and instantiate each one
 198         loadProviders(mods, TEST2_MODULE).forEach(Provider::get);
 199     }
 200 
 201 
 202     /**
 203      * Test a service provider that defines more than one no-args
 204      * public static "provider" method.
 205      */
 206     @Test(expectedExceptions = ServiceConfigurationError.class)
 207     public void testWithTwoFactoryMethods() throws Exception {
 208         Path mods = compileTest(TEST1_MODULE);
 209 
 210         ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_MAXS
 211                                          + ClassWriter.COMPUTE_FRAMES);
 212         cw.visit(V1_9,
 213                 ACC_PUBLIC + ACC_SUPER,
 214                 "p/ProviderFactory",
 215                 null,
 216                 "java/lang/Object",
 217                 null);
 218 
 219         // public static p.Service provider()
 220         MethodVisitor mv = cw.visitMethod(ACC_PUBLIC + ACC_STATIC,
 221                 "provider",
 222                 "()Lp/Service;",
 223                 null,
 224                 null);
 225         mv.visitTypeInsn(NEW, "p/ProviderFactory$1");
 226         mv.visitInsn(DUP);
 227         mv.visitMethodInsn(INVOKESPECIAL,
 228                 "p/ProviderFactory$1",
 229                 "<init>", "()V",
 230                 false);
 231         mv.visitInsn(ARETURN);
 232         mv.visitMaxs(0, 0);




 192         Path classFile = Paths.get("p", "Provider.class");
 193         Files.copy(output.resolve(classFile),
 194                    mods.resolve(TEST2_MODULE).resolve(classFile),
 195                    StandardCopyOption.REPLACE_EXISTING);
 196 
 197         // load providers and instantiate each one
 198         loadProviders(mods, TEST2_MODULE).forEach(Provider::get);
 199     }
 200 
 201 
 202     /**
 203      * Test a service provider that defines more than one no-args
 204      * public static "provider" method.
 205      */
 206     @Test(expectedExceptions = ServiceConfigurationError.class)
 207     public void testWithTwoFactoryMethods() throws Exception {
 208         Path mods = compileTest(TEST1_MODULE);
 209 
 210         ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_MAXS
 211                                          + ClassWriter.COMPUTE_FRAMES);
 212         cw.visit(V9,
 213                 ACC_PUBLIC + ACC_SUPER,
 214                 "p/ProviderFactory",
 215                 null,
 216                 "java/lang/Object",
 217                 null);
 218 
 219         // public static p.Service provider()
 220         MethodVisitor mv = cw.visitMethod(ACC_PUBLIC + ACC_STATIC,
 221                 "provider",
 222                 "()Lp/Service;",
 223                 null,
 224                 null);
 225         mv.visitTypeInsn(NEW, "p/ProviderFactory$1");
 226         mv.visitInsn(DUP);
 227         mv.visitMethodInsn(INVOKESPECIAL,
 228                 "p/ProviderFactory$1",
 229                 "<init>", "()V",
 230                 false);
 231         mv.visitInsn(ARETURN);
 232         mv.visitMaxs(0, 0);


< prev index next >