コード例 #1
0
  public ConfigClassRegistry(final ExmlConfiguration config) throws IOException {
    this.config = config;

    sourcePathInputSource = PathInputSource.fromFiles(config.getSourcePath(), new String[0], true);

    ParserOptions parserOptions = new CCRParserOptions();
    jangarooParser =
        new JangarooParser(parserOptions, new StdOutCompileLog()) {
          @Override
          protected InputSource findSource(String qname) {
            InputSource inputSource = super.findSource(qname);
            if (inputSource != null) {
              // A regular source file (not a generated file) has been found. Use it.
              return inputSource;
            }
            // Just in case the requested class is a class
            // that is generated from an EXML file, regenerate the file before
            // it is too late. This will only affect generated files, so it is pretty safe.
            tryGenerateClass(qname);
            // Just in case the source was not found on the first attempt, fetch it again.
            return super.findSource(qname);
          }
        };
    List<File> fullClassPath = new ArrayList<File>(config.getClassPath());
    fullClassPath.add(config.getOutputDirectory());
    InputSource classPathInputSource =
        PathInputSource.fromFiles(
            fullClassPath,
            new String[] {"", JangarooParser.JOO_API_IN_JAR_DIRECTORY_PREFIX},
            false);
    jangarooParser.setUp(sourcePathInputSource, classPathInputSource);
    exmlConfigPackageXsdGenerator = new ExmlConfigPackageXsdGenerator();
  }