# This patch file was generated by NetBeans IDE # Following Index: paths are relative to: E:\hg\core-main\openide.filesystems # This patch can be applied using context Tools: Patch action on respective folder. # It uses platform neutral UTF-8 encoding and \n newlines. # Above lines and this line are ignored by the patching process. Index: src/org/openide/filesystems/FileUtil.java --- src/org/openide/filesystems/FileUtil.java Base (BASE) +++ src/org/openide/filesystems/FileUtil.java Locally Modified (Based On LOCAL) @@ -43,6 +43,7 @@ import java.io.File; import java.io.FileFilter; +import java.io.FileInputStream; import java.io.FilenameFilter; import java.io.IOException; import java.io.InputStream; @@ -1125,6 +1126,56 @@ return retVal; } + private static class CachedFileObjectProxy extends MIMESupport.CachedFileObject { + + CachedFileObjectProxy(File file) { + super(file); + } + + @Override + public String getName() { + String name = file.getName(); + int i = name.lastIndexOf('.'); + return ((i < 1) || (i == name.length())) ? name : name.substring(0, i); + } + + @Override + public String getExt() { + String name = file.getName(); + int i = name.lastIndexOf('.') + 1; + return ((i <= 1) || (i == name.length())) ? "" : name.substring(i); // NOI18N + } + + @Override + public String getNameExt() { + return file.getName(); + } + + @Override + public InputStream getInputStream() throws java.io.FileNotFoundException { + return new FileInputStream(file); + } + + @Override + public boolean isData() { + return file.isFile(); + } + + @Override + public boolean isFolder() { + return file.isDirectory(); + } + + public boolean isValid() { + return true; + } + } + + public static String getMIMEType(File file) { + FileObject fo = new CachedFileObjectProxy(file); + return getMIMEType(fo); + } + /** Finds mime type by calling getMIMEType, but * instead of returning null it fallbacks to default type * either text/plain or content/unknown (even for folders) Index: src/org/openide/filesystems/MIMESupport.java --- src/org/openide/filesystems/MIMESupport.java Base (BASE) +++ src/org/openide/filesystems/MIMESupport.java Locally Modified (Based On LOCAL) @@ -42,6 +42,7 @@ package org.openide.filesystems; import java.io.BufferedInputStream; +import java.io.File; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; @@ -126,7 +127,7 @@ return CachedFileObject.getResolvers(); } - private static class CachedFileObject extends FileObject implements FileChangeListener { + static class CachedFileObject extends FileObject implements FileChangeListener { static Lookup.Result result; private static Union2> resolvers; // call getResolvers instead /** resolvers that were here before we cleaned them */ @@ -140,14 +141,26 @@ /*All calls delegated to this object. Except few methods, that returns cached values*/ FileObject fileObj; + File file; + CachedFileObject(File file) { + this.file = file; + } + CachedFileObject(FileObject fo) { fileObj = fo; lastModified = fileObj.lastModified(); fileObj.addFileChangeListener(FileUtil.weakFileChangeListener(this, fileObj)); } - private static MIMEResolver[] getResolvers() { + private FileObject getFileObject() { + if(fileObj == null) { + fileObj = FileUtil.toFileObject(file); + } + return fileObj; + } + + static MIMEResolver[] getResolvers() { Set creators; synchronized (CachedFileObject.class) { if (resolvers != null && resolvers.hasFirst()) { @@ -268,12 +281,12 @@ return lastModified; } - return lastModified = fileObj.lastModified(); + return lastModified = getFileObject().lastModified(); } public InputStream getInputStream() throws java.io.FileNotFoundException { if (fixIt == null) { - InputStream is = fileObj.getInputStream(); + InputStream is = getFileObject().getInputStream(); if (!(is instanceof BufferedInputStream)) { is = new BufferedInputStream(is); @@ -303,105 +316,105 @@ /*All other methods only delegate to fileObj*/ public FileObject getParent() { - return fileObj.getParent(); + return getFileObject().getParent(); } @Deprecated // have to override for compat public String getPackageNameExt(char separatorChar, char extSepChar) { - return fileObj.getPackageNameExt(separatorChar, extSepChar); + return getFileObject().getPackageNameExt(separatorChar, extSepChar); } public FileObject copy(FileObject target, String name, String ext) throws IOException { - return fileObj.copy(target, name, ext); + return getFileObject().copy(target, name, ext); } protected void fireFileDeletedEvent(Enumeration en, FileEvent fe) { - fileObj.fireFileDeletedEvent(en, fe); + getFileObject().fireFileDeletedEvent(en, fe); } protected void fireFileFolderCreatedEvent(Enumeration en, FileEvent fe) { - fileObj.fireFileFolderCreatedEvent(en, fe); + getFileObject().fireFileFolderCreatedEvent(en, fe); } @Deprecated // have to override for compat public void setImportant(boolean b) { - fileObj.setImportant(b); + getFileObject().setImportant(b); } public boolean isData() { - return fileObj.isData(); + return getFileObject().isData(); } public Object getAttribute(String attrName) { - return fileObj.getAttribute(attrName); + return getFileObject().getAttribute(attrName); } public Enumeration getFolders(boolean rec) { - return fileObj.getFolders(rec); + return getFileObject().getFolders(rec); } public void delete(FileLock lock) throws IOException { - fileObj.delete(lock); + getFileObject().delete(lock); } public boolean isRoot() { - return fileObj.isRoot(); + return getFileObject().isRoot(); } public Enumeration getData(boolean rec) { - return fileObj.getData(rec); + return getFileObject().getData(rec); } public FileObject[] getChildren() { - return fileObj.getChildren(); + return getFileObject().getChildren(); } public String getNameExt() { - return fileObj.getNameExt(); + return getFileObject().getNameExt(); } public boolean isValid() { - return fileObj.isValid(); + return getFileObject().isValid(); } @Deprecated // have to override for compat public boolean isReadOnly() { - return fileObj.isReadOnly(); + return getFileObject().isReadOnly(); } @Override public boolean canRead() { - return fileObj.canRead(); + return getFileObject().canRead(); } @Override public boolean canWrite() { - return fileObj.canWrite(); + return getFileObject().canWrite(); } public String getExt() { - return fileObj.getExt(); + return getFileObject().getExt(); } public String getName() { - return fileObj.getName(); + return getFileObject().getName(); } public void removeFileChangeListener(FileChangeListener fcl) { - fileObj.removeFileChangeListener(fcl); + getFileObject().removeFileChangeListener(fcl); } protected void fireFileRenamedEvent(Enumeration en, FileRenameEvent fe) { - fileObj.fireFileRenamedEvent(en, fe); + getFileObject().fireFileRenamedEvent(en, fe); } public void refresh(boolean expected) { - fileObj.refresh(expected); + getFileObject().refresh(expected); } protected void fireFileAttributeChangedEvent(Enumeration en, FileAttributeEvent fe) { - fileObj.fireFileAttributeChangedEvent(en, fe); + getFileObject().fireFileAttributeChangedEvent(en, fe); } public long getSize() { @@ -409,90 +422,90 @@ return size; } - return size = fileObj.getSize(); + return size = getFileObject().getSize(); } public Enumeration getAttributes() { - return fileObj.getAttributes(); + return getFileObject().getAttributes(); } public void rename(FileLock lock, String name, String ext) throws IOException { - fileObj.rename(lock, name, ext); + getFileObject().rename(lock, name, ext); } protected void fireFileChangedEvent(Enumeration en, FileEvent fe) { - fileObj.fireFileChangedEvent(en, fe); + getFileObject().fireFileChangedEvent(en, fe); } public FileObject getFileObject(String name, String ext) { - return fileObj.getFileObject(name, ext); + return getFileObject().getFileObject(name, ext); } public void refresh() { - fileObj.refresh(); + getFileObject().refresh(); } public FileObject createData(String name, String ext) throws IOException { - return fileObj.createData(name, ext); + return getFileObject().createData(name, ext); } public void addFileChangeListener(FileChangeListener fcl) { - fileObj.addFileChangeListener(fcl); + getFileObject().addFileChangeListener(fcl); } protected void fireFileDataCreatedEvent(Enumeration en, FileEvent fe) { - fileObj.fireFileDataCreatedEvent(en, fe); + getFileObject().fireFileDataCreatedEvent(en, fe); } public boolean isFolder() { - return fileObj.isFolder(); + return getFileObject().isFolder(); } public FileObject createFolder(String name) throws IOException { - return fileObj.createFolder(name); + return getFileObject().createFolder(name); } public Enumeration getChildren(boolean rec) { - return fileObj.getChildren(rec); + return getFileObject().getChildren(rec); } public void setAttribute(String attrName, Object value) throws IOException { - fileObj.setAttribute(attrName, value); + getFileObject().setAttribute(attrName, value); } @Deprecated // have to override for compat public String getPackageName(char separatorChar) { - return fileObj.getPackageName(separatorChar); + return getFileObject().getPackageName(separatorChar); } public FileSystem getFileSystem() throws FileStateInvalidException { - return fileObj.getFileSystem(); + return getFileObject().getFileSystem(); } public OutputStream getOutputStream(FileLock lock) throws java.io.IOException { - return fileObj.getOutputStream(lock); + return getFileObject().getOutputStream(lock); } public boolean existsExt(String ext) { - return fileObj.existsExt(ext); + return getFileObject().existsExt(ext); } public FileObject move(FileLock lock, FileObject target, String name, String ext) throws IOException { - return fileObj.move(lock, target, name, ext); + return getFileObject().move(lock, target, name, ext); } @Override public synchronized boolean isLocked() { - return fileObj.isLocked(); + return getFileObject().isLocked(); } public FileLock lock() throws IOException { - return fileObj.lock(); + return getFileObject().lock(); } public void fileFolderCreated(FileEvent fe) { @@ -507,12 +520,12 @@ /** MIMEResolvers should not cache this FileObject. But they can cache * resolved patterns in Map with this FileObject as key.*/ public int hashCode() { - return fileObj.hashCode(); + return getFileObject().hashCode(); } public boolean equals(java.lang.Object obj) { if (obj instanceof CachedFileObject) { - return ((CachedFileObject) obj).fileObj.equals(fileObj); + return ((CachedFileObject) obj).getFileObject().equals(getFileObject()); } return super.equals(obj);