1.1 --- a/boot/src/main/java/org/apidesign/html/boot/impl/FnUtils.java Wed Nov 06 15:15:54 2013 +0100
1.2 +++ b/boot/src/main/java/org/apidesign/html/boot/impl/FnUtils.java Thu Dec 12 23:54:32 2013 +0100
1.3 @@ -156,6 +156,7 @@
1.4 private String name;
1.5 private int found;
1.6 private ClassLoader loader;
1.7 + private String resource;
1.8
1.9 public FindInClass(ClassLoader l, ClassVisitor cv) {
1.10 super(Opcodes.ASM4, cv);
1.11 @@ -263,6 +264,14 @@
1.12 "org/apidesign/html/boot/spi/Fn", "define",
1.13 "(Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/String;)Lorg/apidesign/html/boot/spi/Fn;"
1.14 );
1.15 + if (resource != null) {
1.16 + super.visitLdcInsn(Type.getObjectType(FindInClass.this.name));
1.17 + super.visitLdcInsn(resource);
1.18 + super.visitMethodInsn(Opcodes.INVOKESTATIC,
1.19 + "org/apidesign/html/boot/spi/Fn", "preload",
1.20 + "(Lorg/apidesign/html/boot/spi/Fn;Ljava/lang/Class;Ljava/lang/String;)Lorg/apidesign/html/boot/spi/Fn;"
1.21 + );
1.22 + }
1.23 super.visitInsn(Opcodes.DUP);
1.24 super.visitFieldInsn(
1.25 Opcodes.PUTSTATIC, FindInClass.this.name,
1.26 @@ -487,11 +496,11 @@
1.27 public void visit(String attrName, Object value) {
1.28 String relPath = (String) value;
1.29 if (relPath.startsWith("/")) {
1.30 - loadScript(loader, relPath);
1.31 + resource = relPath;
1.32 } else {
1.33 int last = name.lastIndexOf('/');
1.34 String fullPath = name.substring(0, last + 1) + relPath;
1.35 - loadScript(loader, fullPath);
1.36 + resource = fullPath;
1.37 }
1.38 }
1.39 }