This Bugzilla instance is a read-only archive of historic NetBeans bug reports. To report a bug in NetBeans please follow the project's instructions for reporting issues.

Bug 155128 - The c++ support consumes php files in NetBeans all
Summary: The c++ support consumes php files in NetBeans all
Status: RESOLVED FIXED
Alias: None
Product: platform
Classification: Unclassified
Component: Filesystems (show other bugs)
Version: 6.x
Hardware: All All
: P1 blocker (vote)
Assignee: Jiri Skrivanek
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2008-12-10 12:57 UTC by Petr Pisl
Modified: 2009-02-19 22:53 UTC (History)
4 users (show)

See Also:
Issue Type: DEFECT
Exception Reporter:


Attachments
Screenshot of the new file wizard (38.64 KB, image/png)
2008-12-10 14:33 UTC, Petr Pisl
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Petr Pisl 2008-12-10 12:57:42 UTC
Try all distribution of NetBeans development build. The created php files and php file templates has header file icon.
Comment 1 Petr Pisl 2008-12-10 12:59:14 UTC
See issue #153988 and screenshot assigned to this issue.
Comment 2 Vladimir Voskresensky 2008-12-10 13:01:28 UTC
Please, provide file name and it's content.
Thanks
Comment 3 Petr Pisl 2008-12-10 13:08:54 UTC
Why you mark it as incomplete. Just try to create a php file in NetBeans all. Even the templates in new file wizard has
header icons. 
Comment 4 Alexander Simon 2008-12-10 14:09:42 UTC
incomplete because you do not provide us file names and file contents that detected as header but in real php.
Comment 5 Alexander Simon 2008-12-10 14:27:32 UTC
We have conflict in MIME resolver:
<pattern value="#include" range="128"/> - for h
<pattern value="<?php" range="255"/> - for php
Comment 6 Petr Pisl 2008-12-10 14:33:46 UTC
Created attachment 74805 [details]
Screenshot of the new file wizard
Comment 7 Alexander Simon 2008-12-10 14:36:55 UTC
it seem you should add template file extension to avoid mime conflict
Comment 8 Petr Pisl 2008-12-10 14:42:05 UTC
Look through the php templates in php.project/src/org/netbeans/modules/php/project/ui/resources . 
Comment 9 Petr Pisl 2008-12-10 14:45:25 UTC
Radek, can we use different extension for our templates? I know that you did some hacks for our templates due to the
possibility to change extensions in new file wizard.
Comment 10 Alexander Simon 2008-12-10 14:47:39 UTC
template does not has extension:
            <file name="EmptyPHP" url="nbresloc:/org/netbeans/modules/php/project/ui/resources/emptyPHP.php">
Comment 11 Alexander Simon 2008-12-10 14:51:28 UTC
It seems NB code problem.
MIME resolver should be more sophisticated.
It should differ patterns: #include and <#include
Or prioritizing MIME resolvers.
Comment 12 Petr Pisl 2008-12-10 14:57:44 UTC
I would like wait on Radek's opinion. But I think that the current state (no extensions for the templates) it's
targeted, because than it allows to change the extension in wizard. Radek, is it true?

The mime reosolvers can be prioritize according to the position in default fs. The php resolvers has:
<attr name="position" intvalue="282"/>. What is the position for c++?
Comment 13 rmatous 2008-12-10 15:12:43 UTC
Yes, Peter is right, no extension for php templates just to be able create new files with various extensions AFAIK.
Empty extension seems to be valid. Regression since 6.5? (#142760 declarative mime resolver improvements && its
application - seems to be culprit but I didn't investigate it yet).
Comment 14 Vladimir Voskresensky 2008-12-10 15:13:04 UTC
The position of C++ no-extensions resolver is 4yo, that's why it looks like core problem
Comment 15 Vladimir Voskresensky 2008-12-10 15:14:20 UTC
sorry, position is 470
Comment 16 Alexander Simon 2008-12-10 15:21:47 UTC
See C/C++ solution for template with different extensions.
It does not require template file without extension
Comment 17 Vladimir Voskresensky 2008-12-10 16:12:44 UTC
Please, evaluate.
Looks that nothing wrong with PHP or C++ declarative resolvers handling files without extensions
Comment 18 Petr Pisl 2008-12-10 16:14:21 UTC
One more note. If the problem is also in #include, then probably there is not affected only php. Because the <#include
is not php specific, but FreeMarker directive. This scripting engine is used by many templates. 
Comment 19 Vladimir Voskresensky 2008-12-10 18:13:18 UTC
does regexp support "excluding" '<' symbol?
Our original code (in non declarative resolver) was to check #include in the beginning of the line after possible
several whitespaces, so we need something like:
"^(\s)?#include" pattern
Comment 20 Vladimir Voskresensky 2008-12-10 18:16:36 UTC
in fact in all known C++ headers without extension I've never seen whitespace before #include directive, so minimally,
please, support
"^#include"
thanks
Comment 21 Jiri Skrivanek 2008-12-11 09:59:29 UTC
php.project resolver has 99000 position. That's why the c++ resolver precedes the php.project resolver.
MIME-resolver#pattern doesn't support regular expressions because of performance reasons. But you can add a negative
condition and not resolve FreeMaker templates with <#include directive.

http://hg.netbeans.org/core-main/rev/c33b43993389
Comment 22 Quality Engineering 2008-12-12 05:56:29 UTC
Integrated into 'main-golden', will be available in build *200812120201* on http://bits.netbeans.org/dev/nightly/ (upload may still be in progress)
Changeset: http://hg.netbeans.org/main/rev/c33b43993389
User: Jiri Skrivanek <jskrivanek@netbeans.org>
Log: #155128 - Do not resolve FreeMaker templates with <#include directive.
Comment 23 Vladimir Voskresensky 2008-12-15 09:08:01 UTC
Jiri, are you sure that your fix is correct? I have the following exception on IDE startup (+ some failed cnd tests)
INFO [org.netbeans.modules.openide.filesystems.declmime.DefaultParser]
While parsing: MultiFileObject@166cb16[Services/MIMEResolver/cnd-mime-resolver-content-based.xml]
While parsing: MultiFileObject@166cb16[Services/MIMEResolver/cnd-mime-resolver-content-based.xml]
Caused: org.xml.sax.SAXParseException: The value of attribute "value" associated with an element type "null" must not
contain the '<' character.
        at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:195)
        at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(ErrorHandlerWrapper.java:174)
        at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:388)
        at com.sun.org.apache.xerces.internal.impl.XMLScanner.reportFatalError(XMLScanner.java:1411)
        at com.sun.org.apache.xerces.internal.impl.XMLScanner.scanAttributeValue(XMLScanner.java:932)
        at
com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanAttribute(XMLDocumentFragmentScannerImpl.java:1539)
        at
com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanStartElement(XMLDocumentFragmentScannerImpl.java:1316)
        at
com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2747)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:648)
        at
com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:510)
        at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:807)
        at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
        at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:107)
        at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)
        at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522)
[catch] at org.netbeans.modules.openide.filesystems.declmime.DefaultParser.parse(DefaultParser.java:136)
        at org.netbeans.modules.openide.filesystems.declmime.DefaultParser.parse(DefaultParser.java:184)
        at org.netbeans.modules.openide.filesystems.declmime.MIMEResolverImpl$Impl.parseDesc(MIMEResolverImpl.java:203)
        at org.netbeans.modules.openide.filesystems.declmime.MIMEResolverImpl$Impl.init(MIMEResolverImpl.java:194)
        at org.netbeans.modules.openide.filesystems.declmime.MIMEResolverImpl$Impl.findMIMEType(MIMEResolverImpl.java:169)
        at org.openide.filesystems.MIMESupport$CachedFileObject.resolveMIME(MIMESupport.java:331)
        at org.openide.filesystems.MIMESupport$CachedFileObject.getMIMEType(MIMESupport.java:283)
        at org.openide.filesystems.MIMESupport.findMIMEType(MIMESupport.java:125)
        at org.openide.filesystems.FileUtil.getMIMETypeOrDefault(FileUtil.java:1138)
        at org.openide.filesystems.FileObject.getMIMEType(FileObject.java:489)
        at org.openide.filesystems.MultiFileObject.getMIMEType(MultiFileObject.java:580)
        at org.openide.filesystems.MultiFileObject.getMIMEType(MultiFileObject.java:580)
        at org.openide.loaders.DataLoaderPool.allLoaders(DataLoaderPool.java:328)
        at org.openide.loaders.DataLoaderPool.findDataObject(DataLoaderPool.java:526)
        at org.openide.loaders.FolderList.createBoth(FolderList.java:762)
        at org.openide.loaders.FolderList.getObjects(FolderList.java:562)
        at org.openide.loaders.FolderList.access$300(FolderList.java:74)
        at org.openide.loaders.FolderList$ListTask.computeResult(FolderList.java:955)
        at org.openide.loaders.FolderList$ListTask.run(FolderList.java:933)
        at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:573)
        at org.openide.util.RequestProcessor$Processor.doEvaluate(RequestProcessor.java:1050)
        at org.openide.util.RequestProcessor$Task.waitFinished(RequestProcessor.java:738)
        at org.openide.loaders.FolderInstance.waitFinished(FolderInstance.java:316)
        at org.openide.loaders.FolderLookup$ProxyLkp.beforeLookup(FolderLookup.java:442)
        at org.openide.util.lookup.ProxyLookup$R.myBeforeLookup(ProxyLookup.java:645)
        at org.openide.util.lookup.ProxyLookup$R.beforeLookup(ProxyLookup.java:664)
        at org.openide.util.lookup.ProxyLookup$R.myBeforeLookup(ProxyLookup.java:653)
        at org.openide.util.lookup.ProxyLookup$R.computeResult(ProxyLookup.java:518)
        at org.openide.util.lookup.ProxyLookup$R.allInstances(ProxyLookup.java:489)
        at org.openide.util.Lookup.lookupAll(Lookup.java:245)
        at org.openide.loaders.DataLoaderPool$1MimeEnum.delegate(DataLoaderPool.java:313)
        at org.openide.loaders.DataLoaderPool$1MimeEnum.hasMoreElements(DataLoaderPool.java:321)
        at org.openide.util.Enumerations$SeqEn.ensureCurrent(Enumerations.java:325)
        at org.openide.util.Enumerations$SeqEn.hasMoreElements(Enumerations.java:340)
        at org.openide.util.Enumerations$SeqEn.ensureCurrent(Enumerations.java:325)
        at org.openide.util.Enumerations$SeqEn.hasMoreElements(Enumerations.java:340)
        at org.openide.util.Enumerations$SeqEn.ensureCurrent(Enumerations.java:325)
        at org.openide.util.Enumerations$SeqEn.hasMoreElements(Enumerations.java:340)
        at org.openide.loaders.DataLoaderPool.findDataObject(DataLoaderPool.java:527)
        at org.openide.loaders.FolderList.createBoth(FolderList.java:762)
        at org.openide.loaders.FolderList.getObjects(FolderList.java:562)
        at org.openide.loaders.FolderList.access$300(FolderList.java:74)
        at org.openide.loaders.FolderList$ListTask.computeResult(FolderList.java:955)
        at org.openide.loaders.FolderList$ListTask.run(FolderList.java:933)
        at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:573)
        at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:1005)
ALL [null]: While parsing: MultiFileObject@166cb16[Services/MIMEResolver/cnd-mime-resolver-content-based.xml]
CONFIG [null]: Parse error in file
nbfs://nbhost/SystemFileSystem/Services/MIMEResolver/cnd-mime-resolver-content-based.xml line 49 column 25 (PUBLIC null)
Comment 24 Vladimir Voskresensky 2008-12-15 09:39:37 UTC
well, all Header files without extensions are no more recognized...
Comment 25 Jiri Skrivanek 2008-12-15 09:43:22 UTC
My bad. It seemed to work but I didn't pay attention to the console. Thank you for catching this.

http://hg.netbeans.org/core-main/rev/0f0e4a4c0404
Comment 26 Quality Engineering 2008-12-16 05:56:41 UTC
Integrated into 'main-golden', will be available in build *200812160201* on http://bits.netbeans.org/dev/nightly/ (upload may still be in progress)
Changeset: http://hg.netbeans.org/main/rev/0f0e4a4c0404
User: Jiri Skrivanek <jskrivanek@netbeans.org>
Log: #155128 - escape illegal character.
Comment 27 Quality Engineering 2008-12-18 06:38:57 UTC
Integrated into 'main-golden', will be available in build *200812180201* on http://bits.netbeans.org/dev/nightly/ (upload may still be in progress)
Changeset: http://hg.netbeans.org/main/rev/206a2ace6933
User: Vladimir Voskresensky <vv159170@netbeans.org>
Log: fixed IZ#155128: The c++ support consumes php files in NetBeans all
- user "&lt;" instead of "<"