@NotNull public GeneralCommandLine createCommand( @NotNull Module module, @Nullable String jvmParams, boolean forCreation, @NotNull MvcCommand command) throws ExecutionException { final JavaParameters params = createJavaParameters(module, forCreation, false, true, jvmParams, command); addJavaHome(params, module); final GeneralCommandLine commandLine = createCommandLine(params); final VirtualFile griffonHome = getSdkRoot(module); if (griffonHome != null) { commandLine .getEnvironment() .put(getSdkHomePropertyName(), FileUtil.toSystemDependentName(griffonHome.getPath())); } final VirtualFile root = findAppRoot(module); final File ioRoot = root != null ? VfsUtilCore.virtualToIoFile(root) : new File(module.getModuleDirPath()); commandLine.setWorkDirectory(forCreation ? ioRoot.getParentFile() : ioRoot); return commandLine; }
@NotNull private static VirtualFile[] filterByReadOnliness(@NotNull VirtualFile[] files) { List<VirtualFile> result = new ArrayList<VirtualFile>(); for (VirtualFile file : files) { if (file.isInLocalFileSystem()) { result.add(file); } } return VfsUtilCore.toVirtualFileArray(result); }
private void annotateExternally( @NotNull final VirtualFile file, @NotNull final PsiModifierListOwner listOwner, @NotNull Project project, @NotNull final String packageName, final VirtualFile virtualFile, @NotNull final String annotationFQName, @NotNull final PsiFile fromFile, final PsiNameValuePair[] value) { final XmlFile[] annotationsXml = new XmlFile[1]; List<XmlFile> xmlFiles = findExternalAnnotationsXmlFiles(listOwner); if (xmlFiles != null) { for (XmlFile xmlFile : xmlFiles) { final VirtualFile vXmlFile = xmlFile.getVirtualFile(); assert vXmlFile != null; if (VfsUtilCore.isAncestor(file, vXmlFile, false)) { annotationsXml[0] = xmlFile; if (!CodeInsightUtilBase.preparePsiElementForWrite(xmlFile)) return; } } } else { xmlFiles = new ArrayList<XmlFile>(); } final List<PsiFile> annotationFiles = new ArrayList<PsiFile>(xmlFiles); new WriteCommandAction(project) { @Override protected void run(final Result result) throws Throwable { if (annotationsXml[0] == null) { annotationsXml[0] = createAnnotationsXml(file, packageName); } if (annotationsXml[0] != null) { annotationFiles.add(annotationsXml[0]); myExternalAnnotations.put(getFQN(packageName, virtualFile), annotationFiles); annotateExternally(listOwner, annotationFQName, annotationsXml[0], fromFile, value); } } }.execute(); UndoManager.getInstance(project) .undoableActionPerformed( new BasicUndoableAction() { @Override public void undo() throws UnexpectedUndoException { dropCache(); } @Override public void redo() throws UnexpectedUndoException { dropCache(); } }); }
@Nullable private static XmlFile findXmlFileInRoot( @Nullable List<XmlFile> xmlFiles, @NotNull VirtualFile root) { if (xmlFiles != null) { for (XmlFile xmlFile : xmlFiles) { VirtualFile vf = xmlFile.getVirtualFile(); if (vf != null) { if (VfsUtilCore.isAncestor(root, vf, false)) { return xmlFile; } } } } return null; }
private static void addSourceDirectoriesFromLibraries( @NotNull Project project, @NotNull VirtualFile directory, @NotNull Collection<VirtualFile> outSourceRoots) { ProjectFileIndex index = ProjectFileIndex.SERVICE.getInstance(project); VirtualFile classRoot = index.getClassRootForFile(directory); if (classRoot == null) return; String relativePath = VfsUtilCore.getRelativePath(directory, classRoot); if (relativePath == null) return; for (OrderEntry orderEntry : index.getOrderEntriesForFile(directory)) { for (VirtualFile sourceRoot : orderEntry.getFiles(OrderRootType.SOURCES)) { VirtualFile sourceFile = sourceRoot.findFileByRelativePath(relativePath); if (sourceFile != null) { outSourceRoots.add(sourceFile); } } } }
private void countAndMarkUnresolved( @NotNull VirtualFile file, @NotNull final Set<VirtualFile> result, final boolean inDbOnly) { if (file.isDirectory()) { VfsUtilCore.visitChildrenRecursively( file, new VirtualFileVisitor() { @Override public boolean visitFile(@NotNull VirtualFile file) { return doCountAndMarkUnresolved(file, result); } @Nullable @Override public Iterable<VirtualFile> getChildrenIterable(@NotNull VirtualFile file) { return inDbOnly ? ((NewVirtualFile) file).iterInDbChildren() : null; } }); } else { doCountAndMarkUnresolved(file, result); } }