rt/vm/src/main/java/org/apidesign/vm4brwsr/Bck2Brwsr.java
branchclosure
changeset 1029 b1fe994d4267
parent 1020 a6bacea2518f
child 1086 2ac4283ee209
     1.1 --- a/rt/vm/src/main/java/org/apidesign/vm4brwsr/Bck2Brwsr.java	Thu Apr 25 16:17:48 2013 +0200
     1.2 +++ b/rt/vm/src/main/java/org/apidesign/vm4brwsr/Bck2Brwsr.java	Fri Apr 26 18:48:34 2013 +0200
     1.3 @@ -57,11 +57,13 @@
     1.4      private final ObfuscationLevel level;
     1.5      private final StringArray classes;
     1.6      private final Resources res;
     1.7 +    private final boolean extension;
     1.8  
     1.9 -    private Bck2Brwsr(ObfuscationLevel level, StringArray classes, Resources resources) {
    1.10 +    private Bck2Brwsr(ObfuscationLevel level, StringArray classes, Resources resources, boolean extension) {
    1.11          this.level = level;
    1.12          this.classes = classes;
    1.13          this.res = resources;
    1.14 +        this.extension = extension;
    1.15      }
    1.16      
    1.17      /** Helper method to generate virtual machine from bytes served by a <code>resources</code>
    1.18 @@ -98,8 +100,10 @@
    1.19       * @since 0.5
    1.20       */
    1.21      public static Bck2Brwsr newCompiler() {
    1.22 -        StringArray arr = StringArray.asList(VM.class.getName().replace('.', '/'));
    1.23 -        return new Bck2Brwsr(ObfuscationLevel.NONE, arr, null);
    1.24 +        StringArray arr = StringArray.asList(
    1.25 +                              Class.class.getName().replace('.', '/'),
    1.26 +                              VM.class.getName().replace('.', '/'));
    1.27 +        return new Bck2Brwsr(ObfuscationLevel.NONE, arr, null, false);
    1.28      }
    1.29  
    1.30      /** Creates new instance of the Bck2Brwsr compiler which inherits
    1.31 @@ -114,7 +118,8 @@
    1.32          if (classes.length == 0) {
    1.33              return this;
    1.34          } else {
    1.35 -            return new Bck2Brwsr(level, this.classes.addAndNew(classes), res);
    1.36 +            return new Bck2Brwsr(level, this.classes.addAndNew(classes), res,
    1.37 +                                 extension);
    1.38          }
    1.39      }
    1.40      
    1.41 @@ -127,7 +132,7 @@
    1.42       * @since 0.5
    1.43       */
    1.44      public Bck2Brwsr obfuscation(ObfuscationLevel level) {
    1.45 -        return new Bck2Brwsr(level, classes, res);
    1.46 +        return new Bck2Brwsr(level, classes, res, extension);
    1.47      }
    1.48      
    1.49      /** A way to change the provider of additional resources (classes) for the 
    1.50 @@ -139,7 +144,11 @@
    1.51       * @since 0.5
    1.52       */
    1.53      public Bck2Brwsr resources(Resources res) {
    1.54 -        return new Bck2Brwsr(level, classes, res);
    1.55 +        return new Bck2Brwsr(level, classes, res, extension);
    1.56 +    }
    1.57 +
    1.58 +    public Bck2Brwsr extension(boolean extension) {
    1.59 +        return new Bck2Brwsr(level, classes, res, extension);
    1.60      }
    1.61  
    1.62      /** A way to change the provider of additional resources (classes) for the 
    1.63 @@ -162,19 +171,23 @@
    1.64       */
    1.65      public void generate(Appendable out) throws IOException {
    1.66          Resources r = res != null ? res : new LdrRsrcs(Bck2Brwsr.class.getClassLoader());
    1.67 -        if (level != ObfuscationLevel.NONE) {
    1.68 -            try {
    1.69 -                ClosureWrapper.produceTo(out, level, r, classes);
    1.70 -                return;
    1.71 -            } catch (IOException ex) {
    1.72 -                throw ex;
    1.73 -            } catch (Throwable ex) {
    1.74 -                out.append("/* Failed to obfuscate: " + ex.getMessage()
    1.75 -                               + " */\n");
    1.76 -            }
    1.77 +//        if (level != ObfuscationLevel.NONE) {
    1.78 +//            try {
    1.79 +//                ClosureWrapper.produceTo(out, level, r, classes);
    1.80 +//                return;
    1.81 +//            } catch (IOException ex) {
    1.82 +//                throw ex;
    1.83 +//            } catch (Throwable ex) {
    1.84 +//                out.append("/* Failed to obfuscate: " + ex.getMessage()
    1.85 +//                               + " */\n");
    1.86 +//            }
    1.87 +//        }
    1.88 +
    1.89 +        if (extension) {
    1.90 +            VM.compileExtension(r, out, classes);
    1.91 +        } else {
    1.92 +            VM.compileStandalone(r, out, classes);
    1.93          }
    1.94 -
    1.95 -        VM.compile(r, out, classes);
    1.96      }
    1.97      
    1.98      /** Provider of resources (classes and other files). The 
    1.99 @@ -193,7 +206,5 @@
   1.100           *   or the file cannot be found
   1.101           */
   1.102          public InputStream get(String resource) throws IOException;
   1.103 -
   1.104 -        public String getModule(String resource) throws IOException;
   1.105      }
   1.106  }