public ExmlConfiguration parseConfig(CmdLineParser parser, ExmlConfiguration config) { if (config.getOutputDirectory() == null) { System.out.println(extendedUsage(parser, null)); // NOSONAR this is a cmd line tool return null; } if (!config.getOutputDirectory().exists()) { throw new IllegalArgumentException("destination directory does not exist: " + config.getOutputDirectory().getAbsolutePath()); } if (config.getResourceOutputDirectory() == null) { config.setResourceOutputDirectory(config.getOutputDirectory()); } return config; }
public ExmlConfiguration parseConfig(CmdLineParser parser, ExmlConfiguration config) { if (config.getOutputDirectory() == null) { System.out.println(extendedUsage(parser, null)); // NOSONAR this is a cmd line tool return null; } if (!config.getOutputDirectory().exists()) { throw new IllegalArgumentException("destination directory does not exist: " + config.getOutputDirectory().getAbsolutePath()); } if (config.getResourceOutputDirectory() == null) { config.setResourceOutputDirectory(config.getOutputDirectory()); } return config; }
public File computeConfigClassTarget(String configClassName) { return CompilerUtils.fileFromQName(getConfigClassPackage(), configClassName, getOutputDirectory(), Jooc.AS_SUFFIX); }
@SuppressWarnings({"UnusedDeclaration" }) public File computeGeneratedComponentClassFile(File exmlFile) throws IOException { File sourceDir = findSourceDir(exmlFile); String qName = CompilerUtils.qNameFromFile(sourceDir, exmlFile); String className = ExmlUtils.createComponentClassName(CompilerUtils.className(qName)); String packageName = CompilerUtils.packageName(qName); // compute potential file location of component class in source directory: File classFile = CompilerUtils.fileFromQName(packageName, className, sourceDir, Jooc.AS_SUFFIX); // component class is only generated if it is not already present as source: return classFile.exists() ? null : CompilerUtils.fileFromQName(packageName, className, getOutputDirectory(), Jooc.AS_SUFFIX); }
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_SWC_DIRECTORY_PREFIX}, false); jangarooParser.setUp(sourcePathInputSource, classPathInputSource); jangarooParser.setCompilableSuffixes(Collections.singletonList(Jooc.AS_SUFFIX)); exmlConfigPackageXsdGenerator = new ExmlConfigPackageXsdGenerator(); }
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(); }