diff -r b8eda246f181 settings/src/org/netbeans/modules/settings/convertors/SerialDataConvertor.java --- a/settings/src/org/netbeans/modules/settings/convertors/SerialDataConvertor.java Wed Jul 02 16:46:45 2008 -0700 +++ b/settings/src/org/netbeans/modules/settings/convertors/SerialDataConvertor.java Thu Jul 03 11:47:45 2008 +0200 @@ -114,8 +114,11 @@ SerialDataConvertor.SettingsInstance si = createInstance(null); if (isModuleEnabled(si)) { - instance = si; - lkpContent.add(instance); + // 137240 - if instanceName is empty string, it doesn't provide instance + if (si.instanceName().length() > 0) { + instance = si; + lkpContent.add(instance); + } } lkpContent.add(this); node = new SerialDataConvertor.NodeConvertor(); @@ -212,14 +215,14 @@ } } if (XMLSettingsSupport.err.isLoggable(Level.FINE)) XMLSettingsSupport.err.fine("need recreate: " + recreate + " for " + this.dobj); // NOI18N - if (isModuleEnabled(si)) { + if (isModuleEnabled(si) && si.instanceName().length() > 0) { // 137240 - if instanceName is empty string, it doesn't provide instance instance = si; lkpContent.set(Arrays.asList(new Object [] { this, si }), null); if (XMLSettingsSupport.err.isLoggable(Level.FINE)) XMLSettingsSupport.err.fine("module enabled: " + this.dobj); // NOI18N } else { lkpContent.set(Collections.singleton(this), null); instance = null; - if (XMLSettingsSupport.err.isLoggable(Level.FINE)) XMLSettingsSupport.err.fine("module disabled: " + this.dobj); // NOI18N + if (XMLSettingsSupport.err.isLoggable(Level.FINE)) XMLSettingsSupport.err.fine("module disabled: " + this.dobj + " or instanceName is empty: " + si.instanceName()); // NOI18N } lkpContent.add(this, node); @@ -229,7 +232,9 @@ if (isModuleEnabled(si) && recreate) { if (XMLSettingsSupport.err.isLoggable(Level.FINE)) XMLSettingsSupport.err.fine("recreating: " + this.dobj); // NOI18N try { - instance.instanceCreate(); + if(instance != null) { + instance.instanceCreate(); + } } catch (Exception ex) { XMLSettingsSupport.err.log(Level.WARNING, null, ex); } diff -r b8eda246f181 settings/src/org/netbeans/modules/settings/convertors/XMLSettingsSupport.java --- a/settings/src/org/netbeans/modules/settings/convertors/XMLSettingsSupport.java Wed Jul 02 16:46:45 2008 -0700 +++ b/settings/src/org/netbeans/modules/settings/convertors/XMLSettingsSupport.java Thu Jul 03 11:47:45 2008 +0200 @@ -464,8 +464,10 @@ throw new SAXException(nfe); } } else if (ELM_INSTANCEOF.equals(qName)) { - instanceOf.add(org.openide.util.Utilities.translate( - attribs.getValue(ATR_INSTANCEOF_CLASS))); + String instanceOfName = org.openide.util.Utilities.translate(attribs.getValue(ATR_INSTANCEOF_CLASS)); + if (instanceOfName.length() > 0) { + instanceOf.add(instanceOfName); + } } else if (ELM_INSTANCE.equals(qName)) { instanceClass = attribs.getValue(ATR_INSTANCE_CLASS); if (instanceClass == null) { diff -r b8eda246f181 settings/test/unit/src/META-INF/netbeans/translate.names --- a/settings/test/unit/src/META-INF/netbeans/translate.names Wed Jul 02 16:46:45 2008 -0700 +++ b/settings/test/unit/src/META-INF/netbeans/translate.names Thu Jul 03 11:47:45 2008 +0200 @@ -40,3 +40,4 @@ # Old repackaging. org.UnknownClass=org.netbeans.modules.settings.convertors.FooSetting org.netbeans.modules.settings.convertors.ObsoleteClass=org.netbeans.modules.settings.convertors.FooSetting +org.netbeans.modules.settings.convertors.RemovedClass= diff -r b8eda246f181 settings/test/unit/src/org/netbeans/modules/settings/convertors/SerialDataConvertorTest.java --- a/settings/test/unit/src/org/netbeans/modules/settings/convertors/SerialDataConvertorTest.java Wed Jul 02 16:46:45 2008 -0700 +++ b/settings/test/unit/src/org/netbeans/modules/settings/convertors/SerialDataConvertorTest.java Thu Jul 03 11:47:45 2008 +0200 @@ -581,6 +581,26 @@ assertNull("There shouldn't be provided InstanceCookie for disabled module", ic); } + /** If class name is mapped to an empty string in META-INF.netbeans/translate.names, + * InstanceCookie should not be created and instanceOf should return false. */ + public void testRemovedClass137240() throws DataObjectNotFoundException { + FileObject RemovedClassFO = lfs.findResource("/Settings/org-netbeans-modules-settings-convertors-FooSettingRemovedClass.settings"); + assertNotNull(RemovedClassFO); + DataObject ido = DataObject.find(RemovedClassFO); + InstanceCookie ic = ido.getCookie(InstanceCookie.class); + assertNull("InstanceCookie issued for removed class.", ic); + FileObject unknownSerialFO = lfs.findResource("/Settings/org-netbeans-modules-settings-convertors-FooSettingRemovedClassSerial.settings"); + assertNotNull(unknownSerialFO); + ido = DataObject.find(unknownSerialFO); + InstanceCookie icSerial = ido.getCookie(InstanceCookie.class); + assertNull("InstanceCookie issued for removed class.", icSerial); + FileObject unknownInstanceOfFO = lfs.findResource("/Settings/org-netbeans-modules-settings-convertors-FooSettingRemovedClassInstanceOf.settings"); + assertNotNull(unknownInstanceOfFO); + ido = DataObject.find(unknownInstanceOfFO); + InstanceCookie.Of icOf = ido.getCookie(InstanceCookie.Of.class); + assertFalse("instanceOf should not return true for removed class.", icOf.instanceOf(RemovedClass.class)); + } + public void testDeleteOfUnrecognizedSettingsFile () throws Exception { final FileObject corrupted = lfs.findResource("/Settings/org-netbeans-modules-settings-convertors-FooSettingUnrecognizedSettingsFile.settings"); assertNotNull(corrupted); diff -r b8eda246f181 settings/test/unit/src/org/netbeans/modules/settings/convertors/data/mf-layer.xml --- a/settings/test/unit/src/org/netbeans/modules/settings/convertors/data/mf-layer.xml Wed Jul 02 16:46:45 2008 -0700 +++ b/settings/test/unit/src/org/netbeans/modules/settings/convertors/data/mf-layer.xml Thu Jul 03 11:47:45 2008 +0200 @@ -90,6 +90,36 @@ ]]> + + + + + + + + +]]> + + + + + + + + + +]]> + + + + + + + + ACED00057372 + +]]> + @@ -185,4 +215,4 @@ - \ No newline at end of file +