/** * * @param dir * @param preferResult, if false will not actually call the factory methods with populated Results, but * create dummy ones and use the Result as boolean flag only. * @return */ private Result checkForProject(FileObject dir) { assert dir != null; assert dir.isFolder() : dir; assert getMutex().isReadAccess(); Iterator<? extends ProjectFactory> it = factories.allInstances().iterator(); while (it.hasNext()) { ProjectFactory factory = it.next(); if (factory instanceof ProjectFactory2) { Result res = ((ProjectFactory2)factory).isProject2(dir); if (res != null) { return res; } } else { if (factory.isProject(dir)) { return new Result((Icon)null); } } } return null; }
if (EventQueue.isDispatchThread()) { return new Result(null);
@Override public Result isProject2(FileObject projectDirectory) { FileObject projectFile = projectDirectory.getFileObject(PROJECT_XML_PATH); //#54488: Added check for virtual if (projectFile == null || !projectFile.isData() || projectFile.isVirtual()) { return null; } try { Document projectXml = loadProjectXml(projectFile); if (projectXml != null) { Element typeEl = XMLUtil.findElement(projectXml.getDocumentElement(), "type", PROJECT_NS); // NOI18N if (typeEl != null) { String type = XMLUtil.findText(typeEl); if (type != null) { MakeProjectTypeImpl provider = findMakeProjectType(type); if (provider != null) { return new ProjectManager.Result(provider.getIcon(projectXml.getDocumentElement())); } } } } } catch (IOException ex) { Logger.getLogger(MakeProjectTypeImpl.class.getName()).log(Level.FINE, "Failed to load the project.xml file.", ex); } // better have false positives than false negatives (according to the ProjectManager.isProject/isProject2 javadoc. return new ProjectManager.Result(null); }
@NonNull private ProjectManager.Result toProjectManagerResult(@NonNull final ProjectConvertor.Result res) { return new ProjectManager.Result(res.getDisplayName(), null, res.getIcon()); }