langtools/test/tools/javac/processing/filer/TestFilerConstraints.java
author ohair
Tue, 25 May 2010 15:54:51 -0700
changeset 5520 86e4b9a9da40
parent 10 06bc494ca11e
child 6720 f16f91662ad8
permissions -rw-r--r--
6943119: Rebrand source copyright notices Reviewed-by: darcy
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
10
06bc494ca11e Initial load
duke
parents:
diff changeset
     1
/*
5520
86e4b9a9da40 6943119: Rebrand source copyright notices
ohair
parents: 10
diff changeset
     2
 * Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved.
10
06bc494ca11e Initial load
duke
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
06bc494ca11e Initial load
duke
parents:
diff changeset
     4
 *
06bc494ca11e Initial load
duke
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
06bc494ca11e Initial load
duke
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
06bc494ca11e Initial load
duke
parents:
diff changeset
     7
 * published by the Free Software Foundation.
06bc494ca11e Initial load
duke
parents:
diff changeset
     8
 *
06bc494ca11e Initial load
duke
parents:
diff changeset
     9
 * This code is distributed in the hope that it will be useful, but WITHOUT
06bc494ca11e Initial load
duke
parents:
diff changeset
    10
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
06bc494ca11e Initial load
duke
parents:
diff changeset
    11
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
06bc494ca11e Initial load
duke
parents:
diff changeset
    12
 * version 2 for more details (a copy is included in the LICENSE file that
06bc494ca11e Initial load
duke
parents:
diff changeset
    13
 * accompanied this code).
06bc494ca11e Initial load
duke
parents:
diff changeset
    14
 *
06bc494ca11e Initial load
duke
parents:
diff changeset
    15
 * You should have received a copy of the GNU General Public License version
06bc494ca11e Initial load
duke
parents:
diff changeset
    16
 * 2 along with this work; if not, write to the Free Software Foundation,
06bc494ca11e Initial load
duke
parents:
diff changeset
    17
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
06bc494ca11e Initial load
duke
parents:
diff changeset
    18
 *
5520
86e4b9a9da40 6943119: Rebrand source copyright notices
ohair
parents: 10
diff changeset
    19
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
86e4b9a9da40 6943119: Rebrand source copyright notices
ohair
parents: 10
diff changeset
    20
 * or visit www.oracle.com if you need additional information or have any
86e4b9a9da40 6943119: Rebrand source copyright notices
ohair
parents: 10
diff changeset
    21
 * questions.
10
06bc494ca11e Initial load
duke
parents:
diff changeset
    22
 */
06bc494ca11e Initial load
duke
parents:
diff changeset
    23
06bc494ca11e Initial load
duke
parents:
diff changeset
    24
/*
06bc494ca11e Initial load
duke
parents:
diff changeset
    25
 * @test
06bc494ca11e Initial load
duke
parents:
diff changeset
    26
 * @bug 6380018 6453386 6457283
06bc494ca11e Initial load
duke
parents:
diff changeset
    27
 * @summary Test that the constraints guaranteed by the Filer and maintained
06bc494ca11e Initial load
duke
parents:
diff changeset
    28
 * @author  Joseph D. Darcy
06bc494ca11e Initial load
duke
parents:
diff changeset
    29
 * @build TestFilerConstraints
06bc494ca11e Initial load
duke
parents:
diff changeset
    30
 * @compile -encoding iso-8859-1 -processor TestFilerConstraints -proc:only TestFilerConstraints.java
06bc494ca11e Initial load
duke
parents:
diff changeset
    31
 */
06bc494ca11e Initial load
duke
parents:
diff changeset
    32
06bc494ca11e Initial load
duke
parents:
diff changeset
    33
import java.util.Set;
06bc494ca11e Initial load
duke
parents:
diff changeset
    34
import javax.annotation.processing.*;
06bc494ca11e Initial load
duke
parents:
diff changeset
    35
import javax.lang.model.SourceVersion;
06bc494ca11e Initial load
duke
parents:
diff changeset
    36
import static javax.lang.model.SourceVersion.*;
06bc494ca11e Initial load
duke
parents:
diff changeset
    37
import javax.lang.model.element.*;
06bc494ca11e Initial load
duke
parents:
diff changeset
    38
import javax.lang.model.util.*;
06bc494ca11e Initial load
duke
parents:
diff changeset
    39
import static javax.lang.model.util.ElementFilter.*;
06bc494ca11e Initial load
duke
parents:
diff changeset
    40
import static javax.tools.Diagnostic.Kind.*;
06bc494ca11e Initial load
duke
parents:
diff changeset
    41
import static javax.tools.StandardLocation.*;
06bc494ca11e Initial load
duke
parents:
diff changeset
    42
06bc494ca11e Initial load
duke
parents:
diff changeset
    43
import java.io.*;
06bc494ca11e Initial load
duke
parents:
diff changeset
    44
import java.nio.charset.Charset;
06bc494ca11e Initial load
duke
parents:
diff changeset
    45
06bc494ca11e Initial load
duke
parents:
diff changeset
    46
/**
06bc494ca11e Initial load
duke
parents:
diff changeset
    47
 * A processor that verifies the explicit and implicit constraints in
06bc494ca11e Initial load
duke
parents:
diff changeset
    48
 * the Filer contract are maintained:
06bc494ca11e Initial load
duke
parents:
diff changeset
    49
 *
06bc494ca11e Initial load
duke
parents:
diff changeset
    50
 * <blockquote>
06bc494ca11e Initial load
duke
parents:
diff changeset
    51
 *
06bc494ca11e Initial load
duke
parents:
diff changeset
    52
 *  During each run of an annotation processing tool, a file with a
06bc494ca11e Initial load
duke
parents:
diff changeset
    53
 *  given pathname may be created only once. If that file already
06bc494ca11e Initial load
duke
parents:
diff changeset
    54
 *  exists before the first attempt to create it, the old contents
06bc494ca11e Initial load
duke
parents:
diff changeset
    55
 *  will be deleted. Any subsequent attempt to create the same file
06bc494ca11e Initial load
duke
parents:
diff changeset
    56
 *  during a run will throw a FilerException, as will attempting to
06bc494ca11e Initial load
duke
parents:
diff changeset
    57
 *  open both a class file and source file for the same type name.
06bc494ca11e Initial load
duke
parents:
diff changeset
    58
 *
06bc494ca11e Initial load
duke
parents:
diff changeset
    59
 * </blockquote>
06bc494ca11e Initial load
duke
parents:
diff changeset
    60
 *
06bc494ca11e Initial load
duke
parents:
diff changeset
    61
 * Specific checks will include:
06bc494ca11e Initial load
duke
parents:
diff changeset
    62
 *
06bc494ca11e Initial load
duke
parents:
diff changeset
    63
 * <ul>
06bc494ca11e Initial load
duke
parents:
diff changeset
    64
 *
06bc494ca11e Initial load
duke
parents:
diff changeset
    65
 * <li> Source and class files can be written to from either a Writer or an OutputStream.
06bc494ca11e Initial load
duke
parents:
diff changeset
    66
 *
06bc494ca11e Initial load
duke
parents:
diff changeset
    67
 * <li> Calling close multiple times does not re-register the file for
06bc494ca11e Initial load
duke
parents:
diff changeset
    68
 * processing.
06bc494ca11e Initial load
duke
parents:
diff changeset
    69
 *
06bc494ca11e Initial load
duke
parents:
diff changeset
    70
 * </ul>
06bc494ca11e Initial load
duke
parents:
diff changeset
    71
 */
06bc494ca11e Initial load
duke
parents:
diff changeset
    72
@SupportedAnnotationTypes("*")
06bc494ca11e Initial load
duke
parents:
diff changeset
    73
public class TestFilerConstraints extends AbstractProcessor {
06bc494ca11e Initial load
duke
parents:
diff changeset
    74
    private int round = 0;
06bc494ca11e Initial load
duke
parents:
diff changeset
    75
    private Messager messager;
06bc494ca11e Initial load
duke
parents:
diff changeset
    76
    private Filer filer;
06bc494ca11e Initial load
duke
parents:
diff changeset
    77
06bc494ca11e Initial load
duke
parents:
diff changeset
    78
    private PrintWriter  pw_src1 = null;
06bc494ca11e Initial load
duke
parents:
diff changeset
    79
    private PrintWriter  pw_src2 = null;
06bc494ca11e Initial load
duke
parents:
diff changeset
    80
    private OutputStream os_classFile1 = null;
06bc494ca11e Initial load
duke
parents:
diff changeset
    81
    private      Writer  pw_classFile2 = null;
06bc494ca11e Initial load
duke
parents:
diff changeset
    82
06bc494ca11e Initial load
duke
parents:
diff changeset
    83
    public boolean process(Set<? extends TypeElement> annotations,
06bc494ca11e Initial load
duke
parents:
diff changeset
    84
                           RoundEnvironment roundEnv) {
06bc494ca11e Initial load
duke
parents:
diff changeset
    85
        round++;
06bc494ca11e Initial load
duke
parents:
diff changeset
    86
06bc494ca11e Initial load
duke
parents:
diff changeset
    87
        try {
06bc494ca11e Initial load
duke
parents:
diff changeset
    88
            switch(round) {
06bc494ca11e Initial load
duke
parents:
diff changeset
    89
                // Open two source files
06bc494ca11e Initial load
duke
parents:
diff changeset
    90
            case 1:
06bc494ca11e Initial load
duke
parents:
diff changeset
    91
                pw_src1 = new PrintWriter(filer.createSourceFile("Src1").openWriter());
06bc494ca11e Initial load
duke
parents:
diff changeset
    92
                pw_src1.println("class Src1 {}");
06bc494ca11e Initial load
duke
parents:
diff changeset
    93
                pw_src1.close();
06bc494ca11e Initial load
duke
parents:
diff changeset
    94
06bc494ca11e Initial load
duke
parents:
diff changeset
    95
                // Hold open across rounds
06bc494ca11e Initial load
duke
parents:
diff changeset
    96
                pw_src2 = new PrintWriter(new OutputStreamWriter(filer.createSourceFile("Src2").openOutputStream()));
06bc494ca11e Initial load
duke
parents:
diff changeset
    97
                break;
06bc494ca11e Initial load
duke
parents:
diff changeset
    98
06bc494ca11e Initial load
duke
parents:
diff changeset
    99
            case 2:
06bc494ca11e Initial load
duke
parents:
diff changeset
   100
                testExpectedType(roundEnv, "Src1");
06bc494ca11e Initial load
duke
parents:
diff changeset
   101
06bc494ca11e Initial load
duke
parents:
diff changeset
   102
                // Close Src1 a second time
06bc494ca11e Initial load
duke
parents:
diff changeset
   103
                pw_src1.close();
06bc494ca11e Initial load
duke
parents:
diff changeset
   104
06bc494ca11e Initial load
duke
parents:
diff changeset
   105
                pw_src2.println("class Src2 {}");
06bc494ca11e Initial load
duke
parents:
diff changeset
   106
                pw_src2.close();
06bc494ca11e Initial load
duke
parents:
diff changeset
   107
06bc494ca11e Initial load
duke
parents:
diff changeset
   108
                break;
06bc494ca11e Initial load
duke
parents:
diff changeset
   109
06bc494ca11e Initial load
duke
parents:
diff changeset
   110
            case 3:
06bc494ca11e Initial load
duke
parents:
diff changeset
   111
                testExpectedType(roundEnv, "Src2");
06bc494ca11e Initial load
duke
parents:
diff changeset
   112
06bc494ca11e Initial load
duke
parents:
diff changeset
   113
                // Close Src2 a second time
06bc494ca11e Initial load
duke
parents:
diff changeset
   114
                pw_src2.close();
06bc494ca11e Initial load
duke
parents:
diff changeset
   115
06bc494ca11e Initial load
duke
parents:
diff changeset
   116
                os_classFile1 = filer.createClassFile("ClassFile1").openOutputStream();
06bc494ca11e Initial load
duke
parents:
diff changeset
   117
                for (int value : classFile1Bytes)
06bc494ca11e Initial load
duke
parents:
diff changeset
   118
                    os_classFile1.write((byte)value);
06bc494ca11e Initial load
duke
parents:
diff changeset
   119
                os_classFile1.close();
06bc494ca11e Initial load
duke
parents:
diff changeset
   120
06bc494ca11e Initial load
duke
parents:
diff changeset
   121
                break;
06bc494ca11e Initial load
duke
parents:
diff changeset
   122
06bc494ca11e Initial load
duke
parents:
diff changeset
   123
            case 4:
06bc494ca11e Initial load
duke
parents:
diff changeset
   124
                testExpectedType(roundEnv, "ClassFile1");
06bc494ca11e Initial load
duke
parents:
diff changeset
   125
06bc494ca11e Initial load
duke
parents:
diff changeset
   126
                // Close a second time
06bc494ca11e Initial load
duke
parents:
diff changeset
   127
                os_classFile1.close();
06bc494ca11e Initial load
duke
parents:
diff changeset
   128
06bc494ca11e Initial load
duke
parents:
diff changeset
   129
                testReopening();
06bc494ca11e Initial load
duke
parents:
diff changeset
   130
06bc494ca11e Initial load
duke
parents:
diff changeset
   131
                pw_classFile2 = new PrintWriter(filer.createClassFile("ClassFile2",
06bc494ca11e Initial load
duke
parents:
diff changeset
   132
                                                                      (Element[])null).openWriter());
06bc494ca11e Initial load
duke
parents:
diff changeset
   133
06bc494ca11e Initial load
duke
parents:
diff changeset
   134
                for(int byteVal : classFile2Bytes) {
06bc494ca11e Initial load
duke
parents:
diff changeset
   135
                    // int value = (0xff00 & (classFile2Bytes[i]<<8)) | classFile2Bytes[i+1];
06bc494ca11e Initial load
duke
parents:
diff changeset
   136
                    // System.out.print(Integer.toHexString(value));
06bc494ca11e Initial load
duke
parents:
diff changeset
   137
                    //if ((i % 4) == 0)
06bc494ca11e Initial load
duke
parents:
diff changeset
   138
                    // System.out.println();
06bc494ca11e Initial load
duke
parents:
diff changeset
   139
                    pw_classFile2.write((char) (0xff & byteVal));
06bc494ca11e Initial load
duke
parents:
diff changeset
   140
                }
06bc494ca11e Initial load
duke
parents:
diff changeset
   141
                pw_classFile2.close();
06bc494ca11e Initial load
duke
parents:
diff changeset
   142
06bc494ca11e Initial load
duke
parents:
diff changeset
   143
                break;
06bc494ca11e Initial load
duke
parents:
diff changeset
   144
06bc494ca11e Initial load
duke
parents:
diff changeset
   145
06bc494ca11e Initial load
duke
parents:
diff changeset
   146
06bc494ca11e Initial load
duke
parents:
diff changeset
   147
            case 5:
06bc494ca11e Initial load
duke
parents:
diff changeset
   148
                testExpectedType(roundEnv, "ClassFile2");
06bc494ca11e Initial load
duke
parents:
diff changeset
   149
                // Close a second time
06bc494ca11e Initial load
duke
parents:
diff changeset
   150
                pw_classFile2.close();
06bc494ca11e Initial load
duke
parents:
diff changeset
   151
06bc494ca11e Initial load
duke
parents:
diff changeset
   152
06bc494ca11e Initial load
duke
parents:
diff changeset
   153
                break;
06bc494ca11e Initial load
duke
parents:
diff changeset
   154
06bc494ca11e Initial load
duke
parents:
diff changeset
   155
            case 6:
06bc494ca11e Initial load
duke
parents:
diff changeset
   156
                if (!roundEnv.processingOver() && !roundEnv.errorRaised())
06bc494ca11e Initial load
duke
parents:
diff changeset
   157
                    throw new RuntimeException("Bad round state: " + roundEnv);
06bc494ca11e Initial load
duke
parents:
diff changeset
   158
                break;
06bc494ca11e Initial load
duke
parents:
diff changeset
   159
06bc494ca11e Initial load
duke
parents:
diff changeset
   160
            default:
06bc494ca11e Initial load
duke
parents:
diff changeset
   161
                throw new RuntimeException("Unexpected round number!");
06bc494ca11e Initial load
duke
parents:
diff changeset
   162
            }
06bc494ca11e Initial load
duke
parents:
diff changeset
   163
        } catch (IOException ioe) {
06bc494ca11e Initial load
duke
parents:
diff changeset
   164
            throw new RuntimeException(ioe);
06bc494ca11e Initial load
duke
parents:
diff changeset
   165
        }
06bc494ca11e Initial load
duke
parents:
diff changeset
   166
06bc494ca11e Initial load
duke
parents:
diff changeset
   167
        return true;
06bc494ca11e Initial load
duke
parents:
diff changeset
   168
    }
06bc494ca11e Initial load
duke
parents:
diff changeset
   169
06bc494ca11e Initial load
duke
parents:
diff changeset
   170
    public SourceVersion getSupportedSourceVersion() {
06bc494ca11e Initial load
duke
parents:
diff changeset
   171
        return SourceVersion.latest();
06bc494ca11e Initial load
duke
parents:
diff changeset
   172
    }
06bc494ca11e Initial load
duke
parents:
diff changeset
   173
06bc494ca11e Initial load
duke
parents:
diff changeset
   174
    public void init(ProcessingEnvironment processingEnv) {
06bc494ca11e Initial load
duke
parents:
diff changeset
   175
        super.init(processingEnv);
06bc494ca11e Initial load
duke
parents:
diff changeset
   176
        messager = processingEnv.getMessager();
06bc494ca11e Initial load
duke
parents:
diff changeset
   177
        filer    = processingEnv.getFiler();
06bc494ca11e Initial load
duke
parents:
diff changeset
   178
06bc494ca11e Initial load
duke
parents:
diff changeset
   179
    }
06bc494ca11e Initial load
duke
parents:
diff changeset
   180
06bc494ca11e Initial load
duke
parents:
diff changeset
   181
    /**
06bc494ca11e Initial load
duke
parents:
diff changeset
   182
     * Test that the single expected expected type, name, is the root
06bc494ca11e Initial load
duke
parents:
diff changeset
   183
     * element.
06bc494ca11e Initial load
duke
parents:
diff changeset
   184
     */
06bc494ca11e Initial load
duke
parents:
diff changeset
   185
    private void testExpectedType(RoundEnvironment roundEnv, String name) {
06bc494ca11e Initial load
duke
parents:
diff changeset
   186
        if (!roundEnv.getRootElements().isEmpty()) {
06bc494ca11e Initial load
duke
parents:
diff changeset
   187
            for(TypeElement type : typesIn(roundEnv.getRootElements())) {
06bc494ca11e Initial load
duke
parents:
diff changeset
   188
                if (!name.contentEquals(type.getSimpleName()))
06bc494ca11e Initial load
duke
parents:
diff changeset
   189
                    throw new RuntimeException("Unexpected type " +  type.getSimpleName());
06bc494ca11e Initial load
duke
parents:
diff changeset
   190
            }
06bc494ca11e Initial load
duke
parents:
diff changeset
   191
        } else
06bc494ca11e Initial load
duke
parents:
diff changeset
   192
            throw new RuntimeException("Unexpected empty root elements.");
06bc494ca11e Initial load
duke
parents:
diff changeset
   193
    }
06bc494ca11e Initial load
duke
parents:
diff changeset
   194
06bc494ca11e Initial load
duke
parents:
diff changeset
   195
    private void testReopening() throws IOException {
06bc494ca11e Initial load
duke
parents:
diff changeset
   196
        String[] names = {"Src1", "Src2", "ClassFile1"};
06bc494ca11e Initial load
duke
parents:
diff changeset
   197
        for (String name : names) {
06bc494ca11e Initial load
duke
parents:
diff changeset
   198
            try {
06bc494ca11e Initial load
duke
parents:
diff changeset
   199
                filer.createSourceFile(name);
06bc494ca11e Initial load
duke
parents:
diff changeset
   200
                throw new RuntimeException("Opened a source file for type " + name);
06bc494ca11e Initial load
duke
parents:
diff changeset
   201
            } catch (FilerException fe) {;}
06bc494ca11e Initial load
duke
parents:
diff changeset
   202
06bc494ca11e Initial load
duke
parents:
diff changeset
   203
            try {
06bc494ca11e Initial load
duke
parents:
diff changeset
   204
                filer.createClassFile(name);
06bc494ca11e Initial load
duke
parents:
diff changeset
   205
                throw new RuntimeException("Opened a class file for type " + name);
06bc494ca11e Initial load
duke
parents:
diff changeset
   206
            } catch (FilerException fe) {;}
06bc494ca11e Initial load
duke
parents:
diff changeset
   207
        }
06bc494ca11e Initial load
duke
parents:
diff changeset
   208
06bc494ca11e Initial load
duke
parents:
diff changeset
   209
        // Try to open a resource over a source file
06bc494ca11e Initial load
duke
parents:
diff changeset
   210
        try {
06bc494ca11e Initial load
duke
parents:
diff changeset
   211
            filer.createResource(SOURCE_OUTPUT, "", "Src1.java");
06bc494ca11e Initial load
duke
parents:
diff changeset
   212
            throw new RuntimeException("Opened a text file over Src1.java!");
06bc494ca11e Initial load
duke
parents:
diff changeset
   213
        } catch (FilerException fe) {;}
06bc494ca11e Initial load
duke
parents:
diff changeset
   214
06bc494ca11e Initial load
duke
parents:
diff changeset
   215
        // Try to open a resource over a class file
06bc494ca11e Initial load
duke
parents:
diff changeset
   216
        try {
06bc494ca11e Initial load
duke
parents:
diff changeset
   217
            filer.createResource(CLASS_OUTPUT, "", "ClassFile1.class");
06bc494ca11e Initial load
duke
parents:
diff changeset
   218
            throw new RuntimeException("Opened a text file over Src1.java!");
06bc494ca11e Initial load
duke
parents:
diff changeset
   219
        } catch (FilerException fe) {;}
06bc494ca11e Initial load
duke
parents:
diff changeset
   220
06bc494ca11e Initial load
duke
parents:
diff changeset
   221
    }
06bc494ca11e Initial load
duke
parents:
diff changeset
   222
06bc494ca11e Initial load
duke
parents:
diff changeset
   223
    private int[] classFile1Bytes =
06bc494ca11e Initial load
duke
parents:
diff changeset
   224
    {202, 254, 186, 190,   0,   0,   0,  50,
06bc494ca11e Initial load
duke
parents:
diff changeset
   225
       0,  13,  10,   0,   3,   0,  10,   7,
06bc494ca11e Initial load
duke
parents:
diff changeset
   226
       0,  11,   7,   0,  12,   1,   0,   6,
06bc494ca11e Initial load
duke
parents:
diff changeset
   227
      60, 105, 110, 105, 116,  62,   1,   0,
06bc494ca11e Initial load
duke
parents:
diff changeset
   228
       3,  40,  41,  86,   1,   0,   4,  67,
06bc494ca11e Initial load
duke
parents:
diff changeset
   229
     111, 100, 101,   1,   0,  15,  76, 105,
06bc494ca11e Initial load
duke
parents:
diff changeset
   230
     110, 101,  78, 117, 109,  98, 101, 114,
06bc494ca11e Initial load
duke
parents:
diff changeset
   231
      84,  97,  98, 108, 101,   1,   0,  10,
06bc494ca11e Initial load
duke
parents:
diff changeset
   232
      83, 111, 117, 114,  99, 101,  70, 105,
06bc494ca11e Initial load
duke
parents:
diff changeset
   233
     108, 101,   1,   0,  15,  67, 108,  97,
06bc494ca11e Initial load
duke
parents:
diff changeset
   234
     115, 115,  70, 105, 108, 101,  49,  46,
06bc494ca11e Initial load
duke
parents:
diff changeset
   235
     106,  97, 118,  97,  12,   0,   4,   0,
06bc494ca11e Initial load
duke
parents:
diff changeset
   236
       5,   1,   0,  10,  67, 108,  97, 115,
06bc494ca11e Initial load
duke
parents:
diff changeset
   237
     115,  70, 105, 108, 101,  49,   1,   0,
06bc494ca11e Initial load
duke
parents:
diff changeset
   238
      16, 106,  97, 118,  97,  47, 108,  97,
06bc494ca11e Initial load
duke
parents:
diff changeset
   239
     110, 103,  47,  79,  98, 106, 101,  99,
06bc494ca11e Initial load
duke
parents:
diff changeset
   240
     116,   0,  33,   0,   2,   0,   3,   0,
06bc494ca11e Initial load
duke
parents:
diff changeset
   241
       0,   0,   0,   0,   1,   0,   1,   0,
06bc494ca11e Initial load
duke
parents:
diff changeset
   242
       4,   0,   5,   0,   1,   0,   6,   0,
06bc494ca11e Initial load
duke
parents:
diff changeset
   243
       0,   0,  29,   0,   1,   0,   1,   0,
06bc494ca11e Initial load
duke
parents:
diff changeset
   244
       0,   0,   5,  42, 183,   0,   1, 177,
06bc494ca11e Initial load
duke
parents:
diff changeset
   245
       0,   0,   0,   1,   0,   7,   0,   0,
06bc494ca11e Initial load
duke
parents:
diff changeset
   246
       0,   6,   0,   1,   0,   0,   0,   1,
06bc494ca11e Initial load
duke
parents:
diff changeset
   247
       0,   1,   0,   8,   0,   0,   0,   2,
06bc494ca11e Initial load
duke
parents:
diff changeset
   248
       0,   9,};
06bc494ca11e Initial load
duke
parents:
diff changeset
   249
06bc494ca11e Initial load
duke
parents:
diff changeset
   250
    private int[] classFile2Bytes =
06bc494ca11e Initial load
duke
parents:
diff changeset
   251
    {202, 254, 186, 190,   0,   0,   0,  50,
06bc494ca11e Initial load
duke
parents:
diff changeset
   252
       0,  13,  10,   0,   3,   0,  10,   7,
06bc494ca11e Initial load
duke
parents:
diff changeset
   253
       0,  11,   7,   0,  12,   1,   0,   6,
06bc494ca11e Initial load
duke
parents:
diff changeset
   254
      60, 105, 110, 105, 116,  62,   1,   0,
06bc494ca11e Initial load
duke
parents:
diff changeset
   255
       3,  40,  41,  86,   1,   0,   4,  67,
06bc494ca11e Initial load
duke
parents:
diff changeset
   256
     111, 100, 101,   1,   0,  15,  76, 105,
06bc494ca11e Initial load
duke
parents:
diff changeset
   257
     110, 101,  78, 117, 109,  98, 101, 114,
06bc494ca11e Initial load
duke
parents:
diff changeset
   258
      84,  97,  98, 108, 101,   1,   0,  10,
06bc494ca11e Initial load
duke
parents:
diff changeset
   259
      83, 111, 117, 114,  99, 101,  70, 105,
06bc494ca11e Initial load
duke
parents:
diff changeset
   260
     108, 101,   1,   0,  15,  67, 108,  97,
06bc494ca11e Initial load
duke
parents:
diff changeset
   261
     115, 115,  70, 105, 108, 101,  50,  46,
06bc494ca11e Initial load
duke
parents:
diff changeset
   262
     106,  97, 118,  97,  12,   0,   4,   0,
06bc494ca11e Initial load
duke
parents:
diff changeset
   263
       5,   1,   0,  10,  67, 108,  97, 115,
06bc494ca11e Initial load
duke
parents:
diff changeset
   264
     115,  70, 105, 108, 101,  50,   1,   0,
06bc494ca11e Initial load
duke
parents:
diff changeset
   265
      16, 106,  97, 118,  97,  47, 108,  97,
06bc494ca11e Initial load
duke
parents:
diff changeset
   266
     110, 103,  47,  79,  98, 106, 101,  99,
06bc494ca11e Initial load
duke
parents:
diff changeset
   267
     116,   0,  33,   0,   2,   0,   3,   0,
06bc494ca11e Initial load
duke
parents:
diff changeset
   268
       0,   0,   0,   0,   1,   0,   1,   0,
06bc494ca11e Initial load
duke
parents:
diff changeset
   269
       4,   0,   5,   0,   1,   0,   6,   0,
06bc494ca11e Initial load
duke
parents:
diff changeset
   270
       0,   0,  29,   0,   1,   0,   1,   0,
06bc494ca11e Initial load
duke
parents:
diff changeset
   271
       0,   0,   5,  42, 183,   0,   1, 177,
06bc494ca11e Initial load
duke
parents:
diff changeset
   272
       0,   0,   0,   1,   0,   7,   0,   0,
06bc494ca11e Initial load
duke
parents:
diff changeset
   273
       0,   6,   0,   1,   0,   0,   0,   1,
06bc494ca11e Initial load
duke
parents:
diff changeset
   274
       0,   1,   0,   8,   0,   0,   0,   2,
06bc494ca11e Initial load
duke
parents:
diff changeset
   275
       0,   9,};
06bc494ca11e Initial load
duke
parents:
diff changeset
   276
}