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
+