boot/src/main/java/org/apidesign/html/boot/impl/FnUtils.java
changeset 349 53634fd10e30
parent 323 86aabecda7a3
child 350 25abd193f145
child 358 80702021b851
     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          }