[404791] NPE in FileBufferModelManager.detectContentType
diff --git a/tests/org.eclipse.wst.xml.ui.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.wst.xml.ui.tests/META-INF/MANIFEST.MF index ccbd556..ad64b09 100644 --- a/tests/org.eclipse.wst.xml.ui.tests/META-INF/MANIFEST.MF +++ b/tests/org.eclipse.wst.xml.ui.tests/META-INF/MANIFEST.MF
@@ -21,9 +21,10 @@ org.eclipse.wst.sse.core, org.eclipse.ui.views, org.eclipse.core.resources, + org.eclipse.core.filesystem;bundle-version="1.3.0", org.eclipse.core.runtime, org.eclipse.wst.xml.core, org.eclipse.wst.validation, com.ibm.icu -Eclipse-LazyStart: true +Bundle-ActivationPolicy: lazy Bundle-RequiredExecutionEnvironment: J2SE-1.4
diff --git a/tests/org.eclipse.wst.xml.ui.tests/src/org/eclipse/wst/xml/ui/tests/TestOpenEditorXML.java b/tests/org.eclipse.wst.xml.ui.tests/src/org/eclipse/wst/xml/ui/tests/TestOpenEditorXML.java index 047a896..cdd1c74 100644 --- a/tests/org.eclipse.wst.xml.ui.tests/src/org/eclipse/wst/xml/ui/tests/TestOpenEditorXML.java +++ b/tests/org.eclipse.wst.xml.ui.tests/src/org/eclipse/wst/xml/ui/tests/TestOpenEditorXML.java
@@ -12,14 +12,24 @@ package org.eclipse.wst.xml.ui.tests; import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.net.URI; import junit.framework.TestCase; +import org.eclipse.core.filesystem.EFS; +import org.eclipse.core.filesystem.IFileStore; +import org.eclipse.core.filesystem.URIUtil; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IProjectDescription; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.core.runtime.Path; import org.eclipse.jface.text.IDocument; @@ -28,6 +38,7 @@ import org.eclipse.ui.IWorkbenchPage; import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.PlatformUI; +import org.eclipse.ui.ide.FileStoreEditorInput; import org.eclipse.ui.ide.IDE; import org.eclipse.wst.sse.core.StructuredModelManager; import org.eclipse.wst.sse.core.internal.provisional.IModelManager; @@ -145,4 +156,37 @@ ((IDocumentExtension4) doc).set(newContent, fFile.getModificationStamp()); assertEquals("Set contents in document with read only regions failed", newContent, doc.get()); } + + public void testOpenOnLocalFileStore() throws Exception { + // filebuffers for local files have a location + IPath stateLocation = XMLUITestsPlugin.getDefault().getStateLocation(); + File file = stateLocation.append(FILE_NAME).toFile(); + FileOutputStream fileOutputStream = new FileOutputStream(file); + + ByteArrayOutputStream buffer = new ByteArrayOutputStream(); + InputStream contents = fFile.getContents(); + if (contents != null) { + int c; + byte bytes[] = new byte[2048]; + try { + while ((c = contents.read(bytes)) >= 0) { + buffer.write(bytes, 0, c); + } + contents.close(); + } + catch (IOException ioe) { + // no cleanup can be done + } + } + + fileOutputStream.write(buffer.toByteArray()); + URI uri = URIUtil.toURI(new Path(file.getAbsolutePath())); + IFileStore store = EFS.getStore(uri); + FileStoreEditorInput input = new FileStoreEditorInput(store); + IWorkbenchWindow workbenchWindow = PlatformUI.getWorkbench().getActiveWorkbenchWindow(); + IWorkbenchPage page = workbenchWindow.getActivePage(); + IEditorPart editor = IDE.openEditor(page, input, "org.eclipse.wst.xml.ui.internal.tabletree.XMLMultiPageEditorPart"); + page.closeEditor(editor, false); + assertTrue("Unable to open structured text editor " + fEditor, (fEditor instanceof XMLMultiPageEditorPart) || (fEditor instanceof StructuredTextEditor)); + } }