Fixed (hopefully) the problem of extension data getting removed on writes.  I say hopefully because although it now passes my basic JUnit tests, there are many possible scenarios that are not yet tested thoroughly.
diff --git a/jsf/tests/org.eclipse.jst.jsf.facesconfig.tests/src/org/eclipse/jst/jsf/facesconfig/tests/write/AllWriteTests.java b/jsf/tests/org.eclipse.jst.jsf.facesconfig.tests/src/org/eclipse/jst/jsf/facesconfig/tests/write/AllWriteTests.java
index 1bd1b22..a84c392 100644
--- a/jsf/tests/org.eclipse.jst.jsf.facesconfig.tests/src/org/eclipse/jst/jsf/facesconfig/tests/write/AllWriteTests.java
+++ b/jsf/tests/org.eclipse.jst.jsf.facesconfig.tests/src/org/eclipse/jst/jsf/facesconfig/tests/write/AllWriteTests.java
@@ -124,5 +124,8 @@
         suite.addTest(new ConfigurableTestSuite(
                 WriteReferencedBeanTestCase.class,
                 "Write ReferencedBean Test"));
+        suite.addTest(new ConfigurableTestSuite(
+                WriteComponentExtensionDataTestCase.class,
+                "Write Component Extension Data"));
 	}
 }