Bug 301583 Reconciler chokes on changes of transient features
This has never happened before...but it's happening now. java.lang.RuntimeException: java.lang.IllegalArgumentException: The datatype 'IEclipseContext' is not a valid classifier at org.eclipse.e4.workbench.ui.internal.ResourceHandler.save(ResourceHandler.java:140) at org.eclipse.e4.ui.workbench.swt.internal.E4Application.saveModel(E4Application.java:116) at org.eclipse.e4.ui.workbench.swt.internal.E4Application.start(E4Application.java:107) at org.eclipse.pde.internal.junit.runtime.UITestApplication.start(UITestApplication.java:47) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:194) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:367) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:48) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37) at java.lang.reflect.Method.invoke(Method.java:600) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:611) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:566) at org.eclipse.equinox.launcher.Main.run(Main.java:1363) at org.eclipse.equinox.launcher.Main.main(Main.java:1339) Caused by: java.lang.IllegalArgumentException: The datatype 'IEclipseContext' is not a valid classifier at org.eclipse.e4.ui.model.application.impl.ApplicationFactoryImpl.createFromString(ApplicationFactoryImpl.java:117) at org.eclipse.emf.ecore.util.EcoreUtil.createFromString(EcoreUtil.java:3259) at org.eclipse.emf.ecore.change.impl.FeatureChangeImpl.getValue(FeatureChangeImpl.java:432) at org.eclipse.emf.ecore.change.util.BasicChangeRecorder.eliminateEmptyChanges(BasicChangeRecorder.java:152) at org.eclipse.emf.ecore.change.util.BasicChangeRecorder.consolidateChanges(BasicChangeRecorder.java:132) at org.eclipse.emf.ecore.change.util.ChangeRecorder.consolidateChanges(ChangeRecorder.java:224) at org.eclipse.emf.ecore.change.util.BasicChangeRecorder.endRecording(BasicChangeRecorder.java:106) at org.eclipse.e4.workbench.ui.internal.XMLModelReconciler.calculateDeltas(XMLModelReconciler.java:717) at org.eclipse.e4.workbench.ui.internal.XMLModelReconciler.serialize(XMLModelReconciler.java:723) at org.eclipse.e4.workbench.ui.internal.ResourceHandler.save(ResourceHandler.java:128) ... 16 more
bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/workbench/ui/internal/XMLModelReconciler.java
}
		return createUnsetDeltaElement(document, featureChange, featureName);
	}
	private Element createSetDeltaElement(Document document, EObject object,
			FeatureChange featureChange, String featureName, EStructuralFeature feature) {
		Element featureElement = document.createElement(featureName);
		Object value = object.eGet(feature);
		if (isSingleReference(featureName)) {
			
			
			
			
			Element referenceElement = createReferenceElement(document, (EObject) value,
					featureName);
			featureElement.appendChild(referenceElement);
		} else if (isChainedReference(featureName)) {
			
			appendReferenceElements(document, featureElement, (List<?>) value);
			
			appendOriginalReferenceElements(document, featureElement, (List<?>) featureChange
					.getValue());
		} else {
			featureElement.setAttribute(featureName, String.valueOf(value));
		}
		return featureElement;
	}
	private Element createUnsetDeltaElement(Document document, FeatureChange featureChange,
			String featureName) {
		Element featureElement = document.createElement(featureName);
		if (isChainedReference(featureName)) {