context.getDiagnostics().error(new CallLocation(methodRef), "Method {{m0}} is marked with " + "{{c1}} annotation, but it is not native", methodRef, ClassScopedMetadataProvider.class.getName()); generatorClass = Class.forName(generatorClassName, true, context.getClassLoader()); } catch (ClassNotFoundException e) { context.getDiagnostics().error(new CallLocation(methodRef), "Can't find metadata provider class {{c0}}", generatorClassName); return; cons = generatorClass.getConstructor(); } catch (NoSuchMethodException e) { context.getDiagnostics().error(new CallLocation(methodRef), "Metadata generator {{c0}} does not have " + "a public no-arg constructor", generatorClassName); return; generator = (ClassScopedMetadataGenerator) cons.newInstance(); } catch (IllegalAccessException | InstantiationException | InvocationTargetException e) { context.getDiagnostics().error(new CallLocation(methodRef), "Error instantiating metadata " + "generator {{c0}}", generatorClassName); return;
@Override public void generate(GeneratorContext context, SourceWriter writer, MethodReference methodRef) throws IOException { ClassReader cls = context.getClassSource().get(methodRef.getClassName()); MethodReader method = cls.getMethod(methodRef.getDescriptor()); AnnotationReader refAnnot = method.getAnnotations().get(MetadataProviderRef.class.getName()); methodRef = MethodReference.parse(refAnnot.getValue("value").getString()); MetadataGenerator generator = MetadataUtils.createMetadataGenerator(context.getClassLoader(), method, new CallLocation(methodRef), context.getDiagnostics()); if (generator == null) { return; } DefaultMetadataGeneratorContext metadataContext = new DefaultMetadataGeneratorContext(context.getClassSource(), context.getClassLoader(), context.getProperties(), context); // Generate resource loader Resource resource = generator.generateMetadata(metadataContext, methodRef); writer.append("return "); ResourceWriterHelper.write(writer, resource); writer.append(';').softNewLine(); } }
context.getDiagnostics().error(new CallLocation(methodRef), "Method {{m0}} is marked with " + "{{c1}} annotation, but it is not native", methodRef, ClassScopedMetadataProvider.class.getName()); generatorClass = Class.forName(generatorClassName, true, context.getClassLoader()); } catch (ClassNotFoundException e) { context.getDiagnostics().error(new CallLocation(methodRef), "Can't find metadata provider class {{c0}}", generatorClassName); return; cons = generatorClass.getConstructor(); } catch (NoSuchMethodException e) { context.getDiagnostics().error(new CallLocation(methodRef), "Metadata generator {{c0}} does not have " + "a public no-arg constructor", generatorClassName); return; generator = (ClassScopedMetadataGenerator) cons.newInstance(); } catch (IllegalAccessException | InstantiationException | InvocationTargetException e) { context.getDiagnostics().error(new CallLocation(methodRef), "Error instantiating metadata " + "generator {{c0}}", generatorClassName); return;
@Override public void generate(GeneratorContext context, SourceWriter writer, MethodReference methodRef) throws IOException { ClassReader cls = context.getClassSource().get(methodRef.getClassName()); MethodReader method = cls.getMethod(methodRef.getDescriptor()); AnnotationReader refAnnot = method.getAnnotations().get(MetadataProviderRef.class.getName()); methodRef = MethodReference.parse(refAnnot.getValue("value").getString()); MetadataGenerator generator = MetadataUtils.createMetadataGenerator(context.getClassLoader(), method, new CallLocation(methodRef), context.getDiagnostics()); if (generator == null) { return; } DefaultMetadataGeneratorContext metadataContext = new DefaultMetadataGeneratorContext(context.getClassSource(), context.getClassLoader(), context.getProperties(), context); // Generate resource loader Resource resource = generator.generateMetadata(metadataContext, methodRef); writer.append("return "); ResourceWriterHelper.write(writer, resource); writer.append(';').softNewLine(); } }