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(); }
public void generateXsd(Writer output) throws IOException, TemplateException { exmlConfigPackageXsdGenerator.generateXsdFile( getSourceConfigClasses(), config.getConfigClassPackage(), output); if (getConfig().getValidationMode() != ValidationMode.OFF) { try { new ExmlValidator(getConfig()).validateAllExmlFiles(); } catch (Exception e) { throw new ExmlcException("unable to start validation", e); } } }
private void scanAsFiles(Map<String, File> sourceFilesByName) { InputSource configPackageInputSource = sourcePathInputSource.getChild( config.getConfigClassPackage().replace('.', File.separatorChar)); if (configPackageInputSource != null) { for (InputSource source : configPackageInputSource.list()) { File file = ((FileInputSource) source).getFile(); if (file.isFile() && file.getName().endsWith(Jooc.AS_SUFFIX)) { try { File sourceDir = getConfig().findSourceDir(file); String qName = CompilerUtils.qNameFromFile(sourceDir, file); ConfigClass actionScriptConfigClass = findActionScriptConfigClass(qName); if (actionScriptConfigClass != null) { addSourceConfigClass(sourceFilesByName, file, actionScriptConfigClass); } } catch (IOException e) { throw new ExmlcException("could not read AS file", e); } } } } }