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.
JMManager->filesystems Map is effectively a LinkedList, as all instances of JavaModelPackage$Impl hash to the same bucket of the HashMap. Although there are only tens of them in the typical IDE, it is a generated class and I'm affraid the problem may be common to all generated classes.
It seems that the problem is (probably rare) combination of MOFIDs hashcode implementation, MOFID generation and the fact that JavaModelPackage instances are created in the same sequence (140th object from given storage). This problem probably apply to all other initial metadata cretated during storage initialization, as the same object types (the objects that are typically put in the same map) would have identical hashcodes. Sure fix would be to include the storageId's hashcode in the MOFIDs hashcode, but that would cause more expensive hashcode. On the other hand, it may be enough to use random initial sequence number per storage.
Fixed. Checking in src/org/netbeans/mdr/persistence/btreeimpl/btreestorage/BtreeDataFile.java; /cvs/mdr/src/org/netbeans/mdr/persistence/btreeimpl/btreestorage/BtreeDataFile.java,v <-- BtreeDataFile.java new revision: 1.11; previous revision: 1.10 done
If you meant hashmap keeping 15 items held by org.netbeans.modules.javacore.JMManager refering to keys org.netbeans.jmi.javamodel.JavaModelPackage$Impl and values org.openide.filesystems.AbstractFileObject than it is really fixed in todays build. OTOH org.netbeans.modules.javacore.jmiimpl.javamodel.JavaPackageImpl$SubPackagesCollection suffers from the same problem. Keys in the subpackages map are org.netbeans.jmi.javamodel.JavaPackage$Impl and again maps to the same bucket.
Good catch!!! There were more similar bugs when for transient objects a MOFID with fixed serial number was created. I am working on fixing them.
Fixed. Checking in src/org/netbeans/modules/javacore/jmiimpl/javamodel/ArrayClassImpl.java; /cvs/java/javacore/src/org/netbeans/modules/javacore/jmiimpl/javamodel/ArrayClassImpl.java,v <-- ArrayClassImpl.java new revision: 1.4; previous revision: 1.3 done Checking in src/org/netbeans/modules/javacore/jmiimpl/javamodel/JavaPackageClassImpl.java; /cvs/java/javacore/src/org/netbeans/modules/javacore/jmiimpl/javamodel/JavaPackageClassImpl.java,v <-- JavaPackageClassImpl.java new revision: 1.8; previous revision: 1.7 done Checking in src/org/netbeans/modules/javacore/jmiimpl/javamodel/ParameterizedTypeClassImpl.java; /cvs/java/javacore/src/org/netbeans/modules/javacore/jmiimpl/javamodel/ParameterizedTypeClassImpl.java,v <-- ParameterizedTypeClassImpl.java new revision: 1.7; previous revision: 1.6 done Checking in src/org/netbeans/modules/javacore/jmiimpl/javamodel/PrimitiveTypeClassImpl.java; /cvs/java/javacore/src/org/netbeans/modules/javacore/jmiimpl/javamodel/PrimitiveTypeClassImpl.java,v <-- PrimitiveTypeClassImpl.java new revision: 1.4; previous revision: 1.3 done Checking in src/org/netbeans/modules/javacore/jmiimpl/javamodel/TagDefinitionClassImpl.java; /cvs/java/javacore/src/org/netbeans/modules/javacore/jmiimpl/javamodel/TagDefinitionClassImpl.java,v <-- TagDefinitionClassImpl.java new revision: 1.4; previous revision: 1.3 done Checking in src/org/netbeans/modules/javacore/jmiimpl/javamodel/UnresolvedClassClassImpl.java; /cvs/java/javacore/src/org/netbeans/modules/javacore/jmiimpl/javamodel/UnresolvedClassClassImpl.java,v <-- UnresolvedClassClassImpl.java new revision: 1.4; previous revision: 1.3 done