This commit was manufactured by cvs2svn to create tag 'R3_4_0'.
diff --git a/docs/org.eclipse.wst.validation.doc.isv/META-INF/MANIFEST.MF b/docs/org.eclipse.wst.validation.doc.isv/META-INF/MANIFEST.MF
index 82dadaf..f261572 100644
--- a/docs/org.eclipse.wst.validation.doc.isv/META-INF/MANIFEST.MF
+++ b/docs/org.eclipse.wst.validation.doc.isv/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %Bundle-Name.0
 Bundle-SymbolicName: org.eclipse.wst.validation.doc.isv; singleton:=true
-Bundle-Version: 1.2.101.qualifier
+Bundle-Version: 1.2.200.qualifier
 Bundle-Vendor: %Bundle-Vendor.0
 Bundle-Localization: plugin
 Require-Bundle: org.eclipse.help.ui;bundle-version="[3.2.0,4.0.0)"
diff --git a/docs/org.eclipse.wst.validation.doc.isv/about.html b/docs/org.eclipse.wst.validation.doc.isv/about.html
new file mode 100644
index 0000000..2199df3
--- /dev/null
+++ b/docs/org.eclipse.wst.validation.doc.isv/about.html
@@ -0,0 +1,34 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<HTML>
+
+<head>
+<title>About</title>
+<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
+</head>
+
+<BODY lang="EN-US">
+
+<H3>About This Content</H3>
+
+<P>June, 2008</P>
+
+<H3>License</H3>
+
+<P>The Eclipse Foundation makes available all content in this plug-in 
+("Content"). Unless otherwise indicated below, the Content is provided to you 
+under the terms and conditions of the Eclipse Public License Version 1.0 
+("EPL"). A copy of the EPL is available at
+<A href="http://www.eclipse.org/org/documents/epl-v10.php">http://www.eclipse.org/org/documents/epl-v10.php</A>. 
+For purposes of the EPL, "Program" will mean the Content.</P>
+
+<P>If you did not receive this Content directly from the Eclipse Foundation, the 
+Content is being redistributed by another party ("Redistributor") and different 
+terms and conditions may apply to your use of any object code in the Content. 
+Check the Redistributor’s license that was provided with the Content. If no such 
+license exists, contact the Redistributor. Unless otherwise indicated below, the 
+terms and conditions of the EPL still apply to any source code in the Content 
+and such source code may be obtained at
+<A href="http://www.eclipse.org/">http://www.eclipse.org/</A>.</P>
+
+</BODY>
+</HTML>
diff --git a/docs/org.eclipse.wst.validation.doc.isv/build.properties b/docs/org.eclipse.wst.validation.doc.isv/build.properties
index 63a6dfe..1a2e751 100644
--- a/docs/org.eclipse.wst.validation.doc.isv/build.properties
+++ b/docs/org.eclipse.wst.validation.doc.isv/build.properties
@@ -3,4 +3,5 @@
                plugin.properties,\
                reference/,\
                toc.xml,\
-               topics_ExtPoint_Reference.xml
+               topics_ExtPoint_Reference.xml,\
+               about.html
diff --git a/docs/org.eclipse.wst.validation.doc.isv/plugin.properties b/docs/org.eclipse.wst.validation.doc.isv/plugin.properties
index 353f05e..94b985b 100644
--- a/docs/org.eclipse.wst.validation.doc.isv/plugin.properties
+++ b/docs/org.eclipse.wst.validation.doc.isv/plugin.properties
@@ -10,5 +10,5 @@
 ###############################################################################
 
 Bundle-Name.0 = Validation Framework - Developer Guide
-Bundle-Vendor.0 = Eclipse.org
+Bundle-Vendor.0 = Eclipse Web Tools Platform
 
diff --git a/features/org.eclipse.wst.common_core.feature.patch/.project b/features/org.eclipse.wst.common_core.feature.patch/.project
deleted file mode 100644
index eb1e1ea..0000000
--- a/features/org.eclipse.wst.common_core.feature.patch/.project
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.wst.common_core.feature.patch</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.pde.FeatureBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.pde.FeatureNature</nature>
-	</natures>
-</projectDescription>
diff --git a/features/org.eclipse.wst.common_core.feature.patch/description.txt b/features/org.eclipse.wst.common_core.feature.patch/description.txt
deleted file mode 100644
index a1fc6d0..0000000
--- a/features/org.eclipse.wst.common_core.feature.patch/description.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-The HEAD branch of this patch feature is intentionally empty, 
-to attempt to try and avoid confusion. 
-
-Please load the correct version from the branch of the related patch.
diff --git a/features/org.eclipse.wst.common_core.feature/build.properties b/features/org.eclipse.wst.common_core.feature/build.properties
index 364480b..3e69ba2 100644
--- a/features/org.eclipse.wst.common_core.feature/build.properties
+++ b/features/org.eclipse.wst.common_core.feature/build.properties
@@ -1,6 +1,4 @@
 bin.includes = feature.xml,\
                eclipse_update_120.jpg,\
-               epl-v10.html,\
-               license.html,\
                feature.properties
 
diff --git a/features/org.eclipse.wst.common_core.feature/epl-v10.html b/features/org.eclipse.wst.common_core.feature/epl-v10.html
deleted file mode 100644
index ed4b196..0000000
--- a/features/org.eclipse.wst.common_core.feature/epl-v10.html
+++ /dev/null
@@ -1,328 +0,0 @@
-<html xmlns:o="urn:schemas-microsoft-com:office:office"
-xmlns:w="urn:schemas-microsoft-com:office:word"
-xmlns="http://www.w3.org/TR/REC-html40">
-
-<head>
-<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
-<meta name=ProgId content=Word.Document>
-<meta name=Generator content="Microsoft Word 9">
-<meta name=Originator content="Microsoft Word 9">
-<link rel=File-List
-href="./Eclipse%20EPL%202003_11_10%20Final_files/filelist.xml">
-<title>Eclipse Public License - Version 1.0</title>
-<!--[if gte mso 9]><xml>
- <o:DocumentProperties>
-  <o:Revision>2</o:Revision>
-  <o:TotalTime>3</o:TotalTime>
-  <o:Created>2004-03-05T23:03:00Z</o:Created>
-  <o:LastSaved>2004-03-05T23:03:00Z</o:LastSaved>
-  <o:Pages>4</o:Pages>
-  <o:Words>1626</o:Words>
-  <o:Characters>9270</o:Characters>
-   <o:Lines>77</o:Lines>
-  <o:Paragraphs>18</o:Paragraphs>
-  <o:CharactersWithSpaces>11384</o:CharactersWithSpaces>
-  <o:Version>9.4402</o:Version>
- </o:DocumentProperties>
-</xml><![endif]--><!--[if gte mso 9]><xml>
- <w:WordDocument>
-  <w:TrackRevisions/>
- </w:WordDocument>
-</xml><![endif]-->
-<style>
-<!--
- /* Font Definitions */
-@font-face
-	{font-family:Tahoma;
-	panose-1:2 11 6 4 3 5 4 4 2 4;
-	mso-font-charset:0;
-	mso-generic-font-family:swiss;
-	mso-font-pitch:variable;
-	mso-font-signature:553679495 -2147483648 8 0 66047 0;}
- /* Style Definitions */
-p.MsoNormal, li.MsoNormal, div.MsoNormal
-	{mso-style-parent:"";
-	margin:0in;
-	margin-bottom:.0001pt;
-	mso-pagination:widow-orphan;
-	font-size:12.0pt;
-	font-family:"Times New Roman";
-	mso-fareast-font-family:"Times New Roman";}
-p
-	{margin-right:0in;
-	mso-margin-top-alt:auto;
-	mso-margin-bottom-alt:auto;
-	margin-left:0in;
-	mso-pagination:widow-orphan;
-	font-size:12.0pt;
-	font-family:"Times New Roman";
-	mso-fareast-font-family:"Times New Roman";}
-p.BalloonText, li.BalloonText, div.BalloonText
-	{mso-style-name:"Balloon Text";
-	margin:0in;
-	margin-bottom:.0001pt;
-	mso-pagination:widow-orphan;
-	font-size:8.0pt;
-	font-family:Tahoma;
-	mso-fareast-font-family:"Times New Roman";}
-@page Section1
-	{size:8.5in 11.0in;
-	margin:1.0in 1.25in 1.0in 1.25in;
-	mso-header-margin:.5in;
-	mso-footer-margin:.5in;
-	mso-paper-source:0;}
-div.Section1
-	{page:Section1;}
--->
-</style>
-</head>
-
-<body lang=EN-US style='tab-interval:.5in'>
-
-<div class=Section1>
-
-<p align=center style='text-align:center'><b>Eclipse Public License - v 1.0</b>
-</p>
-
-<p><span style='font-size:10.0pt'>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER
-THE TERMS OF THIS ECLIPSE PUBLIC LICENSE (&quot;AGREEMENT&quot;). ANY USE,
-REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE
-OF THIS AGREEMENT.</span> </p>
-
-<p><b><span style='font-size:10.0pt'>1. DEFINITIONS</span></b> </p>
-
-<p><span style='font-size:10.0pt'>&quot;Contribution&quot; means:</span> </p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
-in the case of the initial Contributor, the initial code and documentation
-distributed under this Agreement, and<br clear=left>
-b) in the case of each subsequent Contributor:</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>i)
-changes to the Program, and</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>ii)
-additions to the Program;</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>where
-such changes and/or additions to the Program originate from and are distributed
-by that particular Contributor. A Contribution 'originates' from a Contributor
-if it was added to the Program by such Contributor itself or anyone acting on
-such Contributor's behalf. Contributions do not include additions to the
-Program which: (i) are separate modules of software distributed in conjunction
-with the Program under their own license agreement, and (ii) are not derivative
-works of the Program. </span></p>
-
-<p><span style='font-size:10.0pt'>&quot;Contributor&quot; means any person or
-entity that distributes the Program.</span> </p>
-
-<p><span style='font-size:10.0pt'>&quot;Licensed Patents &quot; mean patent
-claims licensable by a Contributor which are necessarily infringed by the use
-or sale of its Contribution alone or when combined with the Program. </span></p>
-
-<p><span style='font-size:10.0pt'>&quot;Program&quot; means the Contributions
-distributed in accordance with this Agreement.</span> </p>
-
-<p><span style='font-size:10.0pt'>&quot;Recipient&quot; means anyone who
-receives the Program under this Agreement, including all Contributors.</span> </p>
-
-<p><b><span style='font-size:10.0pt'>2. GRANT OF RIGHTS</span></b> </p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
-Subject to the terms of this Agreement, each Contributor hereby grants Recipient
-a non-exclusive, worldwide, royalty-free copyright license to<span
-style='color:red'> </span>reproduce, prepare derivative works of, publicly
-display, publicly perform, distribute and sublicense the Contribution of such
-Contributor, if any, and such derivative works, in source code and object code
-form.</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>b)
-Subject to the terms of this Agreement, each Contributor hereby grants
-Recipient a non-exclusive, worldwide,<span style='color:green'> </span>royalty-free
-patent license under Licensed Patents to make, use, sell, offer to sell, import
-and otherwise transfer the Contribution of such Contributor, if any, in source
-code and object code form. This patent license shall apply to the combination
-of the Contribution and the Program if, at the time the Contribution is added
-by the Contributor, such addition of the Contribution causes such combination
-to be covered by the Licensed Patents. The patent license shall not apply to
-any other combinations which include the Contribution. No hardware per se is
-licensed hereunder. </span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>c)
-Recipient understands that although each Contributor grants the licenses to its
-Contributions set forth herein, no assurances are provided by any Contributor
-that the Program does not infringe the patent or other intellectual property
-rights of any other entity. Each Contributor disclaims any liability to Recipient
-for claims brought by any other entity based on infringement of intellectual
-property rights or otherwise. As a condition to exercising the rights and
-licenses granted hereunder, each Recipient hereby assumes sole responsibility
-to secure any other intellectual property rights needed, if any. For example,
-if a third party patent license is required to allow Recipient to distribute
-the Program, it is Recipient's responsibility to acquire that license before
-distributing the Program.</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>d)
-Each Contributor represents that to its knowledge it has sufficient copyright
-rights in its Contribution, if any, to grant the copyright license set forth in
-this Agreement. </span></p>
-
-<p><b><span style='font-size:10.0pt'>3. REQUIREMENTS</span></b> </p>
-
-<p><span style='font-size:10.0pt'>A Contributor may choose to distribute the
-Program in object code form under its own license agreement, provided that:</span>
-</p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
-it complies with the terms and conditions of this Agreement; and</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>b)
-its license agreement:</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>i)
-effectively disclaims on behalf of all Contributors all warranties and
-conditions, express and implied, including warranties or conditions of title
-and non-infringement, and implied warranties or conditions of merchantability
-and fitness for a particular purpose; </span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>ii)
-effectively excludes on behalf of all Contributors all liability for damages,
-including direct, indirect, special, incidental and consequential damages, such
-as lost profits; </span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>iii)
-states that any provisions which differ from this Agreement are offered by that
-Contributor alone and not by any other party; and</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>iv)
-states that source code for the Program is available from such Contributor, and
-informs licensees how to obtain it in a reasonable manner on or through a
-medium customarily used for software exchange.<span style='color:blue'> </span></span></p>
-
-<p><span style='font-size:10.0pt'>When the Program is made available in source
-code form:</span> </p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
-it must be made available under this Agreement; and </span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>b) a
-copy of this Agreement must be included with each copy of the Program. </span></p>
-
-<p><span style='font-size:10.0pt'>Contributors may not remove or alter any
-copyright notices contained within the Program. </span></p>
-
-<p><span style='font-size:10.0pt'>Each Contributor must identify itself as the
-originator of its Contribution, if any, in a manner that reasonably allows
-subsequent Recipients to identify the originator of the Contribution. </span></p>
-
-<p><b><span style='font-size:10.0pt'>4. COMMERCIAL DISTRIBUTION</span></b> </p>
-
-<p><span style='font-size:10.0pt'>Commercial distributors of software may
-accept certain responsibilities with respect to end users, business partners
-and the like. While this license is intended to facilitate the commercial use
-of the Program, the Contributor who includes the Program in a commercial
-product offering should do so in a manner which does not create potential
-liability for other Contributors. Therefore, if a Contributor includes the
-Program in a commercial product offering, such Contributor (&quot;Commercial
-Contributor&quot;) hereby agrees to defend and indemnify every other
-Contributor (&quot;Indemnified Contributor&quot;) against any losses, damages and
-costs (collectively &quot;Losses&quot;) arising from claims, lawsuits and other
-legal actions brought by a third party against the Indemnified Contributor to
-the extent caused by the acts or omissions of such Commercial Contributor in
-connection with its distribution of the Program in a commercial product
-offering. The obligations in this section do not apply to any claims or Losses
-relating to any actual or alleged intellectual property infringement. In order
-to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
-Contributor in writing of such claim, and b) allow the Commercial Contributor
-to control, and cooperate with the Commercial Contributor in, the defense and
-any related settlement negotiations. The Indemnified Contributor may participate
-in any such claim at its own expense.</span> </p>
-
-<p><span style='font-size:10.0pt'>For example, a Contributor might include the
-Program in a commercial product offering, Product X. That Contributor is then a
-Commercial Contributor. If that Commercial Contributor then makes performance
-claims, or offers warranties related to Product X, those performance claims and
-warranties are such Commercial Contributor's responsibility alone. Under this
-section, the Commercial Contributor would have to defend claims against the
-other Contributors related to those performance claims and warranties, and if a
-court requires any other Contributor to pay any damages as a result, the
-Commercial Contributor must pay those damages.</span> </p>
-
-<p><b><span style='font-size:10.0pt'>5. NO WARRANTY</span></b> </p>
-
-<p><span style='font-size:10.0pt'>EXCEPT AS EXPRESSLY SET FORTH IN THIS
-AGREEMENT, THE PROGRAM IS PROVIDED ON AN &quot;AS IS&quot; BASIS, WITHOUT
-WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING,
-WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT,
-MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
-responsible for determining the appropriateness of using and distributing the
-Program and assumes all risks associated with its exercise of rights under this
-Agreement , including but not limited to the risks and costs of program errors,
-compliance with applicable laws, damage to or loss of data, programs or
-equipment, and unavailability or interruption of operations. </span></p>
-
-<p><b><span style='font-size:10.0pt'>6. DISCLAIMER OF LIABILITY</span></b> </p>
-
-<p><span style='font-size:10.0pt'>EXCEPT AS EXPRESSLY SET FORTH IN THIS
-AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF
-THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF
-THE POSSIBILITY OF SUCH DAMAGES.</span> </p>
-
-<p><b><span style='font-size:10.0pt'>7. GENERAL</span></b> </p>
-
-<p><span style='font-size:10.0pt'>If any provision of this Agreement is invalid
-or unenforceable under applicable law, it shall not affect the validity or
-enforceability of the remainder of the terms of this Agreement, and without
-further action by the parties hereto, such provision shall be reformed to the
-minimum extent necessary to make such provision valid and enforceable.</span> </p>
-
-<p><span style='font-size:10.0pt'>If Recipient institutes patent litigation
-against any entity (including a cross-claim or counterclaim in a lawsuit)
-alleging that the Program itself (excluding combinations of the Program with
-other software or hardware) infringes such Recipient's patent(s), then such
-Recipient's rights granted under Section 2(b) shall terminate as of the date
-such litigation is filed. </span></p>
-
-<p><span style='font-size:10.0pt'>All Recipient's rights under this Agreement
-shall terminate if it fails to comply with any of the material terms or
-conditions of this Agreement and does not cure such failure in a reasonable
-period of time after becoming aware of such noncompliance. If all Recipient's
-rights under this Agreement terminate, Recipient agrees to cease use and
-distribution of the Program as soon as reasonably practicable. However,
-Recipient's obligations under this Agreement and any licenses granted by
-Recipient relating to the Program shall continue and survive. </span></p>
-
-<p><span style='font-size:10.0pt'>Everyone is permitted to copy and distribute
-copies of this Agreement, but in order to avoid inconsistency the Agreement is
-copyrighted and may only be modified in the following manner. The Agreement
-Steward reserves the right to publish new versions (including revisions) of
-this Agreement from time to time. No one other than the Agreement Steward has
-the right to modify this Agreement. The Eclipse Foundation is the initial
-Agreement Steward. The Eclipse Foundation may assign the responsibility to
-serve as the Agreement Steward to a suitable separate entity. Each new version
-of the Agreement will be given a distinguishing version number. The Program
-(including Contributions) may always be distributed subject to the version of
-the Agreement under which it was received. In addition, after a new version of
-the Agreement is published, Contributor may elect to distribute the Program
-(including its Contributions) under the new version. Except as expressly stated
-in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
-the intellectual property of any Contributor under this Agreement, whether
-expressly, by implication, estoppel or otherwise. All rights in the Program not
-expressly granted under this Agreement are reserved.</span> </p>
-
-<p><span style='font-size:10.0pt'>This Agreement is governed by the laws of the
-State of New York and the intellectual property laws of the United States of
-America. No party to this Agreement will bring a legal action under this
-Agreement more than one year after the cause of action arose. Each party waives
-its rights to a jury trial in any resulting litigation.</span> </p>
-
-<p class=MsoNormal><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>
-
-</div>
-
-</body>
-
-</html>
\ No newline at end of file
diff --git a/features/org.eclipse.wst.common_core.feature/feature.properties b/features/org.eclipse.wst.common_core.feature/feature.properties
index 41d223f..00d5dd1 100644
--- a/features/org.eclipse.wst.common_core.feature/feature.properties
+++ b/features/org.eclipse.wst.common_core.feature/feature.properties
@@ -18,10 +18,8 @@
 featureName=WST Common Core
 
 # "providerName" property - name of the company that provides the feature
-providerName=Eclipse.org
+providerName=Eclipse Web Tools Platform
 
-# "updateSiteName" property - label for the update site
-updateSiteName=The Eclipse Web Tools Platform (WTP) Project update site
 
 # "description" property - description of the feature
 description=WST common core functionality.
@@ -40,106 +38,11 @@
 
 # "licenseURL" property - URL of the "Feature License"
 # do not translate value - just change to point to a locale-specific HTML page
-licenseURL=license.html
+# license and licenseURL properties were removed as a result to migrating to new PDE license support. 
+#    Those properties are now added at build time. See http://wiki.eclipse.org/Equinox/p2/License_Mechanism. 
 
 # "license" property - text of the "Feature Update License"
 # should be plain text version of license agreement pointed to be "licenseURL"
-license=\
-ECLIPSE FOUNDATION SOFTWARE USER AGREEMENT\n\
-June 06, 2007\n\
-\n\
-Usage Of Content\n\
-\n\
-THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
-OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
-USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
-AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
-NOTICES INDICATED OR REFERENCED BELOW. BY USING THE CONTENT, YOU\n\
-AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
-AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
-OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE\n\
-TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
-OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
-BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
-\n\
-Applicable Licenses\n\
-\n\
-Unless otherwise indicated, all Content made available by the Eclipse Foundation\n\
-is provided to you under the terms and conditions of the Eclipse Public\n\
-License Version 1.0 ("EPL"). A copy of the EPL is provided with this\n\
-Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
-For purposes of the EPL, "Program" will mean the Content.\n\
-\n\
-Content includes, but is not limited to, source code, object code,\n\
-documentation and other files maintained in the Eclipse.org CVS\n\
-repository ("Repository") in CVS modules ("Modules") and made available\n\
-as downloadable archives ("Downloads").\n\
-\n\
-   - Content may be structured and packaged into modules to facilitate delivering,\n\
-     extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
-     plug-in fragments ("Fragments"), and features ("Features").\n\
-   - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java? ARchive)\n\
-     in a directory named "plugins".\n\
-   - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
-     Each Feature may be packaged as a sub-directory in a directory named "features".\n\
-     Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
-     numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
-   - Features may also include other Features ("Included Features"). Within a Feature, files\n\
-     named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
-\n\
-Features may also include other Features ("Included Features"). Files named\n\
-"feature.xml" may contain a list of the names and version numbers of\n\
-Included Features.\n\
-\n\
-The terms and conditions governing Plug-ins and Fragments should be\n\
-contained in files named "about.html" ("Abouts"). The terms and\n\
-conditions governing Features and Included Features should be contained\n\
-in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
-Licenses may be located in any directory of a Download or Module\n\
-including, but not limited to the following locations:\n\
-\n\
-   - The top-level (root) directory\n\
-   - Plug-in and Fragment directories\n\
-   - Inside Plug-ins and Fragments packaged as JARs\n\
-   - Sub-directories of the directory named "src" of certain Plug-ins\n\
-   - Feature directories\n\
-\n\
-Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
-Eclipse Update Manager, you must agree to a license ("Feature Update\n\
-License") during the installation process. If the Feature contains\n\
-Included Features, the Feature Update License should either provide you\n\
-with the terms and conditions governing the Included Features or inform\n\
-you where you can locate them. Feature Update Licenses may be found in\n\
-the "license" property of files named "feature.properties". Such Abouts,\n\
-Feature Licenses and Feature Update Licenses contain the terms and\n\
-conditions (or references to such terms and conditions) that govern your\n\
-use of the associated Content in that directory.\n\
-\n\
-THE ABOUTS, FEATURE LICENSES AND FEATURE UPDATE LICENSES MAY REFER\n\
-TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
-SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
-\n\
-    - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
-    - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
-    - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
-    - IBM Public License 1.0 (available at http://oss.software.ibm.com/developerworks/opensource/license10.html)\n\
-    - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
-    - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
-    - Common Development and Distribution License (CDDL) Version 1.0 (available at http://www.sun.com/cddl/cddl.html)\n\
-\n\
-IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
-TO USE OF THE CONTENT. If no About, Feature License or Feature Update License\n\
-is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
-govern that particular Content.\n\
-\n\
-Cryptography\n\
-\n\
-Content may contain encryption software. The country in which you are\n\
-currently may have restrictions on the import, possession, and use,\n\
-and/or re-export to another country, of encryption software. BEFORE\n\
-using any encryption software, please check the country's laws,\n\
-regulations and policies concerning the import, possession, or use,\n\
-and re-export of encryption software, to see if this is permitted.\n\
-\n\
-Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.\n
+# license and licenseURL properties were removed as a result to migrating to new PDE license support. 
+#    Those properties are now added at build time. See http://wiki.eclipse.org/Equinox/p2/License_Mechanism. 
 ########### end of license property ##########################################
diff --git a/features/org.eclipse.wst.common_core.feature/feature.xml b/features/org.eclipse.wst.common_core.feature/feature.xml
index 185dfea..8bc7d18 100644
--- a/features/org.eclipse.wst.common_core.feature/feature.xml
+++ b/features/org.eclipse.wst.common_core.feature/feature.xml
@@ -2,8 +2,10 @@
 <feature
       id="org.eclipse.wst.common_core.feature"
       label="%featureName"
-      version="3.1.0.qualifier"
-      provider-name="%providerName">
+      version="3.4.0.qualifier"
+      provider-name="%providerName"
+      license-feature="org.eclipse.license"
+      license-feature-version="1.0.0.qualifier">
 
    <description>
       %description
@@ -17,10 +19,6 @@
       %license
    </license>
 
-   <url>
-      <update label="%updateSiteName" url="http://download.eclipse.org/webtools/updates/"/>
-   </url>
-
    <plugin
          id="org.eclipse.wst.common.emfworkbench.integration"
          download-size="0"
@@ -29,19 +27,6 @@
          unpack="false"/>
 
    <plugin
-         id="org.eclipse.wst.command.env"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"/>
-
-   <plugin
-         id="org.eclipse.wst.command.env.core"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
          id="org.eclipse.wst.common.emf"
          download-size="0"
          install-size="0"
diff --git a/features/org.eclipse.wst.common_core.feature/license.html b/features/org.eclipse.wst.common_core.feature/license.html
deleted file mode 100644
index 76abfb4..0000000
--- a/features/org.eclipse.wst.common_core.feature/license.html
+++ /dev/null
@@ -1,98 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
-<!-- saved from url=(0044)http://www.eclipse.org/legal/epl/notice.html -->
-<HTML><HEAD><TITLE>Eclipse.org Software User Agreement</TITLE>
-<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
-<META content="MSHTML 6.00.2800.1479" name=GENERATOR></HEAD>
-<BODY lang=EN-US vLink=purple link=blue>
-<H2>Eclipse Foundation Software User Agreement</H2>
-<P>June 06, 2007</P>
-<H3>Usage Of Content</H3>
-<P>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION 
-AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT"). USE OF 
-THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE 
-TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED 
-BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED 
-BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE 
-AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE 
-TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS OF ANY 
-APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU 
-MAY NOT USE THE CONTENT.</P>
-<H3>Applicable Licenses</H3>
-<P>Unless otherwise indicated, all Content made available by the Eclipse 
-Foundation is provided to you under the terms and conditions of the Eclipse 
-Public License Version 1.0 ("EPL"). A copy of the EPL is provided with this 
-Content and is also available at <A 
-href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</A>. 
-For purposes of the EPL, "Program" will mean the Content.</P>
-<P>Content includes, but is not limited to, source code, object code, 
-documentation and other files maintained in the Eclipse.org CVS repository 
-("Repository") in CVS modules ("Modules") and made available as downloadable 
-archives ("Downloads").</P>
-<P>Content may be apportioned into plug-ins ("Plug-ins"), plug-in fragments 
-("Fragments"), and features ("Features"). A Feature is a bundle of one or more 
-Plug-ins and/or Fragments and associated material. Files named "feature.xml" may 
-contain a list of the names and version numbers of the Plug-ins and/or Fragments 
-associated with a Feature. Plug-ins and Fragments are located in directories 
-named "plugins" and Features are located in directories named "features".</P>
-<P>Features may also include other Features ("Included Features"). Files named 
-"feature.xml" may contain a list of the names and version numbers of Included 
-Features.</P>
-<P>The terms and conditions governing Plug-ins and Fragments should be contained 
-in files named "about.html" ("Abouts"). The terms and conditions governing 
-Features and Included Features should be contained in files named "license.html" 
-("Feature Licenses"). Abouts and Feature Licenses may be located in any 
-directory of a Download or Module including, but not limited to the following 
-locations:</P>
-<UL>
-  <LI>The top-level (root) directory 
-  <LI>Plug-in and Fragment directories 
-  <LI>Subdirectories of the directory named "src" of certain Plug-ins 
-  <LI>Feature directories </LI></UL>
-<P>Note: if a Feature made available by the Eclipse Foundation is installed 
-using the Eclipse Update Manager, you must agree to a license ("Feature Update 
-License") during the installation process. If the Feature contains Included 
-Features, the Feature Update License should either provide you with the terms 
-and conditions governing the Included Features or inform you where you can 
-locate them. Feature Update Licenses may be found in the "license" property of 
-files named "feature.properties". Such Abouts, Feature Licenses and Feature 
-Update Licenses contain the terms and conditions (or references to such terms 
-and conditions) that govern your use of the associated Content in that 
-directory.</P>
-<P>THE ABOUTS, FEATURE LICENSES AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL 
-OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS. SOME OF THESE 
-OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</P>
-<UL>
-  <LI>Common Public License Version 1.0 (available at <A 
-  href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</A>) 
-
-  <LI>Apache Software License 1.1 (available at <A 
-  href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</A>) 
-
-  <LI>Apache Software License 2.0 (available at <A 
-  href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</A>) 
-
-  <LI>IBM Public License 1.0 (available at <A 
-  href="http://oss.software.ibm.com/developerworks/opensource/license10.html">http://oss.software.ibm.com/developerworks/opensource/license10.html</A>) 
-
-  <LI>Metro Link Public License 1.00 (available at <A 
-  href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</A>) 
-
-  <LI>Mozilla Public License Version 1.1 (available at <A 
-  href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</A>) 
-  </LI>
-   
-  <LI>Common Development and Distribution License (CDDL) Version 1.0 (available at <A 
-  href="http://www.sun.com/cddl/cddl.html">http://www.sun.com/cddl/cddl.html)</A>
-  </LI>
-</UL>
-<P>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR 
-TO USE OF THE CONTENT. If no About, Feature License or Feature Update License is 
-provided, please contact the Eclipse Foundation to determine what terms and 
-conditions govern that particular Content.</P>
-<H3>Cryptography</H3>
-<P>Content may contain encryption software. The country in which you are 
-currently may have restrictions on the import, possession, and use, and/or 
-re-export to another country, of encryption software. BEFORE using any 
-encryption software, please check the country's laws, regulations and policies 
-concerning the import, possession, or use, and re-export of encryption software, 
-to see if this is permitted.</P></BODY></HTML>
diff --git a/features/org.eclipse.wst.common_core.feature/sourceTemplateFeature/build.properties b/features/org.eclipse.wst.common_core.feature/sourceTemplateFeature/build.properties
index f249e9f..be839a7 100644
--- a/features/org.eclipse.wst.common_core.feature/sourceTemplateFeature/build.properties
+++ b/features/org.eclipse.wst.common_core.feature/sourceTemplateFeature/build.properties
@@ -9,8 +9,6 @@
 #     IBM Corporation - initial API and implementation
 ###############################################################################
 bin.includes =\
-epl-v10.html,\
 eclipse_update_120.jpg,\
 feature.xml,\
 feature.properties,\
-license.html
diff --git a/features/org.eclipse.wst.common_core.feature/sourceTemplateFeature/epl-v10.html b/features/org.eclipse.wst.common_core.feature/sourceTemplateFeature/epl-v10.html
deleted file mode 100644
index 022ad29..0000000
--- a/features/org.eclipse.wst.common_core.feature/sourceTemplateFeature/epl-v10.html
+++ /dev/null
@@ -1,328 +0,0 @@
-<html xmlns:o="urn:schemas-microsoft-com:office:office"
-xmlns:w="urn:schemas-microsoft-com:office:word"
-xmlns="http://www.w3.org/TR/REC-html40">
-
-<head>
-<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
-<meta name=ProgId content=Word.Document>
-<meta name=Generator content="Microsoft Word 9">
-<meta name=Originator content="Microsoft Word 9">
-<link rel=File-List
-href="./Eclipse%20EPL%202003_11_10%20Final_files/filelist.xml">
-<title>Eclipse Public License - Version 1.0</title>
-<!--[if gte mso 9]><xml>
- <o:DocumentProperties>
-  <o:Revision>2</o:Revision>
-  <o:TotalTime>3</o:TotalTime>
-  <o:Created>2004-03-05T23:03:00Z</o:Created>
-  <o:LastSaved>2004-03-05T23:03:00Z</o:LastSaved>
-  <o:Pages>4</o:Pages>
-  <o:Words>1626</o:Words>
-  <o:Characters>9270</o:Characters>
-   <o:Lines>77</o:Lines>
-  <o:Paragraphs>18</o:Paragraphs>
-  <o:CharactersWithSpaces>11384</o:CharactersWithSpaces>
-  <o:Version>9.4402</o:Version>
- </o:DocumentProperties>
-</xml><![endif]--><!--[if gte mso 9]><xml>
- <w:WordDocument>
-  <w:TrackRevisions/>
- </w:WordDocument>
-</xml><![endif]-->
-<style>
-<!--
- /* Font Definitions */
-@font-face
-	{font-family:Tahoma;
-	panose-1:2 11 6 4 3 5 4 4 2 4;
-	mso-font-charset:0;
-	mso-generic-font-family:swiss;
-	mso-font-pitch:variable;
-	mso-font-signature:553679495 -2147483648 8 0 66047 0;}
- /* Style Definitions */
-p.MsoNormal, li.MsoNormal, div.MsoNormal
-	{mso-style-parent:"";
-	margin:0in;
-	margin-bottom:.0001pt;
-	mso-pagination:widow-orphan;
-	font-size:12.0pt;
-	font-family:"Times New Roman";
-	mso-fareast-font-family:"Times New Roman";}
-p
-	{margin-right:0in;
-	mso-margin-top-alt:auto;
-	mso-margin-bottom-alt:auto;
-	margin-left:0in;
-	mso-pagination:widow-orphan;
-	font-size:12.0pt;
-	font-family:"Times New Roman";
-	mso-fareast-font-family:"Times New Roman";}
-p.BalloonText, li.BalloonText, div.BalloonText
-	{mso-style-name:"Balloon Text";
-	margin:0in;
-	margin-bottom:.0001pt;
-	mso-pagination:widow-orphan;
-	font-size:8.0pt;
-	font-family:Tahoma;
-	mso-fareast-font-family:"Times New Roman";}
-@page Section1
-	{size:8.5in 11.0in;
-	margin:1.0in 1.25in 1.0in 1.25in;
-	mso-header-margin:.5in;
-	mso-footer-margin:.5in;
-	mso-paper-source:0;}
-div.Section1
-	{page:Section1;}
--->
-</style>
-</head>
-
-<body lang=EN-US style='tab-interval:.5in'>
-
-<div class=Section1>
-
-<p align=center style='text-align:center'><b>Eclipse Public License - v 1.0</b>
-</p>
-
-<p><span style='font-size:10.0pt'>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER
-THE TERMS OF THIS ECLIPSE PUBLIC LICENSE (&quot;AGREEMENT&quot;). ANY USE,
-REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE
-OF THIS AGREEMENT.</span> </p>
-
-<p><b><span style='font-size:10.0pt'>1. DEFINITIONS</span></b> </p>
-
-<p><span style='font-size:10.0pt'>&quot;Contribution&quot; means:</span> </p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
-in the case of the initial Contributor, the initial code and documentation
-distributed under this Agreement, and<br clear=left>
-b) in the case of each subsequent Contributor:</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>i)
-changes to the Program, and</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>ii)
-additions to the Program;</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>where
-such changes and/or additions to the Program originate from and are distributed
-by that particular Contributor. A Contribution 'originates' from a Contributor
-if it was added to the Program by such Contributor itself or anyone acting on
-such Contributor's behalf. Contributions do not include additions to the
-Program which: (i) are separate modules of software distributed in conjunction
-with the Program under their own license agreement, and (ii) are not derivative
-works of the Program. </span></p>
-
-<p><span style='font-size:10.0pt'>&quot;Contributor&quot; means any person or
-entity that distributes the Program.</span> </p>
-
-<p><span style='font-size:10.0pt'>&quot;Licensed Patents &quot; mean patent
-claims licensable by a Contributor which are necessarily infringed by the use
-or sale of its Contribution alone or when combined with the Program. </span></p>
-
-<p><span style='font-size:10.0pt'>&quot;Program&quot; means the Contributions
-distributed in accordance with this Agreement.</span> </p>
-
-<p><span style='font-size:10.0pt'>&quot;Recipient&quot; means anyone who
-receives the Program under this Agreement, including all Contributors.</span> </p>
-
-<p><b><span style='font-size:10.0pt'>2. GRANT OF RIGHTS</span></b> </p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
-Subject to the terms of this Agreement, each Contributor hereby grants Recipient
-a non-exclusive, worldwide, royalty-free copyright license to<span
-style='color:red'> </span>reproduce, prepare derivative works of, publicly
-display, publicly perform, distribute and sublicense the Contribution of such
-Contributor, if any, and such derivative works, in source code and object code
-form.</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>b)
-Subject to the terms of this Agreement, each Contributor hereby grants
-Recipient a non-exclusive, worldwide,<span style='color:green'> </span>royalty-free
-patent license under Licensed Patents to make, use, sell, offer to sell, import
-and otherwise transfer the Contribution of such Contributor, if any, in source
-code and object code form. This patent license shall apply to the combination
-of the Contribution and the Program if, at the time the Contribution is added
-by the Contributor, such addition of the Contribution causes such combination
-to be covered by the Licensed Patents. The patent license shall not apply to
-any other combinations which include the Contribution. No hardware per se is
-licensed hereunder. </span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>c)
-Recipient understands that although each Contributor grants the licenses to its
-Contributions set forth herein, no assurances are provided by any Contributor
-that the Program does not infringe the patent or other intellectual property
-rights of any other entity. Each Contributor disclaims any liability to Recipient
-for claims brought by any other entity based on infringement of intellectual
-property rights or otherwise. As a condition to exercising the rights and
-licenses granted hereunder, each Recipient hereby assumes sole responsibility
-to secure any other intellectual property rights needed, if any. For example,
-if a third party patent license is required to allow Recipient to distribute
-the Program, it is Recipient's responsibility to acquire that license before
-distributing the Program.</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>d)
-Each Contributor represents that to its knowledge it has sufficient copyright
-rights in its Contribution, if any, to grant the copyright license set forth in
-this Agreement. </span></p>
-
-<p><b><span style='font-size:10.0pt'>3. REQUIREMENTS</span></b> </p>
-
-<p><span style='font-size:10.0pt'>A Contributor may choose to distribute the
-Program in object code form under its own license agreement, provided that:</span>
-</p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
-it complies with the terms and conditions of this Agreement; and</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>b)
-its license agreement:</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>i)
-effectively disclaims on behalf of all Contributors all warranties and
-conditions, express and implied, including warranties or conditions of title
-and non-infringement, and implied warranties or conditions of merchantability
-and fitness for a particular purpose; </span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>ii)
-effectively excludes on behalf of all Contributors all liability for damages,
-including direct, indirect, special, incidental and consequential damages, such
-as lost profits; </span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>iii)
-states that any provisions which differ from this Agreement are offered by that
-Contributor alone and not by any other party; and</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>iv)
-states that source code for the Program is available from such Contributor, and
-informs licensees how to obtain it in a reasonable manner on or through a
-medium customarily used for software exchange.<span style='color:blue'> </span></span></p>
-
-<p><span style='font-size:10.0pt'>When the Program is made available in source
-code form:</span> </p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
-it must be made available under this Agreement; and </span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>b) a
-copy of this Agreement must be included with each copy of the Program. </span></p>
-
-<p><span style='font-size:10.0pt'>Contributors may not remove or alter any
-copyright notices contained within the Program. </span></p>
-
-<p><span style='font-size:10.0pt'>Each Contributor must identify itself as the
-originator of its Contribution, if any, in a manner that reasonably allows
-subsequent Recipients to identify the originator of the Contribution. </span></p>
-
-<p><b><span style='font-size:10.0pt'>4. COMMERCIAL DISTRIBUTION</span></b> </p>
-
-<p><span style='font-size:10.0pt'>Commercial distributors of software may
-accept certain responsibilities with respect to end users, business partners
-and the like. While this license is intended to facilitate the commercial use
-of the Program, the Contributor who includes the Program in a commercial
-product offering should do so in a manner which does not create potential
-liability for other Contributors. Therefore, if a Contributor includes the
-Program in a commercial product offering, such Contributor (&quot;Commercial
-Contributor&quot;) hereby agrees to defend and indemnify every other
-Contributor (&quot;Indemnified Contributor&quot;) against any losses, damages and
-costs (collectively &quot;Losses&quot;) arising from claims, lawsuits and other
-legal actions brought by a third party against the Indemnified Contributor to
-the extent caused by the acts or omissions of such Commercial Contributor in
-connection with its distribution of the Program in a commercial product
-offering. The obligations in this section do not apply to any claims or Losses
-relating to any actual or alleged intellectual property infringement. In order
-to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
-Contributor in writing of such claim, and b) allow the Commercial Contributor
-to control, and cooperate with the Commercial Contributor in, the defense and
-any related settlement negotiations. The Indemnified Contributor may participate
-in any such claim at its own expense.</span> </p>
-
-<p><span style='font-size:10.0pt'>For example, a Contributor might include the
-Program in a commercial product offering, Product X. That Contributor is then a
-Commercial Contributor. If that Commercial Contributor then makes performance
-claims, or offers warranties related to Product X, those performance claims and
-warranties are such Commercial Contributor's responsibility alone. Under this
-section, the Commercial Contributor would have to defend claims against the
-other Contributors related to those performance claims and warranties, and if a
-court requires any other Contributor to pay any damages as a result, the
-Commercial Contributor must pay those damages.</span> </p>
-
-<p><b><span style='font-size:10.0pt'>5. NO WARRANTY</span></b> </p>
-
-<p><span style='font-size:10.0pt'>EXCEPT AS EXPRESSLY SET FORTH IN THIS
-AGREEMENT, THE PROGRAM IS PROVIDED ON AN &quot;AS IS&quot; BASIS, WITHOUT
-WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING,
-WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT,
-MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
-responsible for determining the appropriateness of using and distributing the
-Program and assumes all risks associated with its exercise of rights under this
-Agreement , including but not limited to the risks and costs of program errors,
-compliance with applicable laws, damage to or loss of data, programs or
-equipment, and unavailability or interruption of operations. </span></p>
-
-<p><b><span style='font-size:10.0pt'>6. DISCLAIMER OF LIABILITY</span></b> </p>
-
-<p><span style='font-size:10.0pt'>EXCEPT AS EXPRESSLY SET FORTH IN THIS
-AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF
-THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF
-THE POSSIBILITY OF SUCH DAMAGES.</span> </p>
-
-<p><b><span style='font-size:10.0pt'>7. GENERAL</span></b> </p>
-
-<p><span style='font-size:10.0pt'>If any provision of this Agreement is invalid
-or unenforceable under applicable law, it shall not affect the validity or
-enforceability of the remainder of the terms of this Agreement, and without
-further action by the parties hereto, such provision shall be reformed to the
-minimum extent necessary to make such provision valid and enforceable.</span> </p>
-
-<p><span style='font-size:10.0pt'>If Recipient institutes patent litigation
-against any entity (including a cross-claim or counterclaim in a lawsuit)
-alleging that the Program itself (excluding combinations of the Program with
-other software or hardware) infringes such Recipient's patent(s), then such
-Recipient's rights granted under Section 2(b) shall terminate as of the date
-such litigation is filed. </span></p>
-
-<p><span style='font-size:10.0pt'>All Recipient's rights under this Agreement
-shall terminate if it fails to comply with any of the material terms or
-conditions of this Agreement and does not cure such failure in a reasonable
-period of time after becoming aware of such noncompliance. If all Recipient's
-rights under this Agreement terminate, Recipient agrees to cease use and
-distribution of the Program as soon as reasonably practicable. However,
-Recipient's obligations under this Agreement and any licenses granted by
-Recipient relating to the Program shall continue and survive. </span></p>
-
-<p><span style='font-size:10.0pt'>Everyone is permitted to copy and distribute
-copies of this Agreement, but in order to avoid inconsistency the Agreement is
-copyrighted and may only be modified in the following manner. The Agreement
-Steward reserves the right to publish new versions (including revisions) of
-this Agreement from time to time. No one other than the Agreement Steward has
-the right to modify this Agreement. The Eclipse Foundation is the initial
-Agreement Steward. The Eclipse Foundation may assign the responsibility to
-serve as the Agreement Steward to a suitable separate entity. Each new version
-of the Agreement will be given a distinguishing version number. The Program
-(including Contributions) may always be distributed subject to the version of
-the Agreement under which it was received. In addition, after a new version of
-the Agreement is published, Contributor may elect to distribute the Program
-(including its Contributions) under the new version. Except as expressly stated
-in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
-the intellectual property of any Contributor under this Agreement, whether
-expressly, by implication, estoppel or otherwise. All rights in the Program not
-expressly granted under this Agreement are reserved.</span> </p>
-
-<p><span style='font-size:10.0pt'>This Agreement is governed by the laws of the
-State of New York and the intellectual property laws of the United States of
-America. No party to this Agreement will bring a legal action under this
-Agreement more than one year after the cause of action arose. Each party waives
-its rights to a jury trial in any resulting litigation.</span> </p>
-
-<p class=MsoNormal><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>
-
-</div>
-
-</body>
-
-</html>
diff --git a/features/org.eclipse.wst.common_core.feature/sourceTemplateFeature/feature.properties b/features/org.eclipse.wst.common_core.feature/sourceTemplateFeature/feature.properties
index 52d0f54..65863b08 100644
--- a/features/org.eclipse.wst.common_core.feature/sourceTemplateFeature/feature.properties
+++ b/features/org.eclipse.wst.common_core.feature/sourceTemplateFeature/feature.properties
@@ -17,10 +17,8 @@
 # "featureName" property - name of the feature
 featureName=WST Common Core Developer Resources
 # "providerName" property - name of the company that provides the feature
-providerName=Eclipse.org
+providerName=Eclipse Web Tools Platform
 
-# "updateSiteName" property - label for the update site
-updateSiteName=The Eclipse Web Tools Platform (WTP) Project update site
 
 # "description" property - description of the feature
 description=Source code zips for WST common core.
@@ -39,106 +37,11 @@
 
 # "licenseURL" property - URL of the "Feature License"
 # do not translate value - just change to point to a locale-specific HTML page
-licenseURL=license.html
+# license and licenseURL properties were removed as a result to migrating to new PDE license support. 
+#    Those properties are now added at build time. See http://wiki.eclipse.org/Equinox/p2/License_Mechanism. 
 
 # "license" property - text of the "Feature Update License"
 # should be plain text version of license agreement pointed to be "licenseURL"
-license=\
-ECLIPSE FOUNDATION SOFTWARE USER AGREEMENT\n\
-June 06, 2007\n\
-\n\
-Usage Of Content\n\
-\n\
-THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
-OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
-USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
-AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
-NOTICES INDICATED OR REFERENCED BELOW. BY USING THE CONTENT, YOU\n\
-AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
-AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
-OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE\n\
-TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
-OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
-BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
-\n\
-Applicable Licenses\n\
-\n\
-Unless otherwise indicated, all Content made available by the Eclipse Foundation\n\
-is provided to you under the terms and conditions of the Eclipse Public\n\
-License Version 1.0 ("EPL"). A copy of the EPL is provided with this\n\
-Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
-For purposes of the EPL, "Program" will mean the Content.\n\
-\n\
-Content includes, but is not limited to, source code, object code,\n\
-documentation and other files maintained in the Eclipse.org CVS\n\
-repository ("Repository") in CVS modules ("Modules") and made available\n\
-as downloadable archives ("Downloads").\n\
-\n\
-   - Content may be structured and packaged into modules to facilitate delivering,\n\
-     extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
-     plug-in fragments ("Fragments"), and features ("Features").\n\
-   - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java? ARchive)\n\
-     in a directory named "plugins".\n\
-   - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
-     Each Feature may be packaged as a sub-directory in a directory named "features".\n\
-     Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
-     numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
-   - Features may also include other Features ("Included Features"). Within a Feature, files\n\
-     named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
-\n\
-Features may also include other Features ("Included Features"). Files named\n\
-"feature.xml" may contain a list of the names and version numbers of\n\
-Included Features.\n\
-\n\
-The terms and conditions governing Plug-ins and Fragments should be\n\
-contained in files named "about.html" ("Abouts"). The terms and\n\
-conditions governing Features and Included Features should be contained\n\
-in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
-Licenses may be located in any directory of a Download or Module\n\
-including, but not limited to the following locations:\n\
-\n\
-   - The top-level (root) directory\n\
-   - Plug-in and Fragment directories\n\
-   - Inside Plug-ins and Fragments packaged as JARs\n\
-   - Sub-directories of the directory named "src" of certain Plug-ins\n\
-   - Feature directories\n\
-\n\
-Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
-Eclipse Update Manager, you must agree to a license ("Feature Update\n\
-License") during the installation process. If the Feature contains\n\
-Included Features, the Feature Update License should either provide you\n\
-with the terms and conditions governing the Included Features or inform\n\
-you where you can locate them. Feature Update Licenses may be found in\n\
-the "license" property of files named "feature.properties". Such Abouts,\n\
-Feature Licenses and Feature Update Licenses contain the terms and\n\
-conditions (or references to such terms and conditions) that govern your\n\
-use of the associated Content in that directory.\n\
-\n\
-THE ABOUTS, FEATURE LICENSES AND FEATURE UPDATE LICENSES MAY REFER\n\
-TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
-SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
-\n\
-    - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
-    - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
-    - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
-    - IBM Public License 1.0 (available at http://oss.software.ibm.com/developerworks/opensource/license10.html)\n\
-    - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
-    - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
-    - Common Development and Distribution License (CDDL) Version 1.0 (available at http://www.sun.com/cddl/cddl.html)\n\
-\n\
-IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
-TO USE OF THE CONTENT. If no About, Feature License or Feature Update License\n\
-is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
-govern that particular Content.\n\
-\n\
-Cryptography\n\
-\n\
-Content may contain encryption software. The country in which you are\n\
-currently may have restrictions on the import, possession, and use,\n\
-and/or re-export to another country, of encryption software. BEFORE\n\
-using any encryption software, please check the country's laws,\n\
-regulations and policies concerning the import, possession, or use,\n\
-and re-export of encryption software, to see if this is permitted.\n\
-\n\
-Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.\n
+# license and licenseURL properties were removed as a result to migrating to new PDE license support. 
+#    Those properties are now added at build time. See http://wiki.eclipse.org/Equinox/p2/License_Mechanism. 
 ########### end of license property ##########################################
diff --git a/features/org.eclipse.wst.common_core.feature/sourceTemplateFeature/license.html b/features/org.eclipse.wst.common_core.feature/sourceTemplateFeature/license.html
deleted file mode 100644
index fec4a48..0000000
--- a/features/org.eclipse.wst.common_core.feature/sourceTemplateFeature/license.html
+++ /dev/null
@@ -1,82 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
-<head>
-<meta http-equiv=Content-Type content="text/html; charset=iso-8859-1">
-<title>Eclipse.org Software User Agreement</title>
-</head>
-
-<body lang="EN-US" link=blue vlink=purple>
-<h2>Eclipse Foundation Software User Agreement</h2>
-<p>June 06, 2007</p>
-
-<h3>Usage Of Content</h3>
-
-<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
-   (COLLECTIVELY &quot;CONTENT&quot;).  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
-   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
-   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
-   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
-   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
-   
-<h3>Applicable Licenses</h3>   
-   
-<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation is provided to you under the terms and conditions of the Eclipse Public License Version 1.0
-   (&quot;EPL&quot;).  A copy of the EPL is provided with this Content and is also available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-   For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
-
-<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse.org CVS repository (&quot;Repository&quot;) in CVS
-   modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
-   
-<ul>
-	<li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-	<li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
-	<li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
-      and/or Fragments associated with that Feature.</li>
-	<li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
-</ul>   
- 
-<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
-Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
-including, but not limited to the following locations:</p>
-
-<ul>
-	<li>The top-level (root) directory</li>
-	<li>Plug-in and Fragment directories</li>
-	<li>Inside Plug-ins and Fragments packaged as JARs</li>
-	<li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-	<li>Feature directories</li>
-</ul>
-		
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Eclipse Update Manager, you must agree to a license (&quot;Feature Update License&quot;) during the
-installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
-inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
-that directory.</p>
-
-<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.  SOME OF THESE
-OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
-
-<ul>
-	<li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-	<li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-	<li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-	<li>IBM Public License 1.0 (available at <a href="http://oss.software.ibm.com/developerworks/opensource/license10.html">http://oss.software.ibm.com/developerworks/opensource/license10.html</a>)</li>	
-	<li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-	<li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
-  <LI>Common Development and Distribution License (CDDL) Version 1.0 (available at <A 
-  href="http://www.sun.com/cddl/cddl.html">http://www.sun.com/cddl/cddl.html)</A>
-  </LI>
-</UL>
-
-<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
-contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
-
-<h3>Cryptography</h3>
-
-<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
-   another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
-   possession, or use, and re-export of encryption software, to see if this is permitted.</p>
-   
-<small>Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.</small>   
-</body>
-</html>
diff --git a/features/org.eclipse.wst.common_sdk.feature/build.properties b/features/org.eclipse.wst.common_sdk.feature/build.properties
index b730e78..3edf592 100644
--- a/features/org.eclipse.wst.common_sdk.feature/build.properties
+++ b/features/org.eclipse.wst.common_sdk.feature/build.properties
@@ -1,8 +1,6 @@
 bin.includes = feature.xml,\
-               epl-v10.html,\
-               license.html,\
                eclipse_update_120.jpg,\
                feature.properties
 generate.feature@org.eclipse.wst.common_ui.feature.source=org.eclipse.wst.common_ui.feature, feature@org.eclipse.wst.common_core.feature.source  
 
-               
\ No newline at end of file
+               
diff --git a/features/org.eclipse.wst.common_sdk.feature/epl-v10.html b/features/org.eclipse.wst.common_sdk.feature/epl-v10.html
deleted file mode 100644
index ed4b196..0000000
--- a/features/org.eclipse.wst.common_sdk.feature/epl-v10.html
+++ /dev/null
@@ -1,328 +0,0 @@
-<html xmlns:o="urn:schemas-microsoft-com:office:office"
-xmlns:w="urn:schemas-microsoft-com:office:word"
-xmlns="http://www.w3.org/TR/REC-html40">
-
-<head>
-<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
-<meta name=ProgId content=Word.Document>
-<meta name=Generator content="Microsoft Word 9">
-<meta name=Originator content="Microsoft Word 9">
-<link rel=File-List
-href="./Eclipse%20EPL%202003_11_10%20Final_files/filelist.xml">
-<title>Eclipse Public License - Version 1.0</title>
-<!--[if gte mso 9]><xml>
- <o:DocumentProperties>
-  <o:Revision>2</o:Revision>
-  <o:TotalTime>3</o:TotalTime>
-  <o:Created>2004-03-05T23:03:00Z</o:Created>
-  <o:LastSaved>2004-03-05T23:03:00Z</o:LastSaved>
-  <o:Pages>4</o:Pages>
-  <o:Words>1626</o:Words>
-  <o:Characters>9270</o:Characters>
-   <o:Lines>77</o:Lines>
-  <o:Paragraphs>18</o:Paragraphs>
-  <o:CharactersWithSpaces>11384</o:CharactersWithSpaces>
-  <o:Version>9.4402</o:Version>
- </o:DocumentProperties>
-</xml><![endif]--><!--[if gte mso 9]><xml>
- <w:WordDocument>
-  <w:TrackRevisions/>
- </w:WordDocument>
-</xml><![endif]-->
-<style>
-<!--
- /* Font Definitions */
-@font-face
-	{font-family:Tahoma;
-	panose-1:2 11 6 4 3 5 4 4 2 4;
-	mso-font-charset:0;
-	mso-generic-font-family:swiss;
-	mso-font-pitch:variable;
-	mso-font-signature:553679495 -2147483648 8 0 66047 0;}
- /* Style Definitions */
-p.MsoNormal, li.MsoNormal, div.MsoNormal
-	{mso-style-parent:"";
-	margin:0in;
-	margin-bottom:.0001pt;
-	mso-pagination:widow-orphan;
-	font-size:12.0pt;
-	font-family:"Times New Roman";
-	mso-fareast-font-family:"Times New Roman";}
-p
-	{margin-right:0in;
-	mso-margin-top-alt:auto;
-	mso-margin-bottom-alt:auto;
-	margin-left:0in;
-	mso-pagination:widow-orphan;
-	font-size:12.0pt;
-	font-family:"Times New Roman";
-	mso-fareast-font-family:"Times New Roman";}
-p.BalloonText, li.BalloonText, div.BalloonText
-	{mso-style-name:"Balloon Text";
-	margin:0in;
-	margin-bottom:.0001pt;
-	mso-pagination:widow-orphan;
-	font-size:8.0pt;
-	font-family:Tahoma;
-	mso-fareast-font-family:"Times New Roman";}
-@page Section1
-	{size:8.5in 11.0in;
-	margin:1.0in 1.25in 1.0in 1.25in;
-	mso-header-margin:.5in;
-	mso-footer-margin:.5in;
-	mso-paper-source:0;}
-div.Section1
-	{page:Section1;}
--->
-</style>
-</head>
-
-<body lang=EN-US style='tab-interval:.5in'>
-
-<div class=Section1>
-
-<p align=center style='text-align:center'><b>Eclipse Public License - v 1.0</b>
-</p>
-
-<p><span style='font-size:10.0pt'>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER
-THE TERMS OF THIS ECLIPSE PUBLIC LICENSE (&quot;AGREEMENT&quot;). ANY USE,
-REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE
-OF THIS AGREEMENT.</span> </p>
-
-<p><b><span style='font-size:10.0pt'>1. DEFINITIONS</span></b> </p>
-
-<p><span style='font-size:10.0pt'>&quot;Contribution&quot; means:</span> </p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
-in the case of the initial Contributor, the initial code and documentation
-distributed under this Agreement, and<br clear=left>
-b) in the case of each subsequent Contributor:</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>i)
-changes to the Program, and</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>ii)
-additions to the Program;</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>where
-such changes and/or additions to the Program originate from and are distributed
-by that particular Contributor. A Contribution 'originates' from a Contributor
-if it was added to the Program by such Contributor itself or anyone acting on
-such Contributor's behalf. Contributions do not include additions to the
-Program which: (i) are separate modules of software distributed in conjunction
-with the Program under their own license agreement, and (ii) are not derivative
-works of the Program. </span></p>
-
-<p><span style='font-size:10.0pt'>&quot;Contributor&quot; means any person or
-entity that distributes the Program.</span> </p>
-
-<p><span style='font-size:10.0pt'>&quot;Licensed Patents &quot; mean patent
-claims licensable by a Contributor which are necessarily infringed by the use
-or sale of its Contribution alone or when combined with the Program. </span></p>
-
-<p><span style='font-size:10.0pt'>&quot;Program&quot; means the Contributions
-distributed in accordance with this Agreement.</span> </p>
-
-<p><span style='font-size:10.0pt'>&quot;Recipient&quot; means anyone who
-receives the Program under this Agreement, including all Contributors.</span> </p>
-
-<p><b><span style='font-size:10.0pt'>2. GRANT OF RIGHTS</span></b> </p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
-Subject to the terms of this Agreement, each Contributor hereby grants Recipient
-a non-exclusive, worldwide, royalty-free copyright license to<span
-style='color:red'> </span>reproduce, prepare derivative works of, publicly
-display, publicly perform, distribute and sublicense the Contribution of such
-Contributor, if any, and such derivative works, in source code and object code
-form.</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>b)
-Subject to the terms of this Agreement, each Contributor hereby grants
-Recipient a non-exclusive, worldwide,<span style='color:green'> </span>royalty-free
-patent license under Licensed Patents to make, use, sell, offer to sell, import
-and otherwise transfer the Contribution of such Contributor, if any, in source
-code and object code form. This patent license shall apply to the combination
-of the Contribution and the Program if, at the time the Contribution is added
-by the Contributor, such addition of the Contribution causes such combination
-to be covered by the Licensed Patents. The patent license shall not apply to
-any other combinations which include the Contribution. No hardware per se is
-licensed hereunder. </span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>c)
-Recipient understands that although each Contributor grants the licenses to its
-Contributions set forth herein, no assurances are provided by any Contributor
-that the Program does not infringe the patent or other intellectual property
-rights of any other entity. Each Contributor disclaims any liability to Recipient
-for claims brought by any other entity based on infringement of intellectual
-property rights or otherwise. As a condition to exercising the rights and
-licenses granted hereunder, each Recipient hereby assumes sole responsibility
-to secure any other intellectual property rights needed, if any. For example,
-if a third party patent license is required to allow Recipient to distribute
-the Program, it is Recipient's responsibility to acquire that license before
-distributing the Program.</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>d)
-Each Contributor represents that to its knowledge it has sufficient copyright
-rights in its Contribution, if any, to grant the copyright license set forth in
-this Agreement. </span></p>
-
-<p><b><span style='font-size:10.0pt'>3. REQUIREMENTS</span></b> </p>
-
-<p><span style='font-size:10.0pt'>A Contributor may choose to distribute the
-Program in object code form under its own license agreement, provided that:</span>
-</p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
-it complies with the terms and conditions of this Agreement; and</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>b)
-its license agreement:</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>i)
-effectively disclaims on behalf of all Contributors all warranties and
-conditions, express and implied, including warranties or conditions of title
-and non-infringement, and implied warranties or conditions of merchantability
-and fitness for a particular purpose; </span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>ii)
-effectively excludes on behalf of all Contributors all liability for damages,
-including direct, indirect, special, incidental and consequential damages, such
-as lost profits; </span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>iii)
-states that any provisions which differ from this Agreement are offered by that
-Contributor alone and not by any other party; and</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>iv)
-states that source code for the Program is available from such Contributor, and
-informs licensees how to obtain it in a reasonable manner on or through a
-medium customarily used for software exchange.<span style='color:blue'> </span></span></p>
-
-<p><span style='font-size:10.0pt'>When the Program is made available in source
-code form:</span> </p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
-it must be made available under this Agreement; and </span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>b) a
-copy of this Agreement must be included with each copy of the Program. </span></p>
-
-<p><span style='font-size:10.0pt'>Contributors may not remove or alter any
-copyright notices contained within the Program. </span></p>
-
-<p><span style='font-size:10.0pt'>Each Contributor must identify itself as the
-originator of its Contribution, if any, in a manner that reasonably allows
-subsequent Recipients to identify the originator of the Contribution. </span></p>
-
-<p><b><span style='font-size:10.0pt'>4. COMMERCIAL DISTRIBUTION</span></b> </p>
-
-<p><span style='font-size:10.0pt'>Commercial distributors of software may
-accept certain responsibilities with respect to end users, business partners
-and the like. While this license is intended to facilitate the commercial use
-of the Program, the Contributor who includes the Program in a commercial
-product offering should do so in a manner which does not create potential
-liability for other Contributors. Therefore, if a Contributor includes the
-Program in a commercial product offering, such Contributor (&quot;Commercial
-Contributor&quot;) hereby agrees to defend and indemnify every other
-Contributor (&quot;Indemnified Contributor&quot;) against any losses, damages and
-costs (collectively &quot;Losses&quot;) arising from claims, lawsuits and other
-legal actions brought by a third party against the Indemnified Contributor to
-the extent caused by the acts or omissions of such Commercial Contributor in
-connection with its distribution of the Program in a commercial product
-offering. The obligations in this section do not apply to any claims or Losses
-relating to any actual or alleged intellectual property infringement. In order
-to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
-Contributor in writing of such claim, and b) allow the Commercial Contributor
-to control, and cooperate with the Commercial Contributor in, the defense and
-any related settlement negotiations. The Indemnified Contributor may participate
-in any such claim at its own expense.</span> </p>
-
-<p><span style='font-size:10.0pt'>For example, a Contributor might include the
-Program in a commercial product offering, Product X. That Contributor is then a
-Commercial Contributor. If that Commercial Contributor then makes performance
-claims, or offers warranties related to Product X, those performance claims and
-warranties are such Commercial Contributor's responsibility alone. Under this
-section, the Commercial Contributor would have to defend claims against the
-other Contributors related to those performance claims and warranties, and if a
-court requires any other Contributor to pay any damages as a result, the
-Commercial Contributor must pay those damages.</span> </p>
-
-<p><b><span style='font-size:10.0pt'>5. NO WARRANTY</span></b> </p>
-
-<p><span style='font-size:10.0pt'>EXCEPT AS EXPRESSLY SET FORTH IN THIS
-AGREEMENT, THE PROGRAM IS PROVIDED ON AN &quot;AS IS&quot; BASIS, WITHOUT
-WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING,
-WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT,
-MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
-responsible for determining the appropriateness of using and distributing the
-Program and assumes all risks associated with its exercise of rights under this
-Agreement , including but not limited to the risks and costs of program errors,
-compliance with applicable laws, damage to or loss of data, programs or
-equipment, and unavailability or interruption of operations. </span></p>
-
-<p><b><span style='font-size:10.0pt'>6. DISCLAIMER OF LIABILITY</span></b> </p>
-
-<p><span style='font-size:10.0pt'>EXCEPT AS EXPRESSLY SET FORTH IN THIS
-AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF
-THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF
-THE POSSIBILITY OF SUCH DAMAGES.</span> </p>
-
-<p><b><span style='font-size:10.0pt'>7. GENERAL</span></b> </p>
-
-<p><span style='font-size:10.0pt'>If any provision of this Agreement is invalid
-or unenforceable under applicable law, it shall not affect the validity or
-enforceability of the remainder of the terms of this Agreement, and without
-further action by the parties hereto, such provision shall be reformed to the
-minimum extent necessary to make such provision valid and enforceable.</span> </p>
-
-<p><span style='font-size:10.0pt'>If Recipient institutes patent litigation
-against any entity (including a cross-claim or counterclaim in a lawsuit)
-alleging that the Program itself (excluding combinations of the Program with
-other software or hardware) infringes such Recipient's patent(s), then such
-Recipient's rights granted under Section 2(b) shall terminate as of the date
-such litigation is filed. </span></p>
-
-<p><span style='font-size:10.0pt'>All Recipient's rights under this Agreement
-shall terminate if it fails to comply with any of the material terms or
-conditions of this Agreement and does not cure such failure in a reasonable
-period of time after becoming aware of such noncompliance. If all Recipient's
-rights under this Agreement terminate, Recipient agrees to cease use and
-distribution of the Program as soon as reasonably practicable. However,
-Recipient's obligations under this Agreement and any licenses granted by
-Recipient relating to the Program shall continue and survive. </span></p>
-
-<p><span style='font-size:10.0pt'>Everyone is permitted to copy and distribute
-copies of this Agreement, but in order to avoid inconsistency the Agreement is
-copyrighted and may only be modified in the following manner. The Agreement
-Steward reserves the right to publish new versions (including revisions) of
-this Agreement from time to time. No one other than the Agreement Steward has
-the right to modify this Agreement. The Eclipse Foundation is the initial
-Agreement Steward. The Eclipse Foundation may assign the responsibility to
-serve as the Agreement Steward to a suitable separate entity. Each new version
-of the Agreement will be given a distinguishing version number. The Program
-(including Contributions) may always be distributed subject to the version of
-the Agreement under which it was received. In addition, after a new version of
-the Agreement is published, Contributor may elect to distribute the Program
-(including its Contributions) under the new version. Except as expressly stated
-in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
-the intellectual property of any Contributor under this Agreement, whether
-expressly, by implication, estoppel or otherwise. All rights in the Program not
-expressly granted under this Agreement are reserved.</span> </p>
-
-<p><span style='font-size:10.0pt'>This Agreement is governed by the laws of the
-State of New York and the intellectual property laws of the United States of
-America. No party to this Agreement will bring a legal action under this
-Agreement more than one year after the cause of action arose. Each party waives
-its rights to a jury trial in any resulting litigation.</span> </p>
-
-<p class=MsoNormal><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>
-
-</div>
-
-</body>
-
-</html>
\ No newline at end of file
diff --git a/features/org.eclipse.wst.common_sdk.feature/feature.properties b/features/org.eclipse.wst.common_sdk.feature/feature.properties
index 446e00e..c4b4fe1 100644
--- a/features/org.eclipse.wst.common_sdk.feature/feature.properties
+++ b/features/org.eclipse.wst.common_sdk.feature/feature.properties
@@ -18,10 +18,8 @@
 featureName=WST Common Plug-in Developer Resources
 
 # "providerName" property - name of the company that provides the feature
-providerName=Eclipse.org
+providerName=Eclipse Web Tools Platform
 
-# "updateSiteName" property - label for the update site
-updateSiteName=The Eclipse Web Tools Platform (WTP) Project update site
 
 # "description" property - description of the feature
 description=Source code zips for WST common tools
@@ -40,106 +38,11 @@
 
 # "licenseURL" property - URL of the "Feature License"
 # do not translate value - just change to point to a locale-specific HTML page
-licenseURL=license.html
+# license and licenseURL properties were removed as a result to migrating to new PDE license support. 
+#    Those properties are now added at build time. See http://wiki.eclipse.org/Equinox/p2/License_Mechanism. 
 
 # "license" property - text of the "Feature Update License"
 # should be plain text version of license agreement pointed to be "licenseURL"
-license=\
-ECLIPSE FOUNDATION SOFTWARE USER AGREEMENT\n\
-June 06, 2007\n\
-\n\
-Usage Of Content\n\
-\n\
-THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
-OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
-USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
-AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
-NOTICES INDICATED OR REFERENCED BELOW. BY USING THE CONTENT, YOU\n\
-AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
-AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
-OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE\n\
-TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
-OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
-BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
-\n\
-Applicable Licenses\n\
-\n\
-Unless otherwise indicated, all Content made available by the Eclipse Foundation\n\
-is provided to you under the terms and conditions of the Eclipse Public\n\
-License Version 1.0 ("EPL"). A copy of the EPL is provided with this\n\
-Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
-For purposes of the EPL, "Program" will mean the Content.\n\
-\n\
-Content includes, but is not limited to, source code, object code,\n\
-documentation and other files maintained in the Eclipse.org CVS\n\
-repository ("Repository") in CVS modules ("Modules") and made available\n\
-as downloadable archives ("Downloads").\n\
-\n\
-   - Content may be structured and packaged into modules to facilitate delivering,\n\
-     extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
-     plug-in fragments ("Fragments"), and features ("Features").\n\
-   - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java? ARchive)\n\
-     in a directory named "plugins".\n\
-   - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
-     Each Feature may be packaged as a sub-directory in a directory named "features".\n\
-     Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
-     numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
-   - Features may also include other Features ("Included Features"). Within a Feature, files\n\
-     named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
-\n\
-Features may also include other Features ("Included Features"). Files named\n\
-"feature.xml" may contain a list of the names and version numbers of\n\
-Included Features.\n\
-\n\
-The terms and conditions governing Plug-ins and Fragments should be\n\
-contained in files named "about.html" ("Abouts"). The terms and\n\
-conditions governing Features and Included Features should be contained\n\
-in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
-Licenses may be located in any directory of a Download or Module\n\
-including, but not limited to the following locations:\n\
-\n\
-   - The top-level (root) directory\n\
-   - Plug-in and Fragment directories\n\
-   - Inside Plug-ins and Fragments packaged as JARs\n\
-   - Sub-directories of the directory named "src" of certain Plug-ins\n\
-   - Feature directories\n\
-\n\
-Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
-Eclipse Update Manager, you must agree to a license ("Feature Update\n\
-License") during the installation process. If the Feature contains\n\
-Included Features, the Feature Update License should either provide you\n\
-with the terms and conditions governing the Included Features or inform\n\
-you where you can locate them. Feature Update Licenses may be found in\n\
-the "license" property of files named "feature.properties". Such Abouts,\n\
-Feature Licenses and Feature Update Licenses contain the terms and\n\
-conditions (or references to such terms and conditions) that govern your\n\
-use of the associated Content in that directory.\n\
-\n\
-THE ABOUTS, FEATURE LICENSES AND FEATURE UPDATE LICENSES MAY REFER\n\
-TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
-SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
-\n\
-    - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
-    - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
-    - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
-    - IBM Public License 1.0 (available at http://oss.software.ibm.com/developerworks/opensource/license10.html)\n\
-    - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
-    - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
-    - Common Development and Distribution License (CDDL) Version 1.0 (available at http://www.sun.com/cddl/cddl.html)\n\
-\n\
-IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
-TO USE OF THE CONTENT. If no About, Feature License or Feature Update License\n\
-is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
-govern that particular Content.\n\
-\n\
-Cryptography\n\
-\n\
-Content may contain encryption software. The country in which you are\n\
-currently may have restrictions on the import, possession, and use,\n\
-and/or re-export to another country, of encryption software. BEFORE\n\
-using any encryption software, please check the country's laws,\n\
-regulations and policies concerning the import, possession, or use,\n\
-and re-export of encryption software, to see if this is permitted.\n\
-\n\
-Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.\n
+# license and licenseURL properties were removed as a result to migrating to new PDE license support. 
+#    Those properties are now added at build time. See http://wiki.eclipse.org/Equinox/p2/License_Mechanism. 
 ########### end of license property ##########################################
diff --git a/features/org.eclipse.wst.common_sdk.feature/feature.xml b/features/org.eclipse.wst.common_sdk.feature/feature.xml
index 82248b1..c9315ff 100644
--- a/features/org.eclipse.wst.common_sdk.feature/feature.xml
+++ b/features/org.eclipse.wst.common_sdk.feature/feature.xml
@@ -2,8 +2,10 @@
 <feature
       id="org.eclipse.wst.common_sdk.feature"
       label="%featureName"
-      version="3.1.0.qualifier"
-      provider-name="%providerName">
+      version="3.4.0.qualifier"
+      provider-name="%providerName"
+      license-feature="org.eclipse.license"
+      license-feature-version="1.0.0.qualifier">
 
    <description>
       %description
@@ -17,10 +19,6 @@
       %license
    </license>
 
-   <url>
-      <update label="%updateSiteName" url="http://download.eclipse.org/webtools/updates/"/>
-   </url>
-
    <includes
          id="org.eclipse.wst.common_ui.feature"
          version="0.0.0"/>
diff --git a/features/org.eclipse.wst.common_sdk.feature/license.html b/features/org.eclipse.wst.common_sdk.feature/license.html
deleted file mode 100644
index 5644598..0000000
--- a/features/org.eclipse.wst.common_sdk.feature/license.html
+++ /dev/null
@@ -1,98 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
-<!-- saved from url=(0044)http://www.eclipse.org/legal/epl/notice.html -->
-<HTML><HEAD><TITLE>Eclipse.org Software User Agreement</TITLE>
-<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
-<META content="MSHTML 6.00.2800.1479" name=GENERATOR></HEAD>
-<BODY lang=EN-US vLink=purple link=blue>
-<H2>Eclipse Foundation Software User Agreement</H2>
-<P>June 06, 2007</P>
-<H3>Usage Of Content</H3>
-<P>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION 
-AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT"). USE OF 
-THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE 
-TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED 
-BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED 
-BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE 
-AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE 
-TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS OF ANY 
-APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU 
-MAY NOT USE THE CONTENT.</P>
-<H3>Applicable Licenses</H3>
-<P>Unless otherwise indicated, all Content made available by the Eclipse 
-Foundation is provided to you under the terms and conditions of the Eclipse 
-Public License Version 1.0 ("EPL"). A copy of the EPL is provided with this 
-Content and is also available at <A 
-href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</A>. 
-For purposes of the EPL, "Program" will mean the Content.</P>
-<P>Content includes, but is not limited to, source code, object code, 
-documentation and other files maintained in the Eclipse.org CVS repository 
-("Repository") in CVS modules ("Modules") and made available as downloadable 
-archives ("Downloads").</P>
-<P>Content may be apportioned into plug-ins ("Plug-ins"), plug-in fragments 
-("Fragments"), and features ("Features"). A Feature is a bundle of one or more 
-Plug-ins and/or Fragments and associated material. Files named "feature.xml" may 
-contain a list of the names and version numbers of the Plug-ins and/or Fragments 
-associated with a Feature. Plug-ins and Fragments are located in directories 
-named "plugins" and Features are located in directories named "features".</P>
-<P>Features may also include other Features ("Included Features"). Files named 
-"feature.xml" may contain a list of the names and version numbers of Included 
-Features.</P>
-<P>The terms and conditions governing Plug-ins and Fragments should be contained 
-in files named "about.html" ("Abouts"). The terms and conditions governing 
-Features and Included Features should be contained in files named "license.html" 
-("Feature Licenses"). Abouts and Feature Licenses may be located in any 
-directory of a Download or Module including, but not limited to the following 
-locations:</P>
-<UL>
-  <LI>The top-level (root) directory 
-  <LI>Plug-in and Fragment directories 
-  <LI>Subdirectories of the directory named "src" of certain Plug-ins 
-  <LI>Feature directories </LI></UL>
-<P>Note: if a Feature made available by the Eclipse Foundation is installed 
-using the Eclipse Update Manager, you must agree to a license ("Feature Update 
-License") during the installation process. If the Feature contains Included 
-Features, the Feature Update License should either provide you with the terms 
-and conditions governing the Included Features or inform you where you can 
-locate them. Feature Update Licenses may be found in the "license" property of 
-files named "feature.properties". Such Abouts, Feature Licenses and Feature 
-Update Licenses contain the terms and conditions (or references to such terms 
-and conditions) that govern your use of the associated Content in that 
-directory.</P>
-<P>THE ABOUTS, FEATURE LICENSES AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL 
-OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS. SOME OF THESE 
-OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</P>
-<UL>
-  <LI>Common Public License Version 1.0 (available at <A 
-  href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</A>) 
-
-  <LI>Apache Software License 1.1 (available at <A 
-  href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</A>) 
-
-  <LI>Apache Software License 2.0 (available at <A 
-  href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</A>) 
-
-  <LI>IBM Public License 1.0 (available at <A 
-  href="http://oss.software.ibm.com/developerworks/opensource/license10.html">http://oss.software.ibm.com/developerworks/opensource/license10.html</A>) 
-
-  <LI>Metro Link Public License 1.00 (available at <A 
-  href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</A>) 
-
-  <LI>Mozilla Public License Version 1.1 (available at <A 
-  href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</A>) 
-  </LI>
-    
-  <LI>Common Development and Distribution License (CDDL) Version 1.0 (available at <A 
-  href="http://www.sun.com/cddl/cddl.html">http://www.sun.com/cddl/cddl.html)</A>
-  </LI>
-</UL>
-<P>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR 
-TO USE OF THE CONTENT. If no About, Feature License or Feature Update License is 
-provided, please contact the Eclipse Foundation to determine what terms and 
-conditions govern that particular Content.</P>
-<H3>Cryptography</H3>
-<P>Content may contain encryption software. The country in which you are 
-currently may have restrictions on the import, possession, and use, and/or 
-re-export to another country, of encryption software. BEFORE using any 
-encryption software, please check the country's laws, regulations and policies 
-concerning the import, possession, or use, and re-export of encryption software, 
-to see if this is permitted.</P></BODY></HTML>
diff --git a/features/org.eclipse.wst.common_ui.feature.patch/.cvsignore b/features/org.eclipse.wst.common_ui.feature.patch/.cvsignore
deleted file mode 100644
index c14487c..0000000
--- a/features/org.eclipse.wst.common_ui.feature.patch/.cvsignore
+++ /dev/null
@@ -1 +0,0 @@
-build.xml
diff --git a/features/org.eclipse.wst.common_ui.feature.patch/.project b/features/org.eclipse.wst.common_ui.feature.patch/.project
deleted file mode 100644
index 0dbb12b..0000000
--- a/features/org.eclipse.wst.common_ui.feature.patch/.project
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.wst.common_ui.feature.patch</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.pde.FeatureBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.pde.FeatureNature</nature>
-	</natures>
-</projectDescription>
diff --git a/features/org.eclipse.wst.common_ui.feature.patch/build.properties b/features/org.eclipse.wst.common_ui.feature.patch/build.properties
deleted file mode 100644
index cb50260..0000000
--- a/features/org.eclipse.wst.common_ui.feature.patch/build.properties
+++ /dev/null
@@ -1,5 +0,0 @@
-bin.includes = feature.xml,\
-               license.html,\
-               feature.properties,\
-               epl-v10.html,\
-               eclipse_update_120.jpg
diff --git a/features/org.eclipse.wst.common_ui.feature.patch/buildnotes_org.eclipse.wst.common_ui.feature.patch.html b/features/org.eclipse.wst.common_ui.feature.patch/buildnotes_org.eclipse.wst.common_ui.feature.patch.html
deleted file mode 100644
index 5b24322..0000000
--- a/features/org.eclipse.wst.common_ui.feature.patch/buildnotes_org.eclipse.wst.common_ui.feature.patch.html
+++ /dev/null
@@ -1,21 +0,0 @@
-<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
-<html>
-
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-<meta name="Build" content="Build">
-<title>WTP 3.0.1 Patches</title>
-</head>
-
-<body>
-
-<h1>WTP 3.0.1 Patches</h1>
-
-<h2>org.eclipse.wst.common_ui.feature</h2>
-
-<p>Bug <a
-	href='https://bugs.eclipse.org/bugs/show_bug.cgi?id=245745'>245745</a>.
-NullPointerException in
-FacetedProjectWorkingCopy.isFacetAvailable(IProjectFacetVersion)</p>
-</body>
-</html>
\ No newline at end of file
diff --git a/features/org.eclipse.wst.common_ui.feature.patch/eclipse_update_120.jpg b/features/org.eclipse.wst.common_ui.feature.patch/eclipse_update_120.jpg
deleted file mode 100644
index bfdf708..0000000
--- a/features/org.eclipse.wst.common_ui.feature.patch/eclipse_update_120.jpg
+++ /dev/null
Binary files differ
diff --git a/features/org.eclipse.wst.common_ui.feature.patch/epl-v10.html b/features/org.eclipse.wst.common_ui.feature.patch/epl-v10.html
deleted file mode 100644
index ed4b196..0000000
--- a/features/org.eclipse.wst.common_ui.feature.patch/epl-v10.html
+++ /dev/null
@@ -1,328 +0,0 @@
-<html xmlns:o="urn:schemas-microsoft-com:office:office"
-xmlns:w="urn:schemas-microsoft-com:office:word"
-xmlns="http://www.w3.org/TR/REC-html40">
-
-<head>
-<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
-<meta name=ProgId content=Word.Document>
-<meta name=Generator content="Microsoft Word 9">
-<meta name=Originator content="Microsoft Word 9">
-<link rel=File-List
-href="./Eclipse%20EPL%202003_11_10%20Final_files/filelist.xml">
-<title>Eclipse Public License - Version 1.0</title>
-<!--[if gte mso 9]><xml>
- <o:DocumentProperties>
-  <o:Revision>2</o:Revision>
-  <o:TotalTime>3</o:TotalTime>
-  <o:Created>2004-03-05T23:03:00Z</o:Created>
-  <o:LastSaved>2004-03-05T23:03:00Z</o:LastSaved>
-  <o:Pages>4</o:Pages>
-  <o:Words>1626</o:Words>
-  <o:Characters>9270</o:Characters>
-   <o:Lines>77</o:Lines>
-  <o:Paragraphs>18</o:Paragraphs>
-  <o:CharactersWithSpaces>11384</o:CharactersWithSpaces>
-  <o:Version>9.4402</o:Version>
- </o:DocumentProperties>
-</xml><![endif]--><!--[if gte mso 9]><xml>
- <w:WordDocument>
-  <w:TrackRevisions/>
- </w:WordDocument>
-</xml><![endif]-->
-<style>
-<!--
- /* Font Definitions */
-@font-face
-	{font-family:Tahoma;
-	panose-1:2 11 6 4 3 5 4 4 2 4;
-	mso-font-charset:0;
-	mso-generic-font-family:swiss;
-	mso-font-pitch:variable;
-	mso-font-signature:553679495 -2147483648 8 0 66047 0;}
- /* Style Definitions */
-p.MsoNormal, li.MsoNormal, div.MsoNormal
-	{mso-style-parent:"";
-	margin:0in;
-	margin-bottom:.0001pt;
-	mso-pagination:widow-orphan;
-	font-size:12.0pt;
-	font-family:"Times New Roman";
-	mso-fareast-font-family:"Times New Roman";}
-p
-	{margin-right:0in;
-	mso-margin-top-alt:auto;
-	mso-margin-bottom-alt:auto;
-	margin-left:0in;
-	mso-pagination:widow-orphan;
-	font-size:12.0pt;
-	font-family:"Times New Roman";
-	mso-fareast-font-family:"Times New Roman";}
-p.BalloonText, li.BalloonText, div.BalloonText
-	{mso-style-name:"Balloon Text";
-	margin:0in;
-	margin-bottom:.0001pt;
-	mso-pagination:widow-orphan;
-	font-size:8.0pt;
-	font-family:Tahoma;
-	mso-fareast-font-family:"Times New Roman";}
-@page Section1
-	{size:8.5in 11.0in;
-	margin:1.0in 1.25in 1.0in 1.25in;
-	mso-header-margin:.5in;
-	mso-footer-margin:.5in;
-	mso-paper-source:0;}
-div.Section1
-	{page:Section1;}
--->
-</style>
-</head>
-
-<body lang=EN-US style='tab-interval:.5in'>
-
-<div class=Section1>
-
-<p align=center style='text-align:center'><b>Eclipse Public License - v 1.0</b>
-</p>
-
-<p><span style='font-size:10.0pt'>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER
-THE TERMS OF THIS ECLIPSE PUBLIC LICENSE (&quot;AGREEMENT&quot;). ANY USE,
-REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE
-OF THIS AGREEMENT.</span> </p>
-
-<p><b><span style='font-size:10.0pt'>1. DEFINITIONS</span></b> </p>
-
-<p><span style='font-size:10.0pt'>&quot;Contribution&quot; means:</span> </p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
-in the case of the initial Contributor, the initial code and documentation
-distributed under this Agreement, and<br clear=left>
-b) in the case of each subsequent Contributor:</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>i)
-changes to the Program, and</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>ii)
-additions to the Program;</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>where
-such changes and/or additions to the Program originate from and are distributed
-by that particular Contributor. A Contribution 'originates' from a Contributor
-if it was added to the Program by such Contributor itself or anyone acting on
-such Contributor's behalf. Contributions do not include additions to the
-Program which: (i) are separate modules of software distributed in conjunction
-with the Program under their own license agreement, and (ii) are not derivative
-works of the Program. </span></p>
-
-<p><span style='font-size:10.0pt'>&quot;Contributor&quot; means any person or
-entity that distributes the Program.</span> </p>
-
-<p><span style='font-size:10.0pt'>&quot;Licensed Patents &quot; mean patent
-claims licensable by a Contributor which are necessarily infringed by the use
-or sale of its Contribution alone or when combined with the Program. </span></p>
-
-<p><span style='font-size:10.0pt'>&quot;Program&quot; means the Contributions
-distributed in accordance with this Agreement.</span> </p>
-
-<p><span style='font-size:10.0pt'>&quot;Recipient&quot; means anyone who
-receives the Program under this Agreement, including all Contributors.</span> </p>
-
-<p><b><span style='font-size:10.0pt'>2. GRANT OF RIGHTS</span></b> </p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
-Subject to the terms of this Agreement, each Contributor hereby grants Recipient
-a non-exclusive, worldwide, royalty-free copyright license to<span
-style='color:red'> </span>reproduce, prepare derivative works of, publicly
-display, publicly perform, distribute and sublicense the Contribution of such
-Contributor, if any, and such derivative works, in source code and object code
-form.</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>b)
-Subject to the terms of this Agreement, each Contributor hereby grants
-Recipient a non-exclusive, worldwide,<span style='color:green'> </span>royalty-free
-patent license under Licensed Patents to make, use, sell, offer to sell, import
-and otherwise transfer the Contribution of such Contributor, if any, in source
-code and object code form. This patent license shall apply to the combination
-of the Contribution and the Program if, at the time the Contribution is added
-by the Contributor, such addition of the Contribution causes such combination
-to be covered by the Licensed Patents. The patent license shall not apply to
-any other combinations which include the Contribution. No hardware per se is
-licensed hereunder. </span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>c)
-Recipient understands that although each Contributor grants the licenses to its
-Contributions set forth herein, no assurances are provided by any Contributor
-that the Program does not infringe the patent or other intellectual property
-rights of any other entity. Each Contributor disclaims any liability to Recipient
-for claims brought by any other entity based on infringement of intellectual
-property rights or otherwise. As a condition to exercising the rights and
-licenses granted hereunder, each Recipient hereby assumes sole responsibility
-to secure any other intellectual property rights needed, if any. For example,
-if a third party patent license is required to allow Recipient to distribute
-the Program, it is Recipient's responsibility to acquire that license before
-distributing the Program.</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>d)
-Each Contributor represents that to its knowledge it has sufficient copyright
-rights in its Contribution, if any, to grant the copyright license set forth in
-this Agreement. </span></p>
-
-<p><b><span style='font-size:10.0pt'>3. REQUIREMENTS</span></b> </p>
-
-<p><span style='font-size:10.0pt'>A Contributor may choose to distribute the
-Program in object code form under its own license agreement, provided that:</span>
-</p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
-it complies with the terms and conditions of this Agreement; and</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>b)
-its license agreement:</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>i)
-effectively disclaims on behalf of all Contributors all warranties and
-conditions, express and implied, including warranties or conditions of title
-and non-infringement, and implied warranties or conditions of merchantability
-and fitness for a particular purpose; </span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>ii)
-effectively excludes on behalf of all Contributors all liability for damages,
-including direct, indirect, special, incidental and consequential damages, such
-as lost profits; </span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>iii)
-states that any provisions which differ from this Agreement are offered by that
-Contributor alone and not by any other party; and</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>iv)
-states that source code for the Program is available from such Contributor, and
-informs licensees how to obtain it in a reasonable manner on or through a
-medium customarily used for software exchange.<span style='color:blue'> </span></span></p>
-
-<p><span style='font-size:10.0pt'>When the Program is made available in source
-code form:</span> </p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
-it must be made available under this Agreement; and </span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>b) a
-copy of this Agreement must be included with each copy of the Program. </span></p>
-
-<p><span style='font-size:10.0pt'>Contributors may not remove or alter any
-copyright notices contained within the Program. </span></p>
-
-<p><span style='font-size:10.0pt'>Each Contributor must identify itself as the
-originator of its Contribution, if any, in a manner that reasonably allows
-subsequent Recipients to identify the originator of the Contribution. </span></p>
-
-<p><b><span style='font-size:10.0pt'>4. COMMERCIAL DISTRIBUTION</span></b> </p>
-
-<p><span style='font-size:10.0pt'>Commercial distributors of software may
-accept certain responsibilities with respect to end users, business partners
-and the like. While this license is intended to facilitate the commercial use
-of the Program, the Contributor who includes the Program in a commercial
-product offering should do so in a manner which does not create potential
-liability for other Contributors. Therefore, if a Contributor includes the
-Program in a commercial product offering, such Contributor (&quot;Commercial
-Contributor&quot;) hereby agrees to defend and indemnify every other
-Contributor (&quot;Indemnified Contributor&quot;) against any losses, damages and
-costs (collectively &quot;Losses&quot;) arising from claims, lawsuits and other
-legal actions brought by a third party against the Indemnified Contributor to
-the extent caused by the acts or omissions of such Commercial Contributor in
-connection with its distribution of the Program in a commercial product
-offering. The obligations in this section do not apply to any claims or Losses
-relating to any actual or alleged intellectual property infringement. In order
-to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
-Contributor in writing of such claim, and b) allow the Commercial Contributor
-to control, and cooperate with the Commercial Contributor in, the defense and
-any related settlement negotiations. The Indemnified Contributor may participate
-in any such claim at its own expense.</span> </p>
-
-<p><span style='font-size:10.0pt'>For example, a Contributor might include the
-Program in a commercial product offering, Product X. That Contributor is then a
-Commercial Contributor. If that Commercial Contributor then makes performance
-claims, or offers warranties related to Product X, those performance claims and
-warranties are such Commercial Contributor's responsibility alone. Under this
-section, the Commercial Contributor would have to defend claims against the
-other Contributors related to those performance claims and warranties, and if a
-court requires any other Contributor to pay any damages as a result, the
-Commercial Contributor must pay those damages.</span> </p>
-
-<p><b><span style='font-size:10.0pt'>5. NO WARRANTY</span></b> </p>
-
-<p><span style='font-size:10.0pt'>EXCEPT AS EXPRESSLY SET FORTH IN THIS
-AGREEMENT, THE PROGRAM IS PROVIDED ON AN &quot;AS IS&quot; BASIS, WITHOUT
-WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING,
-WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT,
-MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
-responsible for determining the appropriateness of using and distributing the
-Program and assumes all risks associated with its exercise of rights under this
-Agreement , including but not limited to the risks and costs of program errors,
-compliance with applicable laws, damage to or loss of data, programs or
-equipment, and unavailability or interruption of operations. </span></p>
-
-<p><b><span style='font-size:10.0pt'>6. DISCLAIMER OF LIABILITY</span></b> </p>
-
-<p><span style='font-size:10.0pt'>EXCEPT AS EXPRESSLY SET FORTH IN THIS
-AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF
-THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF
-THE POSSIBILITY OF SUCH DAMAGES.</span> </p>
-
-<p><b><span style='font-size:10.0pt'>7. GENERAL</span></b> </p>
-
-<p><span style='font-size:10.0pt'>If any provision of this Agreement is invalid
-or unenforceable under applicable law, it shall not affect the validity or
-enforceability of the remainder of the terms of this Agreement, and without
-further action by the parties hereto, such provision shall be reformed to the
-minimum extent necessary to make such provision valid and enforceable.</span> </p>
-
-<p><span style='font-size:10.0pt'>If Recipient institutes patent litigation
-against any entity (including a cross-claim or counterclaim in a lawsuit)
-alleging that the Program itself (excluding combinations of the Program with
-other software or hardware) infringes such Recipient's patent(s), then such
-Recipient's rights granted under Section 2(b) shall terminate as of the date
-such litigation is filed. </span></p>
-
-<p><span style='font-size:10.0pt'>All Recipient's rights under this Agreement
-shall terminate if it fails to comply with any of the material terms or
-conditions of this Agreement and does not cure such failure in a reasonable
-period of time after becoming aware of such noncompliance. If all Recipient's
-rights under this Agreement terminate, Recipient agrees to cease use and
-distribution of the Program as soon as reasonably practicable. However,
-Recipient's obligations under this Agreement and any licenses granted by
-Recipient relating to the Program shall continue and survive. </span></p>
-
-<p><span style='font-size:10.0pt'>Everyone is permitted to copy and distribute
-copies of this Agreement, but in order to avoid inconsistency the Agreement is
-copyrighted and may only be modified in the following manner. The Agreement
-Steward reserves the right to publish new versions (including revisions) of
-this Agreement from time to time. No one other than the Agreement Steward has
-the right to modify this Agreement. The Eclipse Foundation is the initial
-Agreement Steward. The Eclipse Foundation may assign the responsibility to
-serve as the Agreement Steward to a suitable separate entity. Each new version
-of the Agreement will be given a distinguishing version number. The Program
-(including Contributions) may always be distributed subject to the version of
-the Agreement under which it was received. In addition, after a new version of
-the Agreement is published, Contributor may elect to distribute the Program
-(including its Contributions) under the new version. Except as expressly stated
-in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
-the intellectual property of any Contributor under this Agreement, whether
-expressly, by implication, estoppel or otherwise. All rights in the Program not
-expressly granted under this Agreement are reserved.</span> </p>
-
-<p><span style='font-size:10.0pt'>This Agreement is governed by the laws of the
-State of New York and the intellectual property laws of the United States of
-America. No party to this Agreement will bring a legal action under this
-Agreement more than one year after the cause of action arose. Each party waives
-its rights to a jury trial in any resulting litigation.</span> </p>
-
-<p class=MsoNormal><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>
-
-</div>
-
-</body>
-
-</html>
\ No newline at end of file
diff --git a/features/org.eclipse.wst.common_ui.feature.patch/feature.properties b/features/org.eclipse.wst.common_ui.feature.patch/feature.properties
deleted file mode 100644
index 5d12dfa..0000000
--- a/features/org.eclipse.wst.common_ui.feature.patch/feature.properties
+++ /dev/null
@@ -1,148 +0,0 @@
-###############################################################################
-# Copyright (c) 2008 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-# 
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-# feature.properties
-# contains externalized strings for feature.xml
-# "%foo" in feature.xml corresponds to the key "foo" in this file
-# java.io.Properties file (ISO 8859-1 with "\" escapes)
-# This file should be translated.
-
-# "featureName" property - name of the feature
-featureName=WTP Patches for org.eclipse.wst.common_ui.feature
-
-# "providerName" property - name of the company that provides the feature
-providerName=Eclipse.org
-
-# "updateSiteName" property - label for the update site
-updateSiteName=The Eclipse Web Tools Platform (WTP) Project update site
-
-# "description" property - description of the feature
-description=\
-Contains fixes described in the following bugillia(s):\n\
-\n\
-Bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=245745 NullPointerException in FacetedProjectWorkingCopy.isFacetAvailable(IProjectFacetVersion)\n\
-\n\
-
-# "copyright" property - text of the "Feature Update Copyright"
-copyright=\
-Copyright (c) 2008 IBM Corporation and others.\n\
-All rights reserved. This program and the accompanying materials\n\
-are made available under the terms of the Eclipse Public License v1.0\n\
-which accompanies this distribution, and is available at\n\
-http://www.eclipse.org/legal/epl-v10.html\n\
-\n\
-Contributors:\n\
-    IBM Corporation - initial API and implementation\n
-################ end of copyright property ####################################
-
-# "licenseURL" property - URL of the "Feature License"
-# do not translate value - just change to point to a locale-specific HTML page
-licenseURL=license.html
-
-# "license" property - text of the "Feature Update License"
-# should be plain text version of license agreement pointed to be "licenseURL"
-license=\
-ECLIPSE FOUNDATION SOFTWARE USER AGREEMENT\n\
-September, 2008\n\
-\n\
-Usage Of Content\n\
-\n\
-THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
-OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
-USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
-AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
-NOTICES INDICATED OR REFERENCED BELOW. BY USING THE CONTENT, YOU\n\
-AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
-AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
-OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE\n\
-TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
-OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
-BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
-\n\
-Applicable Licenses\n\
-\n\
-Unless otherwise indicated, all Content made available by the Eclipse Foundation\n\
-is provided to you under the terms and conditions of the Eclipse Public\n\
-License Version 1.0 ("EPL"). A copy of the EPL is provided with this\n\
-Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
-For purposes of the EPL, "Program" will mean the Content.\n\
-\n\
-Content includes, but is not limited to, source code, object code,\n\
-documentation and other files maintained in the Eclipse.org CVS\n\
-repository ("Repository") in CVS modules ("Modules") and made available\n\
-as downloadable archives ("Downloads").\n\
-\n\
-   - Content may be structured and packaged into modules to facilitate delivering,\n\
-     extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
-     plug-in fragments ("Fragments"), and features ("Features").\n\
-   - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java? ARchive)\n\
-     in a directory named "plugins".\n\
-   - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
-     Each Feature may be packaged as a sub-directory in a directory named "features".\n\
-     Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
-     numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
-   - Features may also include other Features ("Included Features"). Within a Feature, files\n\
-     named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
-\n\
-Features may also include other Features ("Included Features"). Files named\n\
-"feature.xml" may contain a list of the names and version numbers of\n\
-Included Features.\n\
-\n\
-The terms and conditions governing Plug-ins and Fragments should be\n\
-contained in files named "about.html" ("Abouts"). The terms and\n\
-conditions governing Features and Included Features should be contained\n\
-in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
-Licenses may be located in any directory of a Download or Module\n\
-including, but not limited to the following locations:\n\
-\n\
-   - The top-level (root) directory\n\
-   - Plug-in and Fragment directories\n\
-   - Inside Plug-ins and Fragments packaged as JARs\n\
-   - Sub-directories of the directory named "src" of certain Plug-ins\n\
-   - Feature directories\n\
-\n\
-Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
-Eclipse Update Manager, you must agree to a license ("Feature Update\n\
-License") during the installation process. If the Feature contains\n\
-Included Features, the Feature Update License should either provide you\n\
-with the terms and conditions governing the Included Features or inform\n\
-you where you can locate them. Feature Update Licenses may be found in\n\
-the "license" property of files named "feature.properties". Such Abouts,\n\
-Feature Licenses and Feature Update Licenses contain the terms and\n\
-conditions (or references to such terms and conditions) that govern your\n\
-use of the associated Content in that directory.\n\
-\n\
-THE ABOUTS, FEATURE LICENSES AND FEATURE UPDATE LICENSES MAY REFER\n\
-TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
-SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
-\n\
-    - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
-    - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
-    - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
-    - IBM Public License 1.0 (available at http://oss.software.ibm.com/developerworks/opensource/license10.html)\n\
-    - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
-    - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
-\n\
-IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
-TO USE OF THE CONTENT. If no About, Feature License or Feature Update License\n\
-is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
-govern that particular Content.\n\
-\n\
-Cryptography\n\
-\n\
-Content may contain encryption software. The country in which you are\n\
-currently may have restrictions on the import, possession, and use,\n\
-and/or re-export to another country, of encryption software. BEFORE\n\
-using any encryption software, please check the country's laws,\n\
-regulations and policies concerning the import, possession, or use,\n\
-and re-export of encryption software, to see if this is permitted.\n\
-\n\
-Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.\n
-########### end of license property ##########################################
diff --git a/features/org.eclipse.wst.common_ui.feature.patch/feature.xml b/features/org.eclipse.wst.common_ui.feature.patch/feature.xml
deleted file mode 100644
index 256dac2..0000000
--- a/features/org.eclipse.wst.common_ui.feature.patch/feature.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<feature
-      id="org.eclipse.wst.common_ui.feature.patch"
-      label="%featureName"
-      version="3.0.1.qualifier"
-      provider-name="%providerName">
-
-   <description>
-      %description
-   </description>
-
-   <copyright>
-      %copyright
-   </copyright>
-
-   <license url="%licenseURL">
-      %license
-   </license>
-
-   <requires>
-      <import feature="org.eclipse.wst.common_ui.feature" version="3.0.1.v200807220139-7C78ELWE8VrRVorIr-jb1AsOaXHW" patch="true"/>
-   </requires>
-
-
-   <plugin
-         id="org.eclipse.wst.common.project.facet.ui"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-         
-</feature>
diff --git a/features/org.eclipse.wst.common_ui.feature.patch/license.html b/features/org.eclipse.wst.common_ui.feature.patch/license.html
deleted file mode 100644
index 2347060..0000000
--- a/features/org.eclipse.wst.common_ui.feature.patch/license.html
+++ /dev/null
@@ -1,93 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
-<!-- saved from url=(0044)http://www.eclipse.org/legal/epl/notice.html -->
-<HTML><HEAD><TITLE>Eclipse.org Software User Agreement</TITLE>
-<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
-<META content="MSHTML 6.00.2800.1479" name=GENERATOR></HEAD>
-<BODY lang=EN-US vLink=purple link=blue>
-<H2>Eclipse Foundation Software User Agreement</H2>
-<P>January 28, 2005</P>
-<H3>Usage Of Content</H3>
-<P>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION 
-AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT"). USE OF 
-THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE 
-TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED 
-BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED 
-BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE 
-AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE 
-TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS OF ANY 
-APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU 
-MAY NOT USE THE CONTENT.</P>
-<H3>Applicable Licenses</H3>
-<P>Unless otherwise indicated, all Content made available by the Eclipse 
-Foundation is provided to you under the terms and conditions of the Eclipse 
-Public License Version 1.0 ("EPL"). A copy of the EPL is provided with this 
-Content and is also available at <A 
-href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</A>. 
-For purposes of the EPL, "Program" will mean the Content.</P>
-<P>Content includes, but is not limited to, source code, object code, 
-documentation and other files maintained in the Eclipse.org CVS repository 
-("Repository") in CVS modules ("Modules") and made available as downloadable 
-archives ("Downloads").</P>
-<P>Content may be apportioned into plug-ins ("Plug-ins"), plug-in fragments 
-("Fragments"), and features ("Features"). A Feature is a bundle of one or more 
-Plug-ins and/or Fragments and associated material. Files named "feature.xml" may 
-contain a list of the names and version numbers of the Plug-ins and/or Fragments 
-associated with a Feature. Plug-ins and Fragments are located in directories 
-named "plugins" and Features are located in directories named "features".</P>
-<P>Features may also include other Features ("Included Features"). Files named 
-"feature.xml" may contain a list of the names and version numbers of Included 
-Features.</P>
-<P>The terms and conditions governing Plug-ins and Fragments should be contained 
-in files named "about.html" ("Abouts"). The terms and conditions governing 
-Features and Included Features should be contained in files named "license.html" 
-("Feature Licenses"). Abouts and Feature Licenses may be located in any 
-directory of a Download or Module including, but not limited to the following 
-locations:</P>
-<UL>
-  <LI>The top-level (root) directory 
-  <LI>Plug-in and Fragment directories 
-  <LI>Subdirectories of the directory named "src" of certain Plug-ins 
-  <LI>Feature directories </LI></UL>
-<P>Note: if a Feature made available by the Eclipse Foundation is installed 
-using the Eclipse Update Manager, you must agree to a license ("Feature Update 
-License") during the installation process. If the Feature contains Included 
-Features, the Feature Update License should either provide you with the terms 
-and conditions governing the Included Features or inform you where you can 
-locate them. Feature Update Licenses may be found in the "license" property of 
-files named "feature.properties". Such Abouts, Feature Licenses and Feature 
-Update Licenses contain the terms and conditions (or references to such terms 
-and conditions) that govern your use of the associated Content in that 
-directory.</P>
-<P>THE ABOUTS, FEATURE LICENSES AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL 
-OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS. SOME OF THESE 
-OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</P>
-<UL>
-  <LI>Common Public License Version 1.0 (available at <A 
-  href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</A>) 
-
-  <LI>Apache Software License 1.1 (available at <A 
-  href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</A>) 
-
-  <LI>Apache Software License 2.0 (available at <A 
-  href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</A>) 
-
-  <LI>IBM Public License 1.0 (available at <A 
-  href="http://oss.software.ibm.com/developerworks/opensource/license10.html">http://oss.software.ibm.com/developerworks/opensource/license10.html</A>) 
-
-  <LI>Metro Link Public License 1.00 (available at <A 
-  href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</A>) 
-
-  <LI>Mozilla Public License Version 1.1 (available at <A 
-  href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</A>) 
-  </LI></UL>
-<P>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR 
-TO USE OF THE CONTENT. If no About, Feature License or Feature Update License is 
-provided, please contact the Eclipse Foundation to determine what terms and 
-conditions govern that particular Content.</P>
-<H3>Cryptography</H3>
-<P>Content may contain encryption software. The country in which you are 
-currently may have restrictions on the import, possession, and use, and/or 
-re-export to another country, of encryption software. BEFORE using any 
-encryption software, please check the country's laws, regulations and policies 
-concerning the import, possession, or use, and re-export of encryption software, 
-to see if this is permitted.</P></BODY></HTML>
diff --git a/features/org.eclipse.wst.common_ui.feature/build.properties b/features/org.eclipse.wst.common_ui.feature/build.properties
index 7f47694..7c626e2 100644
--- a/features/org.eclipse.wst.common_ui.feature/build.properties
+++ b/features/org.eclipse.wst.common_ui.feature/build.properties
@@ -1,5 +1,3 @@
 bin.includes = feature.xml,\
                eclipse_update_120.jpg,\
-               epl-v10.html,\
-               license.html,\
                feature.properties
diff --git a/features/org.eclipse.wst.common_ui.feature/epl-v10.html b/features/org.eclipse.wst.common_ui.feature/epl-v10.html
deleted file mode 100644
index ed4b196..0000000
--- a/features/org.eclipse.wst.common_ui.feature/epl-v10.html
+++ /dev/null
@@ -1,328 +0,0 @@
-<html xmlns:o="urn:schemas-microsoft-com:office:office"
-xmlns:w="urn:schemas-microsoft-com:office:word"
-xmlns="http://www.w3.org/TR/REC-html40">
-
-<head>
-<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
-<meta name=ProgId content=Word.Document>
-<meta name=Generator content="Microsoft Word 9">
-<meta name=Originator content="Microsoft Word 9">
-<link rel=File-List
-href="./Eclipse%20EPL%202003_11_10%20Final_files/filelist.xml">
-<title>Eclipse Public License - Version 1.0</title>
-<!--[if gte mso 9]><xml>
- <o:DocumentProperties>
-  <o:Revision>2</o:Revision>
-  <o:TotalTime>3</o:TotalTime>
-  <o:Created>2004-03-05T23:03:00Z</o:Created>
-  <o:LastSaved>2004-03-05T23:03:00Z</o:LastSaved>
-  <o:Pages>4</o:Pages>
-  <o:Words>1626</o:Words>
-  <o:Characters>9270</o:Characters>
-   <o:Lines>77</o:Lines>
-  <o:Paragraphs>18</o:Paragraphs>
-  <o:CharactersWithSpaces>11384</o:CharactersWithSpaces>
-  <o:Version>9.4402</o:Version>
- </o:DocumentProperties>
-</xml><![endif]--><!--[if gte mso 9]><xml>
- <w:WordDocument>
-  <w:TrackRevisions/>
- </w:WordDocument>
-</xml><![endif]-->
-<style>
-<!--
- /* Font Definitions */
-@font-face
-	{font-family:Tahoma;
-	panose-1:2 11 6 4 3 5 4 4 2 4;
-	mso-font-charset:0;
-	mso-generic-font-family:swiss;
-	mso-font-pitch:variable;
-	mso-font-signature:553679495 -2147483648 8 0 66047 0;}
- /* Style Definitions */
-p.MsoNormal, li.MsoNormal, div.MsoNormal
-	{mso-style-parent:"";
-	margin:0in;
-	margin-bottom:.0001pt;
-	mso-pagination:widow-orphan;
-	font-size:12.0pt;
-	font-family:"Times New Roman";
-	mso-fareast-font-family:"Times New Roman";}
-p
-	{margin-right:0in;
-	mso-margin-top-alt:auto;
-	mso-margin-bottom-alt:auto;
-	margin-left:0in;
-	mso-pagination:widow-orphan;
-	font-size:12.0pt;
-	font-family:"Times New Roman";
-	mso-fareast-font-family:"Times New Roman";}
-p.BalloonText, li.BalloonText, div.BalloonText
-	{mso-style-name:"Balloon Text";
-	margin:0in;
-	margin-bottom:.0001pt;
-	mso-pagination:widow-orphan;
-	font-size:8.0pt;
-	font-family:Tahoma;
-	mso-fareast-font-family:"Times New Roman";}
-@page Section1
-	{size:8.5in 11.0in;
-	margin:1.0in 1.25in 1.0in 1.25in;
-	mso-header-margin:.5in;
-	mso-footer-margin:.5in;
-	mso-paper-source:0;}
-div.Section1
-	{page:Section1;}
--->
-</style>
-</head>
-
-<body lang=EN-US style='tab-interval:.5in'>
-
-<div class=Section1>
-
-<p align=center style='text-align:center'><b>Eclipse Public License - v 1.0</b>
-</p>
-
-<p><span style='font-size:10.0pt'>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER
-THE TERMS OF THIS ECLIPSE PUBLIC LICENSE (&quot;AGREEMENT&quot;). ANY USE,
-REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE
-OF THIS AGREEMENT.</span> </p>
-
-<p><b><span style='font-size:10.0pt'>1. DEFINITIONS</span></b> </p>
-
-<p><span style='font-size:10.0pt'>&quot;Contribution&quot; means:</span> </p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
-in the case of the initial Contributor, the initial code and documentation
-distributed under this Agreement, and<br clear=left>
-b) in the case of each subsequent Contributor:</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>i)
-changes to the Program, and</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>ii)
-additions to the Program;</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>where
-such changes and/or additions to the Program originate from and are distributed
-by that particular Contributor. A Contribution 'originates' from a Contributor
-if it was added to the Program by such Contributor itself or anyone acting on
-such Contributor's behalf. Contributions do not include additions to the
-Program which: (i) are separate modules of software distributed in conjunction
-with the Program under their own license agreement, and (ii) are not derivative
-works of the Program. </span></p>
-
-<p><span style='font-size:10.0pt'>&quot;Contributor&quot; means any person or
-entity that distributes the Program.</span> </p>
-
-<p><span style='font-size:10.0pt'>&quot;Licensed Patents &quot; mean patent
-claims licensable by a Contributor which are necessarily infringed by the use
-or sale of its Contribution alone or when combined with the Program. </span></p>
-
-<p><span style='font-size:10.0pt'>&quot;Program&quot; means the Contributions
-distributed in accordance with this Agreement.</span> </p>
-
-<p><span style='font-size:10.0pt'>&quot;Recipient&quot; means anyone who
-receives the Program under this Agreement, including all Contributors.</span> </p>
-
-<p><b><span style='font-size:10.0pt'>2. GRANT OF RIGHTS</span></b> </p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
-Subject to the terms of this Agreement, each Contributor hereby grants Recipient
-a non-exclusive, worldwide, royalty-free copyright license to<span
-style='color:red'> </span>reproduce, prepare derivative works of, publicly
-display, publicly perform, distribute and sublicense the Contribution of such
-Contributor, if any, and such derivative works, in source code and object code
-form.</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>b)
-Subject to the terms of this Agreement, each Contributor hereby grants
-Recipient a non-exclusive, worldwide,<span style='color:green'> </span>royalty-free
-patent license under Licensed Patents to make, use, sell, offer to sell, import
-and otherwise transfer the Contribution of such Contributor, if any, in source
-code and object code form. This patent license shall apply to the combination
-of the Contribution and the Program if, at the time the Contribution is added
-by the Contributor, such addition of the Contribution causes such combination
-to be covered by the Licensed Patents. The patent license shall not apply to
-any other combinations which include the Contribution. No hardware per se is
-licensed hereunder. </span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>c)
-Recipient understands that although each Contributor grants the licenses to its
-Contributions set forth herein, no assurances are provided by any Contributor
-that the Program does not infringe the patent or other intellectual property
-rights of any other entity. Each Contributor disclaims any liability to Recipient
-for claims brought by any other entity based on infringement of intellectual
-property rights or otherwise. As a condition to exercising the rights and
-licenses granted hereunder, each Recipient hereby assumes sole responsibility
-to secure any other intellectual property rights needed, if any. For example,
-if a third party patent license is required to allow Recipient to distribute
-the Program, it is Recipient's responsibility to acquire that license before
-distributing the Program.</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>d)
-Each Contributor represents that to its knowledge it has sufficient copyright
-rights in its Contribution, if any, to grant the copyright license set forth in
-this Agreement. </span></p>
-
-<p><b><span style='font-size:10.0pt'>3. REQUIREMENTS</span></b> </p>
-
-<p><span style='font-size:10.0pt'>A Contributor may choose to distribute the
-Program in object code form under its own license agreement, provided that:</span>
-</p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
-it complies with the terms and conditions of this Agreement; and</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>b)
-its license agreement:</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>i)
-effectively disclaims on behalf of all Contributors all warranties and
-conditions, express and implied, including warranties or conditions of title
-and non-infringement, and implied warranties or conditions of merchantability
-and fitness for a particular purpose; </span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>ii)
-effectively excludes on behalf of all Contributors all liability for damages,
-including direct, indirect, special, incidental and consequential damages, such
-as lost profits; </span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>iii)
-states that any provisions which differ from this Agreement are offered by that
-Contributor alone and not by any other party; and</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>iv)
-states that source code for the Program is available from such Contributor, and
-informs licensees how to obtain it in a reasonable manner on or through a
-medium customarily used for software exchange.<span style='color:blue'> </span></span></p>
-
-<p><span style='font-size:10.0pt'>When the Program is made available in source
-code form:</span> </p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
-it must be made available under this Agreement; and </span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>b) a
-copy of this Agreement must be included with each copy of the Program. </span></p>
-
-<p><span style='font-size:10.0pt'>Contributors may not remove or alter any
-copyright notices contained within the Program. </span></p>
-
-<p><span style='font-size:10.0pt'>Each Contributor must identify itself as the
-originator of its Contribution, if any, in a manner that reasonably allows
-subsequent Recipients to identify the originator of the Contribution. </span></p>
-
-<p><b><span style='font-size:10.0pt'>4. COMMERCIAL DISTRIBUTION</span></b> </p>
-
-<p><span style='font-size:10.0pt'>Commercial distributors of software may
-accept certain responsibilities with respect to end users, business partners
-and the like. While this license is intended to facilitate the commercial use
-of the Program, the Contributor who includes the Program in a commercial
-product offering should do so in a manner which does not create potential
-liability for other Contributors. Therefore, if a Contributor includes the
-Program in a commercial product offering, such Contributor (&quot;Commercial
-Contributor&quot;) hereby agrees to defend and indemnify every other
-Contributor (&quot;Indemnified Contributor&quot;) against any losses, damages and
-costs (collectively &quot;Losses&quot;) arising from claims, lawsuits and other
-legal actions brought by a third party against the Indemnified Contributor to
-the extent caused by the acts or omissions of such Commercial Contributor in
-connection with its distribution of the Program in a commercial product
-offering. The obligations in this section do not apply to any claims or Losses
-relating to any actual or alleged intellectual property infringement. In order
-to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
-Contributor in writing of such claim, and b) allow the Commercial Contributor
-to control, and cooperate with the Commercial Contributor in, the defense and
-any related settlement negotiations. The Indemnified Contributor may participate
-in any such claim at its own expense.</span> </p>
-
-<p><span style='font-size:10.0pt'>For example, a Contributor might include the
-Program in a commercial product offering, Product X. That Contributor is then a
-Commercial Contributor. If that Commercial Contributor then makes performance
-claims, or offers warranties related to Product X, those performance claims and
-warranties are such Commercial Contributor's responsibility alone. Under this
-section, the Commercial Contributor would have to defend claims against the
-other Contributors related to those performance claims and warranties, and if a
-court requires any other Contributor to pay any damages as a result, the
-Commercial Contributor must pay those damages.</span> </p>
-
-<p><b><span style='font-size:10.0pt'>5. NO WARRANTY</span></b> </p>
-
-<p><span style='font-size:10.0pt'>EXCEPT AS EXPRESSLY SET FORTH IN THIS
-AGREEMENT, THE PROGRAM IS PROVIDED ON AN &quot;AS IS&quot; BASIS, WITHOUT
-WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING,
-WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT,
-MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
-responsible for determining the appropriateness of using and distributing the
-Program and assumes all risks associated with its exercise of rights under this
-Agreement , including but not limited to the risks and costs of program errors,
-compliance with applicable laws, damage to or loss of data, programs or
-equipment, and unavailability or interruption of operations. </span></p>
-
-<p><b><span style='font-size:10.0pt'>6. DISCLAIMER OF LIABILITY</span></b> </p>
-
-<p><span style='font-size:10.0pt'>EXCEPT AS EXPRESSLY SET FORTH IN THIS
-AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF
-THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF
-THE POSSIBILITY OF SUCH DAMAGES.</span> </p>
-
-<p><b><span style='font-size:10.0pt'>7. GENERAL</span></b> </p>
-
-<p><span style='font-size:10.0pt'>If any provision of this Agreement is invalid
-or unenforceable under applicable law, it shall not affect the validity or
-enforceability of the remainder of the terms of this Agreement, and without
-further action by the parties hereto, such provision shall be reformed to the
-minimum extent necessary to make such provision valid and enforceable.</span> </p>
-
-<p><span style='font-size:10.0pt'>If Recipient institutes patent litigation
-against any entity (including a cross-claim or counterclaim in a lawsuit)
-alleging that the Program itself (excluding combinations of the Program with
-other software or hardware) infringes such Recipient's patent(s), then such
-Recipient's rights granted under Section 2(b) shall terminate as of the date
-such litigation is filed. </span></p>
-
-<p><span style='font-size:10.0pt'>All Recipient's rights under this Agreement
-shall terminate if it fails to comply with any of the material terms or
-conditions of this Agreement and does not cure such failure in a reasonable
-period of time after becoming aware of such noncompliance. If all Recipient's
-rights under this Agreement terminate, Recipient agrees to cease use and
-distribution of the Program as soon as reasonably practicable. However,
-Recipient's obligations under this Agreement and any licenses granted by
-Recipient relating to the Program shall continue and survive. </span></p>
-
-<p><span style='font-size:10.0pt'>Everyone is permitted to copy and distribute
-copies of this Agreement, but in order to avoid inconsistency the Agreement is
-copyrighted and may only be modified in the following manner. The Agreement
-Steward reserves the right to publish new versions (including revisions) of
-this Agreement from time to time. No one other than the Agreement Steward has
-the right to modify this Agreement. The Eclipse Foundation is the initial
-Agreement Steward. The Eclipse Foundation may assign the responsibility to
-serve as the Agreement Steward to a suitable separate entity. Each new version
-of the Agreement will be given a distinguishing version number. The Program
-(including Contributions) may always be distributed subject to the version of
-the Agreement under which it was received. In addition, after a new version of
-the Agreement is published, Contributor may elect to distribute the Program
-(including its Contributions) under the new version. Except as expressly stated
-in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
-the intellectual property of any Contributor under this Agreement, whether
-expressly, by implication, estoppel or otherwise. All rights in the Program not
-expressly granted under this Agreement are reserved.</span> </p>
-
-<p><span style='font-size:10.0pt'>This Agreement is governed by the laws of the
-State of New York and the intellectual property laws of the United States of
-America. No party to this Agreement will bring a legal action under this
-Agreement more than one year after the cause of action arose. Each party waives
-its rights to a jury trial in any resulting litigation.</span> </p>
-
-<p class=MsoNormal><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>
-
-</div>
-
-</body>
-
-</html>
\ No newline at end of file
diff --git a/features/org.eclipse.wst.common_ui.feature/feature.properties b/features/org.eclipse.wst.common_ui.feature/feature.properties
index 44d87a9..6c5080f 100644
--- a/features/org.eclipse.wst.common_ui.feature/feature.properties
+++ b/features/org.eclipse.wst.common_ui.feature/feature.properties
@@ -18,10 +18,8 @@
 featureName=WST Common UI
 
 # "providerName" property - name of the company that provides the feature
-providerName=Eclipse.org
+providerName=Eclipse Web Tools Platform
 
-# "updateSiteName" property - label for the update site
-updateSiteName=The Eclipse Web Tools Platform (WTP) Project update site
 
 # "description" property - description of the feature
 description=WST common UI functionality.
@@ -40,106 +38,11 @@
 
 # "licenseURL" property - URL of the "Feature License"
 # do not translate value - just change to point to a locale-specific HTML page
-licenseURL=license.html
+# license and licenseURL properties were removed as a result to migrating to new PDE license support. 
+#    Those properties are now added at build time. See http://wiki.eclipse.org/Equinox/p2/License_Mechanism. 
 
 # "license" property - text of the "Feature Update License"
 # should be plain text version of license agreement pointed to be "licenseURL"
-license=\
-ECLIPSE FOUNDATION SOFTWARE USER AGREEMENT\n\
-June 06, 2007\n\
-\n\
-Usage Of Content\n\
-\n\
-THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
-OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
-USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
-AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
-NOTICES INDICATED OR REFERENCED BELOW. BY USING THE CONTENT, YOU\n\
-AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
-AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
-OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE\n\
-TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
-OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
-BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
-\n\
-Applicable Licenses\n\
-\n\
-Unless otherwise indicated, all Content made available by the Eclipse Foundation\n\
-is provided to you under the terms and conditions of the Eclipse Public\n\
-License Version 1.0 ("EPL"). A copy of the EPL is provided with this\n\
-Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
-For purposes of the EPL, "Program" will mean the Content.\n\
-\n\
-Content includes, but is not limited to, source code, object code,\n\
-documentation and other files maintained in the Eclipse.org CVS\n\
-repository ("Repository") in CVS modules ("Modules") and made available\n\
-as downloadable archives ("Downloads").\n\
-\n\
-   - Content may be structured and packaged into modules to facilitate delivering,\n\
-     extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
-     plug-in fragments ("Fragments"), and features ("Features").\n\
-   - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java? ARchive)\n\
-     in a directory named "plugins".\n\
-   - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
-     Each Feature may be packaged as a sub-directory in a directory named "features".\n\
-     Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
-     numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
-   - Features may also include other Features ("Included Features"). Within a Feature, files\n\
-     named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
-\n\
-Features may also include other Features ("Included Features"). Files named\n\
-"feature.xml" may contain a list of the names and version numbers of\n\
-Included Features.\n\
-\n\
-The terms and conditions governing Plug-ins and Fragments should be\n\
-contained in files named "about.html" ("Abouts"). The terms and\n\
-conditions governing Features and Included Features should be contained\n\
-in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
-Licenses may be located in any directory of a Download or Module\n\
-including, but not limited to the following locations:\n\
-\n\
-   - The top-level (root) directory\n\
-   - Plug-in and Fragment directories\n\
-   - Inside Plug-ins and Fragments packaged as JARs\n\
-   - Sub-directories of the directory named "src" of certain Plug-ins\n\
-   - Feature directories\n\
-\n\
-Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
-Eclipse Update Manager, you must agree to a license ("Feature Update\n\
-License") during the installation process. If the Feature contains\n\
-Included Features, the Feature Update License should either provide you\n\
-with the terms and conditions governing the Included Features or inform\n\
-you where you can locate them. Feature Update Licenses may be found in\n\
-the "license" property of files named "feature.properties". Such Abouts,\n\
-Feature Licenses and Feature Update Licenses contain the terms and\n\
-conditions (or references to such terms and conditions) that govern your\n\
-use of the associated Content in that directory.\n\
-\n\
-THE ABOUTS, FEATURE LICENSES AND FEATURE UPDATE LICENSES MAY REFER\n\
-TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
-SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
-\n\
-    - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
-    - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
-    - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
-    - IBM Public License 1.0 (available at http://oss.software.ibm.com/developerworks/opensource/license10.html)\n\
-    - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
-    - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
-    - Common Development and Distribution License (CDDL) Version 1.0 (available at http://www.sun.com/cddl/cddl.html)\n\
-\n\
-IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
-TO USE OF THE CONTENT. If no About, Feature License or Feature Update License\n\
-is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
-govern that particular Content.\n\
-\n\
-Cryptography\n\
-\n\
-Content may contain encryption software. The country in which you are\n\
-currently may have restrictions on the import, possession, and use,\n\
-and/or re-export to another country, of encryption software. BEFORE\n\
-using any encryption software, please check the country's laws,\n\
-regulations and policies concerning the import, possession, or use,\n\
-and re-export of encryption software, to see if this is permitted.\n\
-\n\
-Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.\n
+# license and licenseURL properties were removed as a result to migrating to new PDE license support. 
+#    Those properties are now added at build time. See http://wiki.eclipse.org/Equinox/p2/License_Mechanism. 
 ########### end of license property ##########################################
diff --git a/features/org.eclipse.wst.common_ui.feature/feature.xml b/features/org.eclipse.wst.common_ui.feature/feature.xml
index 258dcf3..b93ba0f 100644
--- a/features/org.eclipse.wst.common_ui.feature/feature.xml
+++ b/features/org.eclipse.wst.common_ui.feature/feature.xml
@@ -2,8 +2,10 @@
 <feature
       id="org.eclipse.wst.common_ui.feature"
       label="%featureName"
-      version="3.1.0.qualifier"
-      provider-name="%providerName">
+      version="3.4.0.qualifier"
+      provider-name="%providerName"
+      license-feature="org.eclipse.license"
+      license-feature-version="1.0.0.qualifier">
 
    <description>
       %description
@@ -17,22 +19,11 @@
       %license
    </license>
 
-   <url>
-      <update label="%updateSiteName" url="http://download.eclipse.org/webtools/updates/"/>
-   </url>
-
    <includes
          id="org.eclipse.wst.common_core.feature"
          version="0.0.0"/>
 
    <plugin
-         id="org.eclipse.wst.command.env.ui"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
          id="org.eclipse.wst.common.frameworks.ui"
          download-size="0"
          install-size="0"
@@ -61,6 +52,13 @@
          unpack="false"/>
 
    <plugin
+         id="org.eclipse.wst.common.modulecore.ui"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
          id="org.eclipse.wst.internet.cache"
          download-size="0"
          install-size="0"
@@ -75,13 +73,6 @@
          unpack="false"/>
 
    <plugin
-         id="org.eclipse.wst.command.env.infopop"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
          id="org.eclipse.wst.validation.infopop"
          download-size="0"
          install-size="0"
diff --git a/features/org.eclipse.wst.common_ui.feature/license.html b/features/org.eclipse.wst.common_ui.feature/license.html
deleted file mode 100644
index 5644598..0000000
--- a/features/org.eclipse.wst.common_ui.feature/license.html
+++ /dev/null
@@ -1,98 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
-<!-- saved from url=(0044)http://www.eclipse.org/legal/epl/notice.html -->
-<HTML><HEAD><TITLE>Eclipse.org Software User Agreement</TITLE>
-<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
-<META content="MSHTML 6.00.2800.1479" name=GENERATOR></HEAD>
-<BODY lang=EN-US vLink=purple link=blue>
-<H2>Eclipse Foundation Software User Agreement</H2>
-<P>June 06, 2007</P>
-<H3>Usage Of Content</H3>
-<P>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION 
-AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT"). USE OF 
-THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE 
-TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED 
-BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED 
-BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE 
-AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE 
-TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS OF ANY 
-APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU 
-MAY NOT USE THE CONTENT.</P>
-<H3>Applicable Licenses</H3>
-<P>Unless otherwise indicated, all Content made available by the Eclipse 
-Foundation is provided to you under the terms and conditions of the Eclipse 
-Public License Version 1.0 ("EPL"). A copy of the EPL is provided with this 
-Content and is also available at <A 
-href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</A>. 
-For purposes of the EPL, "Program" will mean the Content.</P>
-<P>Content includes, but is not limited to, source code, object code, 
-documentation and other files maintained in the Eclipse.org CVS repository 
-("Repository") in CVS modules ("Modules") and made available as downloadable 
-archives ("Downloads").</P>
-<P>Content may be apportioned into plug-ins ("Plug-ins"), plug-in fragments 
-("Fragments"), and features ("Features"). A Feature is a bundle of one or more 
-Plug-ins and/or Fragments and associated material. Files named "feature.xml" may 
-contain a list of the names and version numbers of the Plug-ins and/or Fragments 
-associated with a Feature. Plug-ins and Fragments are located in directories 
-named "plugins" and Features are located in directories named "features".</P>
-<P>Features may also include other Features ("Included Features"). Files named 
-"feature.xml" may contain a list of the names and version numbers of Included 
-Features.</P>
-<P>The terms and conditions governing Plug-ins and Fragments should be contained 
-in files named "about.html" ("Abouts"). The terms and conditions governing 
-Features and Included Features should be contained in files named "license.html" 
-("Feature Licenses"). Abouts and Feature Licenses may be located in any 
-directory of a Download or Module including, but not limited to the following 
-locations:</P>
-<UL>
-  <LI>The top-level (root) directory 
-  <LI>Plug-in and Fragment directories 
-  <LI>Subdirectories of the directory named "src" of certain Plug-ins 
-  <LI>Feature directories </LI></UL>
-<P>Note: if a Feature made available by the Eclipse Foundation is installed 
-using the Eclipse Update Manager, you must agree to a license ("Feature Update 
-License") during the installation process. If the Feature contains Included 
-Features, the Feature Update License should either provide you with the terms 
-and conditions governing the Included Features or inform you where you can 
-locate them. Feature Update Licenses may be found in the "license" property of 
-files named "feature.properties". Such Abouts, Feature Licenses and Feature 
-Update Licenses contain the terms and conditions (or references to such terms 
-and conditions) that govern your use of the associated Content in that 
-directory.</P>
-<P>THE ABOUTS, FEATURE LICENSES AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL 
-OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS. SOME OF THESE 
-OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</P>
-<UL>
-  <LI>Common Public License Version 1.0 (available at <A 
-  href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</A>) 
-
-  <LI>Apache Software License 1.1 (available at <A 
-  href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</A>) 
-
-  <LI>Apache Software License 2.0 (available at <A 
-  href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</A>) 
-
-  <LI>IBM Public License 1.0 (available at <A 
-  href="http://oss.software.ibm.com/developerworks/opensource/license10.html">http://oss.software.ibm.com/developerworks/opensource/license10.html</A>) 
-
-  <LI>Metro Link Public License 1.00 (available at <A 
-  href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</A>) 
-
-  <LI>Mozilla Public License Version 1.1 (available at <A 
-  href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</A>) 
-  </LI>
-    
-  <LI>Common Development and Distribution License (CDDL) Version 1.0 (available at <A 
-  href="http://www.sun.com/cddl/cddl.html">http://www.sun.com/cddl/cddl.html)</A>
-  </LI>
-</UL>
-<P>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR 
-TO USE OF THE CONTENT. If no About, Feature License or Feature Update License is 
-provided, please contact the Eclipse Foundation to determine what terms and 
-conditions govern that particular Content.</P>
-<H3>Cryptography</H3>
-<P>Content may contain encryption software. The country in which you are 
-currently may have restrictions on the import, possession, and use, and/or 
-re-export to another country, of encryption software. BEFORE using any 
-encryption software, please check the country's laws, regulations and policies 
-concerning the import, possession, or use, and re-export of encryption software, 
-to see if this is permitted.</P></BODY></HTML>
diff --git a/features/org.eclipse.wst.common_ui.feature/sourceTemplateFeature/build.properties b/features/org.eclipse.wst.common_ui.feature/sourceTemplateFeature/build.properties
index e4a7dd7..37fd0e9 100644
--- a/features/org.eclipse.wst.common_ui.feature/sourceTemplateFeature/build.properties
+++ b/features/org.eclipse.wst.common_ui.feature/sourceTemplateFeature/build.properties
@@ -8,9 +8,8 @@
 # Contributors:
 #     IBM Corporation - initial API and implementation
 ###############################################################################
-bin.includes = epl-v10.html,\
+bin.includes = \
                eclipse_update_120.jpg,\
                feature.properties,\
-               license.html,\
                feature.xml
 generate.feature@org.eclipse.wst.common_core.feature.source=org.eclipse.wst.common_core.feature
diff --git a/features/org.eclipse.wst.common_ui.feature/sourceTemplateFeature/epl-v10.html b/features/org.eclipse.wst.common_ui.feature/sourceTemplateFeature/epl-v10.html
deleted file mode 100644
index 022ad29..0000000
--- a/features/org.eclipse.wst.common_ui.feature/sourceTemplateFeature/epl-v10.html
+++ /dev/null
@@ -1,328 +0,0 @@
-<html xmlns:o="urn:schemas-microsoft-com:office:office"
-xmlns:w="urn:schemas-microsoft-com:office:word"
-xmlns="http://www.w3.org/TR/REC-html40">
-
-<head>
-<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
-<meta name=ProgId content=Word.Document>
-<meta name=Generator content="Microsoft Word 9">
-<meta name=Originator content="Microsoft Word 9">
-<link rel=File-List
-href="./Eclipse%20EPL%202003_11_10%20Final_files/filelist.xml">
-<title>Eclipse Public License - Version 1.0</title>
-<!--[if gte mso 9]><xml>
- <o:DocumentProperties>
-  <o:Revision>2</o:Revision>
-  <o:TotalTime>3</o:TotalTime>
-  <o:Created>2004-03-05T23:03:00Z</o:Created>
-  <o:LastSaved>2004-03-05T23:03:00Z</o:LastSaved>
-  <o:Pages>4</o:Pages>
-  <o:Words>1626</o:Words>
-  <o:Characters>9270</o:Characters>
-   <o:Lines>77</o:Lines>
-  <o:Paragraphs>18</o:Paragraphs>
-  <o:CharactersWithSpaces>11384</o:CharactersWithSpaces>
-  <o:Version>9.4402</o:Version>
- </o:DocumentProperties>
-</xml><![endif]--><!--[if gte mso 9]><xml>
- <w:WordDocument>
-  <w:TrackRevisions/>
- </w:WordDocument>
-</xml><![endif]-->
-<style>
-<!--
- /* Font Definitions */
-@font-face
-	{font-family:Tahoma;
-	panose-1:2 11 6 4 3 5 4 4 2 4;
-	mso-font-charset:0;
-	mso-generic-font-family:swiss;
-	mso-font-pitch:variable;
-	mso-font-signature:553679495 -2147483648 8 0 66047 0;}
- /* Style Definitions */
-p.MsoNormal, li.MsoNormal, div.MsoNormal
-	{mso-style-parent:"";
-	margin:0in;
-	margin-bottom:.0001pt;
-	mso-pagination:widow-orphan;
-	font-size:12.0pt;
-	font-family:"Times New Roman";
-	mso-fareast-font-family:"Times New Roman";}
-p
-	{margin-right:0in;
-	mso-margin-top-alt:auto;
-	mso-margin-bottom-alt:auto;
-	margin-left:0in;
-	mso-pagination:widow-orphan;
-	font-size:12.0pt;
-	font-family:"Times New Roman";
-	mso-fareast-font-family:"Times New Roman";}
-p.BalloonText, li.BalloonText, div.BalloonText
-	{mso-style-name:"Balloon Text";
-	margin:0in;
-	margin-bottom:.0001pt;
-	mso-pagination:widow-orphan;
-	font-size:8.0pt;
-	font-family:Tahoma;
-	mso-fareast-font-family:"Times New Roman";}
-@page Section1
-	{size:8.5in 11.0in;
-	margin:1.0in 1.25in 1.0in 1.25in;
-	mso-header-margin:.5in;
-	mso-footer-margin:.5in;
-	mso-paper-source:0;}
-div.Section1
-	{page:Section1;}
--->
-</style>
-</head>
-
-<body lang=EN-US style='tab-interval:.5in'>
-
-<div class=Section1>
-
-<p align=center style='text-align:center'><b>Eclipse Public License - v 1.0</b>
-</p>
-
-<p><span style='font-size:10.0pt'>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER
-THE TERMS OF THIS ECLIPSE PUBLIC LICENSE (&quot;AGREEMENT&quot;). ANY USE,
-REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE
-OF THIS AGREEMENT.</span> </p>
-
-<p><b><span style='font-size:10.0pt'>1. DEFINITIONS</span></b> </p>
-
-<p><span style='font-size:10.0pt'>&quot;Contribution&quot; means:</span> </p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
-in the case of the initial Contributor, the initial code and documentation
-distributed under this Agreement, and<br clear=left>
-b) in the case of each subsequent Contributor:</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>i)
-changes to the Program, and</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>ii)
-additions to the Program;</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>where
-such changes and/or additions to the Program originate from and are distributed
-by that particular Contributor. A Contribution 'originates' from a Contributor
-if it was added to the Program by such Contributor itself or anyone acting on
-such Contributor's behalf. Contributions do not include additions to the
-Program which: (i) are separate modules of software distributed in conjunction
-with the Program under their own license agreement, and (ii) are not derivative
-works of the Program. </span></p>
-
-<p><span style='font-size:10.0pt'>&quot;Contributor&quot; means any person or
-entity that distributes the Program.</span> </p>
-
-<p><span style='font-size:10.0pt'>&quot;Licensed Patents &quot; mean patent
-claims licensable by a Contributor which are necessarily infringed by the use
-or sale of its Contribution alone or when combined with the Program. </span></p>
-
-<p><span style='font-size:10.0pt'>&quot;Program&quot; means the Contributions
-distributed in accordance with this Agreement.</span> </p>
-
-<p><span style='font-size:10.0pt'>&quot;Recipient&quot; means anyone who
-receives the Program under this Agreement, including all Contributors.</span> </p>
-
-<p><b><span style='font-size:10.0pt'>2. GRANT OF RIGHTS</span></b> </p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
-Subject to the terms of this Agreement, each Contributor hereby grants Recipient
-a non-exclusive, worldwide, royalty-free copyright license to<span
-style='color:red'> </span>reproduce, prepare derivative works of, publicly
-display, publicly perform, distribute and sublicense the Contribution of such
-Contributor, if any, and such derivative works, in source code and object code
-form.</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>b)
-Subject to the terms of this Agreement, each Contributor hereby grants
-Recipient a non-exclusive, worldwide,<span style='color:green'> </span>royalty-free
-patent license under Licensed Patents to make, use, sell, offer to sell, import
-and otherwise transfer the Contribution of such Contributor, if any, in source
-code and object code form. This patent license shall apply to the combination
-of the Contribution and the Program if, at the time the Contribution is added
-by the Contributor, such addition of the Contribution causes such combination
-to be covered by the Licensed Patents. The patent license shall not apply to
-any other combinations which include the Contribution. No hardware per se is
-licensed hereunder. </span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>c)
-Recipient understands that although each Contributor grants the licenses to its
-Contributions set forth herein, no assurances are provided by any Contributor
-that the Program does not infringe the patent or other intellectual property
-rights of any other entity. Each Contributor disclaims any liability to Recipient
-for claims brought by any other entity based on infringement of intellectual
-property rights or otherwise. As a condition to exercising the rights and
-licenses granted hereunder, each Recipient hereby assumes sole responsibility
-to secure any other intellectual property rights needed, if any. For example,
-if a third party patent license is required to allow Recipient to distribute
-the Program, it is Recipient's responsibility to acquire that license before
-distributing the Program.</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>d)
-Each Contributor represents that to its knowledge it has sufficient copyright
-rights in its Contribution, if any, to grant the copyright license set forth in
-this Agreement. </span></p>
-
-<p><b><span style='font-size:10.0pt'>3. REQUIREMENTS</span></b> </p>
-
-<p><span style='font-size:10.0pt'>A Contributor may choose to distribute the
-Program in object code form under its own license agreement, provided that:</span>
-</p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
-it complies with the terms and conditions of this Agreement; and</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>b)
-its license agreement:</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>i)
-effectively disclaims on behalf of all Contributors all warranties and
-conditions, express and implied, including warranties or conditions of title
-and non-infringement, and implied warranties or conditions of merchantability
-and fitness for a particular purpose; </span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>ii)
-effectively excludes on behalf of all Contributors all liability for damages,
-including direct, indirect, special, incidental and consequential damages, such
-as lost profits; </span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>iii)
-states that any provisions which differ from this Agreement are offered by that
-Contributor alone and not by any other party; and</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>iv)
-states that source code for the Program is available from such Contributor, and
-informs licensees how to obtain it in a reasonable manner on or through a
-medium customarily used for software exchange.<span style='color:blue'> </span></span></p>
-
-<p><span style='font-size:10.0pt'>When the Program is made available in source
-code form:</span> </p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
-it must be made available under this Agreement; and </span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>b) a
-copy of this Agreement must be included with each copy of the Program. </span></p>
-
-<p><span style='font-size:10.0pt'>Contributors may not remove or alter any
-copyright notices contained within the Program. </span></p>
-
-<p><span style='font-size:10.0pt'>Each Contributor must identify itself as the
-originator of its Contribution, if any, in a manner that reasonably allows
-subsequent Recipients to identify the originator of the Contribution. </span></p>
-
-<p><b><span style='font-size:10.0pt'>4. COMMERCIAL DISTRIBUTION</span></b> </p>
-
-<p><span style='font-size:10.0pt'>Commercial distributors of software may
-accept certain responsibilities with respect to end users, business partners
-and the like. While this license is intended to facilitate the commercial use
-of the Program, the Contributor who includes the Program in a commercial
-product offering should do so in a manner which does not create potential
-liability for other Contributors. Therefore, if a Contributor includes the
-Program in a commercial product offering, such Contributor (&quot;Commercial
-Contributor&quot;) hereby agrees to defend and indemnify every other
-Contributor (&quot;Indemnified Contributor&quot;) against any losses, damages and
-costs (collectively &quot;Losses&quot;) arising from claims, lawsuits and other
-legal actions brought by a third party against the Indemnified Contributor to
-the extent caused by the acts or omissions of such Commercial Contributor in
-connection with its distribution of the Program in a commercial product
-offering. The obligations in this section do not apply to any claims or Losses
-relating to any actual or alleged intellectual property infringement. In order
-to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
-Contributor in writing of such claim, and b) allow the Commercial Contributor
-to control, and cooperate with the Commercial Contributor in, the defense and
-any related settlement negotiations. The Indemnified Contributor may participate
-in any such claim at its own expense.</span> </p>
-
-<p><span style='font-size:10.0pt'>For example, a Contributor might include the
-Program in a commercial product offering, Product X. That Contributor is then a
-Commercial Contributor. If that Commercial Contributor then makes performance
-claims, or offers warranties related to Product X, those performance claims and
-warranties are such Commercial Contributor's responsibility alone. Under this
-section, the Commercial Contributor would have to defend claims against the
-other Contributors related to those performance claims and warranties, and if a
-court requires any other Contributor to pay any damages as a result, the
-Commercial Contributor must pay those damages.</span> </p>
-
-<p><b><span style='font-size:10.0pt'>5. NO WARRANTY</span></b> </p>
-
-<p><span style='font-size:10.0pt'>EXCEPT AS EXPRESSLY SET FORTH IN THIS
-AGREEMENT, THE PROGRAM IS PROVIDED ON AN &quot;AS IS&quot; BASIS, WITHOUT
-WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING,
-WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT,
-MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
-responsible for determining the appropriateness of using and distributing the
-Program and assumes all risks associated with its exercise of rights under this
-Agreement , including but not limited to the risks and costs of program errors,
-compliance with applicable laws, damage to or loss of data, programs or
-equipment, and unavailability or interruption of operations. </span></p>
-
-<p><b><span style='font-size:10.0pt'>6. DISCLAIMER OF LIABILITY</span></b> </p>
-
-<p><span style='font-size:10.0pt'>EXCEPT AS EXPRESSLY SET FORTH IN THIS
-AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF
-THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF
-THE POSSIBILITY OF SUCH DAMAGES.</span> </p>
-
-<p><b><span style='font-size:10.0pt'>7. GENERAL</span></b> </p>
-
-<p><span style='font-size:10.0pt'>If any provision of this Agreement is invalid
-or unenforceable under applicable law, it shall not affect the validity or
-enforceability of the remainder of the terms of this Agreement, and without
-further action by the parties hereto, such provision shall be reformed to the
-minimum extent necessary to make such provision valid and enforceable.</span> </p>
-
-<p><span style='font-size:10.0pt'>If Recipient institutes patent litigation
-against any entity (including a cross-claim or counterclaim in a lawsuit)
-alleging that the Program itself (excluding combinations of the Program with
-other software or hardware) infringes such Recipient's patent(s), then such
-Recipient's rights granted under Section 2(b) shall terminate as of the date
-such litigation is filed. </span></p>
-
-<p><span style='font-size:10.0pt'>All Recipient's rights under this Agreement
-shall terminate if it fails to comply with any of the material terms or
-conditions of this Agreement and does not cure such failure in a reasonable
-period of time after becoming aware of such noncompliance. If all Recipient's
-rights under this Agreement terminate, Recipient agrees to cease use and
-distribution of the Program as soon as reasonably practicable. However,
-Recipient's obligations under this Agreement and any licenses granted by
-Recipient relating to the Program shall continue and survive. </span></p>
-
-<p><span style='font-size:10.0pt'>Everyone is permitted to copy and distribute
-copies of this Agreement, but in order to avoid inconsistency the Agreement is
-copyrighted and may only be modified in the following manner. The Agreement
-Steward reserves the right to publish new versions (including revisions) of
-this Agreement from time to time. No one other than the Agreement Steward has
-the right to modify this Agreement. The Eclipse Foundation is the initial
-Agreement Steward. The Eclipse Foundation may assign the responsibility to
-serve as the Agreement Steward to a suitable separate entity. Each new version
-of the Agreement will be given a distinguishing version number. The Program
-(including Contributions) may always be distributed subject to the version of
-the Agreement under which it was received. In addition, after a new version of
-the Agreement is published, Contributor may elect to distribute the Program
-(including its Contributions) under the new version. Except as expressly stated
-in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
-the intellectual property of any Contributor under this Agreement, whether
-expressly, by implication, estoppel or otherwise. All rights in the Program not
-expressly granted under this Agreement are reserved.</span> </p>
-
-<p><span style='font-size:10.0pt'>This Agreement is governed by the laws of the
-State of New York and the intellectual property laws of the United States of
-America. No party to this Agreement will bring a legal action under this
-Agreement more than one year after the cause of action arose. Each party waives
-its rights to a jury trial in any resulting litigation.</span> </p>
-
-<p class=MsoNormal><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>
-
-</div>
-
-</body>
-
-</html>
diff --git a/features/org.eclipse.wst.common_ui.feature/sourceTemplateFeature/feature.properties b/features/org.eclipse.wst.common_ui.feature/sourceTemplateFeature/feature.properties
index c861cfb..9c51ee6 100644
--- a/features/org.eclipse.wst.common_ui.feature/sourceTemplateFeature/feature.properties
+++ b/features/org.eclipse.wst.common_ui.feature/sourceTemplateFeature/feature.properties
@@ -18,10 +18,8 @@
 featureName=WST Common UI Developer Resources
 
 # "providerName" property - name of the company that provides the feature
-providerName=Eclipse.org
+providerName=Eclipse Web Tools Platform
 
-# "updateSiteName" property - label for the update site
-updateSiteName=The Eclipse Web Tools Platform (WTP) Project update site
 
 # "description" property - description of the feature
 description=Source code zips for WST Common UI.
@@ -41,106 +39,11 @@
 
 # "licenseURL" property - URL of the "Feature License"
 # do not translate value - just change to point to a locale-specific HTML page
-licenseURL=license.html
+# license and licenseURL properties were removed as a result to migrating to new PDE license support. 
+#    Those properties are now added at build time. See http://wiki.eclipse.org/Equinox/p2/License_Mechanism. 
 
 # "license" property - text of the "Feature Update License"
 # should be plain text version of license agreement pointed to be "licenseURL"
-license=\
-ECLIPSE FOUNDATION SOFTWARE USER AGREEMENT\n\
-June 06, 2007\n\
-\n\
-Usage Of Content\n\
-\n\
-THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
-OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
-USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
-AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
-NOTICES INDICATED OR REFERENCED BELOW. BY USING THE CONTENT, YOU\n\
-AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
-AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
-OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE\n\
-TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
-OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
-BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
-\n\
-Applicable Licenses\n\
-\n\
-Unless otherwise indicated, all Content made available by the Eclipse Foundation\n\
-is provided to you under the terms and conditions of the Eclipse Public\n\
-License Version 1.0 ("EPL"). A copy of the EPL is provided with this\n\
-Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
-For purposes of the EPL, "Program" will mean the Content.\n\
-\n\
-Content includes, but is not limited to, source code, object code,\n\
-documentation and other files maintained in the Eclipse.org CVS\n\
-repository ("Repository") in CVS modules ("Modules") and made available\n\
-as downloadable archives ("Downloads").\n\
-\n\
-   - Content may be structured and packaged into modules to facilitate delivering,\n\
-     extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
-     plug-in fragments ("Fragments"), and features ("Features").\n\
-   - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java? ARchive)\n\
-     in a directory named "plugins".\n\
-   - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
-     Each Feature may be packaged as a sub-directory in a directory named "features".\n\
-     Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
-     numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
-   - Features may also include other Features ("Included Features"). Within a Feature, files\n\
-     named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
-\n\
-Features may also include other Features ("Included Features"). Files named\n\
-"feature.xml" may contain a list of the names and version numbers of\n\
-Included Features.\n\
-\n\
-The terms and conditions governing Plug-ins and Fragments should be\n\
-contained in files named "about.html" ("Abouts"). The terms and\n\
-conditions governing Features and Included Features should be contained\n\
-in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
-Licenses may be located in any directory of a Download or Module\n\
-including, but not limited to the following locations:\n\
-\n\
-   - The top-level (root) directory\n\
-   - Plug-in and Fragment directories\n\
-   - Inside Plug-ins and Fragments packaged as JARs\n\
-   - Sub-directories of the directory named "src" of certain Plug-ins\n\
-   - Feature directories\n\
-\n\
-Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
-Eclipse Update Manager, you must agree to a license ("Feature Update\n\
-License") during the installation process. If the Feature contains\n\
-Included Features, the Feature Update License should either provide you\n\
-with the terms and conditions governing the Included Features or inform\n\
-you where you can locate them. Feature Update Licenses may be found in\n\
-the "license" property of files named "feature.properties". Such Abouts,\n\
-Feature Licenses and Feature Update Licenses contain the terms and\n\
-conditions (or references to such terms and conditions) that govern your\n\
-use of the associated Content in that directory.\n\
-\n\
-THE ABOUTS, FEATURE LICENSES AND FEATURE UPDATE LICENSES MAY REFER\n\
-TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
-SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
-\n\
-    - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
-    - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
-    - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
-    - IBM Public License 1.0 (available at http://oss.software.ibm.com/developerworks/opensource/license10.html)\n\
-    - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
-    - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
-    - Common Development and Distribution License (CDDL) Version 1.0 (available at http://www.sun.com/cddl/cddl.html)\n\
-\n\
-IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
-TO USE OF THE CONTENT. If no About, Feature License or Feature Update License\n\
-is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
-govern that particular Content.\n\
-\n\
-Cryptography\n\
-\n\
-Content may contain encryption software. The country in which you are\n\
-currently may have restrictions on the import, possession, and use,\n\
-and/or re-export to another country, of encryption software. BEFORE\n\
-using any encryption software, please check the country's laws,\n\
-regulations and policies concerning the import, possession, or use,\n\
-and re-export of encryption software, to see if this is permitted.\n\
-\n\
-Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.\n
+# license and licenseURL properties were removed as a result to migrating to new PDE license support. 
+#    Those properties are now added at build time. See http://wiki.eclipse.org/Equinox/p2/License_Mechanism. 
 ########### end of license property ##########################################
diff --git a/features/org.eclipse.wst.common_ui.feature/sourceTemplateFeature/license.html b/features/org.eclipse.wst.common_ui.feature/sourceTemplateFeature/license.html
deleted file mode 100644
index fec4a48..0000000
--- a/features/org.eclipse.wst.common_ui.feature/sourceTemplateFeature/license.html
+++ /dev/null
@@ -1,82 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
-<head>
-<meta http-equiv=Content-Type content="text/html; charset=iso-8859-1">
-<title>Eclipse.org Software User Agreement</title>
-</head>
-
-<body lang="EN-US" link=blue vlink=purple>
-<h2>Eclipse Foundation Software User Agreement</h2>
-<p>June 06, 2007</p>
-
-<h3>Usage Of Content</h3>
-
-<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
-   (COLLECTIVELY &quot;CONTENT&quot;).  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
-   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
-   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
-   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
-   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
-   
-<h3>Applicable Licenses</h3>   
-   
-<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation is provided to you under the terms and conditions of the Eclipse Public License Version 1.0
-   (&quot;EPL&quot;).  A copy of the EPL is provided with this Content and is also available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-   For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
-
-<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse.org CVS repository (&quot;Repository&quot;) in CVS
-   modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
-   
-<ul>
-	<li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-	<li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
-	<li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
-      and/or Fragments associated with that Feature.</li>
-	<li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
-</ul>   
- 
-<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
-Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
-including, but not limited to the following locations:</p>
-
-<ul>
-	<li>The top-level (root) directory</li>
-	<li>Plug-in and Fragment directories</li>
-	<li>Inside Plug-ins and Fragments packaged as JARs</li>
-	<li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-	<li>Feature directories</li>
-</ul>
-		
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Eclipse Update Manager, you must agree to a license (&quot;Feature Update License&quot;) during the
-installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
-inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
-that directory.</p>
-
-<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.  SOME OF THESE
-OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
-
-<ul>
-	<li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-	<li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-	<li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-	<li>IBM Public License 1.0 (available at <a href="http://oss.software.ibm.com/developerworks/opensource/license10.html">http://oss.software.ibm.com/developerworks/opensource/license10.html</a>)</li>	
-	<li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-	<li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
-  <LI>Common Development and Distribution License (CDDL) Version 1.0 (available at <A 
-  href="http://www.sun.com/cddl/cddl.html">http://www.sun.com/cddl/cddl.html)</A>
-  </LI>
-</UL>
-
-<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
-contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
-
-<h3>Cryptography</h3>
-
-<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
-   another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
-   possession, or use, and re-export of encryption software, to see if this is permitted.</p>
-   
-<small>Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.</small>   
-</body>
-</html>
diff --git a/plugins/org.eclipse.jem.util/META-INF/MANIFEST.MF b/plugins/org.eclipse.jem.util/META-INF/MANIFEST.MF
index 4ca1ba0..67031dd 100644
--- a/plugins/org.eclipse.jem.util/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.jem.util/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.jem.util; singleton:=true
-Bundle-Version: 2.0.200.qualifier
+Bundle-Version: 2.1.100.qualifier
 Bundle-Activator: org.eclipse.jem.util.plugin.JEMUtilPlugin
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
@@ -20,7 +20,8 @@
  org.eclipse.core.resources;bundle-version="[3.4.0,4.0.0)",
  org.eclipse.emf.ecore;bundle-version="[2.4.0,3.0.0)",
  org.eclipse.emf.ecore.xmi;bundle-version="[2.4.0,3.0.0)",
- org.eclipse.perfmsr.core;bundle-version="1.0.0";resolution:=optional,
- com.ibm.icu;bundle-version="[3.8.1.1,4.1.0)"
+ com.ibm.icu;bundle-version="3.8.1",
+ org.eclipse.wst.common.core;bundle-version="[1.1.201,2.0.0)";visibility:=reexport
 Eclipse-LazyStart: true
 Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Bundle-ActivationPolicy: lazy
diff --git a/plugins/org.eclipse.jem.util/PERFMSR_README.txt b/plugins/org.eclipse.jem.util/PERFMSR_README.txt
index ea51258..990e2df 100644
--- a/plugins/org.eclipse.jem.util/PERFMSR_README.txt
+++ b/plugins/org.eclipse.jem.util/PERFMSR_README.txt
@@ -9,4 +9,16 @@
 
 The jar is in this project's classpath, but it is not exported and is not in
 the plugin.xml or build.properties. This means it will be available for compilation
-but it won't show up in the runtime workbench.
\ No newline at end of file
+but it won't show up in the runtime workbench.
+
+05/13/2009 See bug 274534 "Can we remove org.eclipse.perfmsr.core"
+Note: the optional prereq, 
+ org.eclipse.perfmsr.core;bundle-version="1.0.0";resolution:=optional,
+was removed since it was confusing to build or releng teams, who want to make 
+sure they _could_ get all the bundles, optional or not, if they wanted to. 
+Whereas this jar is more for diagnosing or checking performance issues ... nothing 
+that is done any longer on this code. The code itself hasn't been changed, so should be 
+easy to resurect if ever required in the future. If this code is ever changed drastically, 
+such as refactored, I'm not sure the old performance measurement code needs to be carried 
+forward, as I think there are newer methods of doing similar things, that wouldn't require
+a "development time only" bundle as an optional pre-req.  
diff --git a/plugins/org.eclipse.jem.util/jemutil-nonworkbnech/org/eclipse/jem/util/logger/LogEntry.java b/plugins/org.eclipse.jem.util/jemutil-nonworkbnech/org/eclipse/jem/util/logger/LogEntry.java
index f50bae7..c7972f0 100644
--- a/plugins/org.eclipse.jem.util/jemutil-nonworkbnech/org/eclipse/jem/util/logger/LogEntry.java
+++ b/plugins/org.eclipse.jem.util/jemutil-nonworkbnech/org/eclipse/jem/util/logger/LogEntry.java
@@ -18,6 +18,7 @@
 import java.io.PrintWriter;
 
 /**
+ * @deprecated Plugin error logging should be used instead
  * This class should be used when logging information which should be grouped together. Instead of creating a new instance of this class every time it
  * is needed, for performance reasons, create an instance and reuse it.
  * <p>
diff --git a/plugins/org.eclipse.jem.util/jemutil-nonworkbnech/org/eclipse/jem/util/logger/proxy/ILogRenderer.java b/plugins/org.eclipse.jem.util/jemutil-nonworkbnech/org/eclipse/jem/util/logger/proxy/ILogRenderer.java
index 5d1e951..327fda1 100644
--- a/plugins/org.eclipse.jem.util/jemutil-nonworkbnech/org/eclipse/jem/util/logger/proxy/ILogRenderer.java
+++ b/plugins/org.eclipse.jem.util/jemutil-nonworkbnech/org/eclipse/jem/util/logger/proxy/ILogRenderer.java
@@ -15,6 +15,7 @@
 package org.eclipse.jem.util.logger.proxy;
 
 /**
+ * @deprecated Plugin error logging should be used instead
  * Basic log renderer interface. It is replaced by the extension <code>ILogRenderer2.</code>
  * 
  * @since 1.0.0
diff --git a/plugins/org.eclipse.jem.util/jemutil-nonworkbnech/org/eclipse/jem/util/logger/proxy/ILogRenderer2.java b/plugins/org.eclipse.jem.util/jemutil-nonworkbnech/org/eclipse/jem/util/logger/proxy/ILogRenderer2.java
index f5a670f..3f7b13c 100644
--- a/plugins/org.eclipse.jem.util/jemutil-nonworkbnech/org/eclipse/jem/util/logger/proxy/ILogRenderer2.java
+++ b/plugins/org.eclipse.jem.util/jemutil-nonworkbnech/org/eclipse/jem/util/logger/proxy/ILogRenderer2.java
@@ -17,6 +17,7 @@
 import java.util.logging.Level;
  
 /**
+ * @deprecated Plugin error logging should be used instead
  * Log renderer that provides more function. Basically it can handle
  * the logging of specific types in a different manner than the default
  * conversion to string supplied by Logger.
diff --git a/plugins/org.eclipse.jem.util/jemutil-nonworkbnech/org/eclipse/jem/util/logger/proxy/JDKConsoleRenderer.java b/plugins/org.eclipse.jem.util/jemutil-nonworkbnech/org/eclipse/jem/util/logger/proxy/JDKConsoleRenderer.java
index c7c9d75..f4a396f 100644
--- a/plugins/org.eclipse.jem.util/jemutil-nonworkbnech/org/eclipse/jem/util/logger/proxy/JDKConsoleRenderer.java
+++ b/plugins/org.eclipse.jem.util/jemutil-nonworkbnech/org/eclipse/jem/util/logger/proxy/JDKConsoleRenderer.java
@@ -17,6 +17,7 @@
 import java.util.logging.Level;
 
 /**
+ * @deprecated Plugin error logging should be used instead
  * Default log renderer to use when not running under Eclipse. It logs to sysout and syserr.
  * 
  * @since 1.1.0
diff --git a/plugins/org.eclipse.jem.util/jemutil-nonworkbnech/org/eclipse/jem/util/logger/proxy/Logger.java b/plugins/org.eclipse.jem.util/jemutil-nonworkbnech/org/eclipse/jem/util/logger/proxy/Logger.java
index b86ad05..779d963 100644
--- a/plugins/org.eclipse.jem.util/jemutil-nonworkbnech/org/eclipse/jem/util/logger/proxy/Logger.java
+++ b/plugins/org.eclipse.jem.util/jemutil-nonworkbnech/org/eclipse/jem/util/logger/proxy/Logger.java
@@ -20,6 +20,7 @@
 import java.util.logging.Level;
 
 /**
+ * @deprecated Plugin error logging should be used instead
  * This is a base, UI independent logger.   It will
  * construct a consistent msg. body, and call an enfironment specific ILogRenderer.
  * By default, this logger will use a console based ILogRenderer,
diff --git a/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/internal/util/emf/workbench/ProjectResourceSetImpl.java b/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/internal/util/emf/workbench/ProjectResourceSetImpl.java
index b4368d4..c5fde83 100644
--- a/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/internal/util/emf/workbench/ProjectResourceSetImpl.java
+++ b/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/internal/util/emf/workbench/ProjectResourceSetImpl.java
@@ -8,10 +8,6 @@
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
-/*
- *  $$RCSfile: ProjectResourceSetImpl.java,v $$
- *  $$Revision: 1.21 $$  $$Date: 2008/04/21 14:50:16 $$ 
- */
 package org.eclipse.jem.internal.util.emf.workbench;
 
 import java.io.IOException;
@@ -20,8 +16,11 @@
 import org.eclipse.core.resources.*;
 import org.eclipse.core.runtime.*;
 import org.eclipse.core.runtime.content.IContentDescription;
-import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.core.runtime.jobs.ILock;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.emf.common.notify.*;
 import org.eclipse.emf.common.notify.impl.NotificationImpl;
+import org.eclipse.emf.common.util.EList;
 import org.eclipse.emf.common.util.URI;
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.ecore.resource.*;
@@ -42,10 +41,629 @@
 		public static final int MODULE_NAME_INDX = 2;
 		public static final int CONTENT_TYPE_INDX = 3;
 	}
+	public class ImmutableEList<E extends Object & Resource> extends ResourcesEList<E> implements EList<E> {
+		
+		
+		private SynchronizedResourcesEList delegate;
+
+		public ImmutableEList(Collection<? extends E> collection) {
+
+		    size = collection.size();
+
+		    // Conditionally create the data.
+		    //
+		    if (size > 0)
+		    { 
+		      // Allow for a bit-shift of growth.
+		      //
+		      data = newData(size + size / 8 + 1); 
+		      collection.toArray(data);
+		    
+		    }
+			delegate = (SynchronizedResourcesEList)collection;
+			
+		}
+
+		@Override
+		public void setData(int size, Object[] data) {
+			super.setData(size, data);
+			delegate.lock.acquire();
+			delegate.setData(size, data);
+			delegate.lock.release();
+		}
+
+		@Override
+		public E setUnique(int index, E object) {
+			Object temp;
+			super.setUnique(index, object);
+			delegate.lock.acquire();
+			temp = delegate.setUnique(index, object);
+			delegate.lock.release();
+			return (E) temp;
+		}
+
+		@Override
+		public void addUnique(E object) {
+			super.addUnique(object);
+			delegate.lock.acquire();
+			delegate.addUnique(object);
+			delegate.lock.release();
+		}
+
+		@Override
+		public void addUnique(int index, E object) {
+			super.addUnique(index, object);
+			delegate.lock.acquire();
+			delegate.addUnique(index, object);
+			delegate.lock.release();
+		}
+
+		@Override
+		public boolean addAllUnique(Collection<? extends E> collection) {
+			boolean temp;
+			super.addAllUnique(collection);
+			delegate.lock.acquire();
+			temp = delegate.addAllUnique(collection);
+			delegate.lock.release();
+			return temp;
+		}
+
+		@Override
+		public boolean addAllUnique(int index, Collection<? extends E> collection) {
+			boolean temp;
+			super.addAllUnique(index, collection);
+			delegate.lock.acquire();
+			temp = delegate.addAllUnique(index, collection);
+			delegate.lock.release();
+			return temp;
+		}
+
+		@Override
+		public boolean addAllUnique(Object[] objects, int start, int end) {
+			boolean temp;
+			super.addAllUnique(objects, start, end);
+			delegate.lock.acquire();
+			temp = delegate.addAllUnique(objects, start, end);
+			delegate.lock.release();
+			return temp;
+		}
+
+		@Override
+		public boolean addAllUnique(int index, Object[] objects, int start, int end) {
+			boolean temp;
+			super.addAllUnique(index, objects, start, end);
+			delegate.lock.acquire();
+			temp = delegate.addAllUnique(index, objects, start, end);
+			delegate.lock.release();
+			return temp;
+		}
+
+		@Override
+		public E remove(int index) {
+			Object temp;
+			super.remove(index);
+			delegate.lock.acquire();
+			temp = delegate.remove(index);
+			delegate.lock.release();
+			return (E)temp;
+		}
+
+		@Override
+		public E move(int targetIndex, int sourceIndex) {
+			Object temp;
+			super.move(targetIndex, sourceIndex);
+			delegate.lock.acquire();
+			temp = delegate.move(targetIndex, sourceIndex);
+			delegate.lock.release();
+			return (E) temp;
+		}
+
+		@Override
+		public E set(int index, E object) {
+			Object temp;
+			super.set(index, object);
+			delegate.lock.acquire();
+			temp = delegate.set(index, object);
+			delegate.lock.release();
+			return (E) temp;
+		}
+
+		@Override
+		public boolean add(E object) {
+			boolean temp;
+			super.add(object);
+			delegate.lock.acquire();
+			temp = delegate.add(object);
+			delegate.lock.release();
+			return temp;
+		}
+
+		@Override
+		public void add(int index, E object) {
+			super.add(index, object);
+			delegate.lock.acquire();
+			delegate.add(index, object);
+			delegate.lock.release();
+		}
+
+		@Override
+		public boolean addAll(Collection<? extends E> collection) {
+			boolean temp;
+			super.addAll(collection);
+			delegate.lock.acquire();
+			temp = delegate.addAll(collection);
+			delegate.lock.release();
+			return temp;
+		}
+
+		@Override
+		public boolean addAll(int index, Collection<? extends E> collection) {
+			boolean temp;
+			super.addAll(index, collection);
+			delegate.lock.acquire();
+			temp = delegate.addAll(index, collection);
+			delegate.lock.release();
+			return temp;
+		}
+
+		@Override
+		public boolean remove(Object object) {
+			boolean temp;
+			super.remove(object);
+			delegate.lock.acquire();
+			temp = delegate.remove(object);
+			delegate.lock.release();
+			return temp;
+		}
+
+		@Override
+		public boolean removeAll(Collection<?> collection) {
+			boolean temp;
+			super.removeAll(collection);
+			delegate.lock.acquire();
+			temp = delegate.removeAll(collection);
+			delegate.lock.release();
+			return temp;
+		}
+
+		@Override
+		public boolean retainAll(Collection<?> collection) {
+			boolean temp;
+			super.retainAll(collection);
+			delegate.lock.acquire();
+			temp = delegate.retainAll(collection);
+			delegate.lock.release();
+			return temp;
+		}
+
+		@Override
+		public void move(int index, E object) {
+			super.move(index, object);
+			delegate.lock.acquire();
+			delegate.move(index, object);
+			delegate.lock.release();
+		}
+
+		private static final long serialVersionUID = 1L;
+
+		@Override
+		public NotificationChain basicAdd(E object, NotificationChain notifications) {
+			NotificationChain temp = super.basicAdd(object, notifications);
+			delegate.lock.acquire();
+			delegate.basicAdd(object, notifications);
+			delegate.lock.release();
+			return temp;
+			
+		}
+
+		@Override
+		public NotificationChain basicRemove(Object object, NotificationChain notifications) {
+			NotificationChain temp = super.basicRemove(object, notifications);
+			delegate.lock.acquire();
+			delegate.basicRemove(object, notifications);
+			delegate.lock.release();
+			return temp;
+		}
+
+		@Override
+		public void clear() {
+			super.clear();
+			delegate.lock.acquire();
+			delegate.clear();
+			delegate.lock.release();
+		}
+
+		@Override
+		public NotificationChain basicSet(int index, E object, NotificationChain notifications) {
+			NotificationChain temp = super.basicSet(index, object, notifications);
+			delegate.lock.acquire();
+			delegate.basicSet(index, object, notifications);
+			delegate.lock.release();
+			return temp;
+		}
+	}
+	
+	public class SynchronizedResourcesEList<E extends Object & Resource> extends ResourcesEList<E> implements EList<E> {
+
+		/**
+		 * 
+		 */
+		private static final long serialVersionUID = 1L;
+		protected final ILock lock = Job.getJobManager().newLock();
+
+		public void copyInto(List list){
+			try {
+				lock.acquire();
+				list.addAll(this);
+			} finally {
+				lock.release();
+			}
+		}
+		
+		public void move(int newPosition, E object) {
+			
+			try {
+				lock.acquire();
+				super.move(newPosition, object);
+			} finally {
+				lock.release();
+			}
+		}
+
+		public E move(int newPosition, int oldPosition) {
+
+			try {
+				lock.acquire();
+				return super.move(newPosition, oldPosition);
+			} finally {
+				lock.release();
+			}
+		}
+
+		public boolean add(E o) {
+			
+			try {
+				lock.acquire();
+				return super.add(o);
+			} finally {
+				lock.release();
+			}
+		}
+
+		public void add(int index, E element) {
+			
+			try {
+				lock.acquire();
+				super.add(index, element);
+			} finally {
+				lock.release();
+			}
+		}
+
+		public boolean addAll(Collection<? extends E> c) {
+			
+			try {
+				lock.acquire();
+				return super.addAll(c);
+			} finally {
+				lock.release();
+			}
+		}
+
+		public boolean addAll(int index, Collection<? extends E> c) {
+			
+			try {
+				lock.acquire();
+				return super.addAll(index, c);
+			} finally {
+				lock.release();
+			}
+		}
+
+		public void clear() {
+			
+			try {
+				lock.acquire();
+				super.clear();
+			} finally {
+				lock.release();
+			}
+		}
+
+		public boolean contains(Object o) {
+			
+			try {
+				lock.acquire();
+				return super.contains(o);
+			} finally {
+				lock.release();
+			}
+		}
+
+		public boolean containsAll(Collection<?> c) {
+			
+			try {
+				lock.acquire();
+				return super.containsAll(c);
+			} finally {
+				lock.release();
+			}
+		}
+
+		public boolean equals(Object o) {
+			
+			try {
+				lock.acquire();
+				return super.equals(o);
+			} finally {
+				lock.release();
+			}
+		}
+
+		public E get(int index) {
+			
+			try {
+				lock.acquire();
+				return super.get(index);
+			} finally {
+				lock.release();
+			}
+		}
+
+		public int hashCode() {
+			
+			try {
+				lock.acquire();
+				return super.hashCode();
+			} finally {
+				lock.release();
+			}
+		}
+
+		public int indexOf(Object o) {
+			
+			try {
+				lock.acquire();
+				return super.indexOf(o);
+			} finally {
+				lock.release();
+			}
+		}
+
+		public boolean isEmpty() {
+			
+			try {
+				lock.acquire();
+				return super.isEmpty();
+			} finally {
+				lock.release();
+			}
+		}
+
+		public Iterator<E> iterator() {
+			
+			try {
+				lock.acquire();
+				return super.iterator();
+			} finally {
+				lock.release();
+			}
+		}
+
+		public int lastIndexOf(Object o) {
+			
+			try {
+				lock.acquire();
+				return super.lastIndexOf(o);
+			} finally {
+				lock.release();
+			}
+		}
+
+		public ListIterator<E> listIterator() {
+			
+			try {
+				lock.acquire();
+				return super.listIterator();
+			} finally {
+				lock.release();
+			}
+		}
+
+		public ListIterator<E> listIterator(int index) {
+			
+			try {
+				lock.acquire();
+				return super.listIterator(index);
+			} finally {
+				lock.release();
+			}
+		}
+
+		public boolean remove(Object o) {
+			
+			try {
+				lock.acquire();
+				return super.remove(o);
+			} finally {
+				lock.release();
+			}
+		}
+
+		public E remove(int index) {
+			
+			try {
+				lock.acquire();
+				return super.remove(index);
+			} finally {
+				lock.release();
+			}
+		}
+
+		public boolean removeAll(Collection<?> c) {
+			
+			try {
+				lock.acquire();
+				return super.removeAll(c);
+			} finally {
+				lock.release();
+			}
+		}
+
+		public boolean retainAll(Collection<?> c) {
+			
+			try {
+				lock.acquire();
+				return super.retainAll(c);
+			} finally {
+				lock.release();
+			}
+		}
+
+		public E set(int index, E element) {
+			
+			try {
+				lock.acquire();
+				return super.set(index, element);
+			} finally {
+				lock.release();
+			}
+		}
+
+		public int size() {
+			
+			try {
+				lock.acquire();
+				return super.size();
+			} finally {
+				lock.release();
+			}
+		}
+
+		public List<E> subList(int fromIndex, int toIndex) {
+			
+			try {
+				lock.acquire();
+				return super.subList(fromIndex, toIndex);
+			} finally {
+				lock.release();
+			}
+		}
+
+		public Object[] toArray() {
+			
+			try {
+				lock.acquire();
+				return super.toArray();
+			} finally {
+				lock.release();
+			}
+		}
+
+		public <T> T[] toArray(T[] a) {
+			
+			try {
+				lock.acquire();
+				return super.toArray(a);
+			} finally {
+				lock.release();
+			}
+		}
+
+		// release lock during notifications
+		protected void dispatchNotification(Notification notification) {
+
+			int lockDepth;
+			lockDepth = lock.getDepth();
+			try {
+				for(int i=0; i<lockDepth; i++)
+                    lock.release();
+				super.dispatchNotification(notification);
+			} finally {
+				for(int i=0; i<lockDepth; i++)
+                    lock.acquire();  // Re-acquire lock after notify
+			}
+		}
+
+	}
+
+	public static class ESynchronizedAdapterList extends EAdapterList
+	{
+
+/**
+ * 
+ */
+		private static final long serialVersionUID = 7855438339187540718L;
+
+		public ESynchronizedAdapterList(Notifier notifier) {
+			super(notifier);
+		}
+
+		@Override
+		public synchronized boolean add(Object object)
+		{
+			return super.add(object);
+		}
+
+		@Override
+		public synchronized void add(int index, Object object)
+		{
+			super.add(index, object);
+		}
+
+		@Override
+		public synchronized boolean addAll(Collection collection)
+		{
+			return super.addAll(collection);
+		}
+
+		@Override
+		public synchronized boolean remove(Object object)
+		{
+			return super.remove(object);
+		}
+
+		@Override
+		public synchronized Object remove(int index)
+		{
+			return super.remove(index);
+		}
+
+		@Override
+		public synchronized boolean removeAll(Collection collection)
+		{
+			return super.removeAll(collection);
+		}
+
+		@Override
+		public synchronized void clear()
+		{
+			super.clear();
+		}
+
+		@Override
+		public synchronized Object set(int index, Object object)
+		{
+			return super.set(index, object);
+		}
+
+		@Override
+		public synchronized void move(int newPosition, Object object)
+		{
+			super.move(newPosition, object);
+		}
+
+		@Override
+		public synchronized Object move(int newPosition, int oldPosition)
+		{
+			return super.move(newPosition, oldPosition);
+		}
+	}
 
 	private boolean isReleasing = false;
 	private IProject project;
 	protected List resourceHandlers = new ArrayList();
+	private Object resourcesLock = new Object();
 	protected ResourceSetWorkbenchSynchronizer synchronizer;
 	protected ProjectResourceSetImpl() {
 		setURIResourceMap(new HashMap(10));	// Tell it to cache uri->resource access.
@@ -77,16 +695,52 @@
 		//Check the map first when creating the resource and do not
 		//normalize if a value is found.
 		boolean isMapped = detectURIMapping(uri);
-		boolean hasContentType = (getContentTypeName(uri) != null);
+		String contentTypeName = getContentTypeName(uri);
+		boolean hasContentType = (contentTypeName != null);
 		URI converted = uri;
 		if (!isMapped)
 			converted = getURIConverter().normalize(uri);
 		else if (hasContentType)
 			converted = getURIConverter().normalize(uri);
 		
+		if (!hasContentType) {// Check if actual project file exists, and can determine contenttype
+			IContentDescription description = null;
+			IFile file = WorkbenchResourceHelperBase.getIFile(uri);
+			if (file != null && file.exists()) {
+				try {
+					description = file.getContentDescription();
+					if (description != null)
+						contentTypeName = description.getContentType().getId();
+				} catch (CoreException e) {
+					JEMUtilPlugin.getLogger().logError(e);
+				}
+			} else {// Now check if uri contains project, then add if needed
+				URIConverter converter = getURIConverter();
+				URI convertedUri = converter.normalize(uri);
+				if (!uri.equals(convertedUri)) {
+					file = WorkbenchResourceHelperBase.getIFile(convertedUri);
+					if (file != null && file.exists()) {
+						try {
+							description = file.getContentDescription();
+							if (description != null)
+								contentTypeName = description.getContentType().getId();
+						} catch (CoreException e) {
+							JEMUtilPlugin.getLogger().logError(e);
+						}
+					}
+				}
+			}
+		}
+		if(contentTypeName == null)
+			contentTypeName = contentType;
+		
+		
 		Resource result = createResourceFromHandlers(converted);
 		if (result == null) {
-		    Resource.Factory resourceFactory = getResourceFactoryRegistry().getFactory(uri);
+			Resource.Factory resourceFactory = (contentTypeName == null) ? 
+					getResourceFactoryRegistry().getFactory(uri):
+					getResourceFactoryRegistry().getFactory(uri,contentTypeName);
+						
 		    if (resourceFactory != null)
 		    {//We got the right factory, now use the right URI
 		      result = resourceFactory.createResource(converted);
@@ -136,7 +790,9 @@
 		    {
 		      result = resourceFactory.createResource(converted);
 		      getResources().add(result);
-		      getURIResourceMap().put(uri, result);
+		      synchronized (resourcesLock) {
+		          getURIResourceMap().put(uri, result);
+		      }
 		      return result;
 		    }
 		    else
@@ -215,9 +871,12 @@
 	}
 	protected void removeAndUnloadAllResources() {
 		boolean caughtException = false;
-		if (getResources().isEmpty()) return;
-		List list = new ArrayList(getResources());
-		getResources().clear();
+		List list = null;
+		synchronized (resourcesLock) {
+			if (getResources().isEmpty()) return;
+			list = new ArrayList(getResources());	
+			getResources().clear();
+		}
 		Resource res;
 		int size = list.size();
 		for (int i = 0; i < size; i++) {
@@ -309,6 +968,7 @@
 		if (resourceFactoryRegistry != null && factoryReg != null) {
 			preserveEntries(factoryReg.getExtensionToFactoryMap(), resourceFactoryRegistry.getExtensionToFactoryMap());
 			preserveEntries(factoryReg.getProtocolToFactoryMap(), resourceFactoryRegistry.getProtocolToFactoryMap());
+			preserveEntries(factoryReg.getContentTypeToFactoryMap(), resourceFactoryRegistry.getContentTypeToFactoryMap());
 		}
 		super.setResourceFactoryRegistry(factoryReg);
 	}
@@ -349,59 +1009,35 @@
 	    URIConverter theURIConverter = getURIConverter();
 	    URI normalizedURI = theURIConverter.normalize(uri);
 	    List resourcesToRemove = new ArrayList();
-	    for (Resource resource : getResources())
-	    {
-	      if (theURIConverter.normalize(resource.getURI()).equals(normalizedURI)) {
-	    		  
-	    	if (getContentTypeName(uri) == null) { // loading from legacy archive api or non-typed resource
-		        if (loadOnDemand && !resource.isLoaded())
-		        {
-		          demandLoadHelper(resource);
-		        }
-		        
-		        if (map != null)
-		        {
-		          map.put(uri, resource);
-		        } 
-		        return resource;
-	    	} else  {// content type is known
-	    		boolean resourceExists = false;
-	    		IFile file = getPlatformFile(resource);
-	    		if (file != null)
-	    			resourceExists = file.exists();
-	    		String resourceContentTypeID = getContentTypeID(resource);
-	    		String uriContentTypeID = getContentTypeName(uri);
-	    		String existingMapKeyType = (findKey(resource) != null) ? getContentTypeName(findKey(resource)) : null;
-	    		if((!map.containsValue(resource) || ((map.get(uri) != null) && map.get(uri).equals(resource))) // existing resource  with alternate mapping doesn't exist in map
-	    			||  ((resourceContentTypeID != null && resourceContentTypeID.equals(uriContentTypeID)))) {
-						if (loadOnDemand && !resource.isLoaded()) {
-							demandLoadHelper(resource);
-						} // if embedded uri content type is different than resource content type, continue searching
-						if (resourceContentTypeID != null
-								&& uriContentTypeID != null) {
-							if ((resourceContentTypeID.equals(uriContentTypeID)) && existingMapKeyType == null) continue;
-							if ((!resourceContentTypeID.equals(uriContentTypeID)) || (existingMapKeyType != null && !existingMapKeyType
-									.equals(uriContentTypeID)))
-								continue;
-							else if (existingMapKeyType == null && !resourceExists) {
-								resourcesToRemove.add(resource);
-								continue;
+	    synchronized (resourcesLock) {
+	    	List<Resource> c = getImmutableResources();
+	        
+	        synchronized(c) {
+				for (Resource resource : c) {
+					if (theURIConverter.normalize(resource.getURI()).equals(normalizedURI)) {
+	
+						if (getContentTypeName(uri) == null) { // loading from legacy archive api or non-typed resource
+							if (loadOnDemand && !resource.isLoaded()) {
+								demandLoadHelper(resource);
 							}
-						} else if (uriContentTypeID != null && resourceContentTypeID == null && !resourceExists) {
-							resourcesToRemove.add(resource);
-							continue;
+	
+							if (map != null) {
+								map.put(uri, resource);
+							}
+							return resource;
+						} else {
+							Resource loadedRes = loadWithContentType(resource, uri, map, loadOnDemand, resourcesToRemove);
+							if (loadedRes != null)
+								return loadedRes;
 						}
-								
-						if (map != null && (map.get(uri) == null)) {
-							map.put(uri, resource);
-						}
-						return resource;
 					}
-	    	}
-	      }
-	    }
+				}
+	        }
+		}
+	    synchronized (resourcesLock) {
 	    // Cleanup invalid resources
-	    getResources().removeAll(resourcesToRemove);
+	    	getResources().removeAll(resourcesToRemove);
+	    }
 	    Resource delegatedResource = delegatedGetResource(uri, loadOnDemand);
 	    if (delegatedResource != null)
 	    {
@@ -434,6 +1070,41 @@
 	    return null;
 	  
 	}
+	private Resource loadWithContentType(Resource resource, URI uri, Map<URI, Resource> map, boolean loadOnDemand, List resourcesToRemove) {
+		// content type is known
+		boolean resourceExists = false;
+		IFile file = getPlatformFile(resource);
+		if (file != null)
+			resourceExists = file.exists();
+		String resourceContentTypeID = getContentTypeID(resource);
+		String uriContentTypeID = getContentTypeName(uri);
+		String existingMapKeyType = (findKey(resource) != null) ? getContentTypeName(findKey(resource)) : null;
+		if((!map.containsValue(resource) || ((map.get(uri) != null) && map.get(uri).equals(resource))) // existing resource  with alternate mapping doesn't exist in map
+			||  ((resourceContentTypeID != null && resourceContentTypeID.equals(uriContentTypeID)))) {
+				if (loadOnDemand && !resource.isLoaded()) {
+					demandLoadHelper(resource);
+				} // if embedded uri content type is different than resource content type, continue searching
+				if (resourceContentTypeID != null
+						&& uriContentTypeID != null) {
+					if ((resourceContentTypeID.equals(uriContentTypeID)) && existingMapKeyType == null) return null;
+					if ((!resourceContentTypeID.equals(uriContentTypeID)) || (existingMapKeyType != null && !existingMapKeyType
+							.equals(uriContentTypeID)))
+						return null;
+					else if (existingMapKeyType == null && !resourceExists) {
+						resourcesToRemove.add(resource);
+						return null;
+					}
+				} else if (uriContentTypeID != null && resourceContentTypeID == null && !resourceExists) {
+					resourcesToRemove.add(resource);
+					return null;
+				}		
+				if (map != null && (map.get(uri) == null)) {
+					map.put(uri, resource);
+				}
+				return resource;
+			}
+		return null;
+	}
 	private IFile getPlatformFile(Resource res) {
 		IFile file = null;
 		file = getPlatformFile(res.getURI());
@@ -459,6 +1130,7 @@
 			return desc.getContentType().getId();
 		return null;
 	}
+	
 	private URI findKey(Resource resource) {
 		Map aMap = getURIResourceMap();
 		Set keys = aMap.keySet();
@@ -508,22 +1180,25 @@
 	    
 	    URIConverter theURIConverter = getURIConverter();
 	    URI normalizedURI = theURIConverter.normalize(uri);
-	    for (Resource resource : getResources())
-	    {
-	      if (theURIConverter.normalize(resource.getURI()).equals(normalizedURI))
-	      {
-	        if (loadOnDemand && !resource.isLoaded())
-	        {
-	          demandLoadHelper(resource);
-	        }
+	    synchronized (resourcesLock) {
+	    	List<Resource> c = getImmutableResources();
 	        
-	        if (map != null)
-	        {
-	          map.put(uri, resource);
-	        } 
-	        return resource;
-	      }
-	    }
+	        synchronized(c) {
+	        	
+				for (Resource resource : c) {
+					if (theURIConverter.normalize(resource.getURI()).equals(normalizedURI)) {
+						if (loadOnDemand && !resource.isLoaded()) {
+							demandLoadHelper(resource);
+						}
+	
+						if (map != null) {
+							map.put(uri, resource);
+						}
+						return resource;
+					}
+				}
+	        }
+		}
 	    
 	    Resource delegatedResource = delegatedGetResource(uri, loadOnDemand);
 	    if (delegatedResource != null)
@@ -566,8 +1241,49 @@
 	}
 	
 	protected Resource demandCreateResource(URI uri, Factory resourceFactory) {
-		// TODO Auto-generated method stub
 		return createResource(uri,resourceFactory);
 	}
+	
+	public EList<Resource> getResources() {
+		 return primGetResources();
+	}
+	private EList<Resource> primGetResources() {
+		 if (resources == null)
+		    {
+		      resources = new SynchronizedResourcesEList<Resource>();
+		    }
+		    return resources;
+	}
+	/**
+	 * Creating a copy of the resources list
+	 * @return
+	 */
+	public EList<Resource> getImmutableResources() {
+		 EList<Resource> resources = primGetResources();
+		 return new ImmutableEList<Resource>(resources);
+	}
+	@Override
+	public void eNotify(Notification notification) {
+	    Adapter[] eAdapters = eBasicAdapterArray();
+	    if (eAdapters != null && eDeliver())
+	    {
+	      for (int i = 0, size = eAdapters.length; i < size; ++i)
+	      {
+	      	Adapter temp;
+	    	  if ((temp = eAdapters[i]) != null)
+	    		  temp.notifyChanged(notification);
+	      }
+	    }
+	  }
+
+	@Override
+	public EList eAdapters()
+	{
+		if (eAdapters == null)
+		{
+			eAdapters =  new ESynchronizedAdapterList(this);
+		}
+		return eAdapters;
+	}
 
 }
diff --git a/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/RegistryReader.java b/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/RegistryReader.java
index 37e8277..183f6ce 100644
--- a/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/RegistryReader.java
+++ b/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/RegistryReader.java
@@ -10,46 +10,35 @@
  *******************************************************************************/
 /*
  *  $$RCSfile: RegistryReader.java,v $$
- *  $$Revision: 1.5 $$  $$Date: 2006/05/17 20:13:45 $$ 
+ *  $$Revision: 1.7 $$  $$Date: 2009/08/11 15:30:32 $$ 
  */
 package org.eclipse.jem.util;
 import org.eclipse.core.runtime.*;
 import org.osgi.framework.Bundle;
 
-import org.eclipse.jem.util.logger.proxy.Logger;
-
 
 /**
  * Class to read a registry. It is meant to be subclassed to provide specific function.
  * 
+ * @deprecated Replaced by {@link org.eclipse.wst.common.core.util.RegistryReader)
  * @since 1.0.0
  */
-public abstract class RegistryReader {
+public abstract class RegistryReader extends org.eclipse.wst.common.core.util.RegistryReader {
 
-	String pluginId;
-
-	String extensionPointId;
-
-	private static Bundle systemBundle;
+	public RegistryReader(String pluginID, String extensionPoint) {
+		super(pluginID, extensionPoint);
+	}
 
 	/**
 	 * Utility method to get the plugin id of a configuation element
 	 * 
 	 * @param configurationElement
 	 * @return plugin id of configuration element
+	 * @deprecated Replaced by (@link org.eclipse.wst.common.core.util.RegistryReader.getPluginId())
 	 * @since 1.0.0
 	 */
 	public static String getPluginId(IConfigurationElement configurationElement) {
-		String pluginId = null;
-
-		if (configurationElement != null) {
-			IExtension extension = configurationElement.getDeclaringExtension();
-
-			if (extension != null)
-				pluginId = extension.getContributor().getName();
-		}
-
-		return pluginId;
+		return org.eclipse.wst.common.core.util.RegistryReader.getPluginId(configurationElement);
 	}
 
 	/**
@@ -67,78 +56,17 @@
 	}
 
 	/**
-	 * Constructor for RegistryReader taking the plugin id and extension point id.
-	 * 
-	 * @param pluginID
-	 * @param extensionPoint
-	 * 
-	 * @since 1.0.0
-	 */
-	public RegistryReader(String pluginID, String extensionPoint) {
-		super();
-		this.pluginId = pluginID;
-		extensionPointId = extensionPoint;
-	}
-
-	private void internalReadElement(IConfigurationElement element) {
-		boolean recognized = this.readElement(element);
-		if (!recognized) {
-			logError(element, "Error processing extension: " + element); //$NON-NLS-1$
-		}
-	}
-
-	/*
-	 * Logs the error in the desktop log using the provided text and the information in the configuration element.
-	 */
-	protected void logError(IConfigurationElement element, String text) {
-		IExtension extension = element.getDeclaringExtension();
-		StringBuffer buf = new StringBuffer();
-		buf.append("Plugin " + extension.getContributor().getName() + ", extension " + extension.getExtensionPointUniqueIdentifier()); //$NON-NLS-1$ //$NON-NLS-2$
-		buf.append("\n" + text); //$NON-NLS-1$
-		Logger.getLogger().logError(buf.toString());
-	}
-
-	/*
-	 * Logs a very common registry error when a required attribute is missing.
-	 */
-	protected void logMissingAttribute(IConfigurationElement element, String attributeName) {
-		logError(element, "Required attribute '" + attributeName + "' not defined"); //$NON-NLS-1$ //$NON-NLS-2$
-	}
-
-	/*
-	 * Implement this method to read element attributes. If this element has subelements, the reader will recursively cycle through them and call this
-	 * method so don't do it here.
-	 */
-	public abstract boolean readElement(IConfigurationElement element);
-
-	/**
-	 * Read the extension point and parse it.
-	 * 
-	 * @since 1.0.0
-	 */
-	public void readRegistry() {
-		IExtensionPoint point = Platform.getExtensionRegistry().getExtensionPoint(pluginId, extensionPointId);
-		if (point == null)
-			return;
-		IConfigurationElement[] elements = point.getConfigurationElements();
-		for (int i = 0; i < elements.length; i++) {
-			internalReadElement(elements[i]);
-		}
-	}
-
-	/**
 	 * Tests to see if it is valid at this point in time to create an executable extension. A valid reason not to would be that the workspace is
 	 * shutting donw.
 	 * 
 	 * @param element
 	 * @return <code>true</code> if it is valid point to create an executable extension.
 	 * 
+	 * @deprecated Replaced by (@link org.eclipse.wst.common.core.util.RegistryReader.canCreateExecutableExtension())
 	 * @since 1.0.0
 	 */
 	public static boolean canCreateExecutableExtension(IConfigurationElement element) {
-		if (Platform.isRunning() && getSystemBundle().getState() != Bundle.STOPPING)
-			return true;
-		return false;
+		return org.eclipse.wst.common.core.util.RegistryReader.canCreateExecutableExtension(element);
 	}
 
 	/**
@@ -149,8 +77,6 @@
 	 * @since 1.0.0
 	 */
 	protected static Bundle getSystemBundle() {
-		if (systemBundle == null)
-			systemBundle = Platform.getBundle("org.eclipse.osgi"); //$NON-NLS-1$
-		return systemBundle;
+		return org.eclipse.wst.common.core.util.RegistryReader.getSystemBundle();
 	}
 }
diff --git a/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/UIContextDetermination.java b/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/UIContextDetermination.java
index 8955882..cccd662 100644
--- a/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/UIContextDetermination.java
+++ b/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/UIContextDetermination.java
@@ -10,41 +10,27 @@
  *******************************************************************************/
 /*
  *  $$RCSfile: UIContextDetermination.java,v $$
- *  $$Revision: 1.5 $$  $$Date: 2007/04/10 01:09:36 $$ 
+ *  $$Revision: 1.6 $$  $$Date: 2009/07/30 22:11:23 $$ 
  */
 package org.eclipse.jem.util;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.eclipse.core.runtime.*;
-
-import org.eclipse.jem.util.logger.proxy.Logger;
-import org.eclipse.jem.util.plugin.JEMUtilPlugin;
-
 
 /**
  * Static utility class for UIContext determination.
  * 
+ * @deprecated Replaced by (@link org.eclipse.wst.common.core.util.UIContextDetermination)
  * @since 1.0.0
  */
-public class UIContextDetermination {
+public class UIContextDetermination extends org.eclipse.wst.common.core.util.UIContextDetermination {
 
-	private static final int UNKNOWN = 100;
+	public static final String HEADLESS_CONTEXT_LITERAL = org.eclipse.wst.common.core.util.UIContextDetermination.HEADLESS_CONTEXT_LITERAL;
 
-	public static final String HEADLESS_CONTEXT_LITERAL = "Headless"; //$NON-NLS-1$
+	public static final String UI_CONTEXT_LITERAL = org.eclipse.wst.common.core.util.UIContextDetermination.UI_CONTEXT_LITERAL;
 
-	public static final String UI_CONTEXT_LITERAL = "UI"; //$NON-NLS-1$
+	public static final int HEADLESS_CONTEXT = org.eclipse.wst.common.core.util.UIContextDetermination.HEADLESS_CONTEXT;
 
-	public static final int HEADLESS_CONTEXT = 102;
+	public static final int UI_CONTEXT = org.eclipse.wst.common.core.util.UIContextDetermination.UI_CONTEXT;
 
-	public static final int UI_CONTEXT = 101;
-
-	private static Map cachedExtensions = null;
-
-	private static int currentContext = UNKNOWN;
-
-	private UIContextDetermination() {
-	}
+	private UIContextDetermination(){}
 
 	/**
 	 * Returns an instance of a given class based on the UI or Headless context.
@@ -53,23 +39,10 @@
 	 * @return new class instance for the given key.
 	 * @throws IllegalArgumentException
 	 *             If the key is invalid (e.g. no extension is found for the key)
+	 * @deprecated Replaced by (@link org.eclipse.wst.common.core.util.UIContextDetermination.createInstance())
 	 */
 	public static Object createInstance(String key) {
-		Object result = null;
-		if (cachedExtensions == null)
-			initExtensions();
-		IConfigurationElement contextSensitiveClass = (IConfigurationElement) cachedExtensions.get(key);
-		try {
-			if (contextSensitiveClass != null)
-				result = contextSensitiveClass
-						.createExecutableExtension(UIContextDeterminationRegistryReader.UI_CONTEXT_SENSTIVE_CLASS_CLASSNAME_ATTR);
-		} catch (CoreException e) {
-			Logger.getLogger().logError("Problem loading extension not found for key \"" + key + "\"."); //$NON-NLS-1$ //$NON-NLS-2$
-			Logger.getLogger().logError(e);
-		}
-		if (result == null)
-			Logger.getLogger().logError("Extension not found for key \"" + key + "\"."); //$NON-NLS-1$ //$NON-NLS-2$
-		return result;
+		return org.eclipse.wst.common.core.util.UIContextDetermination.createInstance(key);
 	}
 
 	/**
@@ -78,113 +51,9 @@
 	 * @return current context
 	 * @see #HEADLESS_CONTEXT
 	 * @see #UI_CONTEXT
+	 * @deprecated Replaced by (@link org.eclipse.wst.common.core.util.UIContextDetermination.getCurrentContext())
 	 */
 	public static int getCurrentContext() {
-		if (currentContext == UNKNOWN) {
-			currentContext = HEADLESS_CONTEXT;
-			new UITesterRegistryReader().readRegistry();
-		}
-		return currentContext;
-	}
-
-	/*
-	 * Invokes the UIContextDeterminationRegistryReader to cache all of the extensions, if necessary.
-	 *  
-	 */
-	private static void initExtensions() {
-		if (cachedExtensions == null) {
-			cachedExtensions = new HashMap();
-			new UIContextDeterminationRegistryReader().readRegistry();
-		}
-	}
-
-	/*
-	 * Converts the input to one of UI_CONTEXT or HEADLESS_CONTEXT. Defaults to HEADLESS on invalid input
-	 * 
-	 * @param literal @return
-	 */
-	private static int convertLiteral(String literal) {
-		return (UI_CONTEXT_LITERAL.equals(literal)) ? UI_CONTEXT : HEADLESS_CONTEXT;
-	}
-
-	/*
-	 * Reads the registration of UI Context-sensitive class extensions and initializes the cache of the UIContextDetermination object.
-	 * 
-	 * @author mdelder
-	 */
-	private static class UIContextDeterminationRegistryReader extends RegistryReader {
-
-		public static final String UI_CONTEXT_SENSTIVE_CLASS_ELEMENT = "uiContextSensitiveClass"; //$NON-NLS-1$
-
-		public static final String UI_CONTEXT_SENSTIVE_CLASS_KEY_ATTR = "key"; //$NON-NLS-1$
-
-		public static final String UI_CONTEXT_SENSTIVE_CLASS_CLASSNAME_ATTR = "className"; //$NON-NLS-1$
-
-		public static final String UI_CONTEXT_SENSTIVE_CLASS_CONTEXT_ATTR = "context"; //$NON-NLS-1$
-
-		public UIContextDeterminationRegistryReader() {
-			super(JEMUtilPlugin.PLUGIN_ID, JEMUtilPlugin.UI_CONTEXT_EXTENSION_POINT);
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.jem.util.RegistryReader#readElement(org.eclipse.core.runtime.IConfigurationElement)
-		 */
-		public boolean readElement(IConfigurationElement element) {
-			boolean result = false;
-			if (element.getName().equals(UI_CONTEXT_SENSTIVE_CLASS_ELEMENT)) {
-
-				String key = element.getAttribute(UI_CONTEXT_SENSTIVE_CLASS_KEY_ATTR);
-				String context = element.getAttribute(UI_CONTEXT_SENSTIVE_CLASS_CONTEXT_ATTR);
-
-				if (!cachedExtensions.containsKey(key) || getCurrentContext() == convertLiteral(context))
-					cachedExtensions.put(key, element);
-				result = true;
-			}
-			return result;
-		}
-	}
-
-	/*
-	 * Reads the uiTester extension and instantiate the any of the UITester classes it finds.
-	 * 
-	 * The implementation has the side effect that if multiple UITesters are registered, any of them can trip the currentContext into the UI_CONTEXT
-	 * state.
-	 * 
-	 * @author mdelder
-	 */
-	private static class UITesterRegistryReader extends RegistryReader {
-
-		public static final String UI_TESTER_ELEMENT = "uiTester"; //$NON-NLS-1$
-
-		public static final String UI_TESTER_CLASSNAME_ATTR = "className"; //$NON-NLS-1$
-
-		public UITesterRegistryReader() {
-			super(JEMUtilPlugin.PLUGIN_ID, JEMUtilPlugin.UI_TESTER_EXTENSION_POINT);
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see com.ibm.etools.emf.workbench.RegistryReader#readElement(org.eclipse.core.runtime.IConfigurationElement)
-		 */
-		public boolean readElement(IConfigurationElement element) {
-			boolean result = false;
-			if (element.getName().equals(UI_TESTER_ELEMENT)) {
-				result = true;
-				try {
-					// Don't bother running tester it if we already processed one extension that returned true.
-					if (currentContext != UI_CONTEXT && canCreateExecutableExtension(element)) {
-						UITester tester = (UITester) element.createExecutableExtension(UI_TESTER_CLASSNAME_ATTR);
-						if (tester.isCurrentContextUI())
-							currentContext = UI_CONTEXT;
-					}
-				} catch (Exception t) {
-					Logger.getLogger().log("UIContextDetermination is proceeding in HEADLESS mode"); //$NON-NLS-1$
-				}
-			}
-			return result;
-		}
+		return org.eclipse.wst.common.core.util.UIContextDetermination.getCurrentContext();
 	}
 }
\ No newline at end of file
diff --git a/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/UITester.java b/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/UITester.java
index 54517e8..cd1b235 100644
--- a/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/UITester.java
+++ b/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/UITester.java
@@ -9,23 +9,13 @@
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
-/*
- *  $$RCSfile: UITester.java,v $$
- *  $$Revision: 1.2 $$  $$Date: 2005/02/15 23:04:14 $$ 
- */
+
 /**
  * Interface for a UITester. The "classname" attribute on the "uiTester" extension point should implement this class.
- * 
+ *
+ * @deprecated Replaced by {@link org.eclipse.wst.common.core.util.UITester)
  * @since 1.0.0
  */
-public interface UITester {
+public interface UITester extends org.eclipse.wst.common.core.util.UITester {
 
-	/**
-	 * Answer if the current context is an UI context.
-	 * 
-	 * @return <code>true</code> if an UI context.
-	 * 
-	 * @since 1.0.0
-	 */
-	public boolean isCurrentContextUI();
 }
\ No newline at end of file
diff --git a/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/emf/workbench/ResourceSetWorkbenchSynchronizer.java b/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/emf/workbench/ResourceSetWorkbenchSynchronizer.java
index 1cec597..02b5054 100644
--- a/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/emf/workbench/ResourceSetWorkbenchSynchronizer.java
+++ b/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/emf/workbench/ResourceSetWorkbenchSynchronizer.java
@@ -10,13 +10,12 @@
  *******************************************************************************/
 /*
  *  $$RCSfile: ResourceSetWorkbenchSynchronizer.java,v $$
- *  $$Revision: 1.4 $$  $$Date: 2006/05/17 20:13:45 $$ 
+ *  $$Revision: 1.9 $$  $$Date: 2010/05/12 22:47:45 $$ 
  */
 
 package org.eclipse.jem.util.emf.workbench;
 
-import java.util.ArrayList;
-import java.util.List;
+import java.util.*;
 
 import org.eclipse.core.resources.*;
 import org.eclipse.emf.ecore.resource.ResourceSet;
@@ -37,7 +36,109 @@
 	protected ResourceSet resourceSet;
 
 	/** Extenders that will be notified after a pre build resource change */
-	protected List extenders;
+	protected QueuingHashSet <ISynchronizerExtender> extenders;
+
+	/**
+	 * This HashSet is similar to a regular HashSet except it can be put in
+	 * queuing mode with a call to the {@link #startQueuing()} method.
+	 * While in queuing mode any adds or removes will not be committed to 
+	 * the set until a call to {@link #stopQueuing()} is made. This allows
+	 * the QueuingHasSet to be put in queuing mode prior to iterating over
+	 * the contents without needing to worry about changes coming in and
+	 * throwing ConcurrentModificationExceptions.
+	 * 
+	 * @author jsholl
+	 *
+	 * @param <E>
+	 */
+	protected class QueuingHashSet <E> extends HashSet <E> {
+
+		private static final long serialVersionUID = 6959354060950816784L;
+	
+		private Object lock = new Object();
+		
+		private boolean queuing = false;
+		private Set <E> addQueue = null;
+		private Set removeQueue = null;
+		private int initialCapacity = 3;
+		
+		public QueuingHashSet(int capacity) {
+			super(capacity);
+			addQueue = new HashSet<E>(capacity);
+			removeQueue = new HashSet(capacity);
+			initialCapacity = capacity;
+		}
+
+		public void startQueuing() {
+			synchronized(lock){
+				if(queuing){
+					throw new UnsupportedOperationException("startQueuing may only be called while not already queuing");
+				}
+				this.queuing = true;
+				addQueue.clear();
+				removeQueue.clear();
+			}
+		}
+
+		/**
+		 * Returns the set of adds which occurred while in queuing mode.
+		 * @return
+		 */
+		public Set <E> stopQueuing() {
+			synchronized(lock){
+				if(!queuing){
+					throw new UnsupportedOperationException("stopQueuing may only be called while queuing");
+				}
+				queuing = false;
+				removeAll(removeQueue);
+				addAll(addQueue);
+				if(!addQueue.isEmpty()){
+					Set <E> queue = addQueue;
+					addQueue = new HashSet<E>(initialCapacity);
+					return queue;
+				}
+				return Collections.emptySet();
+			}
+		}
+		
+		@Override
+		public boolean add(E object) {
+			synchronized (lock) {
+				if(queuing){
+					if(contains(object)){
+						return false;
+					}
+					return addQueue.add(object);
+				} else{
+					return super.add(object);
+				}
+			}
+		}
+		
+		@Override
+		public boolean remove(Object object) {
+			synchronized (lock) {
+				if(queuing){
+					if(contains(object)){
+						return removeQueue.add(object);
+					} else {
+						return false;
+					}
+				} else {
+					return super.remove(object);
+				}
+			}
+		}
+		
+		@Override
+		public boolean isEmpty() {
+			synchronized (lock) {
+				return super.isEmpty();	
+			}
+		}
+		
+	};
+	
 
 	/** The delta for this project that will be broadcast to the extenders */
 	protected IResourceDelta currentProjectDelta;
@@ -86,19 +187,37 @@
 
 
 	protected void notifyExtendersIfNecessary() {
-		if (currentEventType != IResourceChangeEvent.POST_CHANGE || extenders == null || currentProjectDelta == null)
+		if (currentEventType != IResourceChangeEvent.POST_CHANGE || currentProjectDelta == null)
 			return;
-		for (int i = 0; i < extenders.size(); i++) {
-			ISynchronizerExtender extender = (ISynchronizerExtender) extenders.get(i);
-			extender.projectChanged(currentProjectDelta);
+		if(extenders != null){
+			Set <ISynchronizerExtender> extendersToNotify = extenders;
+			while(!extendersToNotify.isEmpty()){
+				try{
+					extenders.startQueuing();
+					for (Iterator <ISynchronizerExtender> iterator = extendersToNotify.iterator(); iterator.hasNext();) {
+						ISynchronizerExtender extender = iterator.next();
+						extender.projectChanged(currentProjectDelta);
+					}
+				} finally {
+					extendersToNotify = extenders.stopQueuing();
+				}
+			}
 		}
 	}
 
 	protected void notifyExtendersOfClose() {
-		if (extenders != null && !extenders.isEmpty()) {
-			for (int i = 0; i < extenders.size(); i++) {
-				ISynchronizerExtender extender = (ISynchronizerExtender) extenders.get(i);
-				extender.projectClosed();
+		if(extenders != null){
+			Set <ISynchronizerExtender> extendersToNotify = extenders;
+			while(!extendersToNotify.isEmpty()){
+				try{
+					extenders.startQueuing();
+					for (Iterator <ISynchronizerExtender> iterator = extendersToNotify.iterator(); iterator.hasNext();) {
+						ISynchronizerExtender extender = iterator.next();
+						extender.projectClosed();
+					}
+				} finally {
+					extendersToNotify = extenders.stopQueuing();
+				}
 			}
 		}
 	}
@@ -147,8 +266,9 @@
 	 * @since 1.0.0
 	 */
 	public void addExtender(ISynchronizerExtender extender) {
-		if (extenders == null)
-			extenders = new ArrayList(3);
+		if (extenders == null){
+			extenders = new QueuingHashSet <ISynchronizerExtender>(3);
+		}
 		extenders.add(extender);
 	}
 
diff --git a/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/logger/proxyrender/AbstractWorkBenchRenderer.java b/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/logger/proxyrender/AbstractWorkBenchRenderer.java
index b2c1473..15a544f 100644
--- a/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/logger/proxyrender/AbstractWorkBenchRenderer.java
+++ b/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/logger/proxyrender/AbstractWorkBenchRenderer.java
@@ -24,6 +24,7 @@
 
 
 /**
+ * @deprecated Plugin error logging should be used instead
  * Base log renderer that logs to the workbench.
  * 
  * @since 1.1.0
diff --git a/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/logger/proxyrender/ConsoleLogRenderer.java b/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/logger/proxyrender/ConsoleLogRenderer.java
index 0810e2d..bfdcaba 100644
--- a/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/logger/proxyrender/ConsoleLogRenderer.java
+++ b/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/logger/proxyrender/ConsoleLogRenderer.java
@@ -21,6 +21,7 @@
 
 
 /**
+ * @deprecated Plugin error logging should be used instead
  * Log renderer to the console.
  * 
  * @since 1.0.0
diff --git a/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/logger/proxyrender/DefaultPluginTraceRenderer.java b/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/logger/proxyrender/DefaultPluginTraceRenderer.java
index 0473318..c42faa6 100644
--- a/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/logger/proxyrender/DefaultPluginTraceRenderer.java
+++ b/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/logger/proxyrender/DefaultPluginTraceRenderer.java
@@ -23,6 +23,7 @@
 
 
 /**
+ * @deprecated Plugin error logging should be used instead
  * Logger that also logs to a trace file in the plugin's metadata area.
  * 
  * @since 1.0.0
diff --git a/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/logger/proxyrender/EclipseLogger.java b/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/logger/proxyrender/EclipseLogger.java
index 8591267..85f56ca 100644
--- a/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/logger/proxyrender/EclipseLogger.java
+++ b/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/logger/proxyrender/EclipseLogger.java
@@ -25,6 +25,7 @@
 
  
 /**
+ * @deprecated Plugin error logging should be used instead
  * Get an Eclipse logger. This gets a logger that knows it is for a plugin. 
  * 
  * For each plugin, the following can be specified in the .option file:
diff --git a/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/logger/proxyrender/IMsgLogger.java b/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/logger/proxyrender/IMsgLogger.java
index 58f45d5..4ad5024 100644
--- a/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/logger/proxyrender/IMsgLogger.java
+++ b/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/logger/proxyrender/IMsgLogger.java
@@ -17,6 +17,7 @@
 import org.eclipse.jem.util.logger.proxy.Logger;
 
 /**
+ * @deprecated Plugin error logging should be used instead
  * Interface for a message logger.
  * 
  * @since 1.0.0
diff --git a/plugins/org.eclipse.jst.common.ui/.classpath b/plugins/org.eclipse.jst.common.ui/.classpath
new file mode 100644
index 0000000..64c5e31
--- /dev/null
+++ b/plugins/org.eclipse.jst.common.ui/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/plugins/org.eclipse.jst.common.ui/.project b/plugins/org.eclipse.jst.common.ui/.project
new file mode 100644
index 0000000..b886d27
--- /dev/null
+++ b/plugins/org.eclipse.jst.common.ui/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.jst.common.ui</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/plugins/org.eclipse.jst.common.ui/.settings/org.eclipse.jdt.core.prefs b/plugins/org.eclipse.jst.common.ui/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..bf02908
--- /dev/null
+++ b/plugins/org.eclipse.jst.common.ui/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,74 @@
+#Fri Sep 11 19:24:47 PDT 2009
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=ignore
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=error
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=error
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=error
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=error
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
+org.eclipse.jdt.core.compiler.problem.nullReference=ignore
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=error
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=error
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=error
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=ignore
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=warning
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=error
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedImport=error
+org.eclipse.jdt.core.compiler.problem.unusedLabel=error
+org.eclipse.jdt.core.compiler.problem.unusedLocal=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=ignore
+org.eclipse.jdt.core.compiler.source=1.5
diff --git a/plugins/org.eclipse.jst.common.ui/META-INF/MANIFEST.MF b/plugins/org.eclipse.jst.common.ui/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..2ef693d
--- /dev/null
+++ b/plugins/org.eclipse.jst.common.ui/META-INF/MANIFEST.MF
@@ -0,0 +1,22 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %Bundle-Name.0
+Bundle-Vendor: %provider
+Bundle-SymbolicName: org.eclipse.jst.common.ui;singleton:=true
+Bundle-Version: 1.0.200.qualifier
+Bundle-Localization: plugin
+Bundle-Activator: org.eclipse.jst.common.ui.internal.JstCommonUIPlugin
+Require-Bundle: org.eclipse.ui;bundle-version="[3.5.0,4.0.0)",
+ org.eclipse.core.runtime;bundle-version="[3.5.0,4.0.0)",
+ org.eclipse.jdt.core;bundle-version="[3.5.0,4.0.0)",
+ org.eclipse.jdt.ui;bundle-version="[3.5.0,4.0.0)",
+ org.eclipse.wst.common.modulecore;bundle-version="[1.1.300,2.0.0)",
+ org.eclipse.wst.common.modulecore.ui;bundle-version="[1.0.0,2.0.0)",
+ org.eclipse.core.resources;bundle-version="[3.5.0,4.0.0)",
+ org.eclipse.jst.common.frameworks;bundle-version="1.1.400",
+ org.eclipse.wst.common.frameworks;bundle-version="1.2.0",
+ org.eclipse.ui.ide;bundle-version="[3.2.0,4.0.0)"
+Bundle-ActivationPolicy: lazy
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Export-Package: org.eclipse.jst.common.ui.internal;x-internal:=true,
+ org.eclipse.jst.common.ui.internal.assembly.wizard;x-internal:=true
diff --git a/plugins/org.eclipse.jst.common.ui/about.html b/plugins/org.eclipse.jst.common.ui/about.html
new file mode 100644
index 0000000..b6ed5b0
--- /dev/null
+++ b/plugins/org.eclipse.jst.common.ui/about.html
@@ -0,0 +1,34 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<HTML>
+
+<head>
+<title>About</title>
+<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
+</head>
+
+<BODY lang="EN-US">
+
+<H3>About This Content</H3>
+
+<P>August, 2009</P>
+
+<H3>License</H3>
+
+<P>The Eclipse Foundation makes available all content in this plug-in 
+("Content"). Unless otherwise indicated below, the Content is provided to you 
+under the terms and conditions of the Eclipse Public License Version 1.0 
+("EPL"). A copy of the EPL is available at
+<A href="http://www.eclipse.org/org/documents/epl-v10.php">http://www.eclipse.org/org/documents/epl-v10.php</A>. 
+For purposes of the EPL, "Program" will mean the Content.</P>
+
+<P>If you did not receive this Content directly from the Eclipse Foundation, the 
+Content is being redistributed by another party ("Redistributor") and different 
+terms and conditions may apply to your use of any object code in the Content. 
+Check the Redistributor’s license that was provided with the Content. If no such 
+license exists, contact the Redistributor. Unless otherwise indicated below, the 
+terms and conditions of the EPL still apply to any source code in the Content 
+and such source code may be obtained at
+<A href="http://www.eclipse.org/">http://www.eclipse.org/</A>.</P>
+
+</BODY>
+</HTML>
diff --git a/plugins/org.eclipse.jst.common.ui/build.properties b/plugins/org.eclipse.jst.common.ui/build.properties
new file mode 100644
index 0000000..4b147f0
--- /dev/null
+++ b/plugins/org.eclipse.jst.common.ui/build.properties
@@ -0,0 +1,18 @@
+###############################################################################
+# Copyright (c) 2009 IBM Corporation and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+# IBM Corporation - initial API and implementation
+###############################################################################
+source.. = src/
+output.. = bin/
+bin.includes = plugin.xml,\
+               .,\
+               icons/,\
+               META-INF/,\
+               about.html,\
+               plugin.properties
diff --git a/plugins/org.eclipse.jst.common.ui/icons/jar_obj.gif b/plugins/org.eclipse.jst.common.ui/icons/jar_obj.gif
new file mode 100644
index 0000000..2fa1d77
--- /dev/null
+++ b/plugins/org.eclipse.jst.common.ui/icons/jar_obj.gif
Binary files differ
diff --git a/plugins/org.eclipse.jst.common.ui/icons/manifest-classpath-banner.png b/plugins/org.eclipse.jst.common.ui/icons/manifest-classpath-banner.png
new file mode 100644
index 0000000..7c3e208
--- /dev/null
+++ b/plugins/org.eclipse.jst.common.ui/icons/manifest-classpath-banner.png
Binary files differ
diff --git a/plugins/org.eclipse.jst.common.ui/icons/util-wiz-icon.gif b/plugins/org.eclipse.jst.common.ui/icons/util-wiz-icon.gif
new file mode 100644
index 0000000..2038b22
--- /dev/null
+++ b/plugins/org.eclipse.jst.common.ui/icons/util-wiz-icon.gif
Binary files differ
diff --git a/plugins/org.eclipse.jst.common.ui/plugin.properties b/plugins/org.eclipse.jst.common.ui/plugin.properties
new file mode 100644
index 0000000..f0ba4b0
--- /dev/null
+++ b/plugins/org.eclipse.jst.common.ui/plugin.properties
@@ -0,0 +1,16 @@
+###############################################################################
+# Copyright (c) 2009 IBM Corporation and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+# IBM Corporation - initial API and implementation
+###############################################################################
+provider=Eclipse.org
+
+Bundle-Name.0 = Common JST UI Plug-in
+Archive=Archives from Workspace
+External_Archive=Archives from File System
+Variable=Archive via Path Variable
diff --git a/plugins/org.eclipse.jst.common.ui/plugin.xml b/plugins/org.eclipse.jst.common.ui/plugin.xml
new file mode 100644
index 0000000..16e598f
--- /dev/null
+++ b/plugins/org.eclipse.jst.common.ui/plugin.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+
+    <extension
+          point="org.eclipse.wst.common.modulecore.ui.referenceWizardFragment">
+       <referenceFragment
+             class="org.eclipse.jst.common.ui.internal.assembly.wizard.JarReferenceWizardFragment"
+             icon="icons/jar_obj.gif"
+             id="org.eclipse.jst.common.ui.jarReference"
+             name="%Archive">
+       </referenceFragment>
+       <referenceFragment
+             class="org.eclipse.jst.common.ui.internal.assembly.wizard.ExternalJarReferenceWizardFragment"
+             icon="icons/jar_obj.gif"
+             id="org.eclipse.jst.common.ui.externalJarReference"
+             name="%External_Archive">
+       </referenceFragment>
+       <referenceFragment
+             class="org.eclipse.jst.common.ui.internal.assembly.wizard.VariableReferenceWizardFragment"
+             icon="icons/jar_obj.gif"
+             id="org.eclipse.jst.common.ui.variableReference"
+             name="%Variable">
+       </referenceFragment>
+    </extension>
+    <extension point="org.eclipse.wst.common.modulecore.ui.virtualComponentLabelProvider">
+       <provider class="org.eclipse.jst.common.ui.internal.assembly.wizard.ClasspathContainerRefLabelProvider" weight="3"/>
+    </extension>       
+</plugin>
diff --git a/plugins/org.eclipse.jst.common.ui/src/org/eclipse/jst/common/ui/internal/IJstCommonUIConstants.java b/plugins/org.eclipse.jst.common.ui/src/org/eclipse/jst/common/ui/internal/IJstCommonUIConstants.java
new file mode 100644
index 0000000..bb14fb7
--- /dev/null
+++ b/plugins/org.eclipse.jst.common.ui/src/org/eclipse/jst/common/ui/internal/IJstCommonUIConstants.java
@@ -0,0 +1,19 @@
+/*******************************************************************************
+ * Copyright (c) 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jst.common.ui.internal;
+
+
+/**
+ * @author: Aidyl Kareh
+ */
+public interface IJstCommonUIConstants {
+	public static final String DIALOGSTORE_LASTEXTARCHIVE= JstCommonUIPlugin.PLUGIN_ID + ".lastextarchive"; //$NON-NLS-1$
+}
diff --git a/plugins/org.eclipse.jst.common.ui/src/org/eclipse/jst/common/ui/internal/IJstCommonUIContextIds.java b/plugins/org.eclipse.jst.common.ui/src/org/eclipse/jst/common/ui/internal/IJstCommonUIContextIds.java
new file mode 100644
index 0000000..a04afad
--- /dev/null
+++ b/plugins/org.eclipse.jst.common.ui/src/org/eclipse/jst/common/ui/internal/IJstCommonUIContextIds.java
@@ -0,0 +1,22 @@
+/*******************************************************************************
+ * Copyright (c) 2003, 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jst.common.ui.internal;
+
+/**
+ * @author: Aidyl Kareh
+ */
+public interface IJstCommonUIContextIds {
+	//	 New references wizards
+	public static final String DEPLOYMENT_ASSEMBLY_NEW_VARIABLE_REFERENCE_P1 = JstCommonUIPlugin.PLUGIN_ID + ".DEPLOYMENT_ASSEMBLY_NEW_VARIABLE_REFERENCE_P1"; //$NON-NLS-1$
+	public static final String DEPLOYMENT_ASSEMBLY_NEW_EXTERNAL_ARCHIVE_REFERENCE_P1 = JstCommonUIPlugin.PLUGIN_ID + ".DEPLOYMENT_ASSEMBLY_NEW_EXTERNAL_ARCHIVE_REFERENCE_P1"; //$NON-NLS-1$
+	public static final String DEPLOYMENT_ASSEMBLY_NEW_ARCHIVE_REFERENCE_P1 = JstCommonUIPlugin.PLUGIN_ID + ".DEPLOYMENT_ASSEMBLY_NEW_ARCHIVE_REFERENCE_P1"; //$NON-NLS-1$
+	public static final String DEPLOYMENT_ASSEMBLY_PREFERENCE_PAGE_MANIFEST_ENTRIES_TAB = JstCommonUIPlugin.PLUGIN_ID + ".DEPLOYMENT_ASSEMBLY_PREFERENCE_PAGE_MANIFEST_ENTRIES_TAB"; //$NON-NLS-1$
+}
diff --git a/plugins/org.eclipse.jst.common.ui/src/org/eclipse/jst/common/ui/internal/JstCommonUIPlugin.java b/plugins/org.eclipse.jst.common.ui/src/org/eclipse/jst/common/ui/internal/JstCommonUIPlugin.java
new file mode 100644
index 0000000..57b9ef0
--- /dev/null
+++ b/plugins/org.eclipse.jst.common.ui/src/org/eclipse/jst/common/ui/internal/JstCommonUIPlugin.java
@@ -0,0 +1,60 @@
+/*******************************************************************************
+ * Copyright (c) 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jst.common.ui.internal;
+
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class JstCommonUIPlugin extends AbstractUIPlugin {
+
+	// The plug-in ID
+	public static final String PLUGIN_ID = "org.eclipse.jst.common.ui"; //$NON-NLS-1$
+
+	// The shared instance
+	private static JstCommonUIPlugin plugin;
+	
+	/**
+	 * The constructor
+	 */
+	public JstCommonUIPlugin() {
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
+	 */
+	public void start(BundleContext context) throws Exception {
+		super.start(context);
+		plugin = this;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
+	 */
+	public void stop(BundleContext context) throws Exception {
+		plugin = null;
+		super.stop(context);
+	}
+
+	/**
+	 * Returns the shared instance
+	 *
+	 * @return the shared instance
+	 */
+	public static JstCommonUIPlugin getDefault() {
+		return plugin;
+	}
+
+}
diff --git a/plugins/org.eclipse.jst.common.ui/src/org/eclipse/jst/common/ui/internal/Messages.java b/plugins/org.eclipse.jst.common.ui/src/org/eclipse/jst/common/ui/internal/Messages.java
new file mode 100644
index 0000000..e45fd48
--- /dev/null
+++ b/plugins/org.eclipse.jst.common.ui/src/org/eclipse/jst/common/ui/internal/Messages.java
@@ -0,0 +1,46 @@
+/*******************************************************************************
+ * Copyright (c) 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jst.common.ui.internal;
+
+import org.eclipse.osgi.util.NLS;
+
+public class Messages extends NLS {
+	private static final String BUNDLE_NAME = "org.eclipse.jst.common.ui.internal"; //$NON-NLS-1$
+	public static String ArchiveTitle;
+	public static String ArchiveDescription;
+	public static String ExternalArchiveTitle;
+	public static String ExternalArchiveDescription;
+	public static String ArchiveDialogNewTitle;
+	public static String ArchiveDialogNewDescription;
+	public static String Browse;
+	public static String VariableReferenceTitle;
+	public static String VariableReferenceDescription;
+	public static String AddManifestEntryTaskWizardTitle;
+	public static String AddManifestEntryTaskWizardDesc;
+	public static String ParentProject;
+	public static String CustomEntryButton;
+	public static String Add;
+	public static String Remove;
+	public static String MoveUp;
+	public static String MoveDown;
+	public static String ManifestEntryColumn;
+	public static String ManifestEntrySourceColumn;
+	public static String ConfigureParentLink;
+	public static String InvalidArchivesWarning;
+	
+	static {
+		// initialize resource bundle
+		NLS.initializeMessages(BUNDLE_NAME + ".messages", Messages.class); //$NON-NLS-1$
+	}
+
+	private Messages() {
+	}
+}
diff --git a/plugins/org.eclipse.jst.common.ui/src/org/eclipse/jst/common/ui/internal/assembly/wizard/AddManifestEntryTaskWizard.java b/plugins/org.eclipse.jst.common.ui/src/org/eclipse/jst/common/ui/internal/assembly/wizard/AddManifestEntryTaskWizard.java
new file mode 100644
index 0000000..65ee3d2
--- /dev/null
+++ b/plugins/org.eclipse.jst.common.ui/src/org/eclipse/jst/common/ui/internal/assembly/wizard/AddManifestEntryTaskWizard.java
@@ -0,0 +1,238 @@
+/******************************************************************************
+ * Copyright (c) 2010 Red Hat and Others
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Rob Stryker - initial implementation and ongoing maintenance
+ *    Konstantin Komissarchik - misc. UI cleanup
+ ******************************************************************************/
+package org.eclipse.jst.common.ui.internal.assembly.wizard;
+
+import java.lang.reflect.InvocationTargetException;
+import java.util.ArrayList;
+import java.util.Arrays;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.jface.preference.PreferenceDialog;
+import org.eclipse.jface.viewers.ArrayContentProvider;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jst.common.internal.modulecore.util.JavaModuleComponentUtility;
+import org.eclipse.jst.common.ui.internal.JstCommonUIPlugin;
+import org.eclipse.jst.common.ui.internal.Messages;
+import org.eclipse.jst.common.ui.internal.assembly.wizard.ManifestModuleDependencyControl.ManifestLabelProvider;
+import org.eclipse.osgi.util.NLS;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Link;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.internal.IWorkbenchGraphicConstants;
+import org.eclipse.ui.internal.WorkbenchImages;
+import org.eclipse.ui.internal.dialogs.PropertyDialog;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.eclipse.wst.common.componentcore.ComponentCore;
+import org.eclipse.wst.common.componentcore.internal.impl.TaskModel;
+import org.eclipse.wst.common.componentcore.resources.IVirtualReference;
+import org.eclipse.wst.common.componentcore.ui.internal.taskwizard.IWizardHandle;
+import org.eclipse.wst.common.componentcore.ui.internal.taskwizard.TaskWizard;
+import org.eclipse.wst.common.componentcore.ui.internal.taskwizard.WizardFragment;
+
+public class AddManifestEntryTaskWizard extends TaskWizard {
+	public static final String PARENT_PROJECT = "PARENT_PROJECT"; // data model key //$NON-NLS-1$
+	public static final String CHILD_PROJECT = "CHILD_PROJECT"; // data model key //$NON-NLS-1$
+	public static final String CURRENT_REFERENCES = "CURRENT_REFERENCES"; // data model key for return val //$NON-NLS-1$
+	public static final String RETURNED_REFERENCES = "RETURNED_REFERENCES"; // data model key for return val //$NON-NLS-1$
+	public AddManifestEntryTaskWizard() {
+		super(Messages.AddManifestEntryTaskWizardTitle, new ManifestRootFragment());
+	}
+	
+	public static class ManifestRootFragment extends WizardFragment {
+		private TableViewer viewer;
+		private Button addCustom;
+		private Text customEntryText;
+		protected IProject parentProject, childProject;
+		private IVirtualReference[] selected;
+		private ShowPossibleManifestEntryContentProvider contentProvider;
+		private Link parentContainerLink;
+		public boolean hasComposite() {
+			return true;
+		}
+		private void updateWidgets() throws InvocationTargetException {
+		
+			viewer.setInput(ResourcesPlugin.getWorkspace());
+			viewer.refresh();
+		}
+		
+		private static GridLayout glayout( final int columns )
+		{
+			final GridLayout gl = new GridLayout( columns, false );
+			gl.marginWidth = 0;
+			gl.marginHeight = 0;
+			
+			return gl;
+		}
+		
+		public Composite createComposite(Composite parent, IWizardHandle handle) {
+			parentProject = (IProject)getTaskModel().getObject(PARENT_PROJECT);
+			childProject = (IProject)getTaskModel().getObject(CHILD_PROJECT);
+			handle.setTitle(Messages.AddManifestEntryTaskWizardTitle);
+			handle.setDescription(NLS.bind(Messages.AddManifestEntryTaskWizardDesc, parentProject.getName()));
+			handle.setImageDescriptor(WorkbenchImages.getImageDescriptor(IWorkbenchGraphicConstants.IMG_WIZBAN_EXPORT_WIZ));
+			handle.setImageDescriptor( AbstractUIPlugin.imageDescriptorFromPlugin( JstCommonUIPlugin.PLUGIN_ID, "icons/manifest-classpath-banner.png" ) );
+			
+			Composite root = new Composite(parent, SWT.NONE);
+			root.setLayout(glayout(1));
+			
+			viewer = ManifestModuleDependencyControl.createManifestReferenceTableViewer(root, SWT.MULTI);
+			final GridData gData = new GridData(GridData.FILL_BOTH);
+			gData.heightHint = 350;
+			viewer.getTable().setLayoutData(gData);
+			contentProvider = new ShowPossibleManifestEntryContentProvider(parentProject, childProject, getTaskModel());
+			viewer.setContentProvider(contentProvider);
+			viewer.setLabelProvider(new ManifestLabelProvider());
+			viewer.setInput(ResourcesPlugin.getWorkspace());
+			viewer.addSelectionChangedListener(new ISelectionChangedListener() {
+				public void selectionChanged(SelectionChangedEvent event) {
+					viewerSelectionChanged();
+				}
+			});
+			
+			final Composite customEntryComposite = new Composite(root,SWT.NONE);
+			customEntryComposite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+			customEntryComposite.setLayout(glayout(2));
+			
+			customEntryText = new Text(customEntryComposite, SWT.BORDER);
+			customEntryText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+			customEntryText.addModifyListener(new ModifyListener() {
+				public void modifyText(ModifyEvent e) {
+					if(customEntryText.getText() == null || customEntryText.getText().trim().length() == 0 || new Path(customEntryText.getText().trim()).makeRelative().toString().length() == 0)
+						addCustom.setEnabled(false);
+					else
+						addCustom.setEnabled(true);
+				} 
+			});
+			
+			addCustom = new Button(customEntryComposite, SWT.PUSH);
+			addCustom.setLayoutData(new GridData());
+			addCustom.setText(Messages.CustomEntryButton);
+			addCustom.addSelectionListener(new SelectionListener() {
+				public void widgetSelected(SelectionEvent e) {
+					addCustomPressed();
+				}
+				public void widgetDefaultSelected(SelectionEvent e) {
+				}
+			});
+			addCustom.setEnabled(false);
+			
+			createConfigLink(root);
+			parentContainerLink.setLayoutData(new GridData());
+			
+			return root;
+		}
+		
+		private void addCustomPressed() {
+			IVirtualReference ref = ManifestModuleDependencyControl.createDummyReference(
+					new Path(customEntryText.getText()).toString(), parentProject, ComponentCore.createComponent(parentProject));
+			contentProvider.addPossibleReference(ref);
+			customEntryText.setText(""); //$NON-NLS-1$
+			addCustom.setEnabled(false);
+			viewer.refresh();
+		}
+		
+		private void viewerSelectionChanged() {
+			IStructuredSelection sel = (IStructuredSelection)viewer.getSelection();
+			Object[] obj = sel.toArray();
+			IVirtualReference[] ret = new IVirtualReference[obj.length];
+			for( int i = 0; i < ret.length; i++ ) {
+				ret[i] = (IVirtualReference)obj[i];
+			}
+			selected = ret;
+		}
+		
+		private void createConfigLink(Composite aGroup){
+			parentContainerLink = new Link(aGroup,SWT.None);
+			parentContainerLink.setText("<A>"+ //$NON-NLS-1$
+					Messages.ConfigureParentLink+"</A>"); //$NON-NLS-1$
+			parentContainerLink.addSelectionListener(new SelectionListener() {
+				
+				public void doLinkActivated(Link e) {
+					IProject parentProject = ManifestRootFragment.this.parentProject;
+					PreferenceDialog dialog = PropertyDialog.createDialogOn(ManifestRootFragment.this.getPage().getControl().getShell(),
+							"org.eclipse.wst.common.componentcore.ui.DeploymentAssemblyPage", parentProject); //$NON-NLS-1$
+					if (dialog != null) {
+						dialog.open();
+					}
+					try {
+						updateWidgets();
+					} catch (InvocationTargetException ie) {
+
+					}
+				}
+
+				public void widgetDefaultSelected(SelectionEvent e) {
+					doLinkActivated((Link) e.widget);					
+				}
+
+				public void widgetSelected(SelectionEvent e) {
+					doLinkActivated((Link) e.widget);					
+				}
+			});
+			
+		}
+		
+		
+		// just return the selected refs
+		public void performFinish(IProgressMonitor monitor) throws CoreException {
+			getTaskModel().putObject(RETURNED_REFERENCES, selected);
+		}
+	}
+	
+	public static class ShowPossibleManifestEntryContentProvider extends ArrayContentProvider {
+		private IProject parent, child;
+		private TaskModel model;
+		private IVirtualReference[] possible;
+		public ShowPossibleManifestEntryContentProvider(IProject parent, IProject child, TaskModel taskModel) {
+			this.parent = parent;
+			this.child = child;
+			this.model = taskModel;
+		}
+		public Object[] getElements(Object inputElement) {
+			if( possible == null ) {
+				IVirtualReference[] current = (IVirtualReference[])model.getObject(CURRENT_REFERENCES);
+				possible = JavaModuleComponentUtility.findPossibleManifestEntries(parent, child, current);
+			}
+			return possible;
+		}
+		public void addPossibleReference(IVirtualReference ref) {
+			ArrayList<IVirtualReference> newRefs = new ArrayList<IVirtualReference>();
+			newRefs.addAll(Arrays.asList(possible));
+			newRefs.add(ref);
+			possible = newRefs.toArray(new IVirtualReference[newRefs.size()]);
+		}
+		@Override
+		public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+			if (newInput != null) {
+				possible = null;
+				viewer.refresh();
+			}
+		}
+		
+	}
+}
diff --git a/plugins/org.eclipse.jst.common.ui/src/org/eclipse/jst/common/ui/internal/assembly/wizard/ClasspathContainerRefLabelProvider.java b/plugins/org.eclipse.jst.common.ui/src/org/eclipse/jst/common/ui/internal/assembly/wizard/ClasspathContainerRefLabelProvider.java
new file mode 100644
index 0000000..2238a8c
--- /dev/null
+++ b/plugins/org.eclipse.jst.common.ui/src/org/eclipse/jst/common/ui/internal/assembly/wizard/ClasspathContainerRefLabelProvider.java
@@ -0,0 +1,58 @@
+/******************************************************************************
+ * Copyright (c) 2009 Red Hat
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Rob Stryker - initial implementation and ongoing maintenance
+ ******************************************************************************/
+package org.eclipse.jst.common.ui.internal.assembly.wizard;
+
+import java.net.MalformedURLException;
+import java.net.URL;
+
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jst.common.internal.modulecore.ClasspathContainerVirtualComponent;
+import org.eclipse.jst.common.ui.internal.JstCommonUIPlugin;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.wst.common.componentcore.resources.IVirtualComponent;
+import org.eclipse.wst.common.componentcore.ui.internal.propertypage.IVirtualComponentLabelProvider;
+
+public class ClasspathContainerRefLabelProvider implements
+		IVirtualComponentLabelProvider {
+
+	public ClasspathContainerRefLabelProvider() {
+		// TODO Auto-generated constructor stub
+	}
+
+	public boolean canHandle(IVirtualComponent component) {
+		return (component instanceof ClasspathContainerVirtualComponent);
+	}
+
+	public String getSourceText(IVirtualComponent component) {
+		return ((ClasspathContainerVirtualComponent)component).getClasspathContainerPath();
+	}
+
+	private Image image;
+	public Image getSourceImage(IVirtualComponent component) {
+		if( image == null ) {
+			try {
+				URL url = new URL( JstCommonUIPlugin.getDefault().getBundle().getEntry("/"), "icons/util-wiz-icon.gif"); //$NON-NLS-1$ //$NON-NLS-2$
+				ImageDescriptor imageDescriptor = null;
+				if (url != null)
+					imageDescriptor = ImageDescriptor.createFromURL(url);
+				if( imageDescriptor != null ) 
+					image = imageDescriptor.createImage();
+			} catch( MalformedURLException murle ) {
+				// do nothing
+			}
+		}
+		return image;
+	}
+	
+	public void dispose() {
+		image.dispose();
+	}
+}
diff --git a/plugins/org.eclipse.jst.common.ui/src/org/eclipse/jst/common/ui/internal/assembly/wizard/ExternalJarReferenceWizardFragment.java b/plugins/org.eclipse.jst.common.ui/src/org/eclipse/jst/common/ui/internal/assembly/wizard/ExternalJarReferenceWizardFragment.java
new file mode 100644
index 0000000..4e824c2
--- /dev/null
+++ b/plugins/org.eclipse.jst.common.ui/src/org/eclipse/jst/common/ui/internal/assembly/wizard/ExternalJarReferenceWizardFragment.java
@@ -0,0 +1,123 @@
+/******************************************************************************
+ * Copyright (c) 2009 Red Hat
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Rob Stryker - initial implementation and ongoing maintenance
+ ******************************************************************************/
+package org.eclipse.jst.common.ui.internal.assembly.wizard;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.jst.common.ui.internal.IJstCommonUIConstants;
+import org.eclipse.jst.common.ui.internal.IJstCommonUIContextIds;
+import org.eclipse.jst.common.ui.internal.JstCommonUIPlugin;
+import org.eclipse.jst.common.ui.internal.Messages;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.FileDialog;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.wst.common.componentcore.ComponentCore;
+import org.eclipse.wst.common.componentcore.internal.resources.VirtualArchiveComponent;
+import org.eclipse.wst.common.componentcore.internal.resources.VirtualReference;
+import org.eclipse.wst.common.componentcore.resources.IVirtualComponent;
+import org.eclipse.wst.common.componentcore.resources.IVirtualReference;
+import org.eclipse.wst.common.componentcore.ui.internal.taskwizard.IWizardHandle;
+import org.eclipse.wst.common.componentcore.ui.propertypage.IReferenceWizardConstants;
+
+public class ExternalJarReferenceWizardFragment extends JarReferenceWizardFragment {	
+	public Composite createComposite(Composite parent, IWizardHandle handle) {
+		Composite c = super.createComposite(parent, handle);
+		handle.setTitle(Messages.ExternalArchiveTitle);
+		handle.setDescription(Messages.ExternalArchiveDescription);
+		PlatformUI.getWorkbench().getHelpSystem().setHelp(c, IJstCommonUIContextIds.DEPLOYMENT_ASSEMBLY_NEW_EXTERNAL_ARCHIVE_REFERENCE_P1);
+		return c;
+	}
+
+	protected void buttonPressed() {
+		selected = chooseExternalArchiveEntries(add.getShell());
+		
+		if(selected != null) {
+			removeInvalidArchiveFiles();
+		
+			for(IPath path: selected) {
+				if(!archives.containsKey(path)) {
+					archives.put(path, path);
+				}
+			}
+			
+			viewer.refresh();
+			if(archives != null && archives.size() > 0) {
+				isComplete = true;
+			} else {
+				isComplete = false;
+			}
+			handle.update();
+		}
+	}
+
+	public void performFinish(IProgressMonitor monitor) throws CoreException {
+		IVirtualComponent rootComponent = (IVirtualComponent)getTaskModel().getObject(IReferenceWizardConstants.ROOT_COMPONENT);
+		String runtimeLoc = (String)getTaskModel().getObject(IReferenceWizardConstants.DEFAULT_LIBRARY_LOCATION);
+		if (archives != null && archives.size() > 0) {
+			ArrayList<IVirtualReference> refList = new ArrayList<IVirtualReference>();
+			Iterator iterator = archives.values().iterator();
+			while(iterator.hasNext()) {
+	    		IPath path = (Path)iterator.next();
+				// IPath fullPath = project.getFile(selected[i]).getFullPath();
+				String type = VirtualArchiveComponent.LIBARCHIVETYPE
+						+ IPath.SEPARATOR;
+				IVirtualComponent archive = ComponentCore
+						.createArchiveComponent(rootComponent.getProject(),
+								type + path.toString());
+				VirtualReference ref = new VirtualReference(rootComponent, archive);
+				ref.setArchiveName(path.lastSegment());
+				if (runtimeLoc != null) {
+					ref.setRuntimePath(new Path(runtimeLoc).makeAbsolute());
+				}
+				refList.add(ref);
+			}
+			IVirtualReference[] finalRefs = refList.toArray(new IVirtualReference[refList.size()]);
+			getTaskModel().putObject(IReferenceWizardConstants.FINAL_REFERENCE, finalRefs);
+		}
+	}
+	
+	private static IPath[] chooseExternalArchiveEntries(Shell shell) {
+		String lastUsedPath= JstCommonUIPlugin.getDefault().getDialogSettings().get(IJstCommonUIConstants.DIALOGSTORE_LASTEXTARCHIVE);
+		if (lastUsedPath == null) {
+			lastUsedPath= ""; //$NON-NLS-1$
+		}
+		
+		FileDialog dialog= new FileDialog(shell, SWT.MULTI);
+		dialog.setText(Messages.ArchiveDialogNewTitle);
+		String [] extensions = new String[] {"*.jar;*.war;*.rar;*.zip", "*.*"};  //$NON-NLS-1$//$NON-NLS-2$
+		dialog.setFilterExtensions(extensions);
+		dialog.setFilterPath(lastUsedPath);
+
+		String res= dialog.open();
+		if (res == null) {
+			return null;
+		}
+		String[] fileNames= dialog.getFileNames();
+		int nChosen= fileNames.length;
+
+		IPath filterPath= Path.fromOSString(dialog.getFilterPath());
+		IPath[] elems= new IPath[nChosen];
+		for (int i= 0; i < nChosen; i++) {
+			elems[i]= filterPath.append(fileNames[i]).makeAbsolute();
+		}
+		
+		JstCommonUIPlugin.getDefault().getDialogSettings().put(IJstCommonUIConstants.DIALOGSTORE_LASTEXTARCHIVE, dialog.getFilterPath());
+		
+		return elems;
+	}
+}
diff --git a/plugins/org.eclipse.jst.common.ui/src/org/eclipse/jst/common/ui/internal/assembly/wizard/JarReferenceWizardFragment.java b/plugins/org.eclipse.jst.common.ui/src/org/eclipse/jst/common/ui/internal/assembly/wizard/JarReferenceWizardFragment.java
new file mode 100644
index 0000000..a2c87ca
--- /dev/null
+++ b/plugins/org.eclipse.jst.common.ui/src/org/eclipse/jst/common/ui/internal/assembly/wizard/JarReferenceWizardFragment.java
@@ -0,0 +1,402 @@
+/******************************************************************************
+ * Copyright (c) 2010 Red Hat and Others
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Rob Stryker - initial implementation and ongoing maintenance
+ *    Konstantin Komissarchik - misc. UI cleanup
+ ******************************************************************************/
+package org.eclipse.jst.common.ui.internal.assembly.wizard;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.zip.ZipException;
+import java.util.zip.ZipFile;
+
+import org.eclipse.core.resources.IContainer;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IWorkspaceRoot;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jdt.internal.ui.JavaPlugin;
+import org.eclipse.jdt.internal.ui.JavaPluginImages;
+import org.eclipse.jdt.internal.ui.viewsupport.FilteredElementTreeSelectionDialog;
+import org.eclipse.jdt.internal.ui.wizards.TypedElementSelectionValidator;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.layout.GridDataFactory;
+import org.eclipse.jface.viewers.ITreeContentProvider;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.viewers.ViewerFilter;
+import org.eclipse.jface.window.Window;
+import org.eclipse.jst.common.ui.internal.IJstCommonUIContextIds;
+import org.eclipse.jst.common.ui.internal.JstCommonUIPlugin;
+import org.eclipse.jst.common.ui.internal.Messages;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.TreeItem;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.model.WorkbenchContentProvider;
+import org.eclipse.ui.model.WorkbenchLabelProvider;
+import org.eclipse.ui.views.navigator.ResourceComparator;
+import org.eclipse.wst.common.componentcore.ComponentCore;
+import org.eclipse.wst.common.componentcore.internal.resources.VirtualArchiveComponent;
+import org.eclipse.wst.common.componentcore.internal.resources.VirtualReference;
+import org.eclipse.wst.common.componentcore.resources.IVirtualComponent;
+import org.eclipse.wst.common.componentcore.resources.IVirtualReference;
+import org.eclipse.wst.common.componentcore.ui.ModuleCoreUIPlugin;
+import org.eclipse.wst.common.componentcore.ui.internal.taskwizard.IWizardHandle;
+import org.eclipse.wst.common.componentcore.ui.internal.taskwizard.WizardFragment;
+import org.eclipse.wst.common.componentcore.ui.propertypage.IReferenceWizardConstants;
+
+public class JarReferenceWizardFragment extends WizardFragment {
+	protected LabelProvider labelProvider = null;
+	protected ITreeContentProvider contentProvider = null;
+	protected TreeViewer viewer;
+	protected Button add, remove;
+	protected IPath[] paths;
+	protected IWizardHandle handle;
+	protected IPath[] selected = new IPath[]{};
+	protected Map <IPath, IPath> archives = new HashMap<IPath, IPath>();
+	boolean isComplete = false;
+
+	public boolean isComplete() {
+		return isComplete;
+	}
+	
+	public boolean hasComposite() {
+		return true;
+	}
+
+	public Composite createComposite(Composite parent, IWizardHandle handle) {
+		this.handle = handle;
+		handle.setTitle(Messages.ArchiveTitle);
+		handle.setDescription(Messages.ArchiveDescription);
+		handle.setImageDescriptor(JavaPluginImages.DESC_WIZBAN_ADD_LIBRARY);
+				
+		Composite c = new Composite(parent, SWT.NONE);
+		PlatformUI.getWorkbench().getHelpSystem().setHelp(c, IJstCommonUIContextIds.DEPLOYMENT_ASSEMBLY_NEW_ARCHIVE_REFERENCE_P1);
+		c.setLayout(new GridLayout(2, false));
+		viewer = new TreeViewer(c, SWT.MULTI | SWT.BORDER);
+		viewer.getTree().setLayoutData(new GridData(GridData.FILL_BOTH));
+		viewer.setContentProvider(getContentProvider());
+		viewer.setLabelProvider(getLabelProvider());
+		viewer.setInput(ResourcesPlugin.getWorkspace());
+
+		Composite buttonColumn = new Composite(c, SWT.NONE);
+		buttonColumn.setLayoutData(new GridData(GridData.FILL_VERTICAL));
+		
+		final GridLayout gl = new GridLayout();
+		gl.marginWidth = 0;
+		gl.marginHeight = 0;
+		
+		buttonColumn.setLayout( gl );
+		
+		add = new Button(buttonColumn, SWT.NONE);
+		add.setText(Messages.Add);
+		GridDataFactory.defaultsFor(add).applyTo(add);
+		
+		remove = new Button(buttonColumn, SWT.NONE);
+		remove.setText(Messages.Remove);
+		GridDataFactory.defaultsFor(remove).applyTo(remove);
+
+		add.addSelectionListener(new SelectionListener() {
+			public void widgetSelected(SelectionEvent e) {
+				buttonPressed();
+			}
+
+			public void widgetDefaultSelected(SelectionEvent e) {
+				widgetSelected(e);
+			}
+		});
+		
+		remove.addSelectionListener(new SelectionListener() {
+			public void widgetSelected(SelectionEvent e) {
+				removeButtonPressed();
+			}
+
+			public void widgetDefaultSelected(SelectionEvent e) {
+				widgetSelected(e);
+			}
+		});
+		return c;
+	}
+
+	protected void buttonPressed() {
+		IProject project = (IProject)getTaskModel().getObject(IReferenceWizardConstants.PROJECT);
+		selected = chooseEntries(
+				add.getShell(), 
+				project.getFullPath());
+
+		if(selected != null) {
+			removeInvalidArchiveFiles();
+		
+			for(IPath path: selected) {
+				if(!archives.containsKey(path)) {
+					archives.put(path, path);
+				}
+			}
+			
+			viewer.refresh();
+			if(archives != null && archives.size() > 0) {
+				isComplete = true;
+			} else {
+				isComplete = false;
+			}
+			handle.update();
+		}
+	}
+	
+	protected void removeButtonPressed() {
+		TreeItem[] toRemove = viewer.getTree().getSelection();
+		
+		if(toRemove != null && toRemove.length > 0) {
+			for(int i = 0; i < toRemove.length; i++) {
+				Path path = (Path) toRemove[i].getData();
+				if(archives.containsKey(path)) {
+					archives.remove(path);
+				}
+			}
+			
+			viewer.refresh();
+			if(archives != null && archives.size() > 0) {
+				isComplete = true;
+			} else {
+				isComplete = false;
+			}
+			handle.update();
+		}
+	}
+
+	public void performFinish(IProgressMonitor monitor) throws CoreException {
+		IVirtualComponent rootComponent = (IVirtualComponent)getTaskModel().getObject(IReferenceWizardConstants.ROOT_COMPONENT);
+		String runtimeLoc = (String)getTaskModel().getObject(IReferenceWizardConstants.DEFAULT_LIBRARY_LOCATION);
+		if (archives != null && archives.size() > 0) {
+			ArrayList<IVirtualReference> refList = new ArrayList<IVirtualReference>();
+			Iterator iterator = archives.values().iterator();
+			while(iterator.hasNext()) {
+	    		IPath path = (Path)iterator.next();
+				// IPath fullPath = project.getFile(selected[i]).getFullPath();
+				String type = VirtualArchiveComponent.LIBARCHIVETYPE
+						+ IPath.SEPARATOR;
+				IVirtualComponent archive = ComponentCore
+						.createArchiveComponent(rootComponent.getProject(),
+								type + path.makeRelative().toString());
+				VirtualReference ref = new VirtualReference(rootComponent, archive);
+				ref.setArchiveName(path.lastSegment());
+				if (runtimeLoc != null) {
+					ref.setRuntimePath(new Path(runtimeLoc).makeAbsolute());
+				}
+				refList.add(ref);
+			}
+			IVirtualReference[] finalRefs = refList.toArray(new IVirtualReference[refList.size()]);
+			getTaskModel().putObject(IReferenceWizardConstants.FINAL_REFERENCE, finalRefs);
+		}
+	}
+
+	protected LabelProvider getLabelProvider() {
+		if (labelProvider == null) {
+			labelProvider = new LabelProvider() {
+				public Image getImage(Object element) {
+					return ModuleCoreUIPlugin.getInstance().getImage("jar_obj");
+				}
+
+				public String getText(Object element) {
+					return element == null ? "" : element.toString();//$NON-NLS-1$
+				}
+			};
+		}
+		return labelProvider;
+	}
+
+	protected ITreeContentProvider getContentProvider() {
+		if (contentProvider == null) {
+			contentProvider = new ITreeContentProvider() {
+				public Object[] getElements(Object inputElement) {
+					return archives == null ? new Object[]{} : archives.values().toArray();
+				}
+				public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+				}
+				public void dispose() {
+				}
+				public boolean hasChildren(Object element) {
+					return false;
+				}
+				public Object getParent(Object element) {
+					return null;
+				}
+				public Object[] getChildren(Object parentElement) {
+					return null;
+				}
+			};
+		}
+		return contentProvider;
+	}
+	
+	private static IPath[] chooseEntries(Shell shell, IPath initialSelection) {
+		Class[] acceptedClasses= new Class[] { IFile.class };
+		TypedElementSelectionValidator validator= new TypedElementSelectionValidator(acceptedClasses, true);
+		IWorkspaceRoot root= ResourcesPlugin.getWorkspace().getRoot();
+
+		FilteredElementTreeSelectionDialog dialog =  new FilteredElementTreeSelectionDialog(shell, new WorkbenchLabelProvider(), new WorkbenchContentProvider());
+		dialog.setHelpAvailable(false);
+		dialog.setValidator(validator);
+		dialog.setTitle(Messages.ArchiveDialogNewTitle);
+		dialog.setMessage(Messages.ArchiveDialogNewDescription);
+		dialog.addFilter(getDialogViewerFilter());
+		dialog.setInput(root);
+		dialog.setComparator(new ResourceComparator(ResourceComparator.NAME));
+		dialog.setInitialFilter("*.jar,*.war,*.rar,*.zip"); //$NON-NLS-1$
+		dialog.create();		
+
+		if (dialog.open() == Window.OK) {
+			Object[] elements= dialog.getResult();
+			IPath[] res= new IPath[elements.length];
+			for (int i= 0; i < res.length; i++) {
+				IResource elem= (IResource)elements[i];
+				res[i]= elem.getFullPath();
+			}
+			return res;
+		}
+		return null;
+	}
+	
+	protected void removeInvalidArchiveFiles(){
+		// Tries to open archive to verify it's valid
+		// If it is not a valid archive, a dialog is shown informing the user of the invalid archives
+		ArrayList<IPath> invalidArchiveFiles = new ArrayList<IPath>();
+		ArrayList<IPath> validArchiveFiles = new ArrayList<IPath>();
+		ZipFile zipFile = null;
+		for(IPath path:selected){
+			try {
+				String osPath = null;
+				if(path.segmentCount() > 1){
+					IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(path);
+					if(file.exists()) {
+						IPath loc = file.getLocation();
+						if(loc != null) { 
+							osPath = loc.toOSString();
+						}
+					}
+				}
+				if(osPath == null){
+					osPath = path.toOSString();
+				}
+				zipFile = new ZipFile(new File(osPath));
+				validArchiveFiles.add(path);
+			} catch (ZipException e1){
+				invalidArchiveFiles.add(path);
+			} catch (IOException e2){
+				invalidArchiveFiles.add(path);
+			}finally {
+				if (zipFile != null){
+					try {
+						zipFile.close();
+					} catch (IOException e) {
+						JstCommonUIPlugin.getDefault().getLog().log(new Status(IStatus.ERROR, JstCommonUIPlugin.PLUGIN_ID, e.getMessage(), e));
+					}
+				}
+			}
+		}
+		if(invalidArchiveFiles.size() > 0) {
+			selected = validArchiveFiles.toArray(new IPath[validArchiveFiles.size()]);
+			showInvalidArchiveFilesAsWarning(invalidArchiveFiles);
+		}
+	}
+	
+	private void showInvalidArchiveFilesAsWarning(ArrayList<IPath>invalidArchiveFiles) {
+		String message = Messages.InvalidArchivesWarning;
+		boolean first = true;
+		for(IPath path: invalidArchiveFiles) {
+			if(!first) {
+				message += ", \'"; //$NON-NLS-1$
+			} else {
+				message += "\'"; //$NON-NLS-1$
+				first = false;
+			}
+			message += path.lastSegment() + "\'"; //$NON-NLS-1$
+		}
+		MessageDialog.openWarning(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), "Warning", message); //$NON-NLS-1$
+	}
+	
+	private static ViewerFilter getDialogViewerFilter() {
+		return new ViewerFilter() {
+			private final String[] excludedExtensions= { "txt", "css", "dll", "htm", "html", "class", "java", "classpath",      //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$ //$NON-NLS-4$//$NON-NLS-5$ //$NON-NLS-6$//$NON-NLS-7$ //$NON-NLS-8$
+				"compatibility", "component", "container", "cvsignore", "del", "dnx", //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$ //$NON-NLS-4$//$NON-NLS-5$ //$NON-NLS-6$
+				"dtd", "mf", "project", "properties", "psf", "rc", "runtime", "sh", //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$ //$NON-NLS-4$//$NON-NLS-5$ //$NON-NLS-6$//$NON-NLS-7$ //$NON-NLS-8$
+				"spec", "sql", "tld", "xmi", "xml", "xsd", "gif", "jpg", "js", "vsd", //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$ //$NON-NLS-4$//$NON-NLS-5$ //$NON-NLS-6$//$NON-NLS-7$ //$NON-NLS-8$ //$NON-NLS-9$ //$NON-NLS-10$
+				"png", "bat", "xsl", "factorypath"}; //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$ //$NON-NLS-4$ 
+
+			private HashMap<String,String> excludedExtensionsMap = null;
+
+			@Override
+			public boolean select(Viewer viewer, Object parent, Object element) {
+				if(excludedExtensionsMap == null) {
+					initializeExludeMap();
+				}
+				if (element instanceof IFile) {
+					IFile file = (IFile) element;
+					String ext = file.getFileExtension();
+					if(ext != null) {
+						ext = ext.toLowerCase();
+						if(excludedExtensionsMap.get(ext) != null) {
+							return false;
+						}
+					}
+					return true;
+				} else if (element instanceof IContainer) { // IProject, IFolder
+					// ignore closed projects
+					if (element instanceof IProject && !((IProject)element).isOpen())
+						return false;
+					// ignore .settings folder
+					if (element instanceof IFolder) {
+						IFolder folder = (IFolder) element;
+						if (folder.getName().equals(".settings"))
+							return false;
+					}
+					try {
+						IResource[] resources= ((IContainer)element).members();
+						for (int i= 0; i < resources.length; i++) {
+							// Only show containers that contain an archive
+							if (select(viewer, parent, resources[i])) {
+								return true;
+							}
+						}
+					} catch (CoreException e) {
+						JavaPlugin.log(e.getStatus());
+					}
+				}
+				return false;
+			}
+			
+			private void initializeExludeMap() {
+				excludedExtensionsMap = new HashMap<String, String>();
+				for(int i = 0; i < excludedExtensions.length; i++)
+				excludedExtensionsMap.put(excludedExtensions[i], excludedExtensions[i]);
+			}
+		};
+	}
+}
diff --git a/plugins/org.eclipse.jst.common.ui/src/org/eclipse/jst/common/ui/internal/assembly/wizard/ManifestModuleDependencyControl.java b/plugins/org.eclipse.jst.common.ui/src/org/eclipse/jst/common/ui/internal/assembly/wizard/ManifestModuleDependencyControl.java
new file mode 100644
index 0000000..9d7db98
--- /dev/null
+++ b/plugins/org.eclipse.jst.common.ui/src/org/eclipse/jst/common/ui/internal/assembly/wizard/ManifestModuleDependencyControl.java
@@ -0,0 +1,677 @@
+/******************************************************************************
+ * Copyright (c) 2010 Red Hat and Others
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Rob Stryker - initial implementation and ongoing maintenance
+ *    Konstantin Komissarchik - misc. UI cleanup
+ ******************************************************************************/
+package org.eclipse.jst.common.ui.internal.assembly.wizard;
+
+import java.text.Collator;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.resources.IContainer;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.jface.layout.GridDataFactory;
+import org.eclipse.jface.viewers.BaseLabelProvider;
+import org.eclipse.jface.viewers.ColumnWeightData;
+import org.eclipse.jface.viewers.IBaseLabelProvider;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.IStructuredContentProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.ITableLabelProvider;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.TableLayout;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.viewers.ViewerComparator;
+import org.eclipse.jface.window.Window;
+import org.eclipse.jface.wizard.WizardDialog;
+import org.eclipse.jst.common.internal.modulecore.util.ArchiveManifest;
+import org.eclipse.jst.common.internal.modulecore.util.JavaModuleComponentUtility;
+import org.eclipse.jst.common.internal.modulecore.util.ManifestUtilities;
+import org.eclipse.jst.common.internal.modulecore.util.UpdateManifestDataModelProperties;
+import org.eclipse.jst.common.internal.modulecore.util.UpdateManifestDataModelProvider;
+import org.eclipse.jst.common.ui.internal.IJstCommonUIContextIds;
+import org.eclipse.jst.common.ui.internal.Messages;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableColumn;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.wst.common.componentcore.ComponentCore;
+import org.eclipse.wst.common.componentcore.internal.resources.AbstractResourceListVirtualComponent;
+import org.eclipse.wst.common.componentcore.resources.IVirtualComponent;
+import org.eclipse.wst.common.componentcore.resources.IVirtualFile;
+import org.eclipse.wst.common.componentcore.resources.IVirtualFolder;
+import org.eclipse.wst.common.componentcore.resources.IVirtualReference;
+import org.eclipse.wst.common.componentcore.ui.ModuleCoreUIPlugin;
+import org.eclipse.wst.common.componentcore.ui.internal.propertypage.DependencyPageExtensionManager;
+import org.eclipse.wst.common.componentcore.ui.internal.propertypage.IVirtualComponentLabelProvider;
+import org.eclipse.wst.common.componentcore.ui.propertypage.AbstractIModuleDependenciesControl;
+import org.eclipse.wst.common.componentcore.ui.propertypage.ModuleAssemblyRootPage;
+import org.eclipse.wst.common.frameworks.datamodel.DataModelFactory;
+import org.eclipse.wst.common.frameworks.datamodel.IDataModel;
+
+public class ManifestModuleDependencyControl extends AbstractIModuleDependenciesControl {
+	
+	protected IProject project;
+	protected IVirtualComponent rootComponent;
+	protected IProject parentProject;
+	protected ModuleAssemblyRootPage propPage;
+	protected Button addButton, removeButton, moveUpButton, moveDownButton;
+	protected Combo parentSelection;
+	protected TableViewer manifestEntryViewer;
+	private ArrayList<IVirtualReference> list = new ArrayList<IVirtualReference>();
+	private String previousManifest = null;
+	
+	public ManifestModuleDependencyControl(final IProject project,
+			final ModuleAssemblyRootPage page) {
+		this.project = project;
+		this.propPage = page;
+		rootComponent = ComponentCore.createComponent(project);
+	}
+
+	private static GridLayout glayout( final int columns )
+	{
+		final GridLayout gl = new GridLayout( columns, false );
+		gl.marginWidth = 0;
+		gl.marginHeight = 0;
+		
+		return gl;
+	}
+	
+	public Composite createContents(Composite parent) {
+		Composite root = new Composite(parent, SWT.NONE);
+		PlatformUI.getWorkbench().getHelpSystem().setHelp(root, IJstCommonUIContextIds.DEPLOYMENT_ASSEMBLY_PREFERENCE_PAGE_MANIFEST_ENTRIES_TAB);
+		root.setLayout(glayout(1));
+		
+		final Composite parentSelectionComposite = new Composite( root, SWT.NONE );
+		parentSelectionComposite.setLayoutData( new GridData( GridData.FILL_HORIZONTAL ) );
+		parentSelectionComposite.setLayout( glayout( 2 ) );
+		
+		Label l = new Label(parentSelectionComposite, SWT.NONE);
+		l.setText(Messages.ParentProject);
+		l.setLayoutData(new GridData());
+		
+		parentSelection = new Combo(parentSelectionComposite, SWT.READ_ONLY);
+		parentSelection.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+		parentSelection.setItems(getPossibleParentProjects());
+		parentSelection.addModifyListener(new ModifyListener(){
+			public void modifyText(ModifyEvent e) {
+				refreshViewerFromNewParentProject();
+			}
+		});
+		
+		final Composite manifestEntryViewerComposite = new Composite( root, SWT.NONE );
+		final GridData manifestEntryViewerCompositeLayoutData = new GridData( GridData.FILL_BOTH );
+		manifestEntryViewerComposite.setLayoutData( manifestEntryViewerCompositeLayoutData );
+		manifestEntryViewerComposite.setLayout( glayout( 2 ) );
+		
+		manifestEntryViewer = createManifestReferenceTableViewer(manifestEntryViewerComposite, SWT.SINGLE);
+		GridData data = new GridData(GridData.FILL_BOTH);
+		int numlines = Math.min(10, manifestEntryViewer.getTable().getItemCount());
+		data.heightHint = manifestEntryViewer.getTable().getItemHeight() * numlines;
+		manifestEntryViewer.getTable().setLayoutData(data);
+		
+		Composite buttonColumn = new Composite(manifestEntryViewerComposite, SWT.NONE);
+		buttonColumn.setLayoutData(new GridData(GridData.FILL_VERTICAL));
+		buttonColumn.setLayout(glayout( 1 ));
+		
+		addButton = new Button(buttonColumn, SWT.PUSH);
+		addButton.setText(Messages.Add);
+		GridDataFactory.defaultsFor(addButton).applyTo(addButton);
+		
+		removeButton = new Button(buttonColumn, SWT.PUSH);
+		removeButton.setText(Messages.Remove);
+		GridDataFactory.defaultsFor(removeButton).applyTo(removeButton);
+		
+		moveUpButton = new Button(buttonColumn, SWT.PUSH);
+		moveUpButton.setText(Messages.MoveUp);
+		GridDataFactory.defaultsFor(moveUpButton).applyTo(moveUpButton);
+		
+		moveDownButton = new Button(buttonColumn, SWT.PUSH);
+		moveDownButton.setText(Messages.MoveDown);
+		GridDataFactory.defaultsFor(moveDownButton).applyTo(moveDownButton);
+		
+		IFile manifest = getManifestIFile(rootComponent);
+		if(manifest == null) {
+			addButton.setEnabled(false);
+		} else {
+			addButton.setEnabled(true);
+			previousManifest = manifest.getFullPath().toOSString();
+		}
+		removeButton.setEnabled(false);
+		moveUpButton.setEnabled(false);
+		moveDownButton.setEnabled(false);
+		
+		addButton.addSelectionListener(new SelectionListener() {
+			public void widgetSelected(SelectionEvent e) {
+				addPressed();
+			}
+			public void widgetDefaultSelected(SelectionEvent e) {
+			}
+		});
+		removeButton.addSelectionListener(new SelectionListener() {
+			public void widgetSelected(SelectionEvent e) {
+				removePressed();
+			}
+			public void widgetDefaultSelected(SelectionEvent e) {
+			}
+		});
+		moveUpButton.addSelectionListener(new SelectionListener() {
+			public void widgetSelected(SelectionEvent e) {
+				moveUp();
+			}
+			public void widgetDefaultSelected(SelectionEvent e) {
+			}
+		});
+		moveDownButton.addSelectionListener(new SelectionListener() {
+			public void widgetSelected(SelectionEvent e) {
+				moveDown();
+			}
+			public void widgetDefaultSelected(SelectionEvent e) {
+			}
+		});
+		
+		manifestEntryViewer.setLabelProvider(new ManifestLabelProvider());
+		manifestEntryViewer.setContentProvider(new ManifestContentProvider());
+		manifestEntryViewer.setInput(ResourcesPlugin.getWorkspace());
+		parentSelection.select(0);
+		
+		manifestEntryViewer.addSelectionChangedListener(new ISelectionChangedListener() {
+			public void selectionChanged(SelectionChangedEvent event) {
+				viewerSelectionChanged();
+			}
+		});
+
+		//ensure the buttons are properly updated when table sort mode toggled
+		manifestEntryViewer.getTable().getColumn(0).addSelectionListener(new SelectionListener() {
+			public void widgetSelected(SelectionEvent e) {
+				updateButtons();
+			}
+			
+			public void widgetDefaultSelected(SelectionEvent e) {
+				// do nothing
+			}
+		});
+
+		//ensure the buttons are properly updated when table sort mode toggled
+		manifestEntryViewer.getTable().getColumn(1).addSelectionListener(new SelectionListener() {
+			public void widgetSelected(SelectionEvent e) {
+				updateButtons();
+			}
+			
+			public void widgetDefaultSelected(SelectionEvent e) {
+				//do nothing
+			}
+		});
+		return root;
+	}
+	
+	protected void viewerSelectionChanged() {
+		updateButtons();
+	}
+	
+	protected void updateButtons() {
+		if(!addButton.isEnabled()) {
+			removeButton.setEnabled(false);
+			moveUpButton.setEnabled(false);
+			moveDownButton.setEnabled(false);
+		} else {
+			int index = manifestEntryViewer.getTable().getSelectionIndex();
+			int size = manifestEntryViewer.getTable().getItems().length;
+			boolean sorted = manifestEntryViewer.getTable().getSortDirection() != SWT.NONE;
+			removeButton.setEnabled(index != -1);
+			moveUpButton.setEnabled(index != -1 && index != 0 && !sorted);
+			moveDownButton.setEnabled(index != -1 && index != size-1 && !sorted);
+		}
+	}
+	
+	protected void moveUp() {
+		int index = manifestEntryViewer.getTable().getSelectionIndex();
+		IVirtualReference ref = list.remove(index);
+		list.add(index-1,ref);
+		refreshViewer();
+		updateButtons();
+	}
+	protected void moveDown() {
+		int index = manifestEntryViewer.getTable().getSelectionIndex();
+		IVirtualReference ref = list.remove(index);
+		list.add(index+1,ref);
+		refreshViewer();
+		updateButtons();
+	}
+	
+	protected void addPressed() {
+		AddManifestEntryTaskWizard wizard = new AddManifestEntryTaskWizard();
+		wizard.getTaskModel().putObject(AddManifestEntryTaskWizard.CHILD_PROJECT, project);
+		wizard.getTaskModel().putObject(AddManifestEntryTaskWizard.PARENT_PROJECT, parentProject);
+		wizard.getTaskModel().putObject(AddManifestEntryTaskWizard.CURRENT_REFERENCES, list.toArray(new IVirtualReference[list.size()]));
+		WizardDialog wd = new WizardDialog(addButton.getShell(), wizard);
+		if( wd.open() != Window.CANCEL) {
+			IVirtualReference[] ret = (IVirtualReference[])wizard.getTaskModel().getObject(AddManifestEntryTaskWizard.RETURNED_REFERENCES);
+			if (ret != null)
+				list.addAll(Arrays.asList(ret));
+			refreshViewer();
+			updateButtons();
+		}
+	}
+
+	protected void removePressed() {
+		IStructuredSelection sel = (IStructuredSelection)manifestEntryViewer.getSelection();
+		Iterator i = sel.iterator();
+		while(i.hasNext()) {
+			list.remove(i.next());
+		}
+		refreshViewer();
+		updateButtons();
+	}
+	
+	public static class ManifestLabelProvider extends BaseLabelProvider implements ITableLabelProvider {
+		private IVirtualComponentLabelProvider[] delegates;
+		protected void getDelegates() {
+			if( delegates == null )
+				delegates = DependencyPageExtensionManager.loadDelegates();
+		}
+		public Image getColumnImage(Object element, int columnIndex) {
+			getDelegates();
+			if( columnIndex == 1 ) {
+				if( element instanceof IVirtualReference ) {
+					for( int i = 0; i < delegates.length; i++ )
+						if( delegates[i].canHandle(((IVirtualReference)element).getReferencedComponent()))
+							return delegates[i].getSourceImage(((IVirtualReference)element).getReferencedComponent());
+				}
+			}
+			return ModuleCoreUIPlugin.getInstance().getImage("jar_obj");
+		}
+		
+		public String getColumnText(Object element, int columnIndex) {
+			if( element instanceof IVirtualReference ) {
+				IVirtualReference ref = (IVirtualReference)element;
+				if( columnIndex == 0 && ref.getArchiveName() != null) {
+					if(ref.getRuntimePath().toString().length() > 0)
+						return ref.getRuntimePath().append(ref.getArchiveName()).toString();
+					else
+						return ref.getArchiveName();
+				}
+				if( columnIndex == 1 )
+					return handleSourceText(ref.getReferencedComponent());
+			}
+			return null;
+		}
+		
+		private String handleSourceText(IVirtualComponent component) {
+			getDelegates();
+			for( int i = 0; i < delegates.length; i++ )
+				if( delegates[i].canHandle(component))
+					return delegates[i].getSourceText(component);
+
+			// default impl
+			if( component.isBinary() ) {
+				IPath p = (IPath)component.getAdapter(IPath.class);
+				return p == null ? null : p.toString();
+			}
+			return component.getProject().getName();
+		}
+	}
+	
+	
+	private class ManifestContentProvider implements IStructuredContentProvider {
+		public void dispose() {
+		}
+		public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+		}
+		public Object[] getElements(Object inputElement) {
+			return refsForCurrentProject == null ? new Object[]{} : refsForCurrentProject;
+		}
+	}
+	
+	/**
+	 * Provides three possible sorts for each column based on the text labels.
+	 * First click on any column will enable forward sorting for that column,
+	 * second click on a column will enable backwards sorting, and third click
+	 * will disable sorting.
+	 * @author jsholl
+	 */
+	private static class TableViewerColumnSortToggler {
+		private int sortDirection = 0;
+		private int sortColumn = 0;
+		private TableViewer tableViewer;
+		
+		private TableViewerColumnSortToggler(TableViewer tableViewer){
+			this.tableViewer = tableViewer;
+		}
+		
+		private void toggleSort(int column){
+			if(sortColumn == column){
+				//cycle through sort options
+				switch(sortDirection){
+				case SWT.NONE:
+					sortDirection = SWT.UP;
+					break;
+				case SWT.UP:
+					sortDirection = SWT.DOWN;
+					break;
+				case SWT.DOWN:
+					sortDirection = SWT.NONE;
+					break;
+				}
+			} else {
+				//clicked on a different column reset cycle
+				sortColumn = column;
+				sortDirection = SWT.UP;
+			}
+			
+			ViewerComparator comparator = getViewerComparator(column, sortDirection);
+			tableViewer.setComparator(comparator);
+			
+			Table table = tableViewer.getTable();
+			TableColumn sortColumn = tableViewer.getTable().getColumn(column);
+			table.setSortColumn(sortColumn);
+			table.setSortDirection(sortDirection);
+		}
+		
+		private ViewerComparator getViewerComparator(final int columnIndex, final int sortDirection) {
+			if(sortDirection == SWT.NONE){
+				return null;
+			}
+			return new ViewerComparator() {
+				Collator collator = Collator.getInstance();
+				public int compare(Viewer viewerLocal, Object e1, Object e2) {
+					IBaseLabelProvider baseLabelProvider = tableViewer.getLabelProvider();
+					if(baseLabelProvider instanceof ITableLabelProvider){
+						ITableLabelProvider tableLabelProvider = (ITableLabelProvider)baseLabelProvider;
+						String text1 = tableLabelProvider.getColumnText(e1, columnIndex);
+						if(text1 != null){
+							String text2 = tableLabelProvider.getColumnText(e2, columnIndex);
+							int comp = collator.compare(text1, text2);
+							if(sortDirection == SWT.DOWN){
+								comp = -comp;
+							}
+							return comp;
+						}
+					}
+					return 0;
+				}
+			};
+		}
+	};
+	
+	public static TableViewer createManifestReferenceTableViewer(Composite parent, int style) {
+		int flags = SWT.BORDER | style;
+
+		Table table = new Table(parent, flags);
+		TableViewer viewer = new TableViewer(table);
+		final TableViewerColumnSortToggler sortController = new TableViewerColumnSortToggler(viewer);
+		
+		// set up table layout
+		TableLayout tableLayout = new org.eclipse.jface.viewers.TableLayout();
+		tableLayout.addColumnData(new ColumnWeightData(200, true));
+		tableLayout.addColumnData(new ColumnWeightData(200, true));
+		table.setLayout(tableLayout);
+		table.setHeaderVisible(true);
+		table.setLinesVisible(true);
+		
+		// table columns
+		TableColumn fileNameColumn = new TableColumn(table, SWT.NONE, 0);
+		fileNameColumn.setText(Messages.ManifestEntryColumn);
+		fileNameColumn.setResizable(true);
+		fileNameColumn.addSelectionListener(new SelectionListener() {
+			public void widgetSelected(SelectionEvent e) {
+				sortController.toggleSort(0);
+			}
+			public void widgetDefaultSelected(SelectionEvent e) {
+				//do nothing
+			}
+		});
+
+		TableColumn projectColumn = new TableColumn(table, SWT.NONE, 1);
+		projectColumn.setText(Messages.ManifestEntrySourceColumn);
+		projectColumn.setResizable(true);
+		projectColumn.addSelectionListener(new SelectionListener() {
+			public void widgetSelected(SelectionEvent e) {
+				sortController.toggleSort(1);
+			}
+			public void widgetDefaultSelected(SelectionEvent e) {
+				//do nothing
+			}
+		});
+		
+		tableLayout.layout(table, true);
+		return viewer;
+	}
+
+	private IVirtualReference[] refsForCurrentProject;
+	protected void refreshViewerFromNewParentProject() {
+		list.clear();
+		String parentString = parentSelection.getText();
+		refsForCurrentProject = new IVirtualReference[]{};
+		if( parentString != null && !"".equals(parentString)) { //$NON-NLS-1$
+			parentProject = ResourcesPlugin.getWorkspace().getRoot().getProject(parentString);
+			IVirtualReference[] current  = JavaModuleComponentUtility.findCurrentManifestEntries(parentProject, project);
+			refsForCurrentProject = sortRefsForCurrentProject(addMissingDummyEntries(current));
+			for( int i = 0; i < refsForCurrentProject.length; i++ ) {
+				list.add(refsForCurrentProject[i]);
+			}
+		}
+		manifestEntryViewer.refresh();
+	}
+	
+	private IVirtualReference[] sortRefsForCurrentProject(IVirtualReference[] currentRefs) {
+		IFile manifestFile = getManifestIFile(rootComponent);
+		if (manifestFile == null)
+			return currentRefs;
+		
+		HashMap<String, IVirtualReference> unsortedRefMap = new HashMap<String, IVirtualReference>();
+		for (int i = 0; i < currentRefs.length; i++) {
+			IVirtualReference ref = currentRefs[i];
+			String entryName;
+			if(ref.getRuntimePath().toString().length() > 0)
+				entryName = ref.getRuntimePath().append(ref.getArchiveName()).toString();
+			else
+				entryName = ref.getArchiveName();
+			unsortedRefMap.put(entryName, ref);
+		}
+		List<IVirtualReference> sortedRefs = new ArrayList<IVirtualReference>();
+		ArchiveManifest manifest = ManifestUtilities.getManifest(manifestFile);
+		String[] entries = manifest.getClassPathTokenized();
+		for (int i = 0; i < entries.length; i++) {
+			IVirtualReference ref = unsortedRefMap.get(entries[i]);
+			if (ref != null) {
+				sortedRefs.add(ref);
+			}
+		}
+		return sortedRefs.toArray(new IVirtualReference[sortedRefs.size()]);
+	}
+	
+	protected void refreshViewer() {
+		refsForCurrentProject = list.toArray(new IVirtualReference[list.size()]);
+		GridData data = new GridData(GridData.FILL_BOTH);
+		int numlines = Math.min(10, manifestEntryViewer.getTable().getItemCount());
+		data.heightHint = manifestEntryViewer.getTable().getItemHeight() * numlines;
+		manifestEntryViewer.getTable().setLayoutData(data);
+		manifestEntryViewer.refresh();
+	}
+	
+	protected IVirtualReference[] addMissingDummyEntries(IVirtualReference[] current) {
+		IFile manifestFile = getManifestIFile(rootComponent);
+		if( manifestFile != null ) {
+			ArrayList<IVirtualReference> refs = new ArrayList<IVirtualReference>();
+			refs.addAll(Arrays.asList(current));
+			ArchiveManifest manifest = ManifestUtilities.getManifest(manifestFile);
+			String[] entries = manifest.getClassPathTokenized();
+			String[] unusedEntries = findUnusedEntries(current, entries);
+			for( int i = 0; i < unusedEntries.length; i++ ) {
+				refs.add(createDummyReference(unusedEntries[i]));
+			}
+			return refs.toArray(new IVirtualReference[refs.size()]);
+		}
+		return current;
+	}
+	
+	
+	public static class DummyVirtualComponent extends AbstractResourceListVirtualComponent {
+		private static final String DUMMY_FIRST_SEGMENT = "dummyVirtualComponent"; //$NON-NLS-1$
+		public DummyVirtualComponent(IProject p, IVirtualComponent referencingComponent) {
+			super(p, referencingComponent);
+		}
+
+		protected String getFirstIdSegment() {
+			return DUMMY_FIRST_SEGMENT;
+		}
+
+		protected IContainer[] getUnderlyingContainers() {
+			return new IContainer[]{};
+		}
+
+		protected IResource[] getLooseResources() {
+			return new IResource[]{};
+		}
+	}
+	
+	private IVirtualReference createDummyReference(String path) {
+		return createDummyReference(path, parentProject, ComponentCore.createComponent(parentProject));
+	}
+	
+	public static IVirtualReference createDummyReference(String path, IProject project, IVirtualComponent rootComponent) {
+		IVirtualComponent comp = new DummyVirtualComponent(project, rootComponent);
+		IVirtualReference ref = ComponentCore.createReference(rootComponent, comp);
+		if(path.indexOf("\\") > 0) {
+			ref.setRuntimePath(new Path(""));
+			ref.setArchiveName(path);
+			return ref;
+		}
+		IPath path2 = new Path(path.trim());
+		IPath runtimePath = path2.segmentCount() > 1 ? path2.removeLastSegments(1) : new Path("/"); //$NON-NLS-1$
+		runtimePath = runtimePath.makeRelative();
+		ref.setRuntimePath(runtimePath);
+		ref.setArchiveName(path2.lastSegment());
+		return ref;
+	}
+	
+	private String[] findUnusedEntries(IVirtualReference[] current, String[] entries) {
+		ArrayList<String> list = new ArrayList<String>();
+		list.addAll(Arrays.asList(entries));
+		for( int i = 0; i < current.length; i++ ) {
+			String currentEntry = current[i].getRuntimePath().append(current[i].getArchiveName()).toString();
+			list.remove(currentEntry);
+		}
+		return list.toArray(new String[list.size()]);
+	}
+	
+	/**
+	 * Clients who find this unacceptable should override
+	 * @param root
+	 * @return
+	 */
+	public IFile getManifestIFile(IVirtualComponent root) {
+		IVirtualFolder rootFolder = root.getRootFolder();
+		IVirtualFile vf = rootFolder.getFile(new Path("META-INF/MANIFEST.MF"));
+		if( vf.exists() )
+			return vf.getUnderlyingFile();
+		return null;
+	}
+	
+	protected String[] getPossibleParentProjects() {
+		IProject[] projects = JavaModuleComponentUtility.findParentProjects(project);
+		String[] strings = new String[projects.length];
+		for( int i = 0; i < projects.length; i++ ) {
+			strings[i] = projects[i].getName();
+		}
+		return strings;
+	}
+
+
+	public boolean performOk() {
+		if(addButton != null && addButton.isEnabled()) {
+			IDataModel updateManifestDataModel = DataModelFactory.createDataModel(new UpdateManifestDataModelProvider());
+			updateManifestDataModel.setProperty(UpdateManifestDataModelProperties.PROJECT_NAME, project.getName());
+			updateManifestDataModel.setBooleanProperty(UpdateManifestDataModelProperties.MERGE, false);
+			updateManifestDataModel.setProperty(UpdateManifestDataModelProperties.MANIFEST_FILE, getManifestIFile(rootComponent));
+			ArrayList<String> asStrings = new ArrayList<String>();
+			Iterator<IVirtualReference> i = list.iterator();
+			IVirtualReference tmp;
+			while(i.hasNext()) {
+				tmp = i.next();
+				if(tmp.getArchiveName() != null) {
+					if(tmp.getRuntimePath().toString().length() > 0 )
+						asStrings.add(tmp.getRuntimePath().append(tmp.getArchiveName()).toString());
+					else
+						asStrings.add(tmp.getArchiveName());
+				}
+			}
+			updateManifestDataModel.setProperty(UpdateManifestDataModelProperties.JAR_LIST, asStrings);
+			try {
+				updateManifestDataModel.getDefaultOperation().execute(new NullProgressMonitor(), null );
+			} catch (ExecutionException e) {
+				// TODO log J2EEUIPlugin.logError(e);
+			}
+		}
+
+		return true;
+	}
+
+	public void performDefaults() {
+		refreshViewerFromNewParentProject();
+	}
+
+	public boolean performCancel() {
+		return false;
+	}
+
+	public void setVisible(boolean visible) {
+	}
+
+	public void dispose() {
+	}
+
+	public void performApply() {
+		IFile manifest = getManifestIFile(rootComponent);
+		if(manifest == null) {
+			previousManifest = null;
+			addButton.setEnabled(false);
+			performDefaults();
+		} else {
+			if(previousManifest == null) {
+				performDefaults();
+			} else {
+				String currentManifest = manifest.getFullPath().toOSString();
+				if(!previousManifest.equals(currentManifest)) {
+					performDefaults();
+				}
+			}
+			previousManifest = manifest.getFullPath().toOSString();
+			addButton.setEnabled(true);
+			
+		}
+		updateButtons();
+		performOk();
+	}
+
+}
diff --git a/plugins/org.eclipse.jst.common.ui/src/org/eclipse/jst/common/ui/internal/assembly/wizard/VariableReferenceWizardFragment.java b/plugins/org.eclipse.jst.common.ui/src/org/eclipse/jst/common/ui/internal/assembly/wizard/VariableReferenceWizardFragment.java
new file mode 100644
index 0000000..283cdcc
--- /dev/null
+++ b/plugins/org.eclipse.jst.common.ui/src/org/eclipse/jst/common/ui/internal/assembly/wizard/VariableReferenceWizardFragment.java
@@ -0,0 +1,300 @@
+/******************************************************************************
+ * Copyright (c) 2010 Red Hat and Others
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Rob Stryker - initial implementation and ongoing maintenance
+ *    Konstantin Komissarchik - misc. UI cleanup
+ ******************************************************************************/
+
+package org.eclipse.jst.common.ui.internal.assembly.wizard;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.zip.ZipException;
+import java.util.zip.ZipFile;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jdt.core.JavaCore;
+import org.eclipse.jdt.internal.ui.JavaPluginImages;
+import org.eclipse.jdt.internal.ui.wizards.buildpaths.CPVariableElement;
+import org.eclipse.jdt.internal.ui.wizards.buildpaths.CPVariableElementLabelProvider;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.ITreeContentProvider;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jst.common.ui.internal.IJstCommonUIContextIds;
+import org.eclipse.jst.common.ui.internal.JstCommonUIPlugin;
+import org.eclipse.jst.common.ui.internal.Messages;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.layout.FormAttachment;
+import org.eclipse.swt.layout.FormData;
+import org.eclipse.swt.layout.FormLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.ui.ISharedImages;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.wst.common.componentcore.ComponentCore;
+import org.eclipse.wst.common.componentcore.internal.resources.VirtualArchiveComponent;
+import org.eclipse.wst.common.componentcore.internal.resources.VirtualReference;
+import org.eclipse.wst.common.componentcore.resources.IVirtualComponent;
+import org.eclipse.wst.common.componentcore.resources.IVirtualReference;
+import org.eclipse.wst.common.componentcore.ui.internal.taskwizard.IWizardHandle;
+import org.eclipse.wst.common.componentcore.ui.internal.taskwizard.WizardFragment;
+import org.eclipse.wst.common.componentcore.ui.propertypage.IReferenceWizardConstants;
+
+public class VariableReferenceWizardFragment extends WizardFragment {
+	protected LabelProvider labelProvider = null;
+	protected ITreeContentProvider contentProvider = null;
+	protected TreeViewer viewer;
+	protected IPath[] paths;
+	protected IWizardHandle handle;
+	protected Object selected = null;
+	boolean isComplete = false;
+
+	public boolean isComplete() {
+		return isComplete;
+	}
+	
+	public boolean hasComposite() {
+		return true;
+	}
+
+	@Override
+	public Composite createComposite(Composite parent, IWizardHandle handle) {
+		this.handle = handle;
+		handle.setTitle(Messages.VariableReferenceTitle);
+		handle.setDescription(Messages.VariableReferenceDescription);
+		handle.setImageDescriptor(JavaPluginImages.DESC_WIZBAN_ADD_LIBRARY);
+				
+		Composite c = new Composite(parent, SWT.NONE);
+		PlatformUI.getWorkbench().getHelpSystem().setHelp(c, IJstCommonUIContextIds.DEPLOYMENT_ASSEMBLY_NEW_VARIABLE_REFERENCE_P1);
+		c.setLayout(new FormLayout());
+		viewer = new TreeViewer(c, SWT.SINGLE | SWT.BORDER);
+		viewer.setContentProvider(getContentProvider());
+		viewer.setLabelProvider(getLabelProvider());
+		viewer.setInput(ResourcesPlugin.getWorkspace());
+		viewer.addSelectionChangedListener(new ISelectionChangedListener() {
+			public void selectionChanged(SelectionChangedEvent event) {
+				handleNewSelection();
+			}
+		});
+		FormData fd = new FormData();
+		fd.width = 390;
+		fd.height = 185;
+		fd.left = new FormAttachment(0, 5);
+		fd.top = new FormAttachment(0, 5);
+		fd.right = new FormAttachment(100, -5);
+		fd.bottom = new FormAttachment(100, -5);
+		viewer.getTree().setLayoutData(fd);
+		return c;
+	}
+	
+	protected void handleNewSelection() {
+		isComplete = true;
+		IStructuredSelection sel = (IStructuredSelection)viewer.getSelection();
+		Object o = sel.getFirstElement();
+		if( o == null ) {
+			isComplete = false;
+			selected = null;
+		} else {
+			selected = o;
+			IPath p = null;
+			if( o instanceof CPVariableElement) {
+				p = ((CPVariableElement)o).getPath();
+			} else if( o instanceof ExtendedVariable) {
+				p = ((ExtendedVariable)o).element.getPath().append(((ExtendedVariable)o).pathAfterElement);
+			}
+			if(p == null || p.isEmpty() || p.toFile().isDirectory() || !isValidArchive(p)) {
+				isComplete = false;
+			}
+		}
+		handle.update();
+	}
+	
+	protected LabelProvider getLabelProvider() {
+		if (labelProvider == null) {
+			labelProvider= new VariablesLabelProvider();
+		}
+		return labelProvider;
+	}
+	
+	public static class VariablesLabelProvider extends LabelProvider {
+		private CPVariableElementLabelProvider delegate = new CPVariableElementLabelProvider(false);
+		public Image getImage(Object element) {
+			if( element instanceof CPVariableElement)
+				return delegate.getImage(element);
+			if( element instanceof ExtendedVariable) {
+				if(((ExtendedVariable)element).isFolder()) 
+					return PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJ_FOLDER);
+				return PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJ_FILE);
+			}
+			return null;
+		}
+		public String getText(Object element) {
+			if( element instanceof CPVariableElement)
+				return delegate.getText(element);
+			if( element instanceof ExtendedVariable) 
+				return ((ExtendedVariable)element).pathAfterElement.lastSegment();
+			return element == null ? "" : element.toString();//$NON-NLS-1$
+		}	
+	}
+	
+	public static class ExtendedVariable {
+		public CPVariableElement element;
+		public IPath pathAfterElement;
+		public ExtendedVariable(CPVariableElement e, IPath p) {
+			element = e;
+			pathAfterElement = p;
+		}
+		public boolean isFolder() {
+			return element.getPath().append(pathAfterElement).toFile().isDirectory();
+		}
+	}
+	
+	private CPVariableElement[] elements;
+	private CPVariableElement[] initializeElements() {
+		String[] entries= JavaCore.getClasspathVariableNames();
+		ArrayList elements= new ArrayList(entries.length);
+		for (int i= 0; i < entries.length; i++) {
+			String name= entries[i];
+			IPath entryPath= JavaCore.getClasspathVariable(name);
+			if (entryPath != null) {
+				elements.add(new CPVariableElement(name, entryPath));
+			}
+		}
+		return (CPVariableElement[]) elements.toArray(new CPVariableElement[elements.size()]);
+	}
+
+	
+	protected ITreeContentProvider getContentProvider() {
+		if (contentProvider == null) {
+			contentProvider = new ITreeContentProvider() {
+				public Object[] getElements(Object inputElement) {
+					if( elements == null )
+						elements = initializeElements();
+					return elements;
+				}
+				public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+				}
+				public void dispose() {
+				}
+				public boolean hasChildren(Object element) {
+					return getChildren(element).length > 0;
+				}
+				public Object getParent(Object element) {
+					return null;
+				}
+				public Object[] getChildren(Object parentElement) {
+					if( parentElement instanceof CPVariableElement) {
+						if(((CPVariableElement)parentElement).getPath().toFile().isDirectory()) {
+							String[] names = ((CPVariableElement)parentElement).getPath().toFile().list();
+							ExtendedVariable[] extensions = new ExtendedVariable[names.length];
+							for( int i = 0; i < extensions.length; i++ )
+								extensions[i] = new ExtendedVariable((CPVariableElement)parentElement, new Path(names[i]));
+							return extensions;
+						}
+					}
+					if( parentElement instanceof ExtendedVariable) {
+						ExtendedVariable p1 = (ExtendedVariable)parentElement;
+						IPath parentLoc = p1.element.getPath();
+						parentLoc = parentLoc.append(p1.pathAfterElement);
+						String[] names = parentLoc.toFile().list();
+						if( names != null ) {
+							ExtendedVariable[] extensions = new ExtendedVariable[names.length];
+							for( int i = 0; i < extensions.length; i++ )
+								extensions[i] = new ExtendedVariable(p1.element, p1.pathAfterElement.append(names[i]));
+							return extensions;
+						}
+					}
+					return new Object[]{};
+				}
+			};
+		}
+		return contentProvider;
+	}
+
+	public void performFinish(IProgressMonitor monitor) throws CoreException {
+		IVirtualComponent rootComponent = (IVirtualComponent)getTaskModel().getObject(IReferenceWizardConstants.ROOT_COMPONENT);
+		String runtimeLoc = (String)getTaskModel().getObject(IReferenceWizardConstants.DEFAULT_LIBRARY_LOCATION);
+		if (selected != null ) {
+			ArrayList<IVirtualReference> refList = new ArrayList<IVirtualReference>();
+//			for (int i = 0; i < selected.length; i++) {
+				IPath variablePath = getVariablePath(selected);
+				IPath resolvedPath = JavaCore.getResolvedVariablePath(variablePath);
+				java.io.File file = new java.io.File(resolvedPath.toOSString());
+				if (file.isFile() && file.exists()) {
+					String type = VirtualArchiveComponent.VARARCHIVETYPE
+							+ IPath.SEPARATOR;
+					IVirtualComponent archive = ComponentCore
+							.createArchiveComponent(rootComponent.getProject(),
+									type + variablePath.toString());
+					VirtualReference ref = new VirtualReference(rootComponent, archive);
+					ref.setArchiveName(resolvedPath.lastSegment());
+					if (runtimeLoc != null) {
+						ref.setRuntimePath(new Path(runtimeLoc).makeAbsolute());
+					}
+					refList.add(ref);
+				}
+//			}
+			IVirtualReference[] finalRefs = refList.toArray(new IVirtualReference[refList.size()]);
+			getTaskModel().putObject(IReferenceWizardConstants.FINAL_REFERENCE, finalRefs);
+		}
+	}
+	
+	private IPath getVariablePath(Object selected) {
+		if( selected instanceof ExtendedVariable) {
+			ExtendedVariable s1 = (ExtendedVariable)selected;
+			return new Path(s1.element.getName()).append(s1.pathAfterElement);
+		}
+		return new Path(((CPVariableElement)selected).getName());
+	}
+	
+	private boolean isValidArchive(IPath path) {
+		boolean valid = true;
+		ZipFile zipFile = null;
+		try {
+			String osPath = null;
+			if(path.segmentCount() > 1){
+				IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(path);
+				if(file.exists()) {
+					IPath loc = file.getLocation();
+					if(loc != null) { 
+						osPath = loc.toOSString();
+					}
+				}
+			}
+			if(osPath == null){
+				osPath = path.toOSString();
+			}
+			zipFile = new ZipFile(new File(osPath));
+		} catch (ZipException e1){
+			valid = false;
+		} catch (IOException e2){
+			valid = false;
+		}finally {
+			if (zipFile != null){
+				try {
+					zipFile.close();
+				} catch (IOException e) {
+					JstCommonUIPlugin.getDefault().getLog().log(new Status(IStatus.ERROR, JstCommonUIPlugin.PLUGIN_ID, e.getMessage(), e));
+				}
+			}
+		}
+		return valid;
+	}
+}
diff --git a/plugins/org.eclipse.jst.common.ui/src/org/eclipse/jst/common/ui/internal/messages.properties b/plugins/org.eclipse.jst.common.ui/src/org/eclipse/jst/common/ui/internal/messages.properties
new file mode 100644
index 0000000..82ed8ed
--- /dev/null
+++ b/plugins/org.eclipse.jst.common.ui/src/org/eclipse/jst/common/ui/internal/messages.properties
@@ -0,0 +1,21 @@
+ArchiveTitle=Archives from Workspace
+ArchiveDescription=Select archives to include in the deployment assembly.
+ArchiveDialogNewTitle=Archive Selection
+ArchiveDialogNewDescription=&Select archives to include in the deployment assembly:
+ExternalArchiveTitle=Archives from File System
+ExternalArchiveDescription=Select archives to include in the deployment assembly.
+Browse=Br&owse...
+VariableReferenceTitle=Archive via Path Variable
+VariableReferenceDescription=Select archive to include in the deployment assembly.
+AddManifestEntryTaskWizardTitle=Add Manifest Entries
+AddManifestEntryTaskWizardDesc=Add manifest entries that should be accessible at runtime.
+ParentProject=&Parent project: 
+CustomEntryButton=&Add Custom Entry
+Add=A&dd...
+Remove=&Remove
+MoveUp=Move &Up
+MoveDown=Move Do&wn
+ManifestEntryColumn=Manifest Entry
+ManifestEntrySourceColumn=Source
+ConfigureParentLink=Configure available manifest entries...
+InvalidArchivesWarning=The following files were not added because they are not archive files or are corrupted: 
\ No newline at end of file
diff --git a/plugins/org.eclipse.wst.common.core/META-INF/MANIFEST.MF b/plugins/org.eclipse.wst.common.core/META-INF/MANIFEST.MF
index 34db84c..a1e6e2f 100644
--- a/plugins/org.eclipse.wst.common.core/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.wst.common.core/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.wst.common.core; singleton:=true
-Bundle-Version: 1.1.201.qualifier
+Bundle-Version: 1.2.0.qualifier
 Bundle-Activator: org.eclipse.wst.common.core.search.SearchPlugin
 Bundle-Localization: plugin
 Export-Package: org.eclipse.wst.common.core.search,
@@ -10,7 +10,8 @@
  org.eclipse.wst.common.core.search.internal;x-internal:=true,
  org.eclipse.wst.common.core.search.pattern,
  org.eclipse.wst.common.core.search.scope,
- org.eclipse.wst.common.core.search.util
+ org.eclipse.wst.common.core.search.util,
+ org.eclipse.wst.common.core.util
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.4.0,4.0.0)",
  org.eclipse.core.resources;bundle-version="[3.4.0,4.0.0)",
  org.eclipse.core.expressions;bundle-version="[3.4.0,4.0.0)"
diff --git a/plugins/org.eclipse.wst.common.core/plugin.xml b/plugins/org.eclipse.wst.common.core/plugin.xml
index c82f6a0..5d2a621 100644
--- a/plugins/org.eclipse.wst.common.core/plugin.xml
+++ b/plugins/org.eclipse.wst.common.core/plugin.xml
@@ -1,7 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <?eclipse version="3.0"?>
 <plugin>
-   <extension-point id="searchParticipants" name="%searchParticipants" />      
+   <extension-point id="searchParticipants" name="%searchParticipants" />
+   <extension-point id="uiTester" name="UI Tester" schema="schema/uiTester.exsd"/>
+   <extension-point id="uiContextSensitiveClass" name="UI Context Sensitive Class" schema="schema/uiContextSensitiveClass.exsd"/>
 </plugin>
 
 
diff --git a/plugins/org.eclipse.wst.common.core/schema/uiContextSensitiveClass.exsd b/plugins/org.eclipse.wst.common.core/schema/uiContextSensitiveClass.exsd
new file mode 100644
index 0000000..c18cf1a
--- /dev/null
+++ b/plugins/org.eclipse.wst.common.core/schema/uiContextSensitiveClass.exsd
@@ -0,0 +1,165 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Schema file written by PDE -->
+<schema targetNamespace="org.eclipse.wst.common.core" xmlns="http://www.w3.org/2001/XMLSchema">
+<annotation>
+      <appinfo>
+         <meta.schema plugin="org.eclipse.wst.common.core" id="uiContextSensitiveClass" name="UI Context Sensitive Class"/>
+      </appinfo>
+      <documentation>
+         Components are often designed in such a way that the &quot;Headless&quot; or non-graphical portions are separate from the Graphical User Interface (GUI) portions. Sometimes this is done to follow good design principles, other times there is a specific use case for doing so. When plugins follow this practice because they must vary their behavior based on whether they are running in a headless environment or a graphical environment, they often need to choose the correct implementation of a particular type. The org.eclipse.wst.common.core.uiContextSensitiveClass extension point provided by the WST component solves exactly this problem.
+&lt;p&gt;    
+To use the extension point, you must provide two extensions that are linked by a key. The key is a unique String-based value that you will later use to instanitate your class.
+&lt;p&gt;
+The first usage of the extension specifies your key, and the Headless context, and the class that should be instantiated for this (key, context) pair. This means in the headless environment this class will be instantiated when requested.
+&lt;p&gt;
+The second extension specifies the UI context and the same key, but a different implementation designed for graphical environments. This means in the UI environment this other class will be instantiated when requested.
+&lt;p&gt;
+The actual request is done in your code via:
+&lt;pre&gt;
+IMyInterface instance = (IMyInterface) UIContextDetermination.createInstance(&quot;myKey&quot;);
+&lt;/pre&gt;
+where &lt;code&gt;&quot;myKey&quot;&lt;/code&gt; is the key used on both extensions. It will then choose either the UI or the Headless extension depending upon the context.
+      </documentation>
+   </annotation>
+
+   <element name="extension">
+      <annotation>
+         <appinfo>
+            <meta.element />
+         </appinfo>
+      </annotation>
+      <complexType>
+         <sequence>
+            <element ref="uiContextSensitiveClass" minOccurs="1" maxOccurs="unbounded"/>
+         </sequence>
+         <attribute name="point" type="string" use="required">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+            </annotation>
+         </attribute>
+         <attribute name="id" type="string">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+            </annotation>
+         </attribute>
+         <attribute name="name" type="string">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+            </annotation>
+         </attribute>
+      </complexType>
+   </element>
+
+   <element name="uiContextSensitiveClass">
+      <annotation>
+         <documentation>
+            An extension point that defines an instance of a class and its appropriate context (UI or Headless)
+         </documentation>
+      </annotation>
+      <complexType>
+         <attribute name="key" type="string" use="required">
+            <annotation>
+               <documentation>
+                  The key that should be used to create an instance of the Context Sensitive super class/interface.
+               </documentation>
+            </annotation>
+         </attribute>
+         <attribute name="className" type="string" use="required">
+            <annotation>
+               <documentation>
+                  A concrete implementation for either a UI or Headless context.
+               </documentation>
+            </annotation>
+         </attribute>
+         <attribute name="context" use="required">
+            <annotation>
+               <documentation>
+                  One of &quot;UI&quot; or &quot;Headless&quot; This is case-sensitive. It must match exactly as shown here.
+               </documentation>
+            </annotation>
+            <simpleType>
+               <restriction base="string">
+                  <enumeration value="UI">
+                  </enumeration>
+                  <enumeration value="Headless">
+                  </enumeration>
+               </restriction>
+            </simpleType>
+         </attribute>
+      </complexType>
+   </element>
+
+   <annotation>
+      <appinfo>
+         <meta.section type="apiInfo"/>
+      </appinfo>
+      <documentation>
+         See &lt;code&gt;org.eclipse.wst.common.core.util.UIContextDetermination&lt;/code&gt;
+      </documentation>
+   </annotation>
+
+   <annotation>
+      <appinfo>
+         <meta.section type="since"/>
+      </appinfo>
+      <documentation>
+         6.0
+      </documentation>
+   </annotation>
+
+   <annotation>
+      <appinfo>
+         <meta.section type="examples"/>
+      </appinfo>
+      <documentation>
+         Usage for the UI context:
+&lt;pre&gt;
+   &lt;extension
+       id=&quot;context.Sensitive.Class.workingCopyManager&quot;
+       name=&quot;Working Copy Manager - UI Context Class&quot;
+       point=&quot;org.eclipse.wst.common.core.ContextSensitiveClass&quot;&gt;
+     &lt;uiContextSensitiveClass
+       context=&quot;UI&quot;
+       key=&quot;workingCopyManager&quot;
+       className=&quot;com.ibm.wtp.common.ui.WTPUIWorkingCopyManager&quot;/&gt;
+   &lt;/extension&gt;
+&lt;/pre&gt;
+&lt;br&gt;
+Usage for the Headless context:
+&lt;pre&gt;
+   &lt;extension
+       id=&quot;context.Sensitive.Class.workingCopyManager&quot;
+       name=&quot;Working Copy Manager - Headless Context Class&quot;
+       point=&quot;org.eclipse.wst.common.core.ContextSensitiveClass&quot;&gt;
+     &lt;uiContextSensitiveClass
+         context=&quot;Headless&quot;
+         key=&quot;workingCopyManager&quot;
+         className=&quot;com.ibm.wtp.common.ui.WTPHeadlessWorkingCopyManager&quot;/&gt;
+   &lt;/extension&gt;
+&lt;/pre&gt;
+&lt;br&gt;
+And finally the retrieval of the class for the current context:
+
+&lt;pre&gt;
+IWorkingCopyManager manager = (IWorkingCopyManager) UIContextDetermination.createInstance(&quot;workingCopyManager&quot;);
+&lt;/pre&gt;
+      </documentation>
+   </annotation>
+
+
+   <annotation>
+      <appinfo>
+         <meta.section type="copyright"/>
+      </appinfo>
+      <documentation>
+         Copyright (c) IBM 2003.
+      </documentation>
+   </annotation>
+
+</schema>
diff --git a/plugins/org.eclipse.wst.common.core/schema/uiTester.exsd b/plugins/org.eclipse.wst.common.core/schema/uiTester.exsd
new file mode 100644
index 0000000..df8bb48
--- /dev/null
+++ b/plugins/org.eclipse.wst.common.core/schema/uiTester.exsd
@@ -0,0 +1,133 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Schema file written by PDE -->
+<schema targetNamespace="org.eclipse.wst.common.core" xmlns="http://www.w3.org/2001/XMLSchema">
+<annotation>
+      <appinfo>
+         <meta.schema plugin="org.eclipse.wst.common.core" id="uiTester" name="UI Tester"/>
+      </appinfo>
+      <documentation>
+         This is used to tell WST that it is running in a non-HEADLESS environment. Typically UI environment is non-HEADLESS. The default if there are no implementers of this extension point that return true is HEADLESS.
+&lt;p&gt;
+A HEADLESS environment is typically a batch situation where there is no UI and the workspace is used for one operation and then terminated. Most headless tasks are done under one operation and the JavaReflectionSynchronizer may not have a chance to flush a bad reflection before the real type needs to be found and can be found. So what would happen is if a class was created during this one operation it would not be found because the notifications had not yet gone out. 
+&lt;p&gt;
+In a UI environment the operations are typically short and do only a few things and the results aren&apos;t needed until after the operation has completed. In that case it is more efficient to not keep checking if a class has appeared everytime a request is made, instead it will wait for the notification of the added class to appear before resetting the definition to allow checking again later.
+&lt;p&gt;
+If there is more than one implementer of this interface in the application, then it will go through each of them once until one returns true. As soon as one returns true it will stop and mark the application as being non-HEADLESS. This will be done only once for the application. It will not be again until the next session of the application.
+&lt;p&gt;
+This is typically an internal extension point only. The WST UI plugin will provide an implementation that will return true if the Platform UI is active. So this will normally not be needed to be implemented by most customers.
+      </documentation>
+   </annotation>
+
+   <element name="extension">
+      <annotation>
+         <appinfo>
+            <meta.element />
+         </appinfo>
+      </annotation>
+      <complexType>
+         <sequence>
+            <element ref="uiTester"/>
+         </sequence>
+         <attribute name="point" type="string" use="required">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+            </annotation>
+         </attribute>
+         <attribute name="id" type="string">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+            </annotation>
+         </attribute>
+         <attribute name="name" type="string">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+            </annotation>
+         </attribute>
+      </complexType>
+   </element>
+
+   <element name="uiTester">
+      <annotation>
+         <documentation>
+            The uiTester definition element.
+         </documentation>
+      </annotation>
+      <complexType>
+         <attribute name="className" type="string" use="required">
+            <annotation>
+               <documentation>
+                  The class name of the UITester for this extension. It must implement &lt;samp&gt;org.eclipse.wst.common.core.util.UITester&lt;/samp&gt;.
+               </documentation>
+               <appinfo>
+                  <meta.attribute kind="java" basedOn="org.eclipse.wst.common.core.util.UITester"/>
+               </appinfo>
+            </annotation>
+         </attribute>
+      </complexType>
+   </element>
+
+   <annotation>
+      <appinfo>
+         <meta.section type="apiInfo"/>
+      </appinfo>
+      <documentation>
+         The &lt;samp&gt;className&lt;/samp&gt; attribute must be a fully-qualified class that implements the &lt;samp&gt;org.eclipse.wst.common.core.util.UITester&lt;/samp&gt; interface for the tester.
+      </documentation>
+   </annotation>
+
+   <annotation>
+      <appinfo>
+         <meta.section type="since"/>
+      </appinfo>
+      <documentation>
+         1.0.0
+      </documentation>
+   </annotation>
+
+   <annotation>
+      <appinfo>
+         <meta.section type="examples"/>
+      </appinfo>
+      <documentation>
+         The following is an example of an implementer: 
+
+&lt;p&gt;
+&lt;pre&gt;
+ &lt;extension point=&quot;org.eclipse.wst.common.core.uiTester&quot;&gt;
+  &lt;uiTester
+   className=&quot;com.example.UITesterImplementation&quot;/&gt;
+ &lt;/extension&gt;
+&lt;/pre&gt;
+&lt;/p&gt;
+      </documentation>
+   </annotation>
+
+   <annotation>
+      <appinfo>
+         <meta.section type="implementation"/>
+      </appinfo>
+      <documentation>
+         There is no default implementation for this class.
+      </documentation>
+   </annotation>
+
+   <annotation>
+      <appinfo>
+         <meta.section type="copyright"/>
+      </appinfo>
+      <documentation>
+         Copyright (c) 2004, 2006 IBM Corporation and others.&lt;br&gt;
+All rights reserved. This program and the accompanying materials are made 
+available under the terms of the Eclipse Public License v1.0 which accompanies 
+this distribution, and is available at 
+&lt;a href=&quot;http://www.eclipse.org/legal/epl-v10.html&quot;&gt;http://www.eclipse.org/legal/epl-v10.html&lt;/a&gt;
+      </documentation>
+   </annotation>
+
+</schema>
diff --git a/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/search/SearchPlugin.java b/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/search/SearchPlugin.java
index cf7a9fc..5d8c303 100644
--- a/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/search/SearchPlugin.java
+++ b/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/search/SearchPlugin.java
@@ -13,7 +13,11 @@
 
 import java.util.Map;
 
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Platform;
 import org.eclipse.core.runtime.Plugin;
+import org.eclipse.core.runtime.Status;
 import org.eclipse.wst.common.core.search.internal.SearchParticipantRegistry;
 import org.eclipse.wst.common.core.search.internal.SearchParticipantRegistryReader;
 import org.eclipse.wst.common.core.search.pattern.SearchPattern;
@@ -30,6 +34,21 @@
  */
 public class SearchPlugin extends Plugin implements ISearchOptions
 {
+	//the ID for this plugin (added automatically by logging quickfix)
+	public static final String PLUGIN_ID = "org.eclipse.wst.common.core"; //$NON-NLS-1$
+
+	/**
+	 * UI Context extension point.
+	 * 
+	 * @since 1.0.0
+	 */
+	public static final String UI_CONTEXT_EXTENSION_POINT = "uiContextSensitiveClass"; //$NON-NLS-1$
+	/**
+	 * UITester element name.
+	 * 
+	 * @since 1.0.0
+	 */
+	public static final String UI_TESTER_EXTENSION_POINT = "uiTester"; //$NON-NLS-1$
 
 	private SearchParticipantRegistry searchParticipantRegistry;
 
@@ -100,4 +119,31 @@
 		return getSearchParticipantRegistry().getParticipants(pattern, searchOptions);
 	}
 
+	public static IStatus createStatus(int severity, String message, Throwable exception) {
+		return new Status(severity, PLUGIN_ID, message, exception);
+	}
+
+	public static IStatus createStatus(int severity, String message) {
+		return createStatus(severity, message, null);
+	}
+
+	public static void logError(Throwable exception) {
+		Platform.getLog(Platform.getBundle(PLUGIN_ID)).log( createStatus(IStatus.ERROR, exception.getMessage(), exception));
+	}
+
+	public static void logError(CoreException exception) {
+		Platform.getLog(Platform.getBundle(PLUGIN_ID)).log( exception.getStatus() );
+	}
+
+	public static void logWarning(String message) {
+		Platform.getLog(Platform.getBundle(PLUGIN_ID)).log(createStatus(IStatus.WARNING, message));
+	}
+
+	public static void logWarning(Throwable exception) {
+		Platform.getLog(Platform.getBundle(PLUGIN_ID)).log( createStatus(IStatus.WARNING, exception.getMessage(), exception));
+	}
+
+	public static void logError(String message) {
+		Platform.getLog(Platform.getBundle(PLUGIN_ID)).log( createStatus(IStatus.ERROR, message));
+	}
 }
diff --git a/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/util/RegistryReader.java b/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/util/RegistryReader.java
new file mode 100644
index 0000000..abf3e2b
--- /dev/null
+++ b/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/util/RegistryReader.java
@@ -0,0 +1,166 @@
+/*******************************************************************************
+ * Copyright (c) 2005, 2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.common.core.util;
+import org.eclipse.core.runtime.*;
+import org.eclipse.wst.common.core.search.SearchPlugin;
+import org.osgi.framework.Bundle;
+
+
+/**
+ * Class to read a registry. It is meant to be subclassed to provide specific function.
+ * 
+ * @since 1.0.0
+ */
+public abstract class RegistryReader {
+
+	private static final String JEM_PLUGIN_ID = "org.eclipse.jem.util"; //$NON-NLS-1$
+	
+	String pluginId;
+
+	String extensionPointId;
+
+	private static Bundle systemBundle;
+
+	/**
+	 * Utility method to get the plugin id of a configuation element
+	 * 
+	 * @param configurationElement
+	 * @return plugin id of configuration element
+	 * @since 1.0.0
+	 */
+	public static String getPluginId(IConfigurationElement configurationElement) {
+		String pluginId = null;
+
+		if (configurationElement != null) {
+			IExtension extension = configurationElement.getDeclaringExtension();
+
+			if (extension != null)
+				pluginId = extension.getContributor().getName();
+		}
+
+		return pluginId;
+	}
+
+	/**
+	 * Constructor for RegistryReader taking a registry, plugin id, and extension point id.
+	 * 
+	 * @param registry
+	 * @param pluginID
+	 * @param extensionPoint
+	 * 
+	 * @deprecated Use RegistryReader(plugin, extensionPoint) instead. The registry passed in is ignored.
+	 * @since 1.0.0
+	 */
+	public RegistryReader(IPluginRegistry registry, String pluginID, String extensionPoint) {
+		this(pluginID, extensionPoint);
+	}
+
+	/**
+	 * Constructor for RegistryReader taking the plugin id and extension point id.
+	 * 
+	 * @param pluginID
+	 * @param extensionPoint
+	 * 
+	 * @since 1.0.0
+	 */
+	public RegistryReader(String pluginID, String extensionPoint) {
+		super();
+		this.pluginId = pluginID;
+		extensionPointId = extensionPoint;
+	}
+
+	private void internalReadElement(IConfigurationElement element) {
+		boolean recognized = this.readElement(element);
+		if (!recognized) {
+			logError(element, "Error processing extension: " + element); //$NON-NLS-1$
+		}
+	}
+
+	/*
+	 * Logs the error in the desktop log using the provided text and the information in the configuration element.
+	 */
+	protected void logError(IConfigurationElement element, String text) {
+		IExtension extension = element.getDeclaringExtension();
+		StringBuffer buf = new StringBuffer();
+		buf.append("Plugin " + extension.getContributor().getName() + ", extension " + extension.getExtensionPointUniqueIdentifier()); //$NON-NLS-1$ //$NON-NLS-2$
+		buf.append("\n" + text); //$NON-NLS-1$
+		SearchPlugin.logError(buf.toString());
+	}
+
+	/*
+	 * Logs a very common registry error when a required attribute is missing.
+	 */
+	protected void logMissingAttribute(IConfigurationElement element, String attributeName) {
+		logError(element, "Required attribute '" + attributeName + "' not defined"); //$NON-NLS-1$ //$NON-NLS-2$
+	}
+
+	/*
+	 * Implement this method to read element attributes. If this element has subelements, the reader will recursively cycle through them and call this
+	 * method so don't do it here.
+	 */
+	public abstract boolean readElement(IConfigurationElement element);
+
+	/**
+	 * Read the extension point and parse it.
+	 * 
+	 * @since 1.0.0
+	 */
+	public void readRegistry() {
+		IExtensionPoint point = Platform.getExtensionRegistry().getExtensionPoint(pluginId, extensionPointId);
+		if (point != null)
+		{
+			IConfigurationElement[] elements = point.getConfigurationElements();
+			for (int i = 0; i < elements.length; i++) {
+				internalReadElement(elements[i]);
+			}
+		}
+		// the following code is to handle the contributions to the deprecated org.eclipse.jem.util extensions
+		if (!JEM_PLUGIN_ID.equals(pluginId))
+		{
+			point = Platform.getExtensionRegistry().getExtensionPoint(JEM_PLUGIN_ID, extensionPointId);
+			if (point != null)
+			{
+				IConfigurationElement[] elements = point.getConfigurationElements();
+				for (int i = 0; i < elements.length; i++) {
+					internalReadElement(elements[i]);
+				}
+			}
+		}
+	}
+
+	/**
+	 * Tests to see if it is valid at this point in time to create an executable extension. A valid reason not to would be that the workspace is
+	 * shutting donw.
+	 * 
+	 * @param element
+	 * @return <code>true</code> if it is valid point to create an executable extension.
+	 * 
+	 * @since 1.0.0
+	 */
+	public static boolean canCreateExecutableExtension(IConfigurationElement element) {
+		if (Platform.isRunning() && getSystemBundle().getState() != Bundle.STOPPING)
+			return true;
+		return false;
+	}
+
+	/**
+	 * Get the system bundle
+	 * 
+	 * @return system bundle.
+	 * 
+	 * @since 1.0.0
+	 */
+	protected static Bundle getSystemBundle() {
+		if (systemBundle == null)
+			systemBundle = Platform.getBundle("org.eclipse.osgi"); //$NON-NLS-1$
+		return systemBundle;
+	}
+}
diff --git a/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/util/UIContextDetermination.java b/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/util/UIContextDetermination.java
new file mode 100644
index 0000000..69c0bbc
--- /dev/null
+++ b/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/util/UIContextDetermination.java
@@ -0,0 +1,201 @@
+/*******************************************************************************
+ * Copyright (c) 2005 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials 
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.common.core.util;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.core.runtime.*;
+import org.eclipse.wst.common.core.search.SearchPlugin;
+
+
+/**
+ * Static utility class for UIContext determination.
+ * 
+ * @since 1.0.0
+ */
+public class UIContextDetermination {
+
+	private static final int UNKNOWN = 100;
+
+	public static final String HEADLESS_CONTEXT_LITERAL = "Headless"; //$NON-NLS-1$
+
+	public static final String UI_CONTEXT_LITERAL = "UI"; //$NON-NLS-1$
+
+	public static final int HEADLESS_CONTEXT = 102;
+
+	public static final int UI_CONTEXT = 101;
+
+	private static Map cachedExtensions = null;
+
+	private static int currentContext = UNKNOWN;
+
+	/**
+	 * Do not use- this class should not be instantiated, but should be accessed via its static methods only.
+	 */
+	protected UIContextDetermination() {
+	}
+
+	/**
+	 * Returns an instance of a given class based on the UI or Headless context.
+	 * 
+	 * @param key
+	 * @return new class instance for the given key.
+	 * @throws IllegalArgumentException
+	 *             If the key is invalid (e.g. no extension is found for the key)
+	 */
+	public static Object createInstance(String key) {
+		Object result = null;
+		if (cachedExtensions == null)
+			initExtensions();
+		IConfigurationElement contextSensitiveClass = (IConfigurationElement) cachedExtensions.get(key);
+		try {
+			if (contextSensitiveClass != null)
+				result = contextSensitiveClass
+						.createExecutableExtension(UIContextDeterminationRegistryReader.UI_CONTEXT_SENSTIVE_CLASS_CLASSNAME_ATTR);
+		} catch (CoreException e) {
+			SearchPlugin.logError("Problem loading extension not found for key \"" + key + "\"."); //$NON-NLS-1$ //$NON-NLS-2$
+			SearchPlugin.logError(e);
+		}
+		if (result == null)
+			SearchPlugin.logError("Extension not found for key \"" + key + "\"."); //$NON-NLS-1$ //$NON-NLS-2$
+		return result;
+	}
+
+	/**
+	 * Returns the current context -- determines the value if necessary.
+	 * 
+	 * @return current context
+	 * @see #HEADLESS_CONTEXT
+	 * @see #UI_CONTEXT
+	 */
+	public static int getCurrentContext() {
+		if (currentContext == UNKNOWN) {
+			currentContext = HEADLESS_CONTEXT;
+			new UITesterRegistryReader().readRegistry();
+		}
+		return currentContext;
+	}
+
+	/*
+	 * Invokes the UIContextDeterminationRegistryReader to cache all of the extensions, if necessary.
+	 *  
+	 */
+	private static void initExtensions() {
+		if (cachedExtensions == null) {
+			cachedExtensions = new HashMap();
+			new UIContextDeterminationRegistryReader().readRegistry();
+		}
+	}
+
+	/*
+	 * Converts the input to one of UI_CONTEXT or HEADLESS_CONTEXT. Defaults to HEADLESS on invalid input
+	 * 
+	 * @param literal @return
+	 */
+	private static int convertLiteral(String literal) {
+		return (UI_CONTEXT_LITERAL.equals(literal)) ? UI_CONTEXT : HEADLESS_CONTEXT;
+	}
+
+	/*
+	 * Reads the registration of UI Context-sensitive class extensions and initializes the cache of the UIContextDetermination object.
+	 * 
+	 * @author mdelder
+	 */
+	private static class UIContextDeterminationRegistryReader extends RegistryReader {
+
+		public static final String UI_CONTEXT_SENSTIVE_CLASS_ELEMENT = "uiContextSensitiveClass"; //$NON-NLS-1$
+
+		public static final String UI_CONTEXT_SENSTIVE_CLASS_KEY_ATTR = "key"; //$NON-NLS-1$
+
+		public static final String UI_CONTEXT_SENSTIVE_CLASS_CLASSNAME_ATTR = "className"; //$NON-NLS-1$
+
+		public static final String UI_CONTEXT_SENSTIVE_CLASS_CONTEXT_ATTR = "context"; //$NON-NLS-1$
+
+		public UIContextDeterminationRegistryReader() {
+			super(SearchPlugin.PLUGIN_ID, SearchPlugin.UI_CONTEXT_EXTENSION_POINT);
+		}
+
+		/*
+		 * (non-Javadoc)
+		 * 
+		 * @see org.eclipse.jem.util.RegistryReader#readElement(org.eclipse.core.runtime.IConfigurationElement)
+		 */
+		public boolean readElement(IConfigurationElement element) {
+			boolean result = false;
+			if (element.getName().equals(UI_CONTEXT_SENSTIVE_CLASS_ELEMENT)) {
+
+				String key = element.getAttribute(UI_CONTEXT_SENSTIVE_CLASS_KEY_ATTR);
+				String context = element.getAttribute(UI_CONTEXT_SENSTIVE_CLASS_CONTEXT_ATTR);
+
+				if (!cachedExtensions.containsKey(key) || getCurrentContext() == convertLiteral(context))
+					cachedExtensions.put(key, element);
+				result = true;
+			}
+			return result;
+		}
+	}
+
+	/*
+	 * Reads the uiTester extension and instantiate the any of the UITester classes it finds.
+	 * 
+	 * The implementation has the side effect that if multiple UITesters are registered, any of them can trip the currentContext into the UI_CONTEXT
+	 * state.
+	 * 
+	 * @author mdelder
+	 */
+	private static class UITesterRegistryReader extends RegistryReader {
+
+		public static final String UI_TESTER_ELEMENT = "uiTester"; //$NON-NLS-1$
+
+		public static final String UI_TESTER_CLASSNAME_ATTR = "className"; //$NON-NLS-1$
+
+		public UITesterRegistryReader() {
+			super(SearchPlugin.PLUGIN_ID, SearchPlugin.UI_TESTER_EXTENSION_POINT);
+		}
+
+		/*
+		 * (non-Javadoc)
+		 * 
+		 * @see com.ibm.etools.emf.workbench.RegistryReader#readElement(org.eclipse.core.runtime.IConfigurationElement)
+		 */
+		public boolean readElement(IConfigurationElement element) {
+			boolean result = false;
+			if (element.getName().equals(UI_TESTER_ELEMENT)) {
+				result = true;
+				try {
+					// Don't bother running tester it if we already processed one extension that returned true.
+					if (currentContext != UI_CONTEXT && canCreateExecutableExtension(element)) {
+						UITester tester = (UITester) element.createExecutableExtension(UI_TESTER_CLASSNAME_ATTR);
+						if (tester.isCurrentContextUI())
+							currentContext = UI_CONTEXT;
+					}
+				} catch (Exception t) {
+					SearchPlugin.logWarning("UIContextDetermination is proceeding in HEADLESS mode"); //$NON-NLS-1$
+				}
+			}
+			return result;
+		}
+
+		public void readRegistry() {
+			super.readRegistry();
+			IExtensionPoint point = Platform.getExtensionRegistry().getExtensionPoint("org.eclipse.jem.util", extensionPointId);
+			if (point == null)
+				return;
+			IConfigurationElement[] elements = point.getConfigurationElements();
+			for (int i = 0; i < elements.length; i++) {
+				boolean recognized = this.readElement(elements[i]);
+				if (!recognized) {
+					logError(elements[i], "Error processing extension: " + elements[i]); //$NON-NLS-1$
+				}
+			}
+		}
+	}
+}
diff --git a/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/util/UITester.java b/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/util/UITester.java
new file mode 100644
index 0000000..768ed10
--- /dev/null
+++ b/plugins/org.eclipse.wst.common.core/src-search/org/eclipse/wst/common/core/util/UITester.java
@@ -0,0 +1,28 @@
+package org.eclipse.wst.common.core.util;
+/*******************************************************************************
+ * Copyright (c) 2005 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials 
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
+/**
+ * Interface for a UITester. The "classname" attribute on the "uiTester" extension point should implement this class.
+ * 
+ * @since 1.0.0
+ */
+public interface UITester {
+
+	/**
+	 * Answer if the current context is an UI context.
+	 * 
+	 * @return <code>true</code> if an UI context.
+	 * 
+	 * @since 1.0.0
+	 */
+	public boolean isCurrentContextUI();
+}
diff --git a/plugins/org.eclipse.wst.common.emf/.classpath b/plugins/org.eclipse.wst.common.emf/.classpath
index 96202d8..302a786 100644
--- a/plugins/org.eclipse.wst.common.emf/.classpath
+++ b/plugins/org.eclipse.wst.common.emf/.classpath
@@ -2,7 +2,7 @@
 <classpath>
 	<classpathentry kind="src" path="wtpemf/"/>
 	<classpathentry kind="src" path="workbench/"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.4"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
 	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins">
 		<accessrules>
 			<accessrule kind="accessible" pattern="org/eclipse/wst/common/**"/>
diff --git a/plugins/org.eclipse.wst.common.emf/.settings/org.eclipse.jdt.core.prefs b/plugins/org.eclipse.wst.common.emf/.settings/org.eclipse.jdt.core.prefs
index 6c7418f..c296c08 100644
--- a/plugins/org.eclipse.wst.common.emf/.settings/org.eclipse.jdt.core.prefs
+++ b/plugins/org.eclipse.wst.common.emf/.settings/org.eclipse.jdt.core.prefs
@@ -1,63 +1,95 @@
-#Sat Mar 24 02:06:02 EDT 2007
-eclipse.preferences.version=1
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.2
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.4
-org.eclipse.jdt.core.compiler.debug.lineNumber=generate
-org.eclipse.jdt.core.compiler.debug.localVariable=generate
-org.eclipse.jdt.core.compiler.debug.sourceFile=generate
-org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=ignore
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=warning
-org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
-org.eclipse.jdt.core.compiler.problem.deprecation=warning
-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
-org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
-org.eclipse.jdt.core.compiler.problem.discouragedReference=error
-org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=warning
-org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
-org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
-org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore
-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=error
-org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
-org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=error
-org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=error
-org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
-org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
-org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=error
-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
-org.eclipse.jdt.core.compiler.problem.nullReference=ignore
-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=error
-org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=ignore
-org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore
-org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore
-org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=error
-org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
-org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
-org.eclipse.jdt.core.compiler.problem.typeParameterHiding=error
-org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=ignore
-org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
-org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=ignore
-org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
-org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=ignore
-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.unusedImport=error
-org.eclipse.jdt.core.compiler.problem.unusedLabel=error
-org.eclipse.jdt.core.compiler.problem.unusedLocal=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+#Wed Jun 24 10:13:16 EDT 2009
 org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=error
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=error
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=error
+org.eclipse.jdt.core.compiler.problem.unusedLocal=error
+org.eclipse.jdt.core.compiler.problem.emptyStatement=error
+org.eclipse.jdt.core.compiler.problem.unusedLabel=error
+org.eclipse.jdt.core.compiler.problem.unusedParameter=warning
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=error
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=warning
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=error
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=enabled
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
 org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=error
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=error
+org.eclipse.jdt.core.compiler.problem.unusedImport=error
+org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=error
+org.eclipse.jdt.core.builder.invalidClasspath=abort
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=warning
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=error
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=error
+org.eclipse.jdt.core.codeComplete.argumentSuffixes=
+org.eclipse.jdt.core.codeComplete.argumentPrefixes=
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=error
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=error
+org.eclipse.jdt.core.compiler.problem.nullReference=error
+org.eclipse.jdt.core.compiler.source=1.5
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=error
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=error
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=error
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=warning
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=error
+eclipse.preferences.version=1
+org.eclipse.jdt.core.incompleteClasspath=error
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=error
+org.eclipse.jdt.core.compiler.problem.deadCode=error
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=enabled
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=error
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeUncheckedExceptions=disabled
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
+org.eclipse.jdt.core.codeComplete.fieldPrefixes=
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
 org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error
-org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=ignore
-org.eclipse.jdt.core.compiler.source=1.3
+org.eclipse.jdt.core.compiler.problem.autoboxing=warning
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=error
+org.eclipse.jdt.core.codeComplete.fieldSuffixes=
+org.eclipse.jdt.core.codeComplete.localSuffixes=
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=error
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=error
+org.eclipse.jdt.core.codeComplete.localPrefixes=
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=error
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+instance/org.eclipse.core.net/org.eclipse.core.net.hasMigrated=true
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
diff --git a/plugins/org.eclipse.wst.common.emf/META-INF/MANIFEST.MF b/plugins/org.eclipse.wst.common.emf/META-INF/MANIFEST.MF
index 1f019c9..5878621 100644
--- a/plugins/org.eclipse.wst.common.emf/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.wst.common.emf/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.wst.common.emf; singleton:=true
-Bundle-Version: 1.1.300.qualifier
+Bundle-Version: 1.2.100.qualifier
 Bundle-Activator: org.eclipse.wst.common.internal.emf.plugin.EcoreUtilitiesPlugin
 Bundle-Vendor: %pluginProvider
 Bundle-Localization: plugin
@@ -13,7 +13,7 @@
  org.eclipse.wst.common.frameworks;bundle-version="[1.1.200,2.0.0)",
  org.eclipse.core.runtime;bundle-version="[3.4.0,4.0.0)",
  org.eclipse.core.resources;bundle-version="[3.4.0,4.0.0)",
- org.eclipse.jem.util;bundle-version="[2.0.100,3.0.0)"
+ org.eclipse.wst.common.core;bundle-version="[1.1.201,2.0.0)"
 Eclipse-LazyStart: true
-Bundle-RequiredExecutionEnvironment: J2SE-1.4
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
 Bundle-ActivationPolicy: lazy
diff --git a/plugins/org.eclipse.wst.common.emf/plugin.xml b/plugins/org.eclipse.wst.common.emf/plugin.xml
index dde6ad8..5dc13a6 100644
--- a/plugins/org.eclipse.wst.common.emf/plugin.xml
+++ b/plugins/org.eclipse.wst.common.emf/plugin.xml
@@ -24,7 +24,7 @@
    </extension>
    
       <extension
-         point="org.eclipse.jem.util.uiContextSensitiveClass">
+         point="org.eclipse.wst.common.core.uiContextSensitiveClass">
       <uiContextSensitiveClass
             context="Headless"
             key="rendererFactory"
diff --git a/plugins/org.eclipse.wst.common.emf/workbench/org/eclipse/wst/common/internal/emf/ResourceSynchronizedIsLoadingAdapter.java b/plugins/org.eclipse.wst.common.emf/workbench/org/eclipse/wst/common/internal/emf/ResourceSynchronizedIsLoadingAdapter.java
index 0c5204e..d4b8ea4 100644
--- a/plugins/org.eclipse.wst.common.emf/workbench/org/eclipse/wst/common/internal/emf/ResourceSynchronizedIsLoadingAdapter.java
+++ b/plugins/org.eclipse.wst.common.emf/workbench/org/eclipse/wst/common/internal/emf/ResourceSynchronizedIsLoadingAdapter.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2009 IBM Corporation and others.
+ * Copyright (c) 2005, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -10,9 +10,6 @@
  *******************************************************************************/
 /*
  * Created on Oct 26, 2004
- *
- * TODO To change the template for this generated file go to
- * Window - Preferences - Java - Code Style - Code Templates
  */
 package org.eclipse.wst.common.internal.emf;
 
@@ -21,6 +18,7 @@
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.common.notify.Notifier;
 import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.wst.common.internal.emf.plugin.EcoreUtilitiesPlugin;
 import org.eclipse.wst.common.internal.emf.utilities.ResourceIsLoadingAdapter;
 
 
@@ -59,8 +57,9 @@
 	/*
 	 * (non-Javadoc)
 	 * 
-	 * @see com.ibm.wtp.internal.emf.utilities.ResourceIsLoadingAdapter#waitForResourceToLoad()
+	 * @see org.eclipse.wst.common.internal.emf.utilities.ResourceIsLoadingAdapter#waitForResourceToLoad()
 	 */
+	@Override
 	public void waitForResourceToLoad() {
 
 		if (loadingLock == null)
@@ -83,16 +82,12 @@
 	}
 
 
-	/**
-	 * 
-	 */
 	private void logWarning() {
-		Notifier target = getTarget();
-		if (target == null || !(target instanceof Resource)) {
-			Resource resource = (Resource) target;
-			System.err.println("[WARNING] Could not acquire Semaphore Lock for Resource: \"" + resource.getURI() + "\" in " + getClass());
+		Notifier notificationTarget = getTarget();
+		if (notificationTarget != null && notificationTarget instanceof Resource) {
+			Resource resource = (Resource) notificationTarget;
+			EcoreUtilitiesPlugin.logError("[WARNING] Could not acquire Semaphore Lock for Resource: \"" + resource.getURI() + "\" in " + getClass());  //$NON-NLS-1$//$NON-NLS-2$
 		}
-
 	}
 
 
@@ -101,6 +96,7 @@
 	 * 
 	 * @see com.ibm.wtp.internal.emf.utilities.ResourceIsLoadingAdapter#notifyChanged(org.eclipse.emf.common.notify.Notification)
 	 */
+	@Override
 	public void notifyChanged(Notification notification) {
 
 		if (notification.getNotifier() != null) {
@@ -119,6 +115,7 @@
 	 * 
 	 * @see com.ibm.wtp.internal.emf.utilities.ResourceIsLoadingAdapter#forceRelease()
 	 */
+	@Override
 	public void forceRelease() {
 		if (loadingLock != null && loadingLock.getDepth() > 0)
 			loadingLock.release();
diff --git a/plugins/org.eclipse.wst.common.emf/workbench/org/eclipse/wst/common/internal/emf/ResourceSynchronizedIsLoadingAdapterFactory.java b/plugins/org.eclipse.wst.common.emf/workbench/org/eclipse/wst/common/internal/emf/ResourceSynchronizedIsLoadingAdapterFactory.java
index 1990e8a..901b3b6 100644
--- a/plugins/org.eclipse.wst.common.emf/workbench/org/eclipse/wst/common/internal/emf/ResourceSynchronizedIsLoadingAdapterFactory.java
+++ b/plugins/org.eclipse.wst.common.emf/workbench/org/eclipse/wst/common/internal/emf/ResourceSynchronizedIsLoadingAdapterFactory.java
@@ -10,9 +10,6 @@
  *******************************************************************************/
 /*
  * Created on Oct 26, 2004
- *
- * TODO To change the template for this generated file go to
- * Window - Preferences - Java - Code Style - Code Templates
  */
 package org.eclipse.wst.common.internal.emf;
 
@@ -22,9 +19,6 @@
 
 /**
  * @author mdelder
- *
- * TODO To change the template for this generated type comment go to
- * Window - Preferences - Java - Code Style - Code Templates
  */
 public class ResourceSynchronizedIsLoadingAdapterFactory extends ResourceIsLoadingAdapterFactory {
 
@@ -32,7 +26,8 @@
     /* (non-Javadoc)
      * @see com.ibm.wtp.internal.emf.utilities.ResourceIsLoadingAdapterFactory#createResourceIsLoadingAdapter()
      */
-    public ResourceIsLoadingAdapter createResourceIsLoadingAdapter() { 
+    @Override
+	public ResourceIsLoadingAdapter createResourceIsLoadingAdapter() { 
         return new ResourceSynchronizedIsLoadingAdapter();
     }
 }
diff --git a/plugins/org.eclipse.wst.common.emf/workbench/org/eclipse/wst/common/internal/emf/plugin/EcoreUtilitiesPlugin.java b/plugins/org.eclipse.wst.common.emf/workbench/org/eclipse/wst/common/internal/emf/plugin/EcoreUtilitiesPlugin.java
index 1c24c05..1f19437 100644
--- a/plugins/org.eclipse.wst.common.emf/workbench/org/eclipse/wst/common/internal/emf/plugin/EcoreUtilitiesPlugin.java
+++ b/plugins/org.eclipse.wst.common.emf/workbench/org/eclipse/wst/common/internal/emf/plugin/EcoreUtilitiesPlugin.java
@@ -21,6 +21,11 @@
 import org.eclipse.wst.common.internal.emf.resource.RendererFactory;
 import org.eclipse.wst.common.internal.emf.utilities.ResourceIsLoadingAdapterFactory;
 import org.osgi.framework.BundleContext;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Platform;
+import java.lang.Throwable;
+import org.eclipse.core.runtime.CoreException;
 
 /**
  * @author DABERG
@@ -29,6 +34,8 @@
  * Generation>Code and Comments
  */
 public class EcoreUtilitiesPlugin extends Plugin {
+	//the ID for this plugin (added automatically by logging quickfix)
+	public static final String PLUGIN_ID = "org.eclipse.wst.common.emf"; //$NON-NLS-1$
 	public static final String ID = "org.eclipse.wst.common.emf"; //$NON-NLS-1$
 	public static final String TRANSLATOR_EXTENSTION_POINT = "translatorExtension"; //$NON-NLS-1$
 
@@ -44,6 +51,7 @@
 	 * 
 	 * @see org.eclipse.core.runtime.Plugin#startup()
 	 */
+	@Override
 	public void start(BundleContext context) throws Exception {
 		super.start(context);
 		RendererFactory.setDefaultHandler(PluginRendererFactoryDefaultHandler.INSTANCE);
@@ -52,4 +60,33 @@
 		//use a synchronized loading adapter factory
 		ResourceIsLoadingAdapterFactory.INSTANCE = new ResourceSynchronizedIsLoadingAdapterFactory();
 	}
+
+	public static IStatus createStatus(int severity, String message, Throwable exception) {
+		return new Status(severity, PLUGIN_ID, message, exception);
+	}
+
+	public static IStatus createStatus(int severity, String message) {
+		return createStatus(severity, message, null);
+	}
+
+	public static void logError(Throwable exception) {
+		Platform.getLog(Platform.getBundle(PLUGIN_ID)).log( createStatus(IStatus.ERROR, exception.getMessage(), exception));
+	}
+
+	public static void logError(CoreException exception) {
+		Platform.getLog(Platform.getBundle(PLUGIN_ID)).log( exception.getStatus() );
+	}
+
+	public static void logError(String message) {
+		Platform.getLog(Platform.getBundle(PLUGIN_ID)).log( createStatus(IStatus.ERROR, message));
+	}
+
+	public static void logWarning(String message) {
+		Platform.getLog(Platform.getBundle(PLUGIN_ID)).log(createStatus(IStatus.WARNING, message));
+	}
+	
+	public static void logWarning(Throwable exception) {
+		Platform.getLog(Platform.getBundle(PLUGIN_ID)).log( createStatus(IStatus.WARNING, exception.getMessage(), exception));
+	}
+
 }
diff --git a/plugins/org.eclipse.wst.common.emf/workbench/org/eclipse/wst/common/internal/emf/plugin/PluginRendererFactoryDefaultHandler.java b/plugins/org.eclipse.wst.common.emf/workbench/org/eclipse/wst/common/internal/emf/plugin/PluginRendererFactoryDefaultHandler.java
index ee80757..4ad9dc9 100644
--- a/plugins/org.eclipse.wst.common.emf/workbench/org/eclipse/wst/common/internal/emf/plugin/PluginRendererFactoryDefaultHandler.java
+++ b/plugins/org.eclipse.wst.common.emf/workbench/org/eclipse/wst/common/internal/emf/plugin/PluginRendererFactoryDefaultHandler.java
@@ -8,24 +8,12 @@
  * Contributors:
  * IBM Corporation - initial API and implementation
  *******************************************************************************/
-/*
- * Created on Dec 1, 2003
- *
- * To change the template for this generated file go to
- * Window&gt;Preferences&gt;Java&gt;Code Generation&gt;Code and Comments
- */
 package org.eclipse.wst.common.internal.emf.plugin;
 
-import org.eclipse.jem.util.UIContextDetermination;
+import org.eclipse.wst.common.core.util.UIContextDetermination;
 import org.eclipse.wst.common.internal.emf.resource.EMF2DOMRendererFactoryDefaultHandler;
 import org.eclipse.wst.common.internal.emf.resource.RendererFactory;
 
-/**
- * @author schacher
- * 
- * To change the template for this generated type comment go to
- * Window&gt;Preferences&gt;Java&gt;Code Generation&gt;Code and Comments
- */
 public class PluginRendererFactoryDefaultHandler extends EMF2DOMRendererFactoryDefaultHandler {
 
 	static final PluginRendererFactoryDefaultHandler INSTANCE = new PluginRendererFactoryDefaultHandler();
@@ -43,6 +31,7 @@
 	 * 
 	 * @see com.ibm.etools.emf2xml.EMF2DOMRendererFactoryDefaultHandler#getDefaultRendererFactory()
 	 */
+	@Override
 	public RendererFactory getDefaultRendererFactory() {
 		RendererFactory aFactory = (RendererFactory) UIContextDetermination.createInstance(EXT_POINT_NAME);
 		return aFactory == null ? super.getDefaultRendererFactory() : aFactory;
diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/AbstractRendererImpl.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/AbstractRendererImpl.java
index cff83b7..7a9545b 100644
--- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/AbstractRendererImpl.java
+++ b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/AbstractRendererImpl.java
@@ -151,4 +151,8 @@
 	public boolean isBatchMode() {
 		return false;
 	}
+
+	public boolean isReverting() {
+		return false;
+	}
 }
diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/AttributeTranslatorFilter.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/AttributeTranslatorFilter.java
index b0d0869..32debc9 100644
--- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/AttributeTranslatorFilter.java
+++ b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/AttributeTranslatorFilter.java
@@ -23,6 +23,7 @@
 		super(trans, version);
 	}
 
+	@Override
 	public final int scanNextTranslator(Translator[] children, int start) {
 		int found = start + 1;
 		for (; found < children.length; ++found) {
diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/CacheEventNode.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/CacheEventNode.java
index e575833..18aebcd 100644
--- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/CacheEventNode.java
+++ b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/CacheEventNode.java
@@ -315,6 +315,7 @@
 		return result;
 	}
 
+	@Override
 	public String toString() {
 		StringBuffer output = new StringBuffer("CacheEventNode[");//$NON-NLS-1$
 		output.append("nodeName=");//$NON-NLS-1$
diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/CacheEventStack.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/CacheEventStack.java
index 03f4198..0ce8c85 100644
--- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/CacheEventStack.java
+++ b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/CacheEventStack.java
@@ -27,6 +27,11 @@
 
 	/**
 	 * 
+	 */
+	private static final long serialVersionUID = 1208895320149054103L;
+
+	/**
+	 * 
 	 * @return the top of the stack without removing it
 	 */
 	public CacheEventNode peek() {
diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/CompatibilityResourceFactory.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/CompatibilityResourceFactory.java
index f824de3..6ac4bba 100644
--- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/CompatibilityResourceFactory.java
+++ b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/CompatibilityResourceFactory.java
@@ -53,6 +53,7 @@
 	 * 
 	 * @see org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl#createResource(org.eclipse.emf.common.util.URI)
 	 */
+	@Override
 	public Resource createResource(URI uri) {
 		return new CompatibilityXMIResourceImpl(uri);
 	}
diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/CompatibilitySAXXMIHandler.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/CompatibilitySAXXMIHandler.java
index ee6ff3e..f26ca8e 100644
--- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/CompatibilitySAXXMIHandler.java
+++ b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/CompatibilitySAXXMIHandler.java
@@ -45,6 +45,7 @@
 	 * 
 	 * @see org.eclipse.emf.ecore.xmi.impl.XMLHandler#isNull()
 	 */
+	@Override
 	protected boolean isNull() {
 		boolean isnull = super.isNull();
 		if (!isnull)
diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/CompatibilityXMILoadImpl.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/CompatibilityXMILoadImpl.java
index 5f17a46..26ebff7 100644
--- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/CompatibilityXMILoadImpl.java
+++ b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/CompatibilityXMILoadImpl.java
@@ -41,6 +41,7 @@
 	 * 
 	 * @see org.eclipse.emf.ecore.xmi.impl.XMLLoadImpl#makeDefaultHandler()
 	 */
+	@Override
 	protected DefaultHandler makeDefaultHandler() {
 		return new SAXWrapper(new CompatibilitySAXXMIHandler(resource, helper, options));
 	}
diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/CompatibilityXMIResourceImpl.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/CompatibilityXMIResourceImpl.java
index db9fe94..bb95f96 100644
--- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/CompatibilityXMIResourceImpl.java
+++ b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/CompatibilityXMIResourceImpl.java
@@ -54,6 +54,7 @@
 	/**
 	 * @see org.eclipse.emf.ecore.xmi.impl.XMIResourceImpl#createXMLHelper()
 	 */
+	@Override
 	protected final XMLHelper createXMLHelper() {
 		MappedXMIHelper helper = doCreateXMLHelper();
 		helper.setPackageURIsToPrefixes(getPackageURIsToPrefixes());
@@ -104,6 +105,7 @@
 	/**
 	 * @see org.eclipse.emf.ecore.resource.Resource#getURIFragment(EObject)
 	 */
+	@Override
 	public String getURIFragment(EObject eObject) {
 		if (usesDefaultFormat())
 			return super.getURIFragment(eObject);
@@ -117,6 +119,7 @@
 	/**
 	 * @see org.eclipse.emf.ecore.xmi.impl.XMIResourceImpl#createXMLSave()
 	 */
+	@Override
 	protected XMLSave createXMLSave() {
 		if (usesDefaultFormat())
 			return super.createXMLSave();
@@ -126,6 +129,7 @@
 	/**
 	 * @see org.eclipse.emf.ecore.xmi.impl.XMLResourceImpl#doSave(OutputStream, Map)
 	 */
+	@Override
 	public void doSave(OutputStream outputStream, Map options) throws IOException {
 		super.doSave(outputStream, options);
 	}
@@ -142,9 +146,10 @@
 	/**
 	 * @see org.eclipse.emf.ecore.resource.impl.ResourceImpl#getEObjectByID(String)
 	 */
+	@Override
 	protected EObject getEObjectByID(String id) {
 		if (idToEObjectMap != null) {
-			EObject eObject = (EObject) idToEObjectMap.get(id);
+			EObject eObject = idToEObjectMap.get(id);
 			if (eObject != null) {
 				return eObject;
 			}
@@ -157,6 +162,7 @@
 	 * {@link InternalEObject#eSetProxyURI sets}the object to be a proxy and clears the
 	 * {@link #eAdapters adapters}.
 	 */
+	@Override
 	protected void unloaded(InternalEObject internalEObject) {
 		//overridden from the super class; call super.getURIFragment instead of the implementation
 		//at this level, to avoid ID generation during unload
@@ -171,6 +177,7 @@
 	 * @see org.eclipse.emf.ecore.xmi.impl.XMLResourceImpl#doLoad(java.io.InputStream,
 	 *      java.util.Map)
 	 */
+	@Override
 	public final void doLoad(InputStream inputStream, Map options) throws IOException {
 		basicDoLoad(inputStream, options);
 	}
@@ -187,11 +194,13 @@
 	 * 
 	 * @see org.eclipse.emf.ecore.xmi.impl.XMLResourceImpl#init()
 	 */
+	@Override
 	protected void init() {
 		super.init();
 		setEncoding(DEFAULT_ENCODING);
 	}
 
+	@Override
 	protected XMLLoad createXMLLoad() {
 		return new CompatibilityXMILoadImpl(createXMLHelper());
 	}
@@ -226,6 +235,7 @@
 	 * 
 	 * @see org.eclipse.emf.ecore.xmi.impl.XMLResourceImpl#detachedHelper(org.eclipse.emf.ecore.EObject)
 	 */
+	@Override
 	protected void detachedHelper(EObject eObject) {
 		if (modificationTrackingAdapter != null) {
 			eObject.eAdapters().remove(modificationTrackingAdapter);
@@ -240,6 +250,7 @@
 		}
 	}
 	
+	@Override
 	public void load(Map options) throws IOException {
 
         ResourceIsLoadingAdapter adapter = null;
@@ -346,7 +357,8 @@
      * 
      * @see org.eclipse.emf.ecore.resource.Resource#getContents()
      */
-    public EList getContents() {
+    @Override
+	public EList getContents() {
         waitForResourceToLoadIfNecessary();
         return super.getContents();
     }
@@ -356,7 +368,8 @@
      * 
      * @see org.eclipse.emf.ecore.resource.impl.ResourceImpl#isLoaded()
      */
-    public boolean isLoaded() {
+    @Override
+	public boolean isLoaded() {
         waitForResourceToLoadIfNecessary();
         return super.isLoaded();
     }
diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/CompatibilityXMISaveImpl.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/CompatibilityXMISaveImpl.java
index c1a7bf2..2af74c3 100644
--- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/CompatibilityXMISaveImpl.java
+++ b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/CompatibilityXMISaveImpl.java
@@ -47,6 +47,7 @@
 	/**
 	 * @see org.eclipse.emf.ecore.xmi.impl.XMISaveImpl#init(XMLResource, Map)
 	 */
+	@Override
 	protected void init(XMLResource resource, Map options) {
 		super.init(resource, options);
 		xmiType = true;
@@ -55,6 +56,7 @@
 	/**
 	 * @see org.eclipse.emf.ecore.xmi.impl.XMISaveImpl#addNamespaceDeclarations()
 	 */
+	@Override
 	public void addNamespaceDeclarations() {
 		doc.addAttribute(XMI_VER_NS, XMIResource.VERSION_VALUE);
 		doc.addAttribute(XMI_XMLNS, XMIResource.XMI_URI);
@@ -105,6 +107,7 @@
 		}
 	}
 
+	@Override
 	protected void saveHref(EObject remote, EStructuralFeature f) {
 		String name = helper.getQName(f);
 		String href = helper.getHREF(remote);
diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/ConstantAttributeTranslator.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/ConstantAttributeTranslator.java
index 356f102..ceaa9f8 100644
--- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/ConstantAttributeTranslator.java
+++ b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/ConstantAttributeTranslator.java
@@ -37,6 +37,7 @@
 	 * 
 	 * @see com.ibm.etools.emf2xml.impl.Translator#getMOFValue(org.eclipse.emf.ecore.EObject)
 	 */
+	@Override
 	public Object getMOFValue(EObject mofObject) {
 		return attributeValue;
 	}
@@ -46,6 +47,7 @@
 	 * 
 	 * @see com.ibm.etools.emf2xml.impl.Translator#isSetMOFValue(org.eclipse.emf.ecore.EObject)
 	 */
+	@Override
 	public boolean isSetMOFValue(EObject emfObject) {
 		return true;
 	}
diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/DependencyTranslator.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/DependencyTranslator.java
index c7d1c62..3f48221 100644
--- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/DependencyTranslator.java
+++ b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/DependencyTranslator.java
@@ -48,45 +48,55 @@
 		return child;
 	}
 
+	@Override
 	public List getMOFChildren(EObject mofObject) {
 		//return super.getMOFChildren(getChild(mofObject));
 		return super.getMOFChildren(mofObject);
 	}
 
+	@Override
 	public Object getMOFValue(EObject mofObject) {
 		return super.getMOFValue(getChild(mofObject));
 	}
 
+	@Override
 	public void setMOFValue(EObject emfObject, Object value) {
 		//super.setMOFValue(getChild(emfObject), value);
 		super.setMOFValue(getChild(emfObject), value, -1);
 	}
 
+	@Override
 	public void setMOFValue(Notifier owner, Object value, int newIndex) {
 		super.setMOFValue(getChild((EObject) owner), value, newIndex);
 	}
 
+	@Override
 	public void removeMOFValue(Notifier owner, Object value) {
 		super.removeMOFValue(getChild((EObject) owner), value);
 	}
 
+	@Override
 	public boolean isSetMOFValue(EObject emfObject) {
 		return super.isSetMOFValue(getChild(emfObject));
 	}
 
+	@Override
 	public void unSetMOFValue(EObject emfObject) {
 		super.unSetMOFValue(getChild(emfObject));
 	}
 
 
+	@Override
 	public boolean isDependencyChild() {
 		return true;
 	}
 
+	@Override
 	public boolean featureExists(EObject emfObject) {
 		return super.featureExists(getChild(emfObject));
 	}
 
+	@Override
 	public void clearList(EObject mofObject) {
 		super.clearList(getChild(mofObject));
 	}
diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/EMF2DOMAdapterImpl.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/EMF2DOMAdapterImpl.java
index 124c727..3fa734c 100644
--- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/EMF2DOMAdapterImpl.java
+++ b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/EMF2DOMAdapterImpl.java
@@ -30,6 +30,7 @@
 import org.eclipse.emf.ecore.InternalEObject;
 import org.eclipse.emf.ecore.resource.Resource;
 import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.wst.common.internal.emf.plugin.EcoreUtilitiesPlugin;
 import org.eclipse.wst.common.internal.emf.utilities.Assert;
 import org.eclipse.wst.common.internal.emf.utilities.DOMUtilities;
 import org.eclipse.wst.common.internal.emf.utilities.EtoolsCopySession;
@@ -72,6 +73,7 @@
 
 		static final String KEY = "EMF2DOMDependencyAdapter"; //$NON-NLS-1$
 
+		@Override
 		public void notifyChanged(Notification msg) {
 			EMF2DOMAdapterImpl.this.notifyChanged(msg);
 		}
@@ -79,6 +81,7 @@
 		/**
 		 * @see org.eclipse.emf.common.notify.impl.AdapterImpl#isAdapterForType(Object)
 		 */
+		@Override
 		public boolean isAdapterForType(Object type) {
 			return KEY.equals(type);
 		}
@@ -136,8 +139,8 @@
 		try {
 			// If the Platform class can be found, then continue to check if the OSGI platform is running
 			Class clazz = Class.forName(PLATFORM);
-			Method m = clazz.getMethod(ISRUNNING, null);
-			isRunning = ((Boolean)m.invoke(clazz, null)).booleanValue();
+			Method m = clazz.getMethod(ISRUNNING);
+			isRunning = ((Boolean)m.invoke(clazz)).booleanValue();
 		} catch (ClassNotFoundException e) {
 		     // Ignore because this must be in a non_OSGI environment
 		} catch (SecurityException e) {
@@ -203,6 +206,7 @@
 		fNotificationEnabled = isEnabled;
 	}
 
+	@Override
 	public boolean isAdapterForType(Object type) {
 		return EMF2DOMAdapter.ADAPTER_CLASS == type;
 	}
@@ -211,6 +215,7 @@
 		target.eAdapters().add(this);
 	}
 
+	@Override
 	public String toString() {
 		StringBuffer sb = new StringBuffer();
 		sb.append(shortClassName(this));
@@ -262,11 +267,11 @@
 					break;
 			}
 
-			org.eclipse.jem.util.logger.proxy.Logger.getLogger().logError("MOF Change: " + notifType); //$NON-NLS-1$
-			org.eclipse.jem.util.logger.proxy.Logger.getLogger().logError("\tnotifier      : " + msg.getNotifier()); //$NON-NLS-1$
-			org.eclipse.jem.util.logger.proxy.Logger.getLogger().logError("\tchangedFeature: " + msg.getFeature()); //$NON-NLS-1$
-			org.eclipse.jem.util.logger.proxy.Logger.getLogger().logError("\toldValue      : " + msg.getOldValue()); //$NON-NLS-1$
-			org.eclipse.jem.util.logger.proxy.Logger.getLogger().logError("\tnewValue      : " + msg.getNewValue()); //$NON-NLS-1$
+			EcoreUtilitiesPlugin.logError("MOF Change: " + notifType); //$NON-NLS-1$
+			EcoreUtilitiesPlugin.logError("\tnotifier      : " + msg.getNotifier()); //$NON-NLS-1$
+			EcoreUtilitiesPlugin.logError("\tchangedFeature: " + msg.getFeature()); //$NON-NLS-1$
+			EcoreUtilitiesPlugin.logError("\toldValue      : " + msg.getOldValue()); //$NON-NLS-1$
+			EcoreUtilitiesPlugin.logError("\tnewValue      : " + msg.getNewValue()); //$NON-NLS-1$
 		}
 	}
 
@@ -287,6 +292,52 @@
 		}
 		return null;
 	}
+	
+	/**
+	 * Checks to ensure that only one MOF node has been removed and will remove the dom equivalent.
+	 * If multiple differences are found, will return the index of the first difference.
+	 * 
+	 * @param parent
+	 * @param mofChildren
+	 * @param domChildren
+	 * @return
+	 */
+	private int updateDOMSingleRemove(Node parent, List mofChildren, List domChildren){
+		int domIndex = 0;
+		int firstDifference = -1;
+		for (Object mofChild : mofChildren){
+			if (mofChild instanceof EObject)
+			{
+				EMF2DOMAdapter adapter = getExistingAdapter((EObject)mofChild);
+				if(adapter.getNode() != domChildren.get(domIndex)){
+					if(firstDifference != -1){
+						//second difference; return
+						return firstDifference;
+					}
+					//we found something that is different
+					firstDifference = domIndex;
+					//skip over one index and check against next
+					domIndex ++;
+					if(adapter.getNode() != domChildren.get(domIndex)){
+						//if these are different then there are multiple changes
+						return firstDifference;
+					}
+				}
+				domIndex++;
+			}
+		}
+		if(firstDifference != -1){
+			removeDOMChild(parent, (Element) domChildren.get(firstDifference));
+			//if we are here, and firstDifference is not -1, that means we have iterated
+			//through the entire mof list, and all elements have been processed. Return
+			//domchildren.size, so that no more processing is done in calling method.
+			return domChildren.size();
+		}
+		//if we are here, then firstDifference was -1. Our algo has failed. Let original algo run.
+		return 0;
+	}
+
+	
 
 	/**
 	 * Update all the children of the target MOF object in the relationship described by
@@ -299,18 +350,23 @@
 	 */
 	protected void primUpdateDOMMultiFeature(Translator map, Node node, List mofChildren, List domChildren, Notifier owner) {
 
+		int i = 0;
+		Node parent = findDOMPath(node, map, false);
+		if(domChildren.size() - mofChildren.size() == 1){
+			//an emf object has been deleted. Remove it from the dom as well
+			i = updateDOMSingleRemove(parent, mofChildren, domChildren);
+		}
 		//Used for inserting primitives
 		List inorderDOMChildren = null;
-		if (!map.isObjectMap() || map.isManagedByParent()) {
-			inorderDOMChildren = new ArrayList();
-			inorderDOMChildren.addAll(domChildren);
+		if(i < mofChildren.size()){
+			if (!map.isObjectMap() || map.isManagedByParent()) {
+				inorderDOMChildren = new ArrayList();
+				inorderDOMChildren.addAll(domChildren);
+			}
 		}
-		Node parent = findDOMPath(node, map, false);
-
 		// Go though the MOF children checking to see if the corresponding
 		// MOF Adapter children exists. If not, create the adapter.
 		// Also handles reordering children that have moved.
-		int i = 0;
 		for (; i < mofChildren.size(); i++) {
 			Object child = mofChildren.get(i);
 			EObject mofChild = null;
@@ -365,7 +421,9 @@
 					indent(newNode, map);
 					addDOMAdapter(newNode); // Hook up listeners
 					domChildren.add(i, newNode);
-					inorderDOMChildren.add(newNode);
+					if(inorderDOMChildren != null){
+						inorderDOMChildren.add(newNode);
+					}
 					Text newText = parent.getOwnerDocument().createTextNode(map.convertValueToString(child, (EObject) owner));
 					DOMUtilities.insertBeforeNode(newNode, newText, null);
 				}
@@ -641,8 +699,8 @@
 				removeDOMAdapter(childNode, attrAdapter);
 
 				if (fDebug) {
-					org.eclipse.jem.util.logger.proxy.Logger.getLogger().logError("\tCHILD: Adding DOM adapter: " + this); //$NON-NLS-1$
-					org.eclipse.jem.util.logger.proxy.Logger.getLogger().logError("\t\tto: " + childNode); //$NON-NLS-1$
+					EcoreUtilitiesPlugin.logError("\tCHILD: Adding DOM adapter: " + this); //$NON-NLS-1$
+					EcoreUtilitiesPlugin.logError("\t\tto: " + childNode); //$NON-NLS-1$
 				}
 				primAddDOMAdapter(childNode, this);
 			}
@@ -657,7 +715,7 @@
 			removeDOMChild(parentNode, childNode, false);
 			parentNode.insertBefore(childNode, insertBeforeNode);
 		} catch (Exception e) {
-			e.printStackTrace();
+			EcoreUtilitiesPlugin.logError(e);
 		}
 	}
 
@@ -694,7 +752,7 @@
 				removeAdapters(childNode);
 			parentNode.removeChild(childNode);
 		} catch (Exception e) { 
-			e.printStackTrace();
+			EcoreUtilitiesPlugin.logError(e);
 		}
 	}
 
@@ -983,9 +1041,9 @@
 		if (resource != null) {
 			publicId = resource.getPublicId();
 			systemId = resource.getSystemId();
+			if (!(StringUtil.stringsEqual(publicId, oldPublicId) && StringUtil.stringsEqual(systemId, oldSystemId)))
+				fRenderer.replaceDocumentType(resource.getDoctype(), publicId, systemId);
 		}
-		if (!(StringUtil.stringsEqual(publicId, oldPublicId) && StringUtil.stringsEqual(systemId, oldSystemId)))
-			fRenderer.replaceDocumentType(resource.getDoctype(), publicId, systemId);
 	}
 
 	protected void updateDOMDocumentType(Notification msg) {
@@ -1011,6 +1069,7 @@
 			resource.setDoctypeValues(publicId, systemId);
 	}
 
+	@Override
 	public void notifyChanged(Notification msg) {
 
 		if (isRoot) {
@@ -1077,8 +1136,8 @@
 
 		primAddDOMAdapter(fNode, this);
 		if (fDebug) {
-			org.eclipse.jem.util.logger.proxy.Logger.getLogger().logError("Adding DOM adapter: " + this); //$NON-NLS-1$
-			org.eclipse.jem.util.logger.proxy.Logger.getLogger().logError("\tto: " + fNode); //$NON-NLS-1$
+			EcoreUtilitiesPlugin.logError("Adding DOM adapter: " + this); //$NON-NLS-1$
+			EcoreUtilitiesPlugin.logError("\tto: " + fNode); //$NON-NLS-1$
 		}
 
 		// Go through the maps. All of the DOM nodes that are not listened
@@ -1201,7 +1260,7 @@
 					handleInvalidMultiNodes(nodeName);
 				node = (Node) nodes.get(0);
 				if (node != null) {
-					if (addAdapters && (map != null || map.isManagedByParent()))
+					if (addAdapters)
 						addDOMAdapter(curNode);
 					break;
 				}
@@ -1228,10 +1287,13 @@
 		if (textNode != null) {
 			textNode.setData(text);
 		} else {
+			textNode = createTextNode(parent.getOwnerDocument(), map, text);
 			if (!isEmptyTag((Element) parent)) {
-				Text newNode = createTextNode(parent.getOwnerDocument(), map, text);
-				DOMUtilities.insertBeforeNode(parent, newNode, null);
-				return newNode;
+				DOMUtilities.insertBeforeNode(parent, textNode, null);
+			}
+			else
+			{
+				parent.appendChild(textNode);
 			}
 		}
 		return textNode;
@@ -1373,7 +1435,13 @@
 			Attr domAttr = (Attr) child.getAttributes().getNamedItem(map.getDOMName(mofObject));
 			if (domAttr != null) {
 				domValue = domAttr.getValue();
-				domValue = map.convertStringToValue((String) domValue, mofObject);
+				try {
+					domValue = map.convertStringToValue((String) domValue, mofObject);
+				} catch (FeatureValueConversionException e) {
+					handleFeatureValueConversionException(e);
+					domValue = null;
+				}
+
 			} else
 				isUnset = true;
 		} else {
@@ -1439,7 +1507,7 @@
 					// enum
 					// features
 
-					if (updateMOFAttAdapter)
+					if (updateMOFAttAdapter && attrAdapter != null)
 						attrAdapter.updateMOF();
 				}
 			}
@@ -1543,9 +1611,9 @@
 			}
 
 			if (fDebug) {
-				org.eclipse.jem.util.logger.proxy.Logger.getLogger().logError("Updating DOM Node: " + node); //$NON-NLS-1$
-				org.eclipse.jem.util.logger.proxy.Logger.getLogger().logError("\tfrom: " + mofObject); //$NON-NLS-1$
-				org.eclipse.jem.util.logger.proxy.Logger.getLogger().logError("\tmap : " + map); //$NON-NLS-1$
+				EcoreUtilitiesPlugin.logError("Updating DOM Node: " + node); //$NON-NLS-1$
+				EcoreUtilitiesPlugin.logError("\tfrom: " + mofObject); //$NON-NLS-1$
+				EcoreUtilitiesPlugin.logError("\tmap : " + map); //$NON-NLS-1$
 			}
 			boolean notificationFlag = isNotificationEnabled();
 			try {
@@ -1574,9 +1642,9 @@
 	 */
 	final protected void updateDOMLinkFeature(Translator map, Node node, EObject mofObject) {
 		if (fDebug) {
-			org.eclipse.jem.util.logger.proxy.Logger.getLogger().logError("Updating DOM Node (link): " + node); //$NON-NLS-1$
-			org.eclipse.jem.util.logger.proxy.Logger.getLogger().logError("\tfrom: " + mofObject); //$NON-NLS-1$
-			org.eclipse.jem.util.logger.proxy.Logger.getLogger().logError("\tmap : " + map); //$NON-NLS-1$
+			EcoreUtilitiesPlugin.logError("Updating DOM Node (link): " + node); //$NON-NLS-1$
+			EcoreUtilitiesPlugin.logError("\tfrom: " + mofObject); //$NON-NLS-1$
+			EcoreUtilitiesPlugin.logError("\tmap : " + map); //$NON-NLS-1$
 		}
 		primUpdateDOMLinkFeature(map, node, mofObject);
 	}
@@ -1592,9 +1660,9 @@
 	 */
 	final protected void updateDOMMultiFeature(Translator map, Node node, EObject mofObject) {
 		if (fDebug) {
-			org.eclipse.jem.util.logger.proxy.Logger.getLogger().logError("Updating DOM Node (multi): " + node); //$NON-NLS-1$
-			org.eclipse.jem.util.logger.proxy.Logger.getLogger().logError("\tfrom: " + mofObject); //$NON-NLS-1$
-			org.eclipse.jem.util.logger.proxy.Logger.getLogger().logError("\tmap : " + map); //$NON-NLS-1$
+			EcoreUtilitiesPlugin.logError("Updating DOM Node (multi): " + node); //$NON-NLS-1$
+			EcoreUtilitiesPlugin.logError("\tfrom: " + mofObject); //$NON-NLS-1$
+			EcoreUtilitiesPlugin.logError("\tmap : " + map); //$NON-NLS-1$
 		}
 		boolean notificationFlag = isNotificationEnabled();
 		try {
@@ -1610,15 +1678,15 @@
 	 * updated.
 	 */
 	protected void updateDOMSubtree(Translator map, Node node, EObject mofObject, Object attrValue) {
-
+		Object innerAttrValue = attrValue;
 		if (map.featureExists(mofObject)) {
 			if ((map.isEnumFeature() || map.isBooleanFeature()) && (map.isUnsettable() && !map.isSetMOFValue(mofObject)))
-				attrValue = null;
+				innerAttrValue = null;
 		} else
-			attrValue = map.extractStringValue(mofObject);
+			innerAttrValue = map.extractStringValue(mofObject);
 
 		// Create and/or update the DOM subtree
-		if (attrValue != null) {
+		if (innerAttrValue != null) {
 			Node parent = createDOMPath(node, map);
 			if (map.isManagedByParent()) {
 				// Handle the case where the mof value is not another
@@ -1628,10 +1696,10 @@
 
 				Element child = map.isDOMTextValue() ? (Element) parent : findOrCreateNode(parent, map, map.getDOMName(mofObject));
 
-				findOrCreateTextNode(child, map, map.convertValueToString(attrValue, mofObject));
+				findOrCreateTextNode(child, map, map.convertValueToString(innerAttrValue, mofObject));
 			} else {
 				// Handle the case were the mof value is a mof object.
-				EObject mofValue = (EObject) attrValue;
+				EObject mofValue = (EObject) innerAttrValue;
 				EMF2DOMAdapter valueAdapter = (EMF2DOMAdapter) EcoreUtil.getExistingAdapter(mofValue, EMF2DOMAdapter.ADAPTER_CLASS);
 				if (valueAdapter != null)
 					valueAdapter.updateDOM();
@@ -1668,9 +1736,9 @@
 	 */
 	final protected void updateMOFLinkFeature(Translator map, Node node, EObject mofObject) {
 		if (fDebug) {
-			org.eclipse.jem.util.logger.proxy.Logger.getLogger().logError("Updating MOFObject (link): " + mofObject); //$NON-NLS-1$
-			org.eclipse.jem.util.logger.proxy.Logger.getLogger().logError("\tfrom: " + node); //$NON-NLS-1$
-			org.eclipse.jem.util.logger.proxy.Logger.getLogger().logError("\tmap : " + map); //$NON-NLS-1$
+			EcoreUtilitiesPlugin.logError("Updating MOFObject (link): " + mofObject); //$NON-NLS-1$
+			EcoreUtilitiesPlugin.logError("\tfrom: " + node); //$NON-NLS-1$
+			EcoreUtilitiesPlugin.logError("\tmap : " + map); //$NON-NLS-1$
 		}
 		boolean notificationFlag = isNotificationEnabled();
 		try {
@@ -1692,9 +1760,9 @@
 	 */
 	final protected void updateMOFMultiFeature(Translator map, Node node, EObject mofObject) {
 		if (fDebug) {
-			org.eclipse.jem.util.logger.proxy.Logger.getLogger().logError("Updating MOFObject (multi): " + mofObject); //$NON-NLS-1$
-			org.eclipse.jem.util.logger.proxy.Logger.getLogger().logError("\tfrom: " + node); //$NON-NLS-1$
-			org.eclipse.jem.util.logger.proxy.Logger.getLogger().logError("\tmap : " + map); //$NON-NLS-1$
+			EcoreUtilitiesPlugin.logError("Updating MOFObject (multi): " + mofObject); //$NON-NLS-1$
+			EcoreUtilitiesPlugin.logError("\tfrom: " + node); //$NON-NLS-1$
+			EcoreUtilitiesPlugin.logError("\tmap : " + map); //$NON-NLS-1$
 		}
 		boolean notificationFlag = isNotificationEnabled();
 		try {
@@ -1725,7 +1793,7 @@
 				if(map.getFeature() != null && map.getFeature().isUnique() && mofObject.eGet(map.getFeature()) != null && mofObject.eGet(map.getFeature()) instanceof List && ((List) mofObject.eGet(map.getFeature())).contains(attributeValue)){
 					advanceAddIndex = false;
 					String domName = map.domNameAndPath != null ? map.domNameAndPath : "attribute"; //$NON-NLS-1$
-					org.eclipse.jem.util.logger.proxy.Logger.getLogger().logError(new IllegalArgumentException("The 'no duplicates' constraint is violated by "+domName+" = "+attributeValue));
+					EcoreUtilitiesPlugin.logError(new IllegalArgumentException("The 'no duplicates' constraint is violated by "+domName+" = "+attributeValue)); //$NON-NLS-1$ //$NON-NLS-2$
 					handleInvalidMultiNodes(child.getNodeName());
 				} else {
 					map.setMOFValue(mofObject, attributeValue, addIndex);
@@ -1764,9 +1832,9 @@
 		// TODO MDE Add a map.isComment() and updateMOFCommentFeature(map, node, mofObject);
 
 		if (fDebug) {
-			org.eclipse.jem.util.logger.proxy.Logger.getLogger().logError("Updating MOFObject: " + mofObject); //$NON-NLS-1$
-			org.eclipse.jem.util.logger.proxy.Logger.getLogger().logError("\tfrom: " + node); //$NON-NLS-1$
-			org.eclipse.jem.util.logger.proxy.Logger.getLogger().logError("\tmap : " + map); //$NON-NLS-1$
+			EcoreUtilitiesPlugin.logError("Updating MOFObject: " + mofObject); //$NON-NLS-1$
+			EcoreUtilitiesPlugin.logError("\tfrom: " + node); //$NON-NLS-1$
+			EcoreUtilitiesPlugin.logError("\tmap : " + map); //$NON-NLS-1$
 		}
 		boolean notificationFlag = isNotificationEnabled();
 		boolean hasChanged = false;
diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/EMF2DOMRenderer.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/EMF2DOMRenderer.java
index 53fbdc7..d07e3c4 100644
--- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/EMF2DOMRenderer.java
+++ b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/EMF2DOMRenderer.java
@@ -28,7 +28,7 @@
 
 import org.eclipse.emf.common.util.WrappedException;
 import org.eclipse.emf.ecore.util.EcoreUtil;
-import org.eclipse.jem.util.logger.proxy.Logger;
+import org.eclipse.wst.common.internal.emf.plugin.EcoreUtilitiesPlugin;
 import org.eclipse.wst.common.internal.emf.utilities.DOMLoadOptions;
 import org.eclipse.wst.common.internal.emf.utilities.DOMUtilities;
 import org.eclipse.wst.common.internal.emf.utilities.Revisit;
@@ -39,7 +39,7 @@
 
 
 
-public class EMF2DOMRenderer extends AbstractRendererImpl implements Renderer {
+public class EMF2DOMRenderer extends AbstractRendererImpl {
 
 	protected Map domAdapterRegistry;
 	protected boolean needsToCreateDOM = true;
@@ -191,11 +191,11 @@
 			/* source.setSystemId(getResource().getSystemId()); */
 			transformer.transform(source, new StreamResult(out));
 		} catch (TransformerConfigurationException e) {
-			Logger.getLogger().logError(e);
+			EcoreUtilitiesPlugin.logError(e);
 		} catch (TransformerFactoryConfigurationError e) {
-			Logger.getLogger().logError(e);
+			EcoreUtilitiesPlugin.logError(e);
 		} catch (TransformerException e) {
-			Logger.getLogger().logError(e);
+			EcoreUtilitiesPlugin.logError(e);
 		} finally {
 		}
 	}
@@ -241,6 +241,7 @@
 		}
 	}
 
+	@Override
 	public void preUnload() {
 		EMF2DOMAdapter adapter = (EMF2DOMAdapter) EcoreUtil.getAdapter(resource.eAdapters(), EMF2DOMAdapter.ADAPTER_CLASS);
 		if (adapter != null) {
diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/EMF2DOMRendererFactory.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/EMF2DOMRendererFactory.java
index fce5603..ff4fbbb 100644
--- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/EMF2DOMRendererFactory.java
+++ b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/EMF2DOMRendererFactory.java
@@ -20,6 +20,7 @@
 	/**
 	 * @see com.ibm.etools.emf2xml.RendererFactory#createRenderer()
 	 */
+	@Override
 	public Renderer createRenderer() {
 		EMF2DOMRenderer renderer = new EMF2DOMRenderer();
 		renderer.setValidating(isValidating());
diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/EMF2SAXDocumentHandler.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/EMF2SAXDocumentHandler.java
index a25bb63..540c2af 100644
--- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/EMF2SAXDocumentHandler.java
+++ b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/EMF2SAXDocumentHandler.java
@@ -13,7 +13,7 @@
 
 import java.io.IOException;
 
-import org.eclipse.jem.util.logger.proxy.Logger;
+import org.eclipse.wst.common.internal.emf.plugin.EcoreUtilitiesPlugin;
 import org.xml.sax.Attributes;
 import org.xml.sax.EntityResolver;
 import org.xml.sax.InputSource;
@@ -44,6 +44,7 @@
 	/**
 	 * @see org.xml.sax.helpers.DefaultHandler#resolveEntity(java.lang.String, java.lang.String)
 	 */
+	@Override
 	public InputSource resolveEntity(String publicId, String systemId) throws SAXException {
 		InputSource result = null;
 		this.resource.setDoctypeValues(publicId, systemId);
@@ -65,6 +66,7 @@
 	/**
 	 * @see org.xml.sax.ContentHandler#startDocument()
 	 */
+	@Override
 	public void startDocument() throws SAXException {
 		/*
 		 * The endDocument() method should have frozen the pool, or it may not be warmed yet. In
@@ -82,6 +84,7 @@
 	 * @see org.xml.sax.ContentHandler#startElement(java.lang.String, java.lang.String,
 	 *      java.lang.String, org.xml.sax.Attributes)
 	 */
+	@Override
 	public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
 		addToStack(qName, attributes);
 	}
@@ -89,6 +92,7 @@
 	/**
 	 * @see org.xml.sax.ContentHandler#characters(char[], int, int)
 	 */
+	@Override
 	public void characters(char[] data, int start, int length) throws SAXException {
 
 		CacheEventNode currentRecord = getCurrentRecord();
@@ -101,6 +105,7 @@
 	 * @see org.xml.sax.ContentHandler#endElement(java.lang.String, java.lang.String,
 	 *      java.lang.String)
 	 */
+	@Override
 	public void endElement(String uri, String localName, String qName) throws SAXException {
 
 		CacheEventNode currentRecord = null;
@@ -120,6 +125,7 @@
 	/**
 	 * @see org.xml.sax.ContentHandler#endDocument()
 	 */
+	@Override
 	public void endDocument() throws SAXException {
 		CacheEventNode lastRecord = this.removeCurrentRecord();
 		lastRecord.commit();
@@ -129,6 +135,7 @@
 	/**
 	 * @see org.xml.sax.ErrorHandler#error(org.xml.sax.SAXParseException)
 	 */
+	@Override
 	public void error(SAXParseException ex) throws SAXException {
 		throw ex;
 	}
@@ -136,6 +143,7 @@
 	/**
 	 * @see org.xml.sax.ErrorHandler#fatalError(org.xml.sax.SAXParseException)
 	 */
+	@Override
 	public void fatalError(SAXParseException ex) throws SAXException {
 		throw ex;
 	}
@@ -143,8 +151,9 @@
 	/**
 	 * @see org.xml.sax.ErrorHandler#warning(org.xml.sax.SAXParseException)
 	 */
+	@Override
 	public void warning(SAXParseException ex) throws SAXException {
-		Logger.getLogger().logWarning(ex);
+		EcoreUtilitiesPlugin.logWarning(ex);
 	}
 
 	/**
diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/EMF2SAXRenderer.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/EMF2SAXRenderer.java
index 86f721f..0913c14 100644
--- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/EMF2SAXRenderer.java
+++ b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/EMF2SAXRenderer.java
@@ -15,6 +15,7 @@
 import java.io.OutputStream;
 import java.util.Map;
 
+import javax.xml.parsers.ParserConfigurationException;
 import javax.xml.parsers.SAXParser;
 import javax.xml.parsers.SAXParserFactory;
 import javax.xml.transform.OutputKeys;
@@ -27,7 +28,7 @@
 import javax.xml.transform.stream.StreamResult;
 
 import org.eclipse.emf.common.util.WrappedException;
-import org.eclipse.jem.util.logger.proxy.Logger;
+import org.eclipse.wst.common.internal.emf.plugin.EcoreUtilitiesPlugin;
 import org.xml.sax.InputSource;
 import org.xml.sax.SAXException;
 import org.xml.sax.SAXNotRecognizedException;
@@ -50,7 +51,7 @@
 	 * 
 	 * @see com.ibm.etools.emf2xml.Renderer#doLoad(java.io.InputStream, java.util.Map)
 	 */
-	public void doLoad(InputStream in, Map options) {
+	public void doLoad(InputStream in, Map options) throws IOException {
 		try {
 			SAXParserFactory factory = SAXParserFactory.newInstance();
 			factory.setValidating(isValidating());
@@ -65,21 +66,23 @@
 			try {
 				reader.setFeature("http://xml.org/sax/features/validation", isValidating()); //$NON-NLS-1$
 			} catch (SAXNotRecognizedException snre) {
+                // ignore exception
 			}
 			try {
 				reader.setFeature("http://xml.org/sax/features/namespace-prefixes", true); //$NON-NLS-1$
 			} catch (SAXNotRecognizedException snre) {
-			}
+                // ignore exception
+            }
 			try {
 				reader.setFeature("http://apache.org/xml/features/validation/schema", isValidating()); //$NON-NLS-1$
 			} catch (SAXNotRecognizedException e) {
 				reader.setFeature("http://xml.org/sax/features/validation", false); //$NON-NLS-1$
-				Logger.getLogger().log("Warning: Parser does not support \"http://apache.org/xml/features/validation/schema\". Validation will be disabled."); //$NON-NLS-1$
+				EcoreUtilitiesPlugin.logWarning("Warning: Parser does not support \"http://apache.org/xml/features/validation/schema\". Validation will be disabled."); //$NON-NLS-1$
 			}
 			try {
 				reader.setFeature("http://apache.org/xml/features/allow-java-encodings", true); //$NON-NLS-1$
 			} catch (SAXNotRecognizedException e) {
-				Logger.getLogger().log("Warning: Parser does not support \"http://apache.org/xml/features/allow-java-encodings\"."); //$NON-NLS-1$
+				EcoreUtilitiesPlugin.logWarning("Warning: Parser does not support \"http://apache.org/xml/features/allow-java-encodings\"."); //$NON-NLS-1$
 			}
 			/*
 			 * try { reader.setProperty("http://xml.org/sax/properties/lexical-handler", handler); }
@@ -93,9 +96,11 @@
 			reader.parse(testsource);
 		} catch (RuntimeException t_rex) {
 			throw t_rex;
-		} catch (Exception ex) {
-			throw new WrappedException(ex);
-		}
+		} catch (SAXException se) {
+		    throw new WrappedException(se);
+        } catch (ParserConfigurationException e) {
+            throw new WrappedException(e);
+        }
 	}
 
 	/*
@@ -133,12 +138,12 @@
 					transformer.setOutputProperty(OutputKeys.DOCTYPE_SYSTEM, getResource().getSystemId());
 
 			} catch (TransformerConfigurationException e) {
-				Logger.getLogger().logError(e);
+				EcoreUtilitiesPlugin.logError(e);
 			} catch (TransformerFactoryConfigurationError e) {
-				Logger.getLogger().logError(e);
+				EcoreUtilitiesPlugin.logError(e);
 			}
 			if (handler == null) {
-				Logger.getLogger("SAX Writer is null"); //$NON-NLS-1$
+				EcoreUtilitiesPlugin.logError("SAX Writer is null"); //$NON-NLS-1$
 				return;
 			}
 			EMF2SAXWriter writer = new EMF2SAXWriter();
diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/EMF2SAXRendererFactory.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/EMF2SAXRendererFactory.java
index d3fd5d9..a2544d6 100644
--- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/EMF2SAXRendererFactory.java
+++ b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/EMF2SAXRendererFactory.java
@@ -33,6 +33,7 @@
 	 * 
 	 * @see com.ibm.etools.emf2xml.RendererFactory#createRenderer()
 	 */
+	@Override
 	public Renderer createRenderer() {
 		EMF2SAXRenderer renderer = new EMF2SAXRenderer();
 		renderer.setValidating(isValidating());
diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/FileNameResourceFactoryRegistry.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/FileNameResourceFactoryRegistry.java
index 41b3dab..ff7b3a2 100644
--- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/FileNameResourceFactoryRegistry.java
+++ b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/FileNameResourceFactoryRegistry.java
@@ -46,10 +46,12 @@
 		
 	}
 
+	@Override
 	public synchronized Resource.Factory getFactory(URI uri) {
 		return getFactory(uri, null);
 	}
 
+	@Override
 	public Resource.Factory getFactory(URI uri, String contentType)
 	{
 		Resource.Factory resourceFactory = null;
diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/GenericTranslator.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/GenericTranslator.java
index eafe09f..c714f23 100644
--- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/GenericTranslator.java
+++ b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/GenericTranslator.java
@@ -79,6 +79,7 @@
 	/**
 	 * @return Translator[]
 	 */
+	@Override
 	public Translator[] getChildren() {
 		return children;
 	}
diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/IDTranslator.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/IDTranslator.java
index 64bf6a0..46e9183 100644
--- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/IDTranslator.java
+++ b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/IDTranslator.java
@@ -25,6 +25,11 @@
 public class IDTranslator extends Translator {
 	public class NoResourceException extends RuntimeException {
 
+		/**
+		 * 
+		 */
+		private static final long serialVersionUID = 8633201291288237530L;
+
 		public NoResourceException() {
 			super();
 		}
@@ -41,17 +46,21 @@
 		super("id", ID_FEATURE, DOM_ATTRIBUTE); //$NON-NLS-1$
 	}
 
+	@Override
 	public void setMOFValue(EObject emfObject, Object value) {
-		XMIResource res = (XMIResource) emfObject.eResource();
-		if (res == null)
-			throw new NoResourceException();
-		String id = res.getID(emfObject);
-		if (id == null && value == null)
-			return;
-		if ((id != null && !id.equals(value)) || (value != null && !value.equals(id)))
-			res.setID(emfObject, (String) value);
+		if (emfObject != null) {
+			XMIResource res = (XMIResource) emfObject.eResource();
+			if (res == null)
+				throw new NoResourceException();
+			String id = res.getID(emfObject);
+			if (id == null && value == null)
+				return;
+			if ((id != null && !id.equals(value)) || (value != null && !value.equals(id)))
+				res.setID(emfObject, (String) value);
+		}
 	}
 
+	@Override
 	public Object getMOFValue(EObject emfObject) {
 		if (emfObject == null)
 			throw new NoResourceException();
@@ -62,10 +71,12 @@
 	}
 
 
+	@Override
 	public boolean featureExists(EObject emfObject) {
 		return true;
 	}
 
+	@Override
 	public boolean isIDMap() {
 		return true;
 	}
diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/MappedXMIHelper.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/MappedXMIHelper.java
index f0939a2..f146af1 100644
--- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/MappedXMIHelper.java
+++ b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/MappedXMIHelper.java
@@ -57,6 +57,7 @@
 
 	}
 
+	@Override
 	public URI resolve(URI relative, URI base) {
 		URI resolved = null;
 		boolean isMapped = false;
@@ -87,6 +88,7 @@
 		return ((CompatibilityXMIResource) resource).getFormat() == CompatibilityXMIResource.FORMAT_MOF5 || usingMaps;
 	}
 
+	@Override
 	public void addPrefix(String prefix, String uri) {
 		/*
 		 * problem - the incoming key value pair is ejbbnd->ejbbnd.xmi; however, the map already has
@@ -95,7 +97,7 @@
 		if (uri.endsWith(".ecore")) { //$NON-NLS-1$
 			usingMaps = false;
 		}
-		String existing = (String) prefixesToURIs.get(prefix);
+		String existing = prefixesToURIs.get(prefix);
 		if (existing == null) {
 			prefixesToURIs.put(prefix, uri);
 			namespaceSupport.declarePrefix(prefix, uri);
@@ -112,6 +114,7 @@
 	/**
 	 * @see org.eclipse.emf.ecore.xmi.impl.XMLHelperImpl#getHREF(EObject)
 	 */
+	@Override
 	public String getHREF(EObject obj) {
 		if (!getCompatibilityResource().usesDefaultFormat()) {
 			URIConverter conv = getURIConverter();
@@ -158,13 +161,14 @@
 	}
 
 	protected URI makeRelative(URI objectURI, CompatibilityURIConverter conv) {
-		String fragment = objectURI.fragment();
-		objectURI = objectURI.trimFragment();
-		URI relative = (URI) getCachedRelativeURIs().get(objectURI);
+		URI innerObjectURI = objectURI;
+		String fragment = innerObjectURI.fragment();
+		innerObjectURI = innerObjectURI.trimFragment();
+		URI relative = (URI) getCachedRelativeURIs().get(innerObjectURI);
 		if (relative == null) {
-			relative = conv.deNormalize(objectURI);
+			relative = conv.deNormalize(innerObjectURI);
 			if (relative.isRelative())
-				cachedRelativeURIs.put(objectURI, relative);
+				cachedRelativeURIs.put(innerObjectURI, relative);
 		}
 		return relative.appendFragment(fragment);
 	}
@@ -185,6 +189,7 @@
 	/**
 	 * @see org.eclipse.emf.ecore.xmi.impl.XMLHelperImpl#getID(EObject)
 	 */
+	@Override
 	public String getID(EObject obj) {
 		if (getCompatibilityResource().usesDefaultFormat())
 			return super.getID(obj);
@@ -230,6 +235,7 @@
 		this.packageURIsToPrefixes = packageURIsToPrefixes;
 	}
 
+	@Override
 	public String getQName(EClass c) {
 		String name = getName(c);
 
@@ -257,6 +263,7 @@
 	 * @see org.eclipse.emf.ecore.xmi.impl.XMLHelperImpl#setValue(EObject, EStructuralFeature,
 	 *      Object, int)
 	 */
+	@Override
 	public void setValue(EObject object, EStructuralFeature feature, Object value, int position) {
 		if (feature == NULL_FEATURE)
 			return;
@@ -278,6 +285,7 @@
 	 * @see org.eclipse.emf.ecore.xmi.XMLHelper#getFeature(org.eclipse.emf.ecore.EClass,
 	 *      java.lang.String, java.lang.String, boolean)
 	 */
+	@Override
 	public EStructuralFeature getFeature(EClass eClass, String namespaceURI, String name, boolean isElement) {
 		if (UnsupportedFeature.isUnsupported(eClass, name))
 			return NULL_FEATURE;
@@ -289,6 +297,7 @@
 	 * 
 	 * @see org.eclipse.emf.ecore.xmi.XMLHelper#getFeatureKind(org.eclipse.emf.ecore.EStructuralFeature)
 	 */
+	@Override
 	public int getFeatureKind(EStructuralFeature feature) {
 		if (feature == NULL_FEATURE)
 			return XMLHelper.DATATYPE_SINGLE;
diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/MultiObjectTranslator.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/MultiObjectTranslator.java
index 91ed5bc..79226f6 100644
--- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/MultiObjectTranslator.java
+++ b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/MultiObjectTranslator.java
@@ -45,6 +45,7 @@
 	 * @see com.ibm.etools.emf2xml.impl.Translator#createEMFObject(java.lang.String,
 	 *      java.lang.String)
 	 */
+	@Override
 	public EObject createEMFObject(String nodeName, String readAheadName) {
 		return getDelegateFor(nodeName, readAheadName).createEMFObject(nodeName, readAheadName);
 	}
@@ -54,6 +55,7 @@
 	 * 
 	 * @see com.ibm.etools.emf2xml.impl.Translator#getChildren(java.lang.Object)
 	 */
+	@Override
 	public Translator[] getChildren(Object o, int version) {
 		if (o == null)
 			return EMPTY_TRANSLATORS;
@@ -65,6 +67,7 @@
 	 * 
 	 * @see com.ibm.etools.emf2xml.impl.Translator#getDOMName(java.lang.Object)
 	 */
+	@Override
 	public String getDOMName(Object value) {
 		return getDelegateFor((EObject) value).getDOMName(value);
 	}
@@ -75,10 +78,12 @@
 	 * 
 	 * @see com.ibm.etools.emf2xml.impl.Translator#isManagedByParent()
 	 */
+	@Override
 	public boolean isManagedByParent() {
 		return false;
 	}
 
+	@Override
 	public boolean shouldIndentEndTag(Node node) {
 		if (node.getNodeName().equals(getDOMPath())) {
 			return super.shouldIndentEndTag(node);
diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/NamespaceTranslator.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/NamespaceTranslator.java
index 3c23ed4..ea4cc38 100644
--- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/NamespaceTranslator.java
+++ b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/NamespaceTranslator.java
@@ -46,6 +46,7 @@
 	 * @see com.ibm.etools.emf2xml.impl.Translator#setMOFValue(org.eclipse.emf.ecore.EObject,
 	 *      java.lang.Object)
 	 */
+	@Override
 	public void setMOFValue(EObject emfObject, Object value) {
 		NamespaceAdapter.addNamespace(prefix, (String) value, emfObject);
 	}
@@ -55,6 +56,7 @@
 	 * 
 	 * @see com.ibm.etools.emf2xml.impl.Translator#isSetMOFValue(org.eclipse.emf.ecore.EObject)
 	 */
+	@Override
 	public boolean isSetMOFValue(EObject emfObject) {
 		return getMOFValue(emfObject) != null;
 	}
@@ -64,6 +66,7 @@
 	 * 
 	 * @see com.ibm.etools.emf2xml.impl.Translator#getMOFValue(org.eclipse.emf.ecore.EObject)
 	 */
+	@Override
 	public Object getMOFValue(EObject mofObject) {
 		return NamespaceAdapter.getNamespaceURIAtThisLevel(prefix, mofObject);
 	}
@@ -73,6 +76,7 @@
 	 * 
 	 * @see com.ibm.etools.emf2xml.impl.Translator#unSetMOFValue(org.eclipse.emf.ecore.EObject)
 	 */
+	@Override
 	public void unSetMOFValue(EObject emfObject) {
 		NamespaceAdapter.removeNamespace(prefix, emfObject);
 	}
@@ -82,6 +86,7 @@
 	 * 
 	 * @see com.ibm.etools.emf2xml.impl.Translator#featureExists(org.eclipse.emf.ecore.EObject)
 	 */
+	@Override
 	public boolean featureExists(EObject emfObject) {
 		return true;
 	}
@@ -91,6 +96,7 @@
 	 * 
 	 * @see com.ibm.etools.emf2xml.impl.Translator#isDataType()
 	 */
+	@Override
 	public boolean isDataType() {
 		return true;
 	}
@@ -101,6 +107,7 @@
 	 * @see com.ibm.etools.emf2xml.impl.Translator#isMapFor(java.lang.Object, java.lang.Object,
 	 *      java.lang.Object)
 	 */
+	@Override
 	public boolean isMapFor(Object aFeature, Object oldValue, Object newValue) {
 		if (aFeature == feature) {
 			Namespace namespace = (Namespace) (oldValue == null ? newValue : oldValue);
diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/ObjectTranslatorFilter.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/ObjectTranslatorFilter.java
index 918b9ce..3e479f5 100644
--- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/ObjectTranslatorFilter.java
+++ b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/ObjectTranslatorFilter.java
@@ -23,6 +23,7 @@
 		super(trans, version);
 	}
 
+	@Override
 	public final int scanNextTranslator(Translator[] children, int start) {
 		int found = start + 1;
 		for (; found < children.length; ++found) {
diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/ReferencedResource.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/ReferencedResource.java
index 45faf2b..0a4818a 100644
--- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/ReferencedResource.java
+++ b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/ReferencedResource.java
@@ -12,9 +12,8 @@
 
 
 
-import org.eclipse.emf.ecore.resource.Resource;
 
-public interface ReferencedResource extends Resource, CompatibilityXMIResource {
+public interface ReferencedResource extends CompatibilityXMIResource {
 	//TODO - rename packaged
 
 	public static final String DELETED_ERROR_MSG = "This resource has been deleted and can no longer be used."; //$NON-NLS-1$
diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/ReferencedXMIFactoryImpl.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/ReferencedXMIFactoryImpl.java
index d891c2c..2a9fe76 100644
--- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/ReferencedXMIFactoryImpl.java
+++ b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/ReferencedXMIFactoryImpl.java
@@ -42,6 +42,7 @@
 	/**
 	 * @see org.eclipse.emf.ecore.resource.impl.ResourceFactoryImpl#createResource(URI)
 	 */
+	@Override
 	public final Resource createResource(URI uri) {
 		Resource res = doCreateResource(uri);
 		adaptNew(res);
diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/ReferencedXMIResourceImpl.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/ReferencedXMIResourceImpl.java
index 64b9a5c..33de28d 100644
--- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/ReferencedXMIResourceImpl.java
+++ b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/ReferencedXMIResourceImpl.java
@@ -26,7 +26,7 @@
 import org.eclipse.emf.common.util.EList;
 import org.eclipse.emf.common.util.URI;
 import org.eclipse.emf.ecore.EObject;
-import org.eclipse.jem.util.logger.proxy.Logger;
+import org.eclipse.wst.common.internal.emf.plugin.EcoreUtilitiesPlugin;
 import org.eclipse.wst.common.internal.emf.utilities.IDUtil;
 
 public class ReferencedXMIResourceImpl extends CompatibilityXMIResourceImpl implements ReferencedResource {
@@ -43,57 +43,72 @@
 	  public static class ESynchronizedAdapterList extends EAdapterList
 	  {
 
-	    public ESynchronizedAdapterList(Notifier notifier) {
+	    /**
+		 * 
+		 */
+		private static final long serialVersionUID = 7855438339187540718L;
+
+		public ESynchronizedAdapterList(Notifier notifier) {
 			super(notifier);
 		}
 
+		@Override
 		public synchronized boolean add(Object object)
 	    {
 	    return super.add(object);
 	    }
 
-	    public synchronized void add(int index, Object object)
+	    @Override
+		public synchronized void add(int index, Object object)
 	    {
 	    super.add(index, object);
 	    }
 
-	    public synchronized boolean addAll(Collection collection)
+	    @Override
+		public synchronized boolean addAll(Collection collection)
 	    {
 	    return super.addAll(collection);
 	    }
 
-	    public synchronized boolean remove(Object object)
+	    @Override
+		public synchronized boolean remove(Object object)
 	    {
 	    return super.remove(object);
 	    }
 
-	    public synchronized Object remove(int index)
+	    @Override
+		public synchronized Object remove(int index)
 	    {
 	    return super.remove(index);
 	    }
 
-	    public synchronized boolean removeAll(Collection collection)
+	    @Override
+		public synchronized boolean removeAll(Collection collection)
 	    {
 	    return super.removeAll(collection);
 	    }
 
-	    public synchronized void clear()
+	    @Override
+		public synchronized void clear()
 	    {
 	     super.clear();
 	    }
 
 
-	    public synchronized Object set(int index, Object object)
+	    @Override
+		public synchronized Object set(int index, Object object)
 	    {
 	    return super.set(index, object);
 	    }
 
-	    public synchronized void move(int newPosition, Object object)
+	    @Override
+		public synchronized void move(int newPosition, Object object)
 	    {
 	    super.move(newPosition, object);
 	    }
 
-	    public synchronized Object move(int newPosition, int oldPosition)
+	    @Override
+		public synchronized Object move(int newPosition, int oldPosition)
 	    {
 	    return super.move(newPosition, oldPosition);
 	    }
@@ -272,6 +287,7 @@
 			save(Collections.EMPTY_MAP);
 	}
 
+	@Override
 	public String toString() {
 		return TO_STRING + getURI().toString() + READ_COUNT_TO_STRING + new Integer(readReferenceCount) + WRITE_COUNT_TO_STRING + new Integer(editReferenceCount);
 	}
@@ -298,6 +314,7 @@
 		return forceRefresh;
 	}
 
+	@Override
 	protected void basicDoLoad(InputStream arg0, Map arg1) throws IOException {
 		boolean isTrackingMods = isTrackingModification();
 		try {
@@ -313,6 +330,7 @@
 	/**
 	 * @see org.eclipse.emf.ecore.xmi.impl.XMLResourceImpl#doUnload()
 	 */
+	@Override
 	protected void doUnload() {
 		
 		try {
@@ -352,6 +370,7 @@
 	/**
 	 * @see org.eclipse.emf.ecore.resource.Resource#save(Object)
 	 */
+	@Override
 	public void save(Map options) throws IOException {
 		notifyAboutToSave();
         try {
@@ -360,8 +379,7 @@
             notifySaveFailed();
             if (e instanceof IOException)
                 throw (IOException) e;
-            else
-                Logger.getLogger().write(e);
+            EcoreUtilitiesPlugin.logError(e);
         }
         notifySaved();
 	}
@@ -383,11 +401,13 @@
 		  Notification notification =
 			new NotificationImpl(eventType, this, this)
 			{
-			  public Object getNotifier()
+			  @Override
+			public Object getNotifier()
 			  {
 				return ReferencedXMIResourceImpl.this;
 			  }
-			  public int getFeatureID(Class expectedClass)
+			  @Override
+			public int getFeatureID(Class expectedClass)
 			  {
 				return eventType;
 			  }
@@ -403,6 +423,7 @@
 		return false;
 	}
 	
+	@Override
 	public EList eAdapters()
 	  {
 	    if (eAdapters == null)
diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/RendererFactory.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/RendererFactory.java
index 9f294d3..356c05f 100644
--- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/RendererFactory.java
+++ b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/RendererFactory.java
@@ -8,10 +8,9 @@
  **************************************************************************************************/
 package org.eclipse.wst.common.internal.emf.resource;
 
-import java.lang.ref.WeakReference;
-import java.util.ArrayList;
-import java.util.Collection;
 import java.util.Iterator;
+import java.util.Map;
+import java.util.WeakHashMap;
 
 
 public abstract class RendererFactory {
@@ -48,6 +47,7 @@
 		defaultRendererFactory = factory;
 	}
 
+	@Override
 	public String toString() {
 		return "RendererFactory instance: " + getClass().getName(); //$NON-NLS-1$
 	}
@@ -56,7 +56,8 @@
 
 		private static final Notifier INSTANCE = new Notifier();
 
-		private final Collection resourceFactoryListeners = new ArrayList();
+		// use a WeakHashMap for a weak HashSet
+		private final Map resourceFactoryListeners = new WeakHashMap();
 
 		private Notifier() {
 		}
@@ -72,17 +73,11 @@
 				 * work
 				 */
 				if (rendererFactory != RendererFactory.getDefaultRendererFactory()) {
-					WeakReference wref = null;
-					Listener listener = null;
 					synchronized (resourceFactoryListeners) {
-						for (Iterator i = resourceFactoryListeners.iterator(); i.hasNext();) {
-							wref = (WeakReference) i.next();
-							listener = (Listener) wref.get();
+						for (Iterator i = resourceFactoryListeners.keySet().iterator(); i.hasNext();) {
+							Listener listener = (Listener) i.next();
 							//System.out.println("Notifying Listener: " + listener);
-							if (listener != null)
-								listener.updateRendererFactory(rendererFactory);
-							else
-								i.remove();
+							listener.updateRendererFactory(rendererFactory);
 						}
 					}
 				}
@@ -92,29 +87,13 @@
 		public void addListener(Listener l) {
 			//System.out.println("Adding listener: " + l);
 			synchronized (resourceFactoryListeners) {
-				resourceFactoryListeners.add(new WeakReference(l));
+				resourceFactoryListeners.put(l, null);
 			}
 		}
 
 		public void removeListener(Listener listenerToRemove) {
-			final int length = resourceFactoryListeners.size();
-			if (length > 0) {
-				WeakReference wref = null;
-				Listener listener = null;
-				synchronized (resourceFactoryListeners) {
-					for (Iterator i = resourceFactoryListeners.iterator(); i.hasNext();) {
-						wref = (WeakReference) i.next();
-						listener = (Listener) wref.get();
-						if (listener != null) {
-							if (listener == listenerToRemove) {
-								i.remove();
-								break;
-							}
-						} else {
-							i.remove();
-						}
-					}
-				}
+			synchronized (resourceFactoryListeners) {
+				resourceFactoryListeners.remove(listenerToRemove);
 			}
 		}
 
diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/ResourceFactoryDescriptor.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/ResourceFactoryDescriptor.java
index 10850e9..697b516 100644
--- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/ResourceFactoryDescriptor.java
+++ b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/ResourceFactoryDescriptor.java
@@ -74,10 +74,12 @@
 	 */
 	public abstract Resource.Factory createFactory();
 	
+	@Override
 	public int hashCode() {
 		return getShortSegment().hashCode();
 	}
 	
+	@Override
 	public boolean equals(Object o) {
 		if(o instanceof ResourceFactoryDescriptor)
 			return getShortSegment().equals(((ResourceFactoryDescriptor)o).getShortSegment());
diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/RootTranslator.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/RootTranslator.java
index f5640e9..bbba2f3 100644
--- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/RootTranslator.java
+++ b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/RootTranslator.java
@@ -30,6 +30,7 @@
 	/**
 	 * @see com.ibm.etools.emf2xml.impl.Translator#setMOFValue(Notifier, Object, int)
 	 */
+	@Override
 	public void setMOFValue(Notifier owner, Object value, int newIndex) {
 		((Resource) owner).getContents().add(newIndex, (EObject)value);
 	}
@@ -37,6 +38,7 @@
 	/**
 	 * @see com.ibm.etools.emf2xml.impl.Translator#removeMOFValue(Notifier, Object)
 	 */
+	@Override
 	public void removeMOFValue(Notifier owner, Object value) {
 		((Resource) owner).getContents().remove(value);
 	}
@@ -47,6 +49,7 @@
 	 * @see com.ibm.etools.emf2xml.impl.Translator#setMOFValue(org.eclipse.emf.ecore.EObject,
 	 *      java.lang.Object)
 	 */
+	@Override
 	public void setMOFValue(Resource res, Object value) {
 		if (res != null && value != null)
 			res.getContents().add((EObject)value);
@@ -57,6 +60,7 @@
 	 * 
 	 * @see com.ibm.etools.emf2xml.impl.Translator#isMultiValued()
 	 */
+	@Override
 	public boolean isMultiValued() {
 		return true;
 	}
diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/SourceLinkTranslator.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/SourceLinkTranslator.java
index d5d697b..371e0d8 100644
--- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/SourceLinkTranslator.java
+++ b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/SourceLinkTranslator.java
@@ -51,6 +51,7 @@
 		super(domNameAndPath, aFeature, style);
 	}
 
+	@Override
 	public Object convertStringToValue(String strValue, EObject owner) {
 
 		Object value = null;
@@ -62,6 +63,7 @@
 		return value;
 	}
 
+	@Override
 	public String convertValueToString(Object value, EObject owner) {
 		TranslatorPath path = fTranslatorPaths[0];
 		Object attrValue = path.getLastMap().getMOFValue((EObject) value);
diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/StaticResourceFactoryDescriptor.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/StaticResourceFactoryDescriptor.java
index 8caf4ea..e2f46fc 100644
--- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/StaticResourceFactoryDescriptor.java
+++ b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/StaticResourceFactoryDescriptor.java
@@ -34,6 +34,7 @@
 		this.factory = factory;
 	}  
 
+	@Override
 	public boolean isEnabledFor(URI fileURI) {
 		/* shortSegment must be non-null for the descriptor to be created, 
 		 * a validation check in init() verifies this requirement */
@@ -42,10 +43,12 @@
 		return false;
 	} 
 	
+	@Override
 	public Resource.Factory createFactory() {
 		 return factory;			
 	}
 
+	@Override
 	public String getShortSegment() {
 		return shortSegment;
 	}  
diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/Translator.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/Translator.java
index ab28074..e46e58e 100644
--- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/Translator.java
+++ b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/Translator.java
@@ -380,6 +380,7 @@
 		return (String[]) results.toArray(new String[results.size()]);
 	}
 
+	@Override
 	public String toString() {
 		StringBuffer sb = new StringBuffer();
 		String cn = getClass().getName();
@@ -410,12 +411,18 @@
 	/*
 	 * @see Object#equals(Object)
 	 */
+	@Override
 	public boolean equals(Object object) {
 		if (!(object instanceof Translator))
 			return false;
 		Translator mapInfo = (Translator) object;
 		return fDOMNames.equals(mapInfo.getDOMNames()) && (feature == null && mapInfo.getFeature() == null || feature.equals(mapInfo.getFeature()));
 	}
+	
+	@Override
+	public int hashCode() {
+		return super.hashCode() +fDOMNames.hashCode();
+	}
 
 	/**
 	 * Returns the isManagedByParent.
@@ -469,7 +476,7 @@
 	 *            org.eclipse.emf.ecore.EObject
 	 */
 	public boolean featureExists(EObject emfObject) {
-		if (feature == null)
+		if (feature == null || emfObject == null)
 			return false;
 
 		return emfObject.eClass().getEStructuralFeature(feature.getName()) != null;
@@ -510,20 +517,21 @@
 	public Object convertStringToValue(String strValue, EObject owner) {
 		if (feature == null)
 			return strValue;
-		if (strValue != null) {
+		String innerStrValue = strValue;
+		if (innerStrValue != null) {
 			if (isEnumWithHyphens())
-				strValue = strValue.replace('-', '_');
+				innerStrValue = innerStrValue.replace('-', '_');
 			if (!isCDATAContent()) {
-				strValue = strValue.trim();
+				innerStrValue = innerStrValue.trim();
 			}
 		}
-		Object value = FeatureValueConverter.DEFAULT.convertValue(strValue, feature);
+		Object value = FeatureValueConverter.DEFAULT.convertValue(innerStrValue, feature);
 		if (value == null) {
 			if (isEmptyTag() && !isDOMAttribute() && !isDOMTextValue() && isBooleanFeature())
 				return Boolean.TRUE;
 			EObject convertToType = feature.getEType();
 			if (convertToType == null)
-				value = strValue;
+				value = innerStrValue;
 			else if (convertToType.equals(getEcorePackage().getEString())) {
 				value = ""; //$NON-NLS-1$
 			}
diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/TranslatorFilter.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/TranslatorFilter.java
index b12067d..a38b83b 100644
--- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/TranslatorFilter.java
+++ b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/TranslatorFilter.java
@@ -104,6 +104,7 @@
 				 * update the mode to VARIABLE_TRANSLATORS so we can skip to it directly next time
 				 */
 				this.mode = VARIABLE_TRANSLATORS_MODE;
+			//$FALL-THROUGH$
 			case VARIABLE_TRANSLATORS_MODE :
 				children = this.translator.getVariableChildren(target, this.version);
 				found = scanNextTranslator(children, this.index);
@@ -154,14 +155,15 @@
 	public static final Translator getNextChild(Translator translator, int startHint, int[] hints, EObject target, int version, TranslatorFilter translatorFilter) {
 
 		Translator result = null;
-
-		int index = startHint;
+		
+		int innerStartHint = startHint;
+		int index = innerStartHint;
 		Translator children[] = null;
 
 		switch (hints[MODE_HINT_INDX]) {
 			case STANDARD_TRANSLATORS_MODE :
 				children = translator.getChildren(target, version);
-				if (children != null && startHint < children.length) {
+				if (children != null && innerStartHint < children.length) {
 
 					/* Look for the next Attribute Translator */
 					index = translatorFilter.scanNextTranslator(children, index);
@@ -179,17 +181,18 @@
 					 * DO NOT BREAK we will default to VARIABLE TRANSLATORS MODE so we must reset
 					 * the startHint appropriately
 					 */
-					startHint = -1;
+					innerStartHint = -1;
 				}
 
+			//$FALL-THROUGH$
 			case VARIABLE_TRANSLATORS_MODE :
 				hints[MODE_HINT_INDX] = VARIABLE_TRANSLATORS_MODE;
 				/*
 				 * Reset the index.
 				 */
-				index = startHint;
+				index = innerStartHint;
 				children = translator.getVariableChildren(target, version);
-				if (children != null && children.length > 0 && startHint < children.length) {
+				if (children != null && children.length > 0 && innerStartHint < children.length) {
 					index = translatorFilter.scanNextTranslator(children, index);
 					result = (index >= 0) ? children[index] : null;
 				}
diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/TranslatorPath.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/TranslatorPath.java
index a2d843e..6678b51 100644
--- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/TranslatorPath.java
+++ b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/TranslatorPath.java
@@ -75,6 +75,7 @@
 	 * 
 	 * @see java.lang.Object#toString()
 	 */
+	@Override
 	public String toString() {
 		StringBuffer sb = new StringBuffer();
 		String cn = getClass().getName();
diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/TranslatorResourceFactory.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/TranslatorResourceFactory.java
index 20a450b..9427fb7 100644
--- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/TranslatorResourceFactory.java
+++ b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/TranslatorResourceFactory.java
@@ -48,6 +48,7 @@
 		return this.listeningForUpdates;
 	}
 
+	@Override
 	public Resource doCreateResource(URI uri) {
 		Renderer aRenderer = rendererFactory.createRenderer();
 		return createResource(uri, aRenderer);
diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/TranslatorResourceImpl.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/TranslatorResourceImpl.java
index 5d09434..78fbce0 100644
--- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/TranslatorResourceImpl.java
+++ b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/TranslatorResourceImpl.java
@@ -16,6 +16,7 @@
 import java.util.Collection;
 import java.util.Map;
 
+import org.eclipse.emf.common.notify.Adapter;
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.common.notify.impl.NotificationImpl;
 import org.eclipse.emf.common.util.EList;
@@ -26,7 +27,7 @@
 import org.eclipse.emf.ecore.InternalEObject;
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
 import org.eclipse.emf.ecore.resource.impl.ResourceImpl;
-import org.eclipse.jem.util.logger.proxy.Logger;
+import org.eclipse.wst.common.internal.emf.plugin.EcoreUtilitiesPlugin;
 import org.eclipse.wst.common.internal.emf.utilities.StringUtil;
 import org.xml.sax.EntityResolver;
 
@@ -74,12 +75,14 @@
 		setRenderer(aRenderer);
 	}
 
+	@Override
 	public java.lang.String getEncoding() {
 		if (super.getEncoding() == null)
 			setEncoding(DEFAULT_ENCODING);
 		return super.getEncoding();
 	}
 
+	@Override
 	public String getPublicId() {
 		return publicId;
 	}
@@ -93,6 +96,7 @@
 		return (EObject) getContents().get(0);
 	}
 
+	@Override
 	public String getSystemId() {
 		return systemId;
 	}
@@ -103,10 +107,12 @@
 		systemId = aSystemId;
 		if (changed) {
 			eNotify(new NotificationImpl(Notification.SET, null, null) {
+				@Override
 				public Object getFeature() {
 					return DOC_TYPE_FEATURE;
 				}
 
+				@Override
 				public Object getNotifier() {
 					return TranslatorResourceImpl.this;
 				}
@@ -119,6 +125,7 @@
 	 * 
 	 * @return String
 	 */
+	@Override
 	public String getXMLVersion() {
 		if (xmlVersion == null)
 			xmlVersion = DEFAULT_VERSION;
@@ -131,10 +138,12 @@
 	 * @param xmlVersion
 	 *            The xmlVersion to set
 	 */
+	@Override
 	public void setXMLVersion(String xmlVersion) {
 		this.xmlVersion = xmlVersion;
 	}
 
+	@Override
 	protected void basicDoLoad(InputStream inputStream, Map options) throws IOException {
 		// long start = System.currentTimeMillis();
 		boolean isTrackingMods = isTrackingModification();
@@ -151,6 +160,7 @@
 		// recordTime("Load", start, end);
 	}
 
+	@Override
 	public void save(Map options) throws IOException {
         if (renderer.useStreamsForIO()) {
             super.save(options);
@@ -163,8 +173,7 @@
                  notifySaveFailed();
                 if (e instanceof IOException)
                     throw (IOException) e;
-                else
-                    Logger.getLogger().write(e);
+                EcoreUtilitiesPlugin.logError(e);
             }
             notifySaved();
         }
@@ -175,6 +184,7 @@
 	 * @see com.ibm.etools.xmi.helpers.CompatibilityXMIResourceImpl#doSave(OutputStream,
 	 *      Map)
 	 */
+	@Override
 	public void doSave(OutputStream outputStream, Map options) throws IOException {
 		// long start = System.currentTimeMillis();
 		renderer.doSave(outputStream, options);
@@ -194,11 +204,13 @@
 	/**
 	 * @see org.eclipse.emf.ecore.xmi.impl.XMLResourceImpl#doUnload()
 	 */
+	@Override
 	protected void doUnload() {
 		renderer.preUnload();
 		super.doUnload();
 	}
 
+	@Override
 	public String toString() {
 		return getClass().getName() + getURI().toString();
 	}
@@ -234,6 +246,7 @@
 		return super.getContents();
 	}
 
+	@Override
 	public EList getContents() {
 		waitForResourceToLoadIfNecessary();
 		if (contents == null) {
@@ -244,11 +257,18 @@
 
 	protected void initializeContents() {
 		contents = new ResourceImpl.ContentsEList() {
+			/**
+			 * 
+			 */
+			private static final long serialVersionUID = 1L;
+
+			@Override
 			public boolean add(Object object) {
 				renderer.prepareToAddContents();
 				return super.add(object);
 			}
 
+			@Override
 			public boolean addAll(Collection collection) {
 				renderer.prepareToAddContents();
 				return super.addAll(collection);
@@ -267,6 +287,7 @@
 	/**
 	 * @see org.eclipse.emf.ecore.xmi.impl.XMLResourceImpl#init()
 	 */
+	@Override
 	protected void init() {
 		super.init();
 		setEncoding(DEFAULT_ENCODING);
@@ -316,6 +337,7 @@
 	 * 
 	 * @see org.eclipse.emf.ecore.xmi.XMLResource#setID(EObject, String)
 	 */
+	@Override
 	public void setID(EObject eObject, String id) {
 		String oldId = getID(eObject);
 		super.setID(eObject, id);
@@ -328,15 +350,20 @@
 	 * 
 	 * @return boolean
 	 */
+	@Override
 	public boolean isModified() {
 		return super.isModified() || renderer.isModified();
 	}
+	public boolean isReverting() {
+		return ((AbstractRendererImpl)renderer).isReverting();
+	}
 
 	/*
 	 * Overriden to give the renderer a hook
 	 * 
 	 * @see org.eclipse.wst.common.internal.emf.resource.ReferencedResource#accessForWrite()
 	 */
+	@Override
 	public void accessForWrite() {
 		renderer.accessForWrite();
 		super.accessForWrite();
@@ -347,16 +374,19 @@
 	 * 
 	 * @see org.eclipse.wst.common.internal.emf.resource.ReferencedResource#accessForRead()
 	 */
+	@Override
 	public void accessForRead() {
 		renderer.accessForRead();
 		super.accessForRead();
 	}
 
+	@Override
 	public void releaseFromRead() {
 		renderer.releaseFromRead();
 		super.releaseFromRead();
 	}
 
+	@Override
 	public void releaseFromWrite() {
 		renderer.releaseFromWrite();
 		super.releaseFromWrite();
@@ -367,19 +397,23 @@
 	 * 
 	 * @see com.ibm.etools.emf.workbench.ReferencedXMIResourceImpl#preDelete()
 	 */
+	@Override
 	public void preDelete() {
 		super.preDelete();
 		renderer.preDelete();
 	}
 
+	@Override
 	public boolean isShared() {
 		return super.isShared() || renderer.isShared();
 	}
 
+	@Override
 	public boolean isSharedForWrite() {
 		return super.isSharedForWrite() || renderer.isSharedForWrite();
 	}
 
+	@Override
 	public void load(Map options) throws IOException {
 		
 			if (isLoaded())
@@ -393,4 +427,18 @@
 				loadExisting(options);
 			}
 	}
+
+	@Override
+	public void eNotify(Notification notification) {
+	    Adapter[] eAdapters = eBasicAdapterArray();
+	    if (eAdapters != null && eDeliver())
+	    {
+	      for (int i = 0, size = eAdapters.length; i < size; ++i)
+	      {
+	      	Adapter temp;
+	    	  if ((temp = eAdapters[i]) != null)
+	    		  temp.notifyChanged(notification);
+	      }
+	    }
+	  }
 }
diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/UnsupportedFeature.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/UnsupportedFeature.java
index 43c5864..424241c 100644
--- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/UnsupportedFeature.java
+++ b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/UnsupportedFeature.java
@@ -10,9 +10,6 @@
  *******************************************************************************/
 /*
  * Created on Apr 13, 2004
- *
- * TODO To change the template for this generated file go to
- * Window - Preferences - Java - Code Generation - Code and Comments
  */
 package org.eclipse.wst.common.internal.emf.resource;
 
@@ -21,9 +18,6 @@
 
 /**
  * @author cbridgha
- * 
- * TODO To change the template for this generated type comment go to Window - Preferences - Java -
- * Code Generation - Code and Comments
  */
 public class UnsupportedFeature extends EAttributeImpl {
 	/**
@@ -38,6 +32,5 @@
 
 	public UnsupportedFeature() {
 		super();
-		// TODO Auto-generated constructor stub
 	}
 }
\ No newline at end of file
diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/Assert.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/Assert.java
index 3a44751..f6635a7 100644
--- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/Assert.java
+++ b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/Assert.java
@@ -10,7 +10,7 @@
  *******************************************************************************/
 package org.eclipse.wst.common.internal.emf.utilities;
 
-import org.eclipse.jem.util.logger.proxy.Logger;
+import org.eclipse.wst.common.internal.emf.plugin.EcoreUtilitiesPlugin;
 
 
 
@@ -93,7 +93,7 @@
 	 */
 	public static void isNotNull(Object object, String message) {
 		if (object == null) {
-			Logger.getLogger().logError("null_argument: " + message);//$NON-NLS-1$
+			EcoreUtilitiesPlugin.logError("null_argument: " + message);//$NON-NLS-1$
 			throw new AssertionFailedException();
 		}
 	}
@@ -123,7 +123,7 @@
 	 */
 	public static boolean isTrue(boolean expression, String message) {
 		if (!expression) {
-			Logger.getLogger().logError("assertion failed: " + message);//$NON-NLS-1$
+			EcoreUtilitiesPlugin.logError("assertion failed: " + message);//$NON-NLS-1$
 			throw new AssertionFailedException();
 		}
 		return expression;
diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/AssertionFailedException.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/AssertionFailedException.java
index 044c60d..5de492e 100644
--- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/AssertionFailedException.java
+++ b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/AssertionFailedException.java
@@ -25,6 +25,11 @@
 // on other packages and internal APIs.
 class AssertionFailedException extends RuntimeException {
 	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 3408284008342683621L;
+
+	/**
 	 * Constructs a new exception.
 	 */
 	public AssertionFailedException() {
diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/DOMUtilities.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/DOMUtilities.java
index 44f9669..4d4225d 100644
--- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/DOMUtilities.java
+++ b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/DOMUtilities.java
@@ -26,7 +26,7 @@
 import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.parsers.ParserConfigurationException;
 
-import org.eclipse.jem.util.logger.proxy.Logger;
+import org.eclipse.wst.common.internal.emf.plugin.EcoreUtilitiesPlugin;
 import org.w3c.dom.Document;
 import org.w3c.dom.Node;
 import org.w3c.dom.NodeList;
@@ -494,13 +494,18 @@
 		try {
 			dbf.setAttribute("http://apache.org/xml/features/allow-java-encodings", new Boolean(options.isAllowJavaEncodings())); //$NON-NLS-1$	        
 		} catch (IllegalArgumentException ignore) {
-			Logger.getLogger().log("Warning: Parser does not support \"http://apache.org/xml/features/allow-java-encodings\"."); //$NON-NLS-1$
+			EcoreUtilitiesPlugin.logWarning("Warning: Parser does not support \"http://apache.org/xml/features/allow-java-encodings\"."); //$NON-NLS-1$
 		}
 		try {
 			dbf.setAttribute("http://apache.org/xml/features/validation/schema", new Boolean(options.isValidate())); //$NON-NLS-1$
 		} catch (IllegalArgumentException ignore) {
 			dbf.setValidating(false);
-			Logger.getLogger().log("Warning: Parser does not support \"http://apache.org/xml/features/validation/schema\". Validation will be disabled."); //$NON-NLS-1$
+			EcoreUtilitiesPlugin.logWarning("Warning: Parser does not support \"http://apache.org/xml/features/validation/schema\". Validation will be disabled."); //$NON-NLS-1$
+		}
+		try {
+			dbf.setAttribute("http://apache.org/xml/features/dom/defer-node-expansion", Boolean.FALSE); //$NON-NLS-1$
+		} catch (IllegalArgumentException ignore) {
+			EcoreUtilitiesPlugin.logWarning("Warning: Parser does not support \"http://apache.org/xml/features/dom/defer-node-expansion\"."); //$NON-NLS-1$
 		}
 		dbf.setExpandEntityReferences(options.isExpandEntityRefererences());
 		DocumentBuilder result = dbf.newDocumentBuilder();
@@ -524,7 +529,7 @@
 			}
 
 			public void warning(SAXParseException arg0) throws SAXException {
-				Logger.getLogger().logWarning(arg0);
+				EcoreUtilitiesPlugin.logWarning(arg0);
 			}
 
 		});
diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/DanglingHREFException.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/DanglingHREFException.java
index debd006..9207710 100644
--- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/DanglingHREFException.java
+++ b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/DanglingHREFException.java
@@ -20,6 +20,11 @@
 public class DanglingHREFException extends Exception {
 
 
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = -3369128742899263327L;
+
 	public DanglingHREFException() {
 		super();
 	}
diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/DefaultFeatureValueConverter.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/DefaultFeatureValueConverter.java
index ea56697..76e5962 100644
--- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/DefaultFeatureValueConverter.java
+++ b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/DefaultFeatureValueConverter.java
@@ -348,7 +348,7 @@
 	 * @aValue.
 	 */
 	protected Object failedToConvert(Object aValue, String aString) {
-		String errorString = java.text.MessageFormat.format(FAILED_CONVERSION_PATTERN, new String[]{aValue.toString(), aString});
+		String errorString = java.text.MessageFormat.format(FAILED_CONVERSION_PATTERN, new Object[]{aValue.toString(), aString});
 		throw new FeatureValueConversionException(errorString);
 	}
 }
diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/DefaultOverridableResourceFactoryRegistry.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/DefaultOverridableResourceFactoryRegistry.java
index 927c0a4..456edb5 100644
--- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/DefaultOverridableResourceFactoryRegistry.java
+++ b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/DefaultOverridableResourceFactoryRegistry.java
@@ -36,31 +36,31 @@
 		super();
 	}
 
+	@Override
 	public Resource.Factory getFactory(URI uri) {
 		return getFactory(uri, null);
 	}
 
+	@Override
 	public Resource.Factory getFactory(URI uri, String contentType)
 	{
 		Object resourceFactory = null;
+		String protocol = uri.scheme();
+		resourceFactory = protocolToFactoryMap.get(protocol);
 		if (resourceFactory == null) {
-			String protocol = uri.scheme();
-			resourceFactory = protocolToFactoryMap.get(protocol);
+			String extension = uri.fileExtension();
+			resourceFactory = extensionToFactoryMap.get(extension);
 			if (resourceFactory == null) {
-				String extension = uri.fileExtension();
-				resourceFactory = extensionToFactoryMap.get(extension);
-				if (resourceFactory == null) {
-					resourceFactory = delegatedGetFactory(uri);
-					if (resourceFactory == GLOBAL_FACTORY) {
-						resourceFactory = extensionToFactoryMap.get(Resource.Factory.Registry.DEFAULT_EXTENSION);
-						if (resourceFactory == null)
-							resourceFactory = GLOBAL_FACTORY;
-					}
-
+				resourceFactory = delegatedGetFactory(uri);
+				if (resourceFactory == GLOBAL_FACTORY) {
+					resourceFactory = extensionToFactoryMap.get(Resource.Factory.Registry.DEFAULT_EXTENSION);
+					if (resourceFactory == null)
+						resourceFactory = GLOBAL_FACTORY;
 				}
+
 			}
 		}
-
+		
 		return resourceFactory instanceof Resource.Factory.Descriptor ? ((Resource.Factory.Descriptor) resourceFactory).createFactory() : (Resource.Factory) resourceFactory;
 	}
 
@@ -69,6 +69,7 @@
 	 * 
 	 * @see org.eclipse.emf.ecore.resource.impl.ResourceFactoryRegistryImpl#delegatedGetFactory(org.eclipse.emf.common.util.URI)
 	 */
+	@Override
 	protected Factory delegatedGetFactory(URI uri) {
 		return Resource.Factory.Registry.INSTANCE.getFactory(uri);
 	}
diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/EtoolsCopySession.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/EtoolsCopySession.java
index 0308041..1de9513 100644
--- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/EtoolsCopySession.java
+++ b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/EtoolsCopySession.java
@@ -46,6 +46,7 @@
 	 * 
 	 * Copy Resources first and then copy RefObjects.
 	 */
+	@Override
 	public void copy(CopyGroup aGroup) {
 		if (aGroup != null) {
 			copyResources(aGroup);
@@ -60,6 +61,7 @@
 	 * This method should be used if you are only going to copy <code>aRefObject</code> in this
 	 * copy execution.
 	 */
+	@Override
 	public EObject copy(EObject aRefObject, String idSuffix) {
 		EObject copied = containmentCopy(aRefObject, idSuffix);
 		executeDeferredCopyActions();
@@ -70,6 +72,7 @@
 	 * This method should be used if you are only going to copy <code>aRefObject</code> in this
 	 * copy execution. This method only copies <code>aRefObject</code> attributes.
 	 */
+	@Override
 	public EObject copyObject(EObject aRefObject, String idSuffix) {
 		EObject copied = containmentCopyObject(aRefObject, idSuffix);
 		executeDeferredCopyActions();
@@ -80,6 +83,7 @@
 	 * This method should be used if you are only going to copy <code>aResource</code> in this
 	 * copy execution. The copied Resource will have a URI equal to <code>newUri</code>.
 	 */
+	@Override
 	public Resource copy(Resource aResource, String newUri) {
 		Resource copied = containmentCopy(aResource, newUri);
 		executeDeferredCopyActions();
@@ -103,6 +107,7 @@
 	 * @see com.ibm.etools.emf.ecore.utilities.copy.EtoolsCopyUtility#primCopyObject(EObject,
 	 *      String)
 	 */
+	@Override
 	protected EObject primCopyObject(EObject aRefObject, String idSuffix) {
 		EObject copy = super.primCopyObject(aRefObject, idSuffix);
 		copyIdIfNecessary(aRefObject, copy, idSuffix);
@@ -140,6 +145,7 @@
 	/**
 	 * Return a cached copy.
 	 */
+	@Override
 	public EObject getCopy(EObject anObject) {
 		EObject copied = super.getCopy(anObject);
 		if (copied == null)
@@ -159,6 +165,7 @@
 	/**
 	 * Return an instance of EObject that is the same type as <code>aRefObject</code>.
 	 */
+	@Override
 	public EObject newInstance(EObject aRefObject) {
 		EObject newType = super.newInstance(aRefObject);
 		newType.eSetDeliver(false);
@@ -168,6 +175,7 @@
 	/**
 	 * @see com.ibm.etools.emf.ecore.utilities.copy.EtoolsCopyUtility#newInstance(Resource, String)
 	 */
+	@Override
 	public Resource newInstance(Resource aResource, String newUri) {
 		Resource copy = super.newInstance(aResource, newUri);
 		if (aResource instanceof XMLResource) {
diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/EtoolsCopyUtility.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/EtoolsCopyUtility.java
index 22d91e0..a89a7c7 100644
--- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/EtoolsCopyUtility.java
+++ b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/EtoolsCopyUtility.java
@@ -51,6 +51,7 @@
 			super(aReference, aValue, aSuffix, aCopyContainer);
 		}
 
+		@Override
 		public void performAction() {
 			EObject value = (EObject) getReferenceValue();
 			getCopyContainer().eSet(getReference(), getCopyIfFound(value));
@@ -62,6 +63,7 @@
 			super(aReference, aValue, aSuffix, aCopyContainer);
 		}
 
+		@Override
 		public void performAction() {
 			List copyList = (List) getCopyContainer().eGet(getReference());
 			Iterator it = ((List) getReferenceValue()).iterator();
@@ -529,9 +531,10 @@
 	public Resource newInstance(Resource aResource, String newUri) {
 		if (aResource == null)
 			return null;
+		String innerNewUri = newUri;
 		Resource newResource;
 		String originalUri = aResource.getURI().toString();
-		newUri = newUri == null ? originalUri : newUri;
+		innerNewUri = innerNewUri == null ? originalUri : innerNewUri;
 
 		Resource.Factory factory = null;
 		if (aResource.getResourceSet() == null)
@@ -540,7 +543,7 @@
 			factory = aResource.getResourceSet().getResourceFactoryRegistry().getFactory(URI.createURI(originalUri));
 
 
-		newResource = factory.createResource(URI.createURI(newUri));
+		newResource = factory.createResource(URI.createURI(innerNewUri));
 		return newResource;
 	}
 
diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/ExtendedEcoreUtil.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/ExtendedEcoreUtil.java
index e9cf914..823f191 100644
--- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/ExtendedEcoreUtil.java
+++ b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/ExtendedEcoreUtil.java
@@ -11,10 +11,12 @@
 package org.eclipse.wst.common.internal.emf.utilities;
 
 import java.io.FileNotFoundException;
+import java.util.Collection;
 import java.util.Iterator;
 import java.util.List;
 
 import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
 import org.eclipse.emf.common.notify.impl.BasicNotifierImpl.EAdapterList;
 import org.eclipse.emf.common.util.URI;
 import org.eclipse.emf.common.util.WrappedException;
@@ -34,7 +36,80 @@
 	private static FileNotFoundDetector FILE_NOT_FOUND_DETECTOR;
 	private static String NAME_ATTRIBUTE_STRING = "name"; //$NON-NLS-1$
 
+	public static class ESynchronizedAdapterList extends EAdapterList
+	  {
 
+	    /**
+		 * 
+		 */
+		private static final long serialVersionUID = 7855438339187540718L;
+
+		public ESynchronizedAdapterList(Notifier notifier) {
+			super(notifier);
+		}
+
+		@Override
+		public synchronized boolean add(Object object)
+	    {
+	    return super.add(object);
+	    }
+
+	    @Override
+		public synchronized void add(int index, Object object)
+	    {
+	    super.add(index, object);
+	    }
+
+	    @Override
+		public synchronized boolean addAll(Collection collection)
+	    {
+	    return super.addAll(collection);
+	    }
+
+	    @Override
+		public synchronized boolean remove(Object object)
+	    {
+	    return super.remove(object);
+	    }
+
+	    @Override
+		public synchronized Object remove(int index)
+	    {
+	    return super.remove(index);
+	    }
+
+	    @Override
+		public synchronized boolean removeAll(Collection collection)
+	    {
+	    return super.removeAll(collection);
+	    }
+
+	    @Override
+		public synchronized void clear()
+	    {
+	     super.clear();
+	    }
+
+
+	    @Override
+		public synchronized Object set(int index, Object object)
+	    {
+	    return super.set(index, object);
+	    }
+
+	    @Override
+		public synchronized void move(int newPosition, Object object)
+	    {
+	    super.move(newPosition, object);
+	    }
+
+	    @Override
+		public synchronized Object move(int newPosition, int oldPosition)
+	    {
+	    return super.move(newPosition, oldPosition);
+	    }
+	  }
+	
 	public interface FileNotFoundDetector {
 		boolean isFileNotFound(WrappedException wrappedEx);
 	}
@@ -71,10 +146,11 @@
 
 	public static void eSetOrAdd(EObject obj, EStructuralFeature feature, Object value, int newIndex) {
 		if (feature.isMany() && value != null) {
-			if (newIndex >= 0)
-				((List) obj.eGet(feature)).add(newIndex, value);
+			List featureList = ((List) obj.eGet(feature));
+			if (newIndex >= 0 && newIndex < featureList.size())
+				featureList.add(newIndex, value);
 			else
-				((List) obj.eGet(feature)).add(value);
+				featureList.add(value);
 		} else {
 			obj.eSet(feature, value);
 		}
@@ -194,7 +270,7 @@
 		Resource res = root.eResource();
 		EObject container = root.eContainer();
 		/* Making sure the proxy is created first before unloading */
-		if (root != null && res != null)
+		if (res != null)
 			becomeProxy(root, res);
 		if (container == null)
 			if (res != null)
diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/FeatureValueConversionException.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/FeatureValueConversionException.java
index 0525a1f..38c24d1 100644
--- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/FeatureValueConversionException.java
+++ b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/FeatureValueConversionException.java
@@ -11,6 +11,11 @@
 public class FeatureValueConversionException extends RuntimeException {
 
 	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 8190891648333814201L;
+
+	/**
 	 * Constructor for FeatureValueConversionException.
 	 */
 	public FeatureValueConversionException() {
diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/ICommand2.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/ICommand2.java
new file mode 100644
index 0000000..2fb3c95
--- /dev/null
+++ b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/ICommand2.java
@@ -0,0 +1,25 @@
+/*******************************************************************************
+ * Copyright (c) 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.common.internal.emf.utilities;
+
+import java.util.List;
+
+import org.eclipse.core.resources.IProject;
+
+public interface ICommand2 extends ICommand {
+
+	/**
+	 * Accessor for a {@link List} of {@link IProject} that were modified by the execution of this command.
+	 * 
+	 * @return A {@link List} of {@link IProject} that were modified by the execution of this command.
+	 */
+	public List getAffectedProjects();
+}
diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/IDUtil.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/IDUtil.java
index 388986c..2aa022c 100644
--- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/IDUtil.java
+++ b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/IDUtil.java
@@ -52,14 +52,15 @@
 	}
 
 	protected static String ensureUniqueID(XMLResource aResource, String baseIDName) {
-		baseIDName += "_"; //$NON-NLS-1$
+		String innerBaseIDName = baseIDName;
+		innerBaseIDName += "_"; //$NON-NLS-1$
 		//Change to use the current time instead of incremental numbers to help
 		//support team development.
 		long currentTime = System.currentTimeMillis();
-		String id = baseIDName + currentTime;
+		String id = innerBaseIDName + currentTime;
 		while (aResource.getEObject(id) != null) {
 			++currentTime;
-			id = baseIDName + currentTime;
+			id = innerBaseIDName + currentTime;
 		}
 		return id;
 	}
diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/InvalidPasswordCipherException.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/InvalidPasswordCipherException.java
index 5ff513b..18b8d14 100644
--- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/InvalidPasswordCipherException.java
+++ b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/InvalidPasswordCipherException.java
@@ -12,5 +12,10 @@
 import org.omg.CORBA.UserException;
 
 public class InvalidPasswordCipherException extends UserException {
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = -1878574401021590545L;
 }
 
diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/InvalidPasswordDecodingException.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/InvalidPasswordDecodingException.java
index 2e16808..161c069 100644
--- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/InvalidPasswordDecodingException.java
+++ b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/InvalidPasswordDecodingException.java
@@ -12,5 +12,10 @@
 import org.omg.CORBA.UserException;
 
 public class InvalidPasswordDecodingException extends UserException {
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 6211942853796823840L;
 }
 
diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/InvalidPasswordEncodingException.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/InvalidPasswordEncodingException.java
index dd882d7..a03e653 100644
--- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/InvalidPasswordEncodingException.java
+++ b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/InvalidPasswordEncodingException.java
@@ -12,5 +12,10 @@
 import org.omg.CORBA.UserException;
 
 public class InvalidPasswordEncodingException extends UserException {
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = -1320759752706898095L;
 }
 
diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/IsLoadingProxyAdapter.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/IsLoadingProxyAdapter.java
index a75b865..b52fe8a 100644
--- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/IsLoadingProxyAdapter.java
+++ b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/IsLoadingProxyAdapter.java
@@ -43,6 +43,7 @@
 	 * 
 	 * @see org.eclipse.emf.common.notify.impl.AdapterImpl#notifyChanged(org.eclipse.emf.common.notify.Notification)
 	 */
+	@Override
 	public void notifyChanged(Notification msg) {
 		if (resource != null) {
 			//listen for the remove of the loading adapter
diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/NamespaceAdapter.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/NamespaceAdapter.java
index 0bdac76..78892fa 100644
--- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/NamespaceAdapter.java
+++ b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/NamespaceAdapter.java
@@ -57,6 +57,7 @@
 		 * 
 		 * @see org.eclipse.emf.common.notify.impl.NotificationImpl#getFeature()
 		 */
+		@Override
 		public Object getFeature() {
 			return NOTIFICATION_FEATURE;
 		}
@@ -169,6 +170,7 @@
 	 * 
 	 * @see org.eclipse.emf.common.notify.impl.AdapterImpl#isAdapterForType(java.lang.Object)
 	 */
+	@Override
 	public boolean isAdapterForType(Object type) {
 		return ADAPTER_TYPE.equals(type);
 	}
@@ -191,6 +193,7 @@
 	 * 
 	 * @see com.ibm.etools.emf.ecore.utilities.CloneablePublic#clone()
 	 */
+	@Override
 	public Object clone() {
 		NamespaceAdapter result = new NamespaceAdapter();
 		if (hasNamespaces()) {
diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/PassthruEncoderDecoder.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/PassthruEncoderDecoder.java
index e684059..d8677eb 100644
--- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/PassthruEncoderDecoder.java
+++ b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/PassthruEncoderDecoder.java
@@ -14,7 +14,7 @@
 /**
  * A passthru EncoderDecoder implementation
  */
-public class PassthruEncoderDecoder extends EncoderDecoderAdapter implements EncoderDecoder {
+public class PassthruEncoderDecoder extends EncoderDecoderAdapter {
 	public static final PassthruEncoderDecoder INSTANCE = new PassthruEncoderDecoder();
 	public static final String KEY = PassthruEncoderDecoder.class.getName();
 
@@ -28,6 +28,7 @@
 	/**
 	 * Returns a decoded version of the value.
 	 */
+	@Override
 	public String decode(String value) {
 		return value;
 	}
@@ -35,6 +36,7 @@
 	/**
 	 * Returns an encoded version of the value.
 	 */
+	@Override
 	public String encode(String value) {
 		return value;
 	}
diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/PasswordEncoderDecoder.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/PasswordEncoderDecoder.java
index 2c82ced..1334efb 100644
--- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/PasswordEncoderDecoder.java
+++ b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/PasswordEncoderDecoder.java
@@ -8,16 +8,18 @@
  **************************************************************************************************/
 package org.eclipse.wst.common.internal.emf.utilities;
 
-public class PasswordEncoderDecoder extends EncoderDecoderAdapter implements EncoderDecoder {
+public class PasswordEncoderDecoder extends EncoderDecoderAdapter {
 	public static final String KEY = "password-security-coder"; //$NON-NLS-1$
 
 	public PasswordEncoderDecoder() {
 	}
 
+	@Override
 	public String decode(String s) {
 		return PasswordUtil.passwordDecode(s);
 	}
 
+	@Override
 	public String encode(String s) {
 		return PasswordUtil.passwordEncode(s);
 	}
diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/PasswordUtil.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/PasswordUtil.java
index 012f2c2..a46a97c 100644
--- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/PasswordUtil.java
+++ b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/PasswordUtil.java
@@ -60,15 +60,16 @@
 
 	public static String getCryptoAlgorithm(String s) {
 		String s1 = null;
-		if (s != null) {
-			s = s.trim();
-			if (s.length() >= 2) {
-				int i = s.indexOf("{"); //$NON-NLS-1$
+		String innerS = s;
+		if (innerS != null) {
+			innerS = innerS.trim();
+			if (innerS.length() >= 2) {
+				int i = innerS.indexOf("{"); //$NON-NLS-1$
 				if (i == 0) {
-					int j = s.indexOf("}", ++i); //$NON-NLS-1$
+					int j = innerS.indexOf("}", ++i); //$NON-NLS-1$
 					if (j > 0)
 						if (i < j)
-							s1 = s.substring(i, j).trim();
+							s1 = innerS.substring(i, j).trim();
 						else
 							s1 = EMPTY_STRING;
 				}
@@ -91,12 +92,13 @@
 	}
 
 	public static boolean isValidCryptoAlgorithm(String s) {
-		if (s != null) {
-			s = s.trim();
-			if (s.length() == 0)
+		String innerS = s;
+		if (innerS != null) {
+			innerS = innerS.trim();
+			if (innerS.length() == 0)
 				return true;
 			for (int i = 0; i < SUPPORTED_CRYPTO_ALGORITHMS.length; i++)
-				if (s.equalsIgnoreCase(SUPPORTED_CRYPTO_ALGORITHMS[i]))
+				if (innerS.equalsIgnoreCase(SUPPORTED_CRYPTO_ALGORITHMS[i]))
 					return true;
 		}
 		return false;
@@ -137,15 +139,16 @@
 
 	public static String removeCryptoAlgorithmTag(String s) {
 		String s1 = null;
-		if (s != null) {
-			s = s.trim();
-			if (s.length() >= 2) {
-				int i = s.indexOf("{"); //$NON-NLS-1$
+		String innerS = s;
+		if (innerS != null) {
+			innerS = innerS.trim();
+			if (innerS.length() >= 2) {
+				int i = innerS.indexOf("{"); //$NON-NLS-1$
 				if (i == 0) {
-					int j = s.indexOf("}", ++i); //$NON-NLS-1$
+					int j = innerS.indexOf("}", ++i); //$NON-NLS-1$
 					if (j > 0)
-						if (++j < s.length())
-							s1 = s.substring(j).trim();
+						if (++j < innerS.length())
+							s1 = innerS.substring(j).trim();
 						else
 							s1 = EMPTY_STRING;
 				}
@@ -163,7 +166,7 @@
 				try {
 					abyte0 = s.getBytes(STRING_CONVERSION_CODE);
 				} catch (UnsupportedEncodingException unsupportedencodingexception) {
-					abyte0 = null;
+					//do nothing
 				}
 		return abyte0;
 	}
@@ -177,7 +180,7 @@
 				try {
 					s = new String(abyte0, STRING_CONVERSION_CODE);
 				} catch (UnsupportedEncodingException unsupportedencodingexception) {
-					s = null;
+					//do nothing
 				}
 		return s;
 	}
@@ -198,7 +201,9 @@
 
 	private static byte[] base64Decode(byte abyte0[]) {
 		int i;
-		for (i = abyte0.length; abyte0[--i] == 61;);
+		for (i = abyte0.length; abyte0[--i] == 61;){
+			//do nothing just finding index of 61
+		}
 		byte abyte1[] = new byte[(i + 1) - abyte0.length / 4];
 		for (int j = 0; j < abyte0.length; j++)
 			abyte0[j] = BASE64_DECODE_MAP[abyte0[j]];
diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/PleaseMigrateYourCodeError.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/PleaseMigrateYourCodeError.java
index 5a548d6..bd4776e 100644
--- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/PleaseMigrateYourCodeError.java
+++ b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/PleaseMigrateYourCodeError.java
@@ -18,6 +18,11 @@
  */
 public class PleaseMigrateYourCodeError extends Error {
 
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1137010999400298839L;
+
 	//TODO Delete me
 	public PleaseMigrateYourCodeError() {
 		super(WFTUtilsResourceHandler.PleaseMigrateYourCodeError_ERROR_0);
diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/ResourceDependencyRegister.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/ResourceDependencyRegister.java
index 34ff643..79c8046 100644
--- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/ResourceDependencyRegister.java
+++ b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/ResourceDependencyRegister.java
@@ -38,6 +38,7 @@
 		 * 
 		 * @see org.eclipse.emf.common.notify.impl.AdapterImpl#isAdapterForType(java.lang.Object)
 		 */
+		@Override
 		public boolean isAdapterForType(Object type) {
 			return RESOURCE_DEPENDENCY_TYPE.equals(type);
 		}
@@ -47,6 +48,7 @@
 		 * 
 		 * @see org.eclipse.emf.common.notify.impl.AdapterImpl#notifyChanged(org.eclipse.emf.common.notify.Notification)
 		 */
+		@Override
 		public void notifyChanged(Notification msg) {
 			//Listen for unloads and removes
 			switch (msg.getFeatureID(null)) {
@@ -75,6 +77,7 @@
 		 * 
 		 * @see org.eclipse.emf.common.notify.impl.AdapterImpl#notifyChanged(org.eclipse.emf.common.notify.Notification)
 		 */
+		@Override
 		public void notifyChanged(Notification msg) {
 			if (msg.getEventType() == Notification.ADD)
 				proccessAddedResource((ResourceSet) msg.getNotifier(), (Resource) msg.getNewValue());
diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/ResourceIsLoadingAdapter.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/ResourceIsLoadingAdapter.java
index d36ea59..a5d96ea 100644
--- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/ResourceIsLoadingAdapter.java
+++ b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/ResourceIsLoadingAdapter.java
@@ -10,22 +10,20 @@
  *******************************************************************************/
 /*
  * Created on Oct 26, 2004
- *
- * TODO To change the template for this generated file go to
- * Window - Preferences - Java - Code Style - Code Templates
  */
 package org.eclipse.wst.common.internal.emf.utilities;
 
+import java.util.List;
+
 import org.eclipse.emf.common.notify.Adapter;
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.common.notify.impl.AdapterImpl;
 import org.eclipse.emf.ecore.resource.Resource;
-import org.eclipse.emf.ecore.util.EcoreUtil;
 
 /**
  * @author mdelder
  */
-public class ResourceIsLoadingAdapter extends AdapterImpl implements Adapter {
+public class ResourceIsLoadingAdapter extends AdapterImpl {
 
     private static final Class RESOURCE_IS_LOADING_ADAPTER_CLASS = ResourceIsLoadingAdapter.class;
 
@@ -43,7 +41,7 @@
          * synchronization.
          */
         synchronized(aResource.eAdapters()) {
-        	adapter = (ResourceIsLoadingAdapter) EcoreUtil.getAdapter(aResource.eAdapters(), ResourceIsLoadingAdapter.class);
+        	adapter = (ResourceIsLoadingAdapter) getAdapter(aResource.eAdapters(), ResourceIsLoadingAdapter.class);
         }
         
         return adapter;
@@ -54,7 +52,8 @@
      * 
      * @see org.eclipse.emf.common.notify.Adapter#notifyChanged(org.eclipse.emf.common.notify.Notification)
      */
-    public void notifyChanged(Notification notification) {
+    @Override
+	public void notifyChanged(Notification notification) {
 
         if (notification.getNotifier() != null) {
 
@@ -69,6 +68,18 @@
     public void waitForResourceToLoad() {
 
     }
+    public static Adapter getAdapter(List<Adapter> adapters, Object type)
+    {
+      for (int i = 0, size = adapters.size(); i < size; ++i)
+      {
+        Adapter adapter = adapters.get(i);
+        if (adapter != null && adapter.isAdapterForType(type))
+        {
+          return adapter;
+        }
+      }
+      return null;
+    }
 
     /**
      * @param notification
@@ -100,7 +111,8 @@
      * 
      * @see org.eclipse.emf.common.notify.Adapter#isAdapterForType(java.lang.Object)
      */
-    public boolean isAdapterForType(Object type) {
+    @Override
+	public boolean isAdapterForType(Object type) {
         return type == RESOURCE_IS_LOADING_ADAPTER_CLASS;
     }
 
diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/ResourceIsLoadingAdapterFactory.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/ResourceIsLoadingAdapterFactory.java
index 5899f5d..6e30496 100644
--- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/ResourceIsLoadingAdapterFactory.java
+++ b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/ResourceIsLoadingAdapterFactory.java
@@ -10,9 +10,6 @@
  *******************************************************************************/
 /*
  * Created on Oct 26, 2004
- *
- * TODO To change the template for this generated file go to
- * Window - Preferences - Java - Code Style - Code Templates
  */
 package org.eclipse.wst.common.internal.emf.utilities;
 
diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/TranslatorManager.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/TranslatorManager.java
index 79ee8b8..975db26 100644
--- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/TranslatorManager.java
+++ b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/TranslatorManager.java
@@ -16,8 +16,7 @@
 
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.jem.util.RegistryReader;
-import org.eclipse.jem.util.logger.proxy.Logger;
+import org.eclipse.wst.common.core.util.RegistryReader;
 import org.eclipse.wst.common.internal.emf.plugin.EcoreUtilitiesPlugin;
 import org.eclipse.wst.common.internal.emf.resource.Translator;
 
@@ -77,6 +76,7 @@
 		/**
 		 * Add the configuration element if it matchs the expected translator element name
 		 */
+		@Override
 		public boolean readElement(IConfigurationElement element) {
 			boolean result = false;
 			if (TRANSLATOR.equals(element.getName())) {
@@ -134,7 +134,7 @@
 			try {
 				instance = (Translator) configElement.createExecutableExtension(CLASSNAME);
 			} catch (CoreException e) {
-				Logger.getLogger().logError(e);
+				EcoreUtilitiesPlugin.logError(e);
 			}
 			return instance;
 		}
diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/UnsupportedCryptoAlgorithmException.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/UnsupportedCryptoAlgorithmException.java
index f71c66d..58459bf 100644
--- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/UnsupportedCryptoAlgorithmException.java
+++ b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/UnsupportedCryptoAlgorithmException.java
@@ -12,5 +12,10 @@
 import org.omg.CORBA.UserException;
 
 public class UnsupportedCryptoAlgorithmException extends UserException {
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = -3510453767624155991L;
 }
 
diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/XMLValueEncoderDecoder.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/XMLValueEncoderDecoder.java
index d9a1d2c..7503523 100644
--- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/XMLValueEncoderDecoder.java
+++ b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/XMLValueEncoderDecoder.java
@@ -14,7 +14,7 @@
 /**
  * An XML value escaping EncoderDecoder implementation
  */
-public class XMLValueEncoderDecoder extends EncoderDecoderAdapter implements EncoderDecoder {
+public class XMLValueEncoderDecoder extends EncoderDecoderAdapter {
 	/**
 	 * Identifies the last printable character in the Unicode range that is supported by the
 	 * encoding used with this serializer. For 8-bit encodings this will be either 0x7E or 0xFF. For
@@ -34,6 +34,7 @@
 	/**
 	 * Returns a decoded version of the value.
 	 */
+	@Override
 	public String decode(String value) {
 		// NOT_IMPLEMENTED
 		return value;
@@ -47,6 +48,7 @@
 	 * @param source
 	 *            The string to escape
 	 */
+	@Override
 	public String encode(String value) {
 		StringBuffer sbuf = new StringBuffer(value.length());
 		String charRef = null;
diff --git a/plugins/org.eclipse.wst.common.emfworkbench.integration/.classpath b/plugins/org.eclipse.wst.common.emfworkbench.integration/.classpath
index fe45152..44b3dda 100644
--- a/plugins/org.eclipse.wst.common.emfworkbench.integration/.classpath
+++ b/plugins/org.eclipse.wst.common.emfworkbench.integration/.classpath
@@ -2,7 +2,7 @@
 <classpath>
 	<classpathentry kind="src" path="src"/>
 	<classpathentry kind="src" path="property_file"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.4"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
 	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins">
 		<accessrules>
 			<accessrule kind="accessible" pattern="org/eclipse/wst/common/**"/>
diff --git a/plugins/org.eclipse.wst.common.emfworkbench.integration/.settings/org.eclipse.jdt.core.prefs b/plugins/org.eclipse.wst.common.emfworkbench.integration/.settings/org.eclipse.jdt.core.prefs
index 46468f9..037a4e5 100644
--- a/plugins/org.eclipse.wst.common.emfworkbench.integration/.settings/org.eclipse.jdt.core.prefs
+++ b/plugins/org.eclipse.wst.common.emfworkbench.integration/.settings/org.eclipse.jdt.core.prefs
@@ -1,62 +1,95 @@
-#Sat Mar 24 02:06:45 EDT 2007
-eclipse.preferences.version=1
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.2
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.4
-org.eclipse.jdt.core.compiler.debug.lineNumber=generate
-org.eclipse.jdt.core.compiler.debug.localVariable=generate
-org.eclipse.jdt.core.compiler.debug.sourceFile=generate
-org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=ignore
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=warning
-org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
-org.eclipse.jdt.core.compiler.problem.deprecation=warning
-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
-org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
-org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=warning
-org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
-org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
-org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore
-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=error
-org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
-org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=error
-org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=error
-org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
-org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
-org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=error
-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
-org.eclipse.jdt.core.compiler.problem.nullReference=ignore
-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=error
-org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=ignore
-org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore
-org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore
-org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=error
-org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
-org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
-org.eclipse.jdt.core.compiler.problem.typeParameterHiding=error
-org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=ignore
-org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
-org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=ignore
-org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
-org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=ignore
-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.unusedImport=error
-org.eclipse.jdt.core.compiler.problem.unusedLabel=error
-org.eclipse.jdt.core.compiler.problem.unusedLocal=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+#Mon Jun 08 15:35:45 EDT 2009
 org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=error
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=error
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=error
+org.eclipse.jdt.core.compiler.problem.unusedLocal=error
+org.eclipse.jdt.core.compiler.problem.emptyStatement=error
+org.eclipse.jdt.core.compiler.problem.unusedLabel=error
+org.eclipse.jdt.core.compiler.problem.unusedParameter=warning
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=error
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=warning
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=error
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=enabled
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
 org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=error
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=error
+org.eclipse.jdt.core.compiler.problem.unusedImport=error
+org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=error
+org.eclipse.jdt.core.builder.invalidClasspath=abort
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=warning
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=error
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=error
+org.eclipse.jdt.core.codeComplete.argumentSuffixes=
+org.eclipse.jdt.core.codeComplete.argumentPrefixes=
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=error
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=error
+org.eclipse.jdt.core.compiler.problem.nullReference=error
+org.eclipse.jdt.core.compiler.source=1.5
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.compiler.problem.fieldHiding=error
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=error
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=error
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=error
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=warning
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=error
+eclipse.preferences.version=1
+org.eclipse.jdt.core.incompleteClasspath=error
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=error
+org.eclipse.jdt.core.compiler.problem.deadCode=error
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=enabled
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=error
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeUncheckedExceptions=disabled
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
+org.eclipse.jdt.core.codeComplete.fieldPrefixes=
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=error
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
 org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error
-org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=ignore
-org.eclipse.jdt.core.compiler.source=1.3
+org.eclipse.jdt.core.compiler.problem.autoboxing=warning
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=error
+org.eclipse.jdt.core.codeComplete.fieldSuffixes=
+org.eclipse.jdt.core.codeComplete.localSuffixes=
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=error
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=error
+org.eclipse.jdt.core.codeComplete.localPrefixes=
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=error
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+instance/org.eclipse.core.net/org.eclipse.core.net.hasMigrated=true
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
diff --git a/plugins/org.eclipse.wst.common.emfworkbench.integration/META-INF/MANIFEST.MF b/plugins/org.eclipse.wst.common.emfworkbench.integration/META-INF/MANIFEST.MF
index 10d48a6..ae350da 100644
--- a/plugins/org.eclipse.wst.common.emfworkbench.integration/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.wst.common.emfworkbench.integration/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.wst.common.emfworkbench.integration; singleton:=true
-Bundle-Version: 1.1.300.qualifier
+Bundle-Version: 1.2.101.qualifier
 Bundle-Activator: org.eclipse.wst.common.internal.emfworkbench.integration.EMFWorkbenchEditPlugin
 Bundle-Vendor: %pluginVendor
 Bundle-Localization: plugin
@@ -11,7 +11,7 @@
  org.eclipse.wst.common.internal.emfworkbench.integration;x-internal:=true,
  org.eclipse.wst.common.internal.emfworkbench.validateedit;x-internal:=true
 Require-Bundle: org.eclipse.wst.common.frameworks;bundle-version="[1.1.200,2.0.0)",
- org.eclipse.jem.util;bundle-version="[2.0.100,3.0.0)",
+ org.eclipse.jem.util;bundle-version="[2.1.0,3.0.0)",
  org.eclipse.emf.edit;bundle-version="[2.4.0,3.0.0)",
  org.eclipse.emf.ecore.xmi;bundle-version="[2.4.0,3.0.0)",
  org.eclipse.wst.common.emf;bundle-version="[1.1.200,2.0.0)",
@@ -21,6 +21,5 @@
  org.eclipse.wst.common.project.facet.core;bundle-version="[1.3.0,2.0.0)",
  org.eclipse.core.expressions;bundle-version="[3.4.0,4.0.0)"
 Eclipse-LazyStart: true
-Bundle-RequiredExecutionEnvironment: J2SE-1.4,
- J2SE-1.5
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
 Bundle-ActivationPolicy: lazy
diff --git a/plugins/org.eclipse.wst.common.emfworkbench.integration/plugin.properties b/plugins/org.eclipse.wst.common.emfworkbench.integration/plugin.properties
index cdc1ce7..a7b84f1 100644
--- a/plugins/org.eclipse.wst.common.emfworkbench.integration/plugin.properties
+++ b/plugins/org.eclipse.wst.common.emfworkbench.integration/plugin.properties
@@ -13,4 +13,4 @@
 Adapter_Factory_Extension=Adapter Factory Extension
 ModifierHelperFactory=ModifierHelperFactory
 pluginName=EMF Workbench Edit Plug-in
-pluginVendor=Eclipse.org
+pluginVendor=Eclipse Web Tools Platform
diff --git a/plugins/org.eclipse.wst.common.emfworkbench.integration/src/org/eclipse/wst/common/internal/emfworkbench/EMFWorkbenchContext.java b/plugins/org.eclipse.wst.common.emfworkbench.integration/src/org/eclipse/wst/common/internal/emfworkbench/EMFWorkbenchContext.java
index 66c6b35..2161f94 100644
--- a/plugins/org.eclipse.wst.common.emfworkbench.integration/src/org/eclipse/wst/common/internal/emfworkbench/EMFWorkbenchContext.java
+++ b/plugins/org.eclipse.wst.common.emfworkbench.integration/src/org/eclipse/wst/common/internal/emfworkbench/EMFWorkbenchContext.java
@@ -35,11 +35,11 @@
 import org.eclipse.jem.util.emf.workbench.ISynchronizerExtender;
 import org.eclipse.jem.util.emf.workbench.ProjectResourceSet;
 import org.eclipse.jem.util.emf.workbench.WorkbenchURIConverter;
-import org.eclipse.jem.util.logger.proxy.Logger;
 import org.eclipse.wst.common.internal.emf.resource.CompatibilityXMIResource;
 import org.eclipse.wst.common.internal.emf.resource.ReferencedXMIFactoryImpl;
 import org.eclipse.wst.common.internal.emf.utilities.DefaultOverridableResourceFactoryRegistry;
 import org.eclipse.wst.common.internal.emfworkbench.edit.EditModelRegistry;
+import org.eclipse.wst.common.internal.emfworkbench.integration.EMFWorkbenchEditPlugin;
 import org.eclipse.wst.common.internal.emfworkbench.integration.EditModel;
 import org.eclipse.wst.common.internal.emfworkbench.integration.EditModelEvent;
 import org.eclipse.wst.common.internal.emfworkbench.integration.ProjectResourceSetEditImpl;
@@ -72,6 +72,7 @@
 	 * 
 	 * @see org.eclipse.wst.common.internal.emfworkbench.EMFWorkbenchContext#initializeResourceSet(org.eclipse.wst.common.internal.emfworkbench.ProjectResourceSet)
 	 */
+	@Override
 	protected void initializeResourceSet(ProjectResourceSet aResourceSet) {
 		super.initializeResourceSet(aResourceSet);
 		Resource.Factory.Registry reg = new DefaultOverridableResourceFactoryRegistry();
@@ -276,7 +277,7 @@
 			try {
 				editModel.resourceChanged(anEvent);
 			} catch (Exception e) {
-				Logger.getLogger().logError(e);
+				EMFWorkbenchEditPlugin.logError(e);
 			}
 		}
 	}
@@ -301,6 +302,7 @@
 		 * @see Adapter#notifyChanged(new ENotificationImpl((InternalEObject)Notifier,
 		 *      int,(EStructuralFeature) EObject, Object, Object, int))
 		 */
+		@Override
 		public void notifyChanged(Notification notification) {
 			switch (notification.getEventType()) {
 				case Notification.ADD :
@@ -380,10 +382,12 @@
 	 * 
 	 * @see org.eclipse.wst.common.internal.emfworkbench.EMFWorkbenchContextBase#createURIConverter(org.eclipse.wst.common.internal.emfworkbench.ProjectResourceSet)
 	 */
+	@Override
 	protected WorkbenchURIConverter createURIConverter(ProjectResourceSet aResourceSet) {
 		return new CompatibilityWorkbenchURIConverterImpl(getProject(), aResourceSet.getSynchronizer());
 	}
 
+	@Override
 	protected ProjectResourceSet createResourceSet() {
 		if (project == null)
 			throw new IllegalStateException("Attempt to create resource set with null project"); //$NON-NLS-1$
@@ -395,11 +399,12 @@
 	 * 
 	 * @see org.eclipse.wst.common.internal.emfworkbench.EMFWorkbenchContextBase#deleteFile(org.eclipse.emf.ecore.resource.Resource)
 	 */
+	@Override
 	public void deleteFile(Resource resource) {
 		try {
 			WorkbenchResourceHelper.deleteResource(resource);
 		} catch (CoreException ex) {
-			Logger.getLogger().logError(ex);
+			EMFWorkbenchEditPlugin.logError(ex);
 		}
 
 	}
diff --git a/plugins/org.eclipse.wst.common.emfworkbench.integration/src/org/eclipse/wst/common/internal/emfworkbench/EMFWorkbenchEditResourceHandler.java b/plugins/org.eclipse.wst.common.emfworkbench.integration/src/org/eclipse/wst/common/internal/emfworkbench/EMFWorkbenchEditResourceHandler.java
index 8bd1073..5c054be 100644
--- a/plugins/org.eclipse.wst.common.emfworkbench.integration/src/org/eclipse/wst/common/internal/emfworkbench/EMFWorkbenchEditResourceHandler.java
+++ b/plugins/org.eclipse.wst.common.emfworkbench.integration/src/org/eclipse/wst/common/internal/emfworkbench/EMFWorkbenchEditResourceHandler.java
@@ -10,9 +10,6 @@
  *******************************************************************************/
 /*
  * Created on May 25, 2004
- *
- * TODO To change the template for this generated file go to
- * Window - Preferences - Java - Code Style - Code Templates
  */
 package org.eclipse.wst.common.internal.emfworkbench;
 
@@ -20,9 +17,6 @@
 
 /**
  * @author vijayb
- * 
- * TODO To change the template for this generated type comment go to Window - Preferences - Java -
- * Code Style - Code Templates
  */
 public class EMFWorkbenchEditResourceHandler extends NLS {
 	private static final String BUNDLE_NAME = "emfworkbenchedit";//$NON-NLS-1$
diff --git a/plugins/org.eclipse.wst.common.emfworkbench.integration/src/org/eclipse/wst/common/internal/emfworkbench/PassthruResourceSet.java b/plugins/org.eclipse.wst.common.emfworkbench.integration/src/org/eclipse/wst/common/internal/emfworkbench/PassthruResourceSet.java
index d1b36ea..a4e957d 100644
--- a/plugins/org.eclipse.wst.common.emfworkbench.integration/src/org/eclipse/wst/common/internal/emfworkbench/PassthruResourceSet.java
+++ b/plugins/org.eclipse.wst.common.emfworkbench.integration/src/org/eclipse/wst/common/internal/emfworkbench/PassthruResourceSet.java
@@ -20,7 +20,6 @@
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.ecore.resource.Resource;
 import org.eclipse.emf.ecore.resource.ResourceSet;
-import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
 import org.eclipse.jem.internal.util.emf.workbench.ProjectResourceSetImpl;
 import org.eclipse.jem.util.emf.workbench.WorkbenchResourceHelperBase;
 
@@ -41,7 +40,14 @@
 public class PassthruResourceSet extends ProjectResourceSetImpl {
 	protected boolean isIsolated = false;
 
-	public class PassthruResourcesEList extends ResourceSetImpl.ResourcesEList {
+	public class PassthruResourcesEList extends SynchronizedResourcesEList {
+		/**
+		 * 
+		 */
+		private static final long serialVersionUID = 2504207070244627980L;
+
+
+		@Override
 		public boolean add(Object object) {
 			if (object == null)
 				return false;
@@ -53,6 +59,7 @@
 		}
 
 
+		@Override
 		public boolean addAll(Collection collection) {
 			if (collection.isEmpty())
 				return false;
@@ -84,6 +91,7 @@
 		return isIsolated;
 	}
 
+	@Override
 	public Resource createResource(URI uri) {
 		Resource result = WorkbenchResourceHelperBase.getExistingOrCreateResource(uri);
 		if (result == null)
@@ -94,6 +102,7 @@
 	/**
 	 * @see org.eclipse.emf.ecore.resource.impl.ResourceSetImpl#demandCreateResource(URI)
 	 */
+	@Override
 	protected Resource demandCreateResource(URI uri) {
 		Resource result = WorkbenchResourceHelperBase.createResource(uri);
 		if (result == null)
@@ -105,6 +114,7 @@
 	/*
 	 * Javadoc copied from interface.
 	 */
+	@Override
 	public EList getResources() {
 		if (isIsolated)
 			return super.getResources();
@@ -117,6 +127,7 @@
 	/**
 	 * @see org.eclipse.jem.internal.util.emf.workbench.ProjectResourceSetImpl#createResourceFromHandlers(URI)
 	 */
+	@Override
 	protected Resource createResourceFromHandlers(URI uri) {
 		if (!isIsolated)
 			return super.createResourceFromHandlers(uri);
@@ -126,6 +137,7 @@
 	/**
 	 * @see org.eclipse.jem.internal.util.emf.workbench.ProjectResourceSetImpl#getResourceFromHandlers(URI)
 	 */
+	@Override
 	protected Resource getResourceFromHandlers(URI uri) {
 		if (!isIsolated)
 			return super.getResourceFromHandlers(uri);
@@ -135,6 +147,7 @@
 	/**
 	 * @see com.ibm.etools.emf.workbench.ProjectResourceSetImpl#getEObjectFromHandlers(URI, boolean)
 	 */
+	@Override
 	protected EObject getEObjectFromHandlers(URI uri, boolean loadOnDemand) {
 		if (!isIsolated)
 			return super.getEObjectFromHandlers(uri, loadOnDemand);
diff --git a/plugins/org.eclipse.wst.common.emfworkbench.integration/src/org/eclipse/wst/common/internal/emfworkbench/WorkbenchResourceHelper.java b/plugins/org.eclipse.wst.common.emfworkbench.integration/src/org/eclipse/wst/common/internal/emfworkbench/WorkbenchResourceHelper.java
index 6296984..a74af9a 100644
--- a/plugins/org.eclipse.wst.common.emfworkbench.integration/src/org/eclipse/wst/common/internal/emfworkbench/WorkbenchResourceHelper.java
+++ b/plugins/org.eclipse.wst.common.emfworkbench.integration/src/org/eclipse/wst/common/internal/emfworkbench/WorkbenchResourceHelper.java
@@ -40,11 +40,11 @@
 import org.eclipse.emf.ecore.util.EcoreUtil;
 import org.eclipse.jem.util.emf.workbench.WorkbenchResourceHelperBase;
 import org.eclipse.jem.util.emf.workbench.WorkbenchURIConverter;
-import org.eclipse.jem.util.logger.proxy.Logger;
 import org.eclipse.jem.util.plugin.JEMUtilPlugin;
 import org.eclipse.wst.common.internal.emf.resource.ReferencedResource;
 import org.eclipse.wst.common.internal.emf.resource.ReferencedXMIFactoryImpl;
 import org.eclipse.wst.common.internal.emf.utilities.ExtendedEcoreUtil;
+import org.eclipse.wst.common.internal.emfworkbench.integration.EMFWorkbenchEditPlugin;
 
 /**
  * @author schacher
@@ -58,6 +58,7 @@
 
 	private static class FileAdapterFactory extends AdapterFactoryImpl {
 
+		@Override
 		public Adapter adaptNew(Notifier target, Object type) {
 			FileAdapter adapter = new FileAdapter();
 			adapter.setTarget(target);
@@ -80,6 +81,7 @@
 		public static final int FILE_NOT_LOADED = 0;
 		public static final int FILE_INACCESSIBLE = -1;
 
+		@Override
 		public boolean isAdapterForType(Object type) {
 			return ADAPTER_KEY.equals(type);
 		}
@@ -87,6 +89,7 @@
 		/*
 		 * Update the synchronization stamp where appropriate
 		 */
+		@Override
 		public void notifyChanged(Notification msg) {
 			switch (msg.getFeatureID(null)) {
 				case Resource.RESOURCE__IS_LOADED :
@@ -192,13 +195,6 @@
 		}
 
 		/**
-		 * @param file
-		 */
-		public void setFile(IFile file) {
-			this.file = file;
-		}
-
-		/**
 		 * @param l
 		 */
 		public void setSynchronizationStamp(long l) {
@@ -216,7 +212,7 @@
             try {
                 hasLocked = aquireSaveLock(delay);
             } catch (InterruptedException e) {
-                Logger.getLogger().write(e);
+            	EMFWorkbenchEditPlugin.logError(e);
             }
             boolean result = false;
             try {
@@ -231,7 +227,7 @@
                     }
                 }
             } catch (Exception e) {
-                Logger.getLogger().write(e);
+            	EMFWorkbenchEditPlugin.logError(e);
             } finally {
                 if (hasLocked)
                     releaseSaveLock();
diff --git a/p