private void geppettoValidation(Collection<File> moduleLocations, Diagnostic result) throws IOException { Collection<File> importedModuleLocations = null; List<Metadata> metadatas = new ArrayList<Metadata>(); for (File moduleRoot : moduleLocations) { Metadata md = getModuleMetadata(moduleRoot, result); if (md != null) metadatas.add(md); } if (result.getSeverity() == Diagnostic.ERROR) return; if (checkModuleSemantics) { File importedModulesDir = new File(getBuildDir(), IMPORTED_MODULES_ROOT); importedModuleLocations = getForge().downloadDependencies(metadatas, importedModulesDir, result); } if (importedModuleLocations == null) importedModuleLocations = Collections.emptyList(); RubyHelper.setRubyServicesFactory(JRubyServices.FACTORY); ValidationOptions options = getValidationOptions(moduleLocations, importedModuleLocations); new PPDiagnosticsSetup(complianceLevel, options.getProblemsAdvisor()) .createInjectorAndDoEMFRegistration(); getValidationService() .validate( result, getModulesDir(), options, importedModuleLocations.toArray(new File[importedModuleLocations.size()]), new NullProgressMonitor()); }
private ValidationOptions getValidationOptions( Collection<File> moduleLocations, Collection<File> importedModuleLocations) { ValidationOptions options = new ValidationOptions(); options.setCheckLayout(checkLayout); options.setCheckModuleSemantics(checkModuleSemantics); options.setCheckReferences(checkReferences); if (moduleLocations.size() == 1 && getModulesDir().equals(moduleLocations.iterator().next())) options.setFileType(FileType.MODULE_ROOT); else options.setFileType(FileType.PUPPET_ROOT); options.setPlatformURI( PuppetTarget.forComplianceLevel(complianceLevel, false).getPlatformURI()); options.setEncodingProvider( new IEncodingProvider() { public String getEncoding(URI file) { return UTF_8.name(); } }); options.setSearchPath(getSearchPath(moduleLocations, importedModuleLocations)); options.setProblemsAdvisor(potentialProblemsAdvisor); return options; }