@Override protected void addNotify() { super.addNotify(); Set<Node> children = new TreeSet<Node>(); FileObject[] kids = sourceRoot.getChildren(); boolean archive = FileUtil.isArchiveFile(sourceRoot); VisibilityQuery vq = VisibilityQuery.getDefault(); for (int ii = 0; ii < kids.length; ii++) { if (archive || vq.isVisible(kids[ii])) { if (kids[ii].isFolder()) { findVisiblePackages(children, kids[ii], sourceRoot, !archive); } else { try { DataObject data = DataObject.find(kids[ii]); // For sorting, wrap a filter around the node. Node node = new SortableNode(data.getNodeDelegate()); children.add(node); } catch (DataObjectNotFoundException donfe) { // in that case, ignore the file } } } } // Add the children to our own set (which should be empty). Node[] kidsArray = children.toArray(new Node[children.size()]); super.add(kidsArray); }
private FileObject getArchivedFile(FileObject fileObject) { // ZIP and JAR archives if (FileUtil.isArchiveFile(fileObject)) { try { fileObject = FileUtil.getArchiveRoot(fileObject).getChildren()[0]; } catch (Exception e) { throw new RuntimeException( "The archive can't be opened, be sure it has no password and contains a single file, without folders"); } } else { // GZ or BZIP2 archives boolean isGz = fileObject.getExt().equalsIgnoreCase("gz"); boolean isBzip = fileObject.getExt().equalsIgnoreCase("bz2"); if (isGz || isBzip) { try { String[] splittedFileName = fileObject.getName().split("\\."); if (splittedFileName.length < 2) { return fileObject; } String fileExt1 = splittedFileName[splittedFileName.length - 1]; String fileExt2 = splittedFileName[splittedFileName.length - 2]; File tempFile = null; if (fileExt1.equalsIgnoreCase("tar")) { String fname = fileObject.getName().replaceAll("\\.tar$", ""); fname = fname.replace(fileExt2, ""); tempFile = File.createTempFile(fname, "." + fileExt2); // Untar & unzip if (isGz) { tempFile = getGzFile(fileObject, tempFile, true); } else { tempFile = getBzipFile(fileObject, tempFile, true); } } else { String fname = fileObject.getName(); fname = fname.replace(fileExt1, ""); tempFile = File.createTempFile(fname, "." + fileExt1); // Unzip if (isGz) { tempFile = getGzFile(fileObject, tempFile, false); } else { tempFile = getBzipFile(fileObject, tempFile, false); } } tempFile.deleteOnExit(); tempFile = FileUtil.normalizeFile(tempFile); fileObject = FileUtil.toFileObject(tempFile); } catch (IOException ex) { Exceptions.printStackTrace(ex); } } } return fileObject; }
private String createSpecURL() { File file = InstalledFileLocator.getDefault() .locate(SPEC_ARCHIVE_NAME, "org.netbeans.modules.css.editor", false); // NoI18N if (file != null) { try { URL urll = file.toURI().toURL(); // toURI should escape the illegal characters like spaces assert FileUtil.isArchiveFile(urll); return FileUtil.getArchiveRoot(urll).toExternalForm(); } catch (java.net.MalformedURLException e) { // should not happen LOGGER.log( Level.SEVERE, String.format("Error obtaining archive root URL for file '%s'", file.getAbsolutePath()), e); // NOI18N } } else { LOGGER.warning( String.format( "Cannot locate the css documentation file '%s'.", SPEC_ARCHIVE_NAME)); // NOI18N } return null; }
@Override public URL[] getRoots() { ResolvedDependencies rd = rd(); if (rd == null) { // corrupt project metadata return new URL[0]; } ResolvedDependency d = rd.get(dep.getID()); if (d == null) { // temporary workaround for mis-created project deps Logger.getLogger(DependenciesClasspathImpl.class.getName()) .log(Level.WARNING, "Unresolvable dependency {0} in {1}", new Object[] {dep, get()}); return new URL[0]; } assert d != null : "Dependency " + dep + " resolves to null"; List<URL> urls = new ArrayList<URL>(); File f = d.resolveFile(ArtifactKind.ORIGIN); if (f != null) { if (d.getKind().isProjectDependency()) { FileObject fo = FileUtil.toFileObject(f); if (fo != null) { Project p = FileOwnerQuery.getOwner(fo); if (p != null) { try { URL url = p.getProjectDirectory().getURL(); AntArtifactProvider prov = p.getLookup().lookup(AntArtifactProvider.class); for (AntArtifact a : prov.getBuildArtifacts()) { if (JavaProjectConstants.ARTIFACT_TYPE_JAR.equals(a.getType())) { URI[] uris = a.getArtifactLocations(); for (URI u : uris) { url = new URL(u.toString()); if (FileUtil.isArchiveFile(url)) { url = FileUtil.getArchiveRoot(url); urls.add(url); } } } } } catch (MalformedURLException ex) { Exceptions.printStackTrace(ex); } catch (FileStateInvalidException ex) { Exceptions.printStackTrace(ex); } } } } else { if (f != null) { try { URL url = f.toURI().toURL(); if (FileUtil.isArchiveFile(url)) { url = FileUtil.getArchiveRoot(url); } urls.add(url); } catch (MalformedURLException ex) { Exceptions.printStackTrace(ex); } } } } return urls.toArray(new URL[urls.size()]); }