This commit was manufactured by cvs2svn to create tag 'v200607102019'.
diff --git a/plugins/org.eclipse.wst.common.project.facet.core/.classpath b/plugins/org.eclipse.wst.common.project.facet.core/.classpath
deleted file mode 100644
index 751c8f2..0000000
--- a/plugins/org.eclipse.wst.common.project.facet.core/.classpath
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="src" path="src"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
-	<classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/plugins/org.eclipse.wst.common.project.facet.core/.cvsignore b/plugins/org.eclipse.wst.common.project.facet.core/.cvsignore
deleted file mode 100644
index 812fb36..0000000
--- a/plugins/org.eclipse.wst.common.project.facet.core/.cvsignore
+++ /dev/null
@@ -1,7 +0,0 @@
-bin
-build.xml
-facet-core.jar
-temp.folder
-@dot
-src.zip
-javaCompiler...args
diff --git a/plugins/org.eclipse.wst.common.project.facet.core/.options b/plugins/org.eclipse.wst.common.project.facet.core/.options
deleted file mode 100644
index 7d7212b..0000000
--- a/plugins/org.eclipse.wst.common.project.facet.core/.options
+++ /dev/null
@@ -1,3 +0,0 @@
-org.eclipse.wst.common.project.facet.core/delegate/calls = false
-org.eclipse.wst.common.project.facet.core/actionSorting = false
-org.eclipse.wst.common.project.facet.core/activation = false
\ No newline at end of file
diff --git a/plugins/org.eclipse.wst.common.project.facet.core/.project b/plugins/org.eclipse.wst.common.project.facet.core/.project
deleted file mode 100644
index 3e9e5cc..0000000
--- a/plugins/org.eclipse.wst.common.project.facet.core/.project
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.wst.common.project.facet.core</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.wst.common.project.facet.core/.settings/org.eclipse.jdt.core.prefs b/plugins/org.eclipse.wst.common.project.facet.core/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index 8f1ea5c..0000000
--- a/plugins/org.eclipse.wst.common.project.facet.core/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,57 +0,0 @@
-#Thu Mar 02 17:02:23 PST 2006
-eclipse.preferences.version=1
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=disabled
-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=warning
-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=warning
-org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=warning
-org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
-org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
-org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
-org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
-org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
-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=warning
-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=warning
-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=error
-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=ignore
-org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
-org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
-org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
-org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
-org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
-org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
-org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
-org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=error
-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=error
-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.unusedLocal=error
-org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
-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.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.3
diff --git a/plugins/org.eclipse.wst.common.project.facet.core/META-INF/MANIFEST.MF b/plugins/org.eclipse.wst.common.project.facet.core/META-INF/MANIFEST.MF
deleted file mode 100644
index a4950a0..0000000
--- a/plugins/org.eclipse.wst.common.project.facet.core/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,16 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Vendor: %providerName
-Bundle-Name: %pluginName
-Bundle-SymbolicName: org.eclipse.wst.common.project.facet.core; singleton:=true
-Bundle-Version: 1.1.1.qualifier
-Bundle-ClassPath: .
-Bundle-Localization: plugin
-Export-Package: org.eclipse.wst.common.project.facet.core,
- org.eclipse.wst.common.project.facet.core.internal;x-internal:=true,
- org.eclipse.wst.common.project.facet.core.runtime,
- org.eclipse.wst.common.project.facet.core.runtime.internal;x-internal:=true
-Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.2.0,3.3.0)",
- org.eclipse.core.resources;bundle-version="[3.2.0,3.3.0)",
- org.eclipse.core.expressions;bundle-version="[3.2.0,3.3.0)"
-Eclipse-LazyStart: true
diff --git a/plugins/org.eclipse.wst.common.project.facet.core/about.html b/plugins/org.eclipse.wst.common.project.facet.core/about.html
deleted file mode 100644
index 4ec5989..0000000
--- a/plugins/org.eclipse.wst.common.project.facet.core/about.html
+++ /dev/null
@@ -1,34 +0,0 @@
-<!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>May 2, 2006</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.wst.common.project.facet.core/build.properties b/plugins/org.eclipse.wst.common.project.facet.core/build.properties
deleted file mode 100644
index 238e537..0000000
--- a/plugins/org.eclipse.wst.common.project.facet.core/build.properties
+++ /dev/null
@@ -1,10 +0,0 @@
-source.. = src/
-output.. = bin/
-bin.includes = .,\
-               plugin.xml,\
-               schemas/,\
-               META-INF/,\
-               plugin.properties,\
-               component.xml,\
-               .options,\
-               about.html
diff --git a/plugins/org.eclipse.wst.common.project.facet.core/component.xml b/plugins/org.eclipse.wst.common.project.facet.core/component.xml
deleted file mode 100644
index 661e4ed..0000000
--- a/plugins/org.eclipse.wst.common.project.facet.core/component.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<component xmlns="http://eclipse.org/wtp/releng/tools/component-model" name="org.eclipse.wst.common.project.facet">
-  <description url=""></description>
-  <component-depends unrestricted="true"></component-depends>
-  <plugin id="org.eclipse.wst.common.project.facet.core" fragment="false"/>
-  <plugin id="org.eclipse.wst.common.project.facet.ui" fragment="false"/>
-</component>
\ No newline at end of file
diff --git a/plugins/org.eclipse.wst.common.project.facet.core/plugin.properties b/plugins/org.eclipse.wst.common.project.facet.core/plugin.properties
deleted file mode 100644
index 4d776a4..0000000
--- a/plugins/org.eclipse.wst.common.project.facet.core/plugin.properties
+++ /dev/null
@@ -1,4 +0,0 @@
-pluginName = Project Facet Core
-providerName = Eclipse.org
-builderName = Faceted Project Validation Builder
-validationMarkerName = Faceted Project Problem
\ No newline at end of file
diff --git a/plugins/org.eclipse.wst.common.project.facet.core/plugin.xml b/plugins/org.eclipse.wst.common.project.facet.core/plugin.xml
deleted file mode 100644
index 4477284..0000000
--- a/plugins/org.eclipse.wst.common.project.facet.core/plugin.xml
+++ /dev/null
@@ -1,81 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.0"?>
-
-<plugin>
-
-  <extension-point 
-    id="facets"
-    name="Project Facets Extension Point"
-    schema="schemas/facets.exsd"/>
-
-  <extension-point 
-    id="runtimes"
-    name="Runtimes Extension Point"
-    schema="schemas/runtimes.exsd"/>
-
-  <extension-point 
-    id="runtimeBridges"
-    name="Runtime Bridges Extension Point"
-    schema="schemas/runtimeBridges.exsd"/>
-
-  <extension-point 
-    id="defaultFacets"
-    name="Default Facets Extension Point"
-    schema="schemas/defaultFacets.exsd"/>
-
-  <extension-point 
-    id="validators"
-    name="Faceted Project Validators Extension Point"
-    schema="schemas/validators.exsd"/>
-  
-  <extension
-    id="nature"
-    point="org.eclipse.core.resources.natures">
-    <runtime>
-      <run class="org.eclipse.wst.common.project.facet.core.internal.FacetedProjectNature"/>
-    </runtime>
-    <builder id="org.eclipse.wst.common.project.facet.core.builder"/>
-  </extension>
-  
-  <extension
-    id="builder"
-    name="%builderName"
-    point="org.eclipse.core.resources.builders">
-    <builder hasNature="true">
-      <run class="org.eclipse.wst.common.project.facet.core.internal.FacetedProjectValidationBuilder"/>
-    </builder>
-  </extension>
-  
-  <extension 
-    point="org.eclipse.core.resources.markers"
-    id="validation.marker"
-    name="%validationMarkerName">
-    <super type="org.eclipse.core.resources.problemmarker"/>
-    <persistent value="true"/>
-  </extension>
-  
-  <extension
-    point="org.eclipse.wst.common.project.facet.core.validators">
-    <validator 
-      class="org.eclipse.wst.common.project.facet.core.internal.BasicFacetedProjectValidator"/>
-  </extension>    
-
-  <extension point="org.eclipse.core.runtime.adapters">
-    <factory 
-      class="org.eclipse.wst.common.project.facet.core.internal.FacetedProjectAdapter" 
-      adaptableType="org.eclipse.core.resources.IProject">
-      <adapter type="org.eclipse.wst.common.project.facet.core.IFacetedProject"/>
-    </factory>
-  </extension>
-
-  <extension point="org.eclipse.core.expressions.propertyTesters">
-    <propertyTester
-      id="org.eclipse.wst.common.project.facet.core.internal.FacetedProjectPropertyTester"
-      type="org.eclipse.core.resources.IResource"
-      namespace="org.eclipse.wst.common.project.facet.core"
-      properties="projectFacet"
-      class="org.eclipse.wst.common.project.facet.core.internal.FacetedProjectPropertyTester">
-    </propertyTester>
-  </extension>
-  
-</plugin>
diff --git a/plugins/org.eclipse.wst.common.project.facet.core/schemas/defaultFacets.exsd b/plugins/org.eclipse.wst.common.project.facet.core/schemas/defaultFacets.exsd
deleted file mode 100644
index ecde692..0000000
--- a/plugins/org.eclipse.wst.common.project.facet.core/schemas/defaultFacets.exsd
+++ /dev/null
@@ -1,175 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<!-- Schema file written by PDE -->
-<schema targetNamespace="org.eclipse.wst.common.project.facet.core">
-<annotation>
-      <appInfo>
-         <meta.schema plugin="org.eclipse.wst.common.project.facet.core" id="defaultFacets" name="Default Facets Extension Point"/>
-      </appInfo>
-      <documentation>
-         Used to specify which facets (and which versions of those facets) should be selected by default when a runtime that includes the specified runtime component is selected. Multiple extensions referring to the same runtime component (type and version) will be merged. This allows a party not affiliated with the runtime vendor to specify that a certain additional facet should be preselected when the runtime containing the specified runtime component is selected.
-      </documentation>
-   </annotation>
-
-   <element name="extension">
-      <complexType>
-         <choice>
-            <element ref="default-facets"/>
-         </choice>
-         <attribute name="point" type="string" use="required">
-            <annotation>
-               <documentation>
-                  A fully qualified identifier of the target extension point.
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="id" type="string">
-            <annotation>
-               <documentation>
-                  An optional identifier of the extension instance.
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="name" type="string">
-            <annotation>
-               <documentation>
-                  An optional name of the extension instance.
-               </documentation>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <element name="default-facets">
-      <annotation>
-         <documentation>
-            Used to specify which facets (and which versions of those facets) should be selected by default when a runtime that includes the specified runtime component is selected. Multiple extensions referring to the same runtime component (type and version) will be merged. This allows a party not affiliated with the runtime vendor to specify that a certain additional facet should be preselected when the runtime containing the specified runtime component is selected.
-         </documentation>
-      </annotation>
-      <complexType>
-         <sequence>
-            <element ref="runtime-component"/>
-            <element ref="facet" minOccurs="1" maxOccurs="unbounded"/>
-         </sequence>
-      </complexType>
-   </element>
-
-   <element name="runtime-component">
-      <annotation>
-         <documentation>
-            Specifies the runtime component type id and version that these defaults are for.
-         </documentation>
-      </annotation>
-      <complexType>
-         <attribute name="id" type="string" use="required">
-            <annotation>
-               <documentation>
-                  Runtime component type id.
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="version" type="string" use="required">
-            <annotation>
-               <documentation>
-                  Specifies the match expression for the runtime component version. The expression should be of the form &quot;2.2,2.5,[3.0-5.3],(7.3&quot;, where the comas function as an OR. Brackets and parenthesis are used as part of the range notation. A bracket means inclusive while a parenthesis means exclusive.
-               </documentation>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <element name="facet">
-      <annotation>
-         <documentation>
-            Specifies project facet id and version
-         </documentation>
-      </annotation>
-      <complexType>
-         <attribute name="id" type="string" use="required">
-            <annotation>
-               <documentation>
-                  The project facet id.
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="version" type="string" use="required">
-            <annotation>
-               <documentation>
-                  The project facet version.
-               </documentation>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="since"/>
-      </appInfo>
-      <documentation>
-         &lt;b&gt;This extension point is part of an interim API that is still under development and expected to change significantly before reaching stability. It is being made available at this early stage to solicit feedback from pioneering adopters on the understanding that any code that uses this API will almost certainly be broken (repeatedly) as the API evolves.&lt;/b&gt;
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="examples"/>
-      </appInfo>
-      <documentation>
-         &lt;p&gt;The following example declares facet1 (version 1.3) and facet2 (version 5.0) as default facets for runtime component MyRuntimeComponent.&lt;/p&gt; 
-
-&lt;pre&gt;
-&lt;extension point=&quot;org.eclipse.wst.common.project.facet.core.defaultFacets&quot;&gt;
-  &lt;default-facets&gt;
-    &lt;runtime-component id=&quot;MyRuntimeComponent&quot;/&gt;
-    &lt;facet id=&quot;facet1&quot; version=&quot;1.3&quot;/&gt;
-    &lt;facet id=&quot;facet2&quot; version=&quot;5.0&quot;/&gt;
-  &lt;/validator&gt;
-&lt;/extension&gt;
-&lt;/pre&gt;
-
-&lt;p&gt;Multiple plugins can contribute to the set of the default facets for a given runtime component. If the following example is combined with the first one, there will be three default facets associated with MyRuntimeComponent.&lt;/p&gt;
-
-&lt;pre&gt;
-&lt;extension point=&quot;org.eclipse.wst.common.project.facet.core.defaultFacets&quot;&gt;
-  &lt;default-facets&gt;
-    &lt;runtime-component id=&quot;MyRuntimeComponent&quot;/&gt;
-    &lt;facet id=&quot;facet3&quot; version=&quot;1.2&quot;/&gt;
-  &lt;/validator&gt;
-&lt;/extension&gt;
-&lt;/pre&gt;
-
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="apiInfo"/>
-      </appInfo>
-      <documentation>
-         
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="implementation"/>
-      </appInfo>
-      <documentation>
-         
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="copyright"/>
-      </appInfo>
-      <documentation>
-         Copyright (c) 2005-2006 BEA Systems, Inc. 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>
\ No newline at end of file
diff --git a/plugins/org.eclipse.wst.common.project.facet.core/schemas/facets.exsd b/plugins/org.eclipse.wst.common.project.facet.core/schemas/facets.exsd
deleted file mode 100644
index 460cbd7..0000000
--- a/plugins/org.eclipse.wst.common.project.facet.core/schemas/facets.exsd
+++ /dev/null
@@ -1,677 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<!-- Schema file written by PDE -->
-<schema targetNamespace="org.eclipse.wst.common.project.facet.core">
-<annotation>
-      <appInfo>
-         <meta.schema plugin="org.eclipse.wst.common.project.facet.core" id="facets" name="Project Facets Extension Point"/>
-      </appInfo>
-      <documentation>
-         This is the main extension point in the faceted project framework. It is used for defining project facets. A project facet can be thought of as a unit of functionality that the user can add to the project when the functionality is needed.
-      </documentation>
-   </annotation>
-
-   <element name="extension">
-      <complexType>
-         <choice>
-            <element ref="project-facet"/>
-            <element ref="project-facet-version"/>
-            <element ref="category"/>
-            <element ref="preset"/>
-            <element ref="template"/>
-            <element ref="action"/>
-            <element ref="event-handler"/>
-         </choice>
-         <attribute name="point" type="string" use="required">
-            <annotation>
-               <documentation>
-                  A fully qualified identifier of the target extension point.
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="id" type="string">
-            <annotation>
-               <documentation>
-                  An optional identifier of the extension instance.
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="name" type="string">
-            <annotation>
-               <documentation>
-                  An optional name of the extension instance.
-               </documentation>
-               <appInfo>
-                  <meta.attribute translatable="true"/>
-               </appInfo>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <element name="label" type="string">
-      <annotation>
-         <documentation>
-            The localizable name that is presented to the user.
-         </documentation>
-      </annotation>
-   </element>
-
-   <element name="description" type="string">
-      <annotation>
-         <documentation>
-            The description text.
-         </documentation>
-      </annotation>
-   </element>
-
-   <element name="and">
-      <annotation>
-         <documentation>
-            A facet constraint operator that performs a conjunction over the results of evaluation of two or more sub-expressions. This operator will return true if and only if all sub-expressions evaluate to true.
-         </documentation>
-      </annotation>
-      <complexType>
-         <choice minOccurs="2" maxOccurs="unbounded">
-            <element ref="and"/>
-            <element ref="or"/>
-            <element ref="requires"/>
-            <element ref="conflicts"/>
-         </choice>
-      </complexType>
-   </element>
-
-   <element name="or">
-      <annotation>
-         <documentation>
-            A facet constraint operator that performs a disjunction over the results of evaluation of two or more sub-expressions. This operator will return true if any of the sub-expressions evaluate to true.
-         </documentation>
-      </annotation>
-      <complexType>
-         <choice minOccurs="2" maxOccurs="unbounded">
-            <element ref="and"/>
-            <element ref="or"/>
-            <element ref="requires"/>
-            <element ref="conflicts"/>
-         </choice>
-      </complexType>
-   </element>
-
-   <element name="requires">
-      <annotation>
-         <documentation>
-            A facet constraint operator that is used to declare a dependency of one facet on another. This operator will return true if the dependency is satisfied.
-         </documentation>
-      </annotation>
-      <complexType>
-         <attribute name="facet" type="string" use="required">
-            <annotation>
-               <documentation>
-                  The id of the facet.
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="version" type="string" use="required">
-            <annotation>
-               <documentation>
-                  Specifies the match expression for the facet version. The expression should be of the form &quot;2.2,2.5,[3.0-5.3],(7.3&quot;, where the comas function as an OR. Brackets and parenthesis are used as part of the range notation. A bracket means inclusive while a parenthesis means exclusive.
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="soft" type="boolean">
-            <annotation>
-               <documentation>
-                  If set to true indicates that this is a soft dependency. A soft dependency will not prevent the facet from being installed if it is not met. The purpose of specifying a soft dependency is to control facet installation order. If facet A declares a soft dependency on facet B, facet A is guaranteed to be installed after B has been installed (assuming B is selected).
-               </documentation>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <element name="conflicts">
-      <annotation>
-         <documentation>
-            A facet constraint operator that is used to declare a conflict between this facet and another facet or this facet and a group of facets. This operator will return true if and only if the conflict is not present. Note that the group attribute should not be used together with the facet and version attributes.
-         </documentation>
-      </annotation>
-      <complexType>
-         <attribute name="group" type="string">
-            <annotation>
-               <documentation>
-                  The id of the facet group that this facet conflicts with. Note that it is safe for the declaring facet to be a member of this group. Conflicts between the facet and itself are ignored. This attribute should not be used in conjunction with the facet and version attributes.
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="facet" type="string">
-            <annotation>
-               <documentation>
-                  The id of the facet that this facet conflicts with. If the version attribute is specified, the conflict declaration will be limited to those versions covered by the version expression.
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="version" type="string">
-            <annotation>
-               <documentation>
-                  Used in conjunction with the facet attribute to limit the versions covered by the conflict declaration. The version expression should be of the form &quot;2.2,2.5,[3.0-5.3],(7.3&quot;, where the comas function as an OR. Brackets and parenthesis are used as part of the range notation. A bracket means inclusive while a parenthesis means exclusive.
-               </documentation>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <element name="constraint">
-      <annotation>
-         <documentation>
-            Specifies the constraint that has to be satisfied before this facet can be installed in a project. A constraint can be used to specify dependencies on other facets as well as conflicts.
-         </documentation>
-      </annotation>
-      <complexType>
-         <choice>
-            <element ref="and"/>
-            <element ref="or"/>
-            <element ref="requires"/>
-            <element ref="conflicts"/>
-         </choice>
-      </complexType>
-   </element>
-
-   <element name="group-member">
-      <annotation>
-         <documentation>
-            Makes this facet a member of the group specified in the id attribute. A facet can be a member of any number of groups. Groups are auto-created when referenced by this extension point. The facet groups are primarily used when specifying conflict constraints.
-         </documentation>
-      </annotation>
-      <complexType>
-         <attribute name="id" type="string" use="required">
-            <annotation>
-               <documentation>
-                  The id of the facet group to add this facet to. Groups are auto-created when referenced by this extension point.
-               </documentation>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <element name="project-facet">
-      <annotation>
-         <documentation>
-            Declares a project facet. A project facet can be thought of as a unit of functionality that the user can add to the project when the functionality is needed. Note that a facet need to have a least one version declared in order to be useful. See project-facet-version for more details.
-         </documentation>
-      </annotation>
-      <complexType>
-         <sequence>
-            <element ref="label"/>
-            <element ref="description" minOccurs="0" maxOccurs="1"/>
-            <element ref="version-comparator" minOccurs="0" maxOccurs="1"/>
-            <element name="category" type="string">
-               <annotation>
-                  <documentation>
-                     Project facet can optionally belong to a category. This specifies the category id.
-                  </documentation>
-               </annotation>
-            </element>
-         </sequence>
-         <attribute name="id" type="string" use="required">
-            <annotation>
-               <documentation>
-                  Project facet identifier.
-               </documentation>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <element name="project-facet-version">
-      <annotation>
-         <documentation>
-            Declares a project facet version. Each facet needs to have at leas one version declared in order to be useful.
-         </documentation>
-      </annotation>
-      <complexType>
-         <sequence>
-            <element ref="constraint" minOccurs="0" maxOccurs="1"/>
-            <element ref="group-member" minOccurs="0" maxOccurs="unbounded"/>
-            <element ref="action" minOccurs="0" maxOccurs="unbounded"/>
-            <element ref="event-handler" minOccurs="0" maxOccurs="unbounded"/>
-         </sequence>
-         <attribute name="facet" type="string" use="required">
-            <annotation>
-               <documentation>
-                  The id of the project facet that this is a version of. The facet itself needs to be declared using the project-facet element.
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="version" type="string" use="required">
-            <annotation>
-               <documentation>
-                  The version string. Has to be compatible with the version comparator specified for this facet or use the standard decimal version notation (i.e. 1.23.005) if the facet does not specify a custom version comparator.
-               </documentation>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <element name="version-comparator">
-      <annotation>
-         <documentation>
-            Specifies the version comparator for this project facet. If no version comparator is specified the default comparator will be used. The default version comparator can handle versions that are written in standard decimal notation.
-         </documentation>
-      </annotation>
-      <complexType>
-         <attribute name="class" type="string" use="required">
-            <annotation>
-               <documentation>
-                  The version comparator class name. Has to implement java.util.Comparator&amp;lt;String&amp;gt; interface.
-               </documentation>
-               <appInfo>
-                  <meta.attribute kind="java" basedOn="java.util.Comparator"/>
-               </appInfo>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <element name="category">
-      <annotation>
-         <documentation>
-            Declares a project facets category. Categories are groups of facets that the user will typically want to add or remove as a set.
-         </documentation>
-      </annotation>
-      <complexType>
-         <sequence>
-            <element ref="label"/>
-            <element ref="description" minOccurs="0" maxOccurs="1"/>
-         </sequence>
-         <attribute name="id" type="string" use="required">
-            <annotation>
-               <documentation>
-                  The category id.
-               </documentation>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <element name="preset">
-      <annotation>
-         <documentation>
-            Declares a preset. A preset represents a common configuration of facets and their versions that a user might want to utilize on several projects. Presets can be supplied via this extension point or created by the user.
-         </documentation>
-      </annotation>
-      <complexType>
-         <sequence>
-            <element ref="label"/>
-            <element ref="description" minOccurs="0" maxOccurs="1"/>
-            <element name="facet">
-               <annotation>
-                  <documentation>
-                     Specifies the facet that is part of this preset.
-                  </documentation>
-               </annotation>
-               <complexType>
-                  <attribute name="id" type="string" use="required">
-                     <annotation>
-                        <documentation>
-                           The project facet id.
-                        </documentation>
-                     </annotation>
-                  </attribute>
-                  <attribute name="version" type="string" use="required">
-                     <annotation>
-                        <documentation>
-                           The facet version.
-                        </documentation>
-                     </annotation>
-                  </attribute>
-               </complexType>
-            </element>
-         </sequence>
-         <attribute name="id" type="string" use="required">
-            <annotation>
-               <documentation>
-                  The preset id.
-               </documentation>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <element name="template">
-      <annotation>
-         <documentation>
-            Declares a template. A template is simply a combination of fixed facets and an optional preset. Templates are used as a guide when creation projects.
-         </documentation>
-      </annotation>
-      <complexType>
-         <sequence>
-            <element ref="label"/>
-            <element name="fixed">
-               <annotation>
-                  <documentation>
-                     Specifies a facet that should be fixed (made not deselectable) for the project.
-                  </documentation>
-               </annotation>
-               <complexType>
-                  <attribute name="facet" type="string" use="required">
-                     <annotation>
-                        <documentation>
-                           The project facet id.
-                        </documentation>
-                     </annotation>
-                  </attribute>
-               </complexType>
-            </element>
-            <element name="preset">
-               <annotation>
-                  <documentation>
-                     Specifies which preset should be selected by default.
-                  </documentation>
-               </annotation>
-               <complexType>
-                  <attribute name="id" type="string" use="required">
-                     <annotation>
-                        <documentation>
-                           The preset id.
-                        </documentation>
-                     </annotation>
-                  </attribute>
-               </complexType>
-            </element>
-         </sequence>
-         <attribute name="id" type="string" use="required">
-            <annotation>
-               <documentation>
-                  The template id.
-               </documentation>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <element name="action">
-      <annotation>
-         <documentation>
-            Provides implementation of an action, such as install or uninstall, that a user can take on a project facet. Any action that&apos;s not implemented will not be available to the user. The action element can be used standalone or embeded inside the project-facet-version element. If used inside the project-facet-version element, the facet and version attributes are implied and should not be specified.
-         </documentation>
-      </annotation>
-      <complexType>
-         <sequence>
-            <element ref="config-factory" minOccurs="0" maxOccurs="1"/>
-            <element ref="delegate"/>
-            <element ref="property" minOccurs="0" maxOccurs="unbounded"/>
-         </sequence>
-         <attribute name="type" use="required">
-            <annotation>
-               <documentation>
-                  Action type.
-               </documentation>
-            </annotation>
-            <simpleType>
-               <restriction base="string">
-                  <enumeration value="install">
-                  </enumeration>
-                  <enumeration value="uninstall">
-                  </enumeration>
-                  <enumeration value="version-change">
-                  </enumeration>
-                  <enumeration value="runtime-changed">
-                  </enumeration>
-                  <enumeration value="INSTALL">
-                  </enumeration>
-                  <enumeration value="UNINSTALL">
-                  </enumeration>
-                  <enumeration value="VERSION_CHANGE">
-                  </enumeration>
-               </restriction>
-            </simpleType>
-         </attribute>
-         <attribute name="facet" type="string">
-            <annotation>
-               <documentation>
-                  The id of the project facet that this action applies to. This attribute should not be used when embeding the action element inside the project-facet-version element.
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="version" type="string">
-            <annotation>
-               <documentation>
-                  The version of the project facet that this action applies to. Multiple versions can be specified using version expression syntax. The version expression should be of the form &quot;2.2,2.5,[3.0-5.3],(7.3&quot;, where the comas function as an OR. Brackets and parenthesis are used as part of the range notation. A bracket means inclusive while a parenthesis means exclusive. This attribute should not be used when embeding the action element inside the project-facet-version element.
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="id" type="string">
-            <annotation>
-               <documentation>
-                  The action id. If not specified, a default id will be assigned using the &quot;[facet-id]#[version-expression]#[action-type]&quot; pattern.
-               </documentation>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <element name="config-factory">
-      <annotation>
-         <documentation>
-            Specifies the factory that will construct a configuration object to be used for parameterizing the action delegate. A configuration object is not necessary if the delegate does not require parameterization.
-         </documentation>
-      </annotation>
-      <complexType>
-         <attribute name="class" type="string" use="required">
-            <annotation>
-               <documentation>
-                  The config factory class name. Has to implement org.eclipse.wst.common.project.facet.core.IActionConfigFactory interface.
-               </documentation>
-               <appInfo>
-                  <meta.attribute kind="java" basedOn="org.eclipse.wst.common.project.facet.core.IActionConfigFactory"/>
-               </appInfo>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <element name="delegate">
-      <annotation>
-         <documentation>
-            Specifies the delegate that should be invoked when an action or an event happens.
-         </documentation>
-      </annotation>
-      <complexType>
-         <attribute name="class" type="string" use="required">
-            <annotation>
-               <documentation>
-                  The delegate class name. Has to implement org.eclipse.wst.common.project.facet.core.IDelegate interface.
-               </documentation>
-               <appInfo>
-                  <meta.attribute kind="java" basedOn="org.eclipse.wst.common.project.facet.core.IDelegate"/>
-               </appInfo>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <element name="event-handler">
-      <annotation>
-         <documentation>
-            Adds an event handler for one of the events in the faceted project life cycle. The event-handler element can be used standalone or embeded inside the project-facet-version element. If used inside the project-facet-version element, the facet and version attributes are implied and should not be specified.
-         </documentation>
-      </annotation>
-      <complexType>
-         <sequence>
-            <element ref="delegate"/>
-         </sequence>
-         <attribute name="type" use="required">
-            <annotation>
-               <documentation>
-                  The type of the event.
-               </documentation>
-            </annotation>
-            <simpleType>
-               <restriction base="string">
-                  <enumeration value="PRE_INSTALL">
-                  </enumeration>
-                  <enumeration value="POST_INSTALL">
-                  </enumeration>
-                  <enumeration value="PRE_UNINSTALL">
-                  </enumeration>
-                  <enumeration value="POST_UNINSTALL">
-                  </enumeration>
-                  <enumeration value="PRE_VERSION_CHANGE">
-                  </enumeration>
-                  <enumeration value="POST_VERSION_CHANGE">
-                  </enumeration>
-                  <enumeration value="RUNTIME_CHANGED">
-                  </enumeration>
-               </restriction>
-            </simpleType>
-         </attribute>
-         <attribute name="facet" type="string">
-            <annotation>
-               <documentation>
-                  The id of the project facet that this event handler applies to. This attribute should not be used when embeding the event-handler element inside the project-facet-version element.
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="version" type="string">
-            <annotation>
-               <documentation>
-                  The version of the project facet that this event handler applies to. Multiple versions can be specified using version expression syntax. The version expression should be of the form &quot;2.2,2.5,[3.0-5.3],(7.3&quot;, where the comas function as an OR. Brackets and parenthesis are used as part of the range notation. A bracket means inclusive while a parenthesis means exclusive. This attribute should not be used when embeding the event-handler element inside the project-facet-version element.
-               </documentation>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <element name="property">
-      <annotation>
-         <documentation>
-            Specifies an action property.
-         </documentation>
-      </annotation>
-      <complexType>
-         <attribute name="name" use="required">
-            <annotation>
-               <documentation>
-                  The name of the property.
-               </documentation>
-            </annotation>
-            <simpleType>
-               <restriction base="string">
-                  <enumeration value="from.versions">
-                  </enumeration>
-               </restriction>
-            </simpleType>
-         </attribute>
-         <attribute name="value" type="string" use="required">
-            <annotation>
-               <documentation>
-                  The value of the property.
-               </documentation>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="since"/>
-      </appInfo>
-      <documentation>
-         &lt;b&gt;This extension point is part of an interim API that is still under development and expected to change significantly before reaching stability. It is being made available at this early stage to solicit feedback from pioneering adopters on the understanding that any code that uses this API will almost certainly be broken (repeatedly) as the API evolves.&lt;/b&gt;
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="examples"/>
-      </appInfo>
-      <documentation>
-         &lt;p&gt;The following example illustrates the various facilities exposed by this extension point. This example is taken from the &lt;i&gt;Building Project Facets&lt;/i&gt; tutorial.&lt;/p&gt;
-
-&lt;pre&gt;
-&lt;extension point=&quot;org.eclipse.wst.common.project.facet.core.facets&quot;&gt;
-
-  &lt;category id=&quot;formgen.category&quot;&gt;
-    &lt;label&gt;FormGen&lt;/label&gt;
-    &lt;description&gt;Enables generation of HTML forms based on XML definition files.&lt;/description&gt;
-  &lt;/category&gt;
-
-  &lt;project-facet id=&quot;formgen.core&quot;&gt;
-    &lt;label&gt;FormGen Core&lt;/label&gt;
-    &lt;description&gt;
-      Enables generation of HTML forms based on XML definition files.
-    &lt;/description&gt;
-    &lt;category&gt;formgen.category&lt;/category&gt;
-  &lt;/project-facet&gt;
-
-  &lt;project-facet-version facet=&quot;formgen.core&quot; version=&quot;1.0&quot;&gt;
-    &lt;constraint&gt;
-      &lt;requires facet=&quot;jst.web&quot; version=&quot;2.2,2.3,2.4&quot;/&gt;
-    &lt;/constraint&gt;
-    &lt;action type=&quot;INSTALL&quot; id=&quot;formgen.core.install&quot;&gt;
-      &lt;config-factory class=&quot;com.formgen.eclipse.FormGenCoreFacetInstallConfig$Factory&quot;/&gt;
-      &lt;delegate class=&quot;com.formgen.eclipse.FormGenCoreFacetInstallDelegate&quot;/&gt;
-    &lt;/action&gt;
-  &lt;/project-facet-version&gt;
-
-  &lt;project-facet id=&quot;formgen.ext&quot;&gt;
-    &lt;label&gt;FormGen Extensions&lt;/label&gt;
-    &lt;description&gt;
-      Enables additional FormGen widgets.
-    &lt;/description&gt;
-    &lt;category&gt;formgen.category&lt;/category&gt;
-  &lt;/project-facet&gt;
-
-  &lt;project-facet-version facet=&quot;formgen.ext&quot; version=&quot;1.0&quot;&gt;
-    &lt;constraint&gt;
-      &lt;requires facet=&quot;formgen.core&quot; version=&quot;1.0&quot;/&gt;
-    &lt;/constraint&gt;
-    &lt;action type=&quot;INSTALL&quot;&gt;
-      &lt;delegate class=&quot;com.formgen.eclipse.FormGenExtFacetInstallDelegate&quot;/&gt;
-    &lt;/action&gt;
-  &lt;/project-facet-version&gt;
-
-  &lt;preset id=&quot;formgen.preset&quot;&gt;
-    &lt;label&gt;FormGen Web Project&lt;/label&gt;
-    &lt;description&gt;Creates a web project with FormGen functionality.&lt;/description&gt;
-    &lt;facet id=&quot;jst.java&quot; version=&quot;5.0&quot;/&gt;
-    &lt;facet id=&quot;jst.web&quot; version=&quot;2.2&quot;/&gt;
-    &lt;facet id=&quot;formgen.core&quot; version=&quot;1.0&quot;/&gt;
-    &lt;facet id=&quot;formgen.ext&quot; version=&quot;1.0&quot;/&gt;
-  &lt;/preset&gt;
-  
-&lt;/extension&gt;
-&lt;/pre&gt;
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="apiInfo"/>
-      </appInfo>
-      <documentation>
-         
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="implementation"/>
-      </appInfo>
-      <documentation>
-         
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="copyright"/>
-      </appInfo>
-      <documentation>
-         Copyright (c) 2005, 2006 BEA Systems, Inc. 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>
\ No newline at end of file
diff --git a/plugins/org.eclipse.wst.common.project.facet.core/schemas/runtimeBridges.exsd b/plugins/org.eclipse.wst.common.project.facet.core/schemas/runtimeBridges.exsd
deleted file mode 100644
index 67c7ad9..0000000
--- a/plugins/org.eclipse.wst.common.project.facet.core/schemas/runtimeBridges.exsd
+++ /dev/null
@@ -1,113 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<!-- Schema file written by PDE -->
-<schema targetNamespace="org.eclipse.wst.common.project.facet.core">
-<annotation>
-      <appInfo>
-         <meta.schema plugin="org.eclipse.wst.common.project.facet.core" id="runtimeBridges" name="Runtime Bridges Extension Point"/>
-      </appInfo>
-      <documentation>
-         
-      </documentation>
-   </annotation>
-
-   <element name="extension">
-      <complexType>
-         <choice>
-            <element ref="bridge"/>
-         </choice>
-         <attribute name="point" type="string" use="required">
-            <annotation>
-               <documentation>
-                  a fully qualified identifier of the target extension point
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="id" type="string">
-            <annotation>
-               <documentation>
-                  an optional identifier of the extension instance
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="name" type="string">
-            <annotation>
-               <documentation>
-                  an optional name of the extension instance
-               </documentation>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <element name="bridge">
-      <complexType>
-         <attribute name="id" type="string" use="required">
-            <annotation>
-               <documentation>
-                  
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="class" type="string" use="required">
-            <annotation>
-               <documentation>
-                  
-               </documentation>
-               <appInfo>
-                  <meta.attribute kind="java" basedOn="org.eclipse.wst.common.project.facet.core.runtime.IRuntimeBridge"/>
-               </appInfo>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="since"/>
-      </appInfo>
-      <documentation>
-         &lt;b&gt;This extension point is part of an interim API that is still under development and expected to change significantly before reaching stability. It is being made available at this early stage to solicit feedback from pioneering adopters on the understanding that any code that uses this API will almost certainly be broken (repeatedly) as the API evolves.&lt;/b&gt;
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="examples"/>
-      </appInfo>
-      <documentation>
-         
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="apiInfo"/>
-      </appInfo>
-      <documentation>
-         
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="implementation"/>
-      </appInfo>
-      <documentation>
-         
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="copyright"/>
-      </appInfo>
-      <documentation>
-         Copyright (c) 2005 BEA Systems, Inc. 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.project.facet.core/schemas/runtimes.exsd b/plugins/org.eclipse.wst.common.project.facet.core/schemas/runtimes.exsd
deleted file mode 100644
index 6dce3ed..0000000
--- a/plugins/org.eclipse.wst.common.project.facet.core/schemas/runtimes.exsd
+++ /dev/null
@@ -1,285 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<!-- Schema file written by PDE -->
-<schema targetNamespace="org.eclipse.wst.common.project.facet.core">
-<annotation>
-      <appInfo>
-         <meta.schema plugin="org.eclipse.wst.common.project.facet.core" id="runtimes" name="Runtimes Extension Point"/>
-      </appInfo>
-      <documentation>
-         
-      </documentation>
-   </annotation>
-
-   <element name="extension">
-      <complexType>
-         <choice>
-            <element ref="runtime-component-type"/>
-            <element ref="runtime-component-version"/>
-            <element ref="adapter"/>
-            <element ref="supported"/>
-         </choice>
-         <attribute name="point" type="string" use="required">
-            <annotation>
-               <documentation>
-                  A fully qualified identifier of the target extension point.
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="id" type="string">
-            <annotation>
-               <documentation>
-                  An optional identifier of the extension instance.
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="name" type="string">
-            <annotation>
-               <documentation>
-                  An optional name of the extension instance.
-               </documentation>
-               <appInfo>
-                  <meta.attribute translatable="true"/>
-               </appInfo>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <element name="runtime-component-type">
-      <annotation>
-         <documentation>
-            Defines a runtime component type.
-         </documentation>
-      </annotation>
-      <complexType>
-         <sequence>
-            <element ref="version-comparator" minOccurs="0" maxOccurs="1"/>
-         </sequence>
-         <attribute name="id" type="string" use="required">
-            <annotation>
-               <documentation>
-                  The id that will be used to reference this runtime component type.
-               </documentation>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <element name="version-comparator">
-      <annotation>
-         <documentation>
-            Specifies the version comparator. If not specified, the default version comparator will be used. The default version comparator is capable of handing numerical versions that use decimal notation.
-         </documentation>
-      </annotation>
-      <complexType>
-         <attribute name="class" type="string" use="required">
-            <annotation>
-               <documentation>
-                  The class name.
-               </documentation>
-               <appInfo>
-                  <meta.attribute kind="java" basedOn="java.util.Comparator"/>
-               </appInfo>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <element name="runtime-component-version">
-      <annotation>
-         <documentation>
-            Defines a runtime component version.
-         </documentation>
-      </annotation>
-      <complexType>
-         <attribute name="type" type="string" use="required">
-            <annotation>
-               <documentation>
-                  The id of the runtime component type that this is a version of.
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="version" type="string" use="required">
-            <annotation>
-               <documentation>
-                  The version string.
-               </documentation>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <element name="adapter">
-      <annotation>
-         <documentation>
-            Registers an adapter to be used with some set of runtime component types and versions.
-         </documentation>
-      </annotation>
-      <complexType>
-         <sequence>
-            <element ref="runtime-component"/>
-            <element ref="factory"/>
-            <element ref="type"/>
-         </sequence>
-      </complexType>
-   </element>
-
-   <element name="runtime-component">
-      <annotation>
-         <documentation>
-            Used to reference multiple runtime component types and versions.
-         </documentation>
-      </annotation>
-      <complexType>
-         <attribute name="id" type="string">
-            <annotation>
-               <documentation>
-                  Specifies the runtime component type id. If this attribute is used, the &lt;code&gt;any&lt;/code&gt; attribute should not be used.
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="version" type="string">
-            <annotation>
-               <documentation>
-                  Specifies the match expression for the runtime component version. The expression should be of the form &quot;2.2,2.5,[3.0-5.3],(7.3&quot;, where the comas function as an OR. Brackets and parenthesis are used as part of the range notation. A bracket means inclusive while a parenthesis means exclusive.
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="any" type="string">
-            <annotation>
-               <documentation>
-                  Used to indicate that all runtime component types and versions should be matched. If this attribute is used, the &lt;code&gt;id&lt;/code&gt; and &lt;code&gt;version&lt;/code&gt; attributes should not be used. Note that this attribute can only be used when the &lt;code&gt;runtime-component&lt;/code&gt; element appears beneath the &lt;code&gt;supported&lt;/code&gt; element.
-               </documentation>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <element name="factory">
-      <annotation>
-         <documentation>
-            Specifies the adapter factory. The factory has to implement org.eclipse.core.runtime.IAdapterFactory interface.
-         </documentation>
-      </annotation>
-      <complexType>
-         <attribute name="class" type="string" use="required">
-            <annotation>
-               <documentation>
-                  The class name.
-               </documentation>
-               <appInfo>
-                  <meta.attribute kind="java" basedOn="org.eclipse.core.runtime.IAdapterFactory"/>
-               </appInfo>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <element name="type">
-      <annotation>
-         <documentation>
-            Specifies the type that this adapter will be adapting to.
-         </documentation>
-      </annotation>
-      <complexType>
-         <attribute name="class" type="string" use="required">
-            <annotation>
-               <documentation>
-                  The class name.
-               </documentation>
-               <appInfo>
-                  <meta.attribute kind="java"/>
-               </appInfo>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <element name="supported">
-      <annotation>
-         <documentation>
-            Specifies that these project facets are supported by these runtimes.
-         </documentation>
-      </annotation>
-      <complexType>
-         <sequence>
-            <element ref="facet" minOccurs="1" maxOccurs="unbounded"/>
-            <element ref="runtime-component" minOccurs="1" maxOccurs="unbounded"/>
-         </sequence>
-      </complexType>
-   </element>
-
-   <element name="facet">
-      <annotation>
-         <documentation>
-            Used to reference one or more version of a project facet.
-         </documentation>
-      </annotation>
-      <complexType>
-         <attribute name="id" type="string" use="required">
-            <annotation>
-               <documentation>
-                  Specifies the project facet id.
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="version" type="string">
-            <annotation>
-               <documentation>
-                  Specifies the match expression for the runtime component version. The expression should be of the form &quot;2.2,2.5,[3.0-5.3],(7.3&quot;, where the comas function as an OR. Brackets and parenthesis are used as part of the range notation. A bracket means inclusive while a parenthesis means exclusive.
-               </documentation>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="since"/>
-      </appInfo>
-      <documentation>
-         &lt;b&gt;This extension point is part of an interim API that is still under development and expected to change significantly before reaching stability. It is being made available at this early stage to solicit feedback from pioneering adopters on the understanding that any code that uses this API will almost certainly be broken (repeatedly) as the API evolves.&lt;/b&gt;
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="examples"/>
-      </appInfo>
-      <documentation>
-         
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="apiInfo"/>
-      </appInfo>
-      <documentation>
-         
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="implementation"/>
-      </appInfo>
-      <documentation>
-         
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="copyright"/>
-      </appInfo>
-      <documentation>
-         Copyright (c) 2005 BEA Systems, Inc. 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.project.facet.core/schemas/validators.exsd b/plugins/org.eclipse.wst.common.project.facet.core/schemas/validators.exsd
deleted file mode 100644
index 779dce0..0000000
--- a/plugins/org.eclipse.wst.common.project.facet.core/schemas/validators.exsd
+++ /dev/null
@@ -1,142 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<!-- Schema file written by PDE -->
-<schema targetNamespace="org.eclipse.wst.common.project.facet.core">
-<annotation>
-      <appInfo>
-         <meta.schema plugin="org.eclipse.wst.common.project.facet.core" id="validators" name="Faceted Project Validators Extension Point"/>
-      </appInfo>
-      <documentation>
-         Used for declaring faceted project validators. 
-      </documentation>
-   </annotation>
-
-   <element name="extension">
-      <complexType>
-         <choice>
-            <element ref="validator" minOccurs="1" maxOccurs="unbounded"/>
-         </choice>
-         <attribute name="point" type="string" use="required">
-            <annotation>
-               <documentation>
-                  A fully qualified identifier of the target extension point.
-               </documentation>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <element name="facet">
-      <annotation>
-         <documentation>
-            Used to reference one or more version of a project facet.
-         </documentation>
-      </annotation>
-      <complexType>
-         <attribute name="id" type="string" use="required">
-            <annotation>
-               <documentation>
-                  Specifies the project facet id.
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="version" type="string">
-            <annotation>
-               <documentation>
-                  Specifies the match expression for the runtime component version. The expression should be of the form &quot;2.2,2.5,[3.0-5.3],(7.3&quot;, where the comas function as an OR. Brackets and parenthesis are used as part of the range notation. A bracket means inclusive while a parenthesis means exclusive.
-               </documentation>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <element name="validator">
-      <annotation>
-         <documentation>
-            Declares a faceted project validator. The validator can be restricted to projects containing specific facets.
-         </documentation>
-      </annotation>
-      <complexType>
-         <choice>
-            <element ref="facet" minOccurs="0" maxOccurs="unbounded"/>
-         </choice>
-         <attribute name="class" type="string" use="required">
-            <annotation>
-               <documentation>
-                  The validator class name. Has to implement org.eclipse.wst.common.project.facet.core.IFacetedProjectValidator interface.
-               </documentation>
-               <appInfo>
-                  <meta.attribute kind="java" basedOn="org.eclipse.wst.common.project.facet.core.IFacetedProjectValidator"/>
-               </appInfo>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="since"/>
-      </appInfo>
-      <documentation>
-         &lt;b&gt;This extension point is part of an interim API that is still under development and expected to change significantly before reaching stability. It is being made available at this early stage to solicit feedback from pioneering adopters on the understanding that any code that uses this API will almost certainly be broken (repeatedly) as the API evolves.&lt;/b&gt;
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="examples"/>
-      </appInfo>
-      <documentation>
-         &lt;p&gt;The following example declares a validator that applies to projects that have facet1 (version 1.3 or 2.5) and facet2 (any version) installed.&lt;/p&gt;
-
-&lt;pre&gt;
-&lt;extension point=&quot;org.eclipse.wst.common.project.facet.core.validators&quot;&gt;
-  &lt;validator class=&quot;com.mycorp.MyValidator1&quot;&gt;
-    &lt;facet id=&quot;facet1&quot; version=&quot;1.3,2.5&quot;/&gt;
-    &lt;facet id=&quot;facet2&quot;/&gt;
-  &lt;/validator&gt;
-&lt;/extension&gt;
-&lt;/pre&gt;
-
-&lt;p&gt;The second example declares a validator that applies to all faceted projects.&lt;/p&gt;
-
-&lt;pre&gt;
-&lt;extension point=&quot;org.eclipse.wst.common.project.facet.core.validators&quot;&gt;
-  &lt;validator class=&quot;com.mycorp.MyValidator2&quot;/&gt;
-&lt;/extension&gt;
-&lt;/pre&gt;
-
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="apiInfo"/>
-      </appInfo>
-      <documentation>
-         
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="implementation"/>
-      </appInfo>
-      <documentation>
-         
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="copyright"/>
-      </appInfo>
-      <documentation>
-         Copyright (c) 2005 BEA Systems, Inc. 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.project.facet.core/src/org/eclipse/wst/common/project/facet/core/DefaultVersionComparator.java b/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/DefaultVersionComparator.java
deleted file mode 100644
index 1da2477..0000000
--- a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/DefaultVersionComparator.java
+++ /dev/null
@@ -1,146 +0,0 @@
-/******************************************************************************
- * Copyright (c) 2005 BEA Systems, Inc.
- * 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:
- *    Konstantin Komissarchik - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.wst.common.project.facet.core;
-
-import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.Comparator;
-import java.util.StringTokenizer;
-
-/**
- * The default version comparator that will be used when one is not explicitly 
- * specified. The default version comparator can handle version strings using 
- * the standard decimal notation. It can also be subclassed to modify the 
- * separators that are used or to provide custom parsing for a version segment.
- *
- * <p><i>This class is part of an interim API that is still under development 
- * and expected to change significantly before reaching stability. It is being 
- * made available at this early stage to solicit feedback from pioneering 
- * adopters on the understanding that any code that uses this API will almost 
- * certainly be broken (repeatedly) as the API evolves.</i></p>
- * 
- * @author <a href="mailto:kosta@bea.com">Konstantin Komissarchik</a>
- */
-
-public class DefaultVersionComparator
-
-    implements Comparator
-    
-{
-    public final int compare( final Object obj1,
-                              final Object obj2 )
-    
-        throws VersionFormatException
-        
-    {
-        final Comparable[] parsed1 = parse( (String) obj1 );
-        final Comparable[] parsed2 = parse( (String) obj2 );
-        
-        for( int i = 0; i < parsed1.length && i < parsed2.length; i++ )
-        {
-            final int res = parsed1[ i ].compareTo( parsed2[ i ] );
-            if( res != 0 ) return res;
-        }
-        
-        if( parsed1.length > parsed2.length )
-        {
-            return 1;
-        }
-        else if( parsed1.length < parsed2.length )
-        {
-            return -1;
-        }
-        else
-        {
-            return 0;
-        }
-    }
-    
-    /**
-     * Returns the string containing the separator characters that should be
-     * used when breaking the version string into segments. The default
-     * implementation returns ".". Subclasses can override this method.
-     * 
-     * @return the separator characters
-     */
-    
-    protected String getSeparators()
-    {
-        return "."; //$NON-NLS-1$
-    }
-    
-    /**
-     * Parses a segment of the version string. The default implementation parses
-     * the first segment as an integer (leading zeroes are ignored) and the
-     * rest of the segments as decimals (leading zeroes are kept). Subclasses 
-     * can override this method to provide custom parsing for any number of 
-     * segments.
-     * 
-     * @param version the full version string
-     * @param segment the version segment
-     * @param position the position of the segment in the version string
-     * @return the parsed representation of the segment as a {@see Comparable}
-     * @throws VersionFormatException if encountered an error while parsing
-     */
-    
-    protected Comparable parse( final String version,
-                                final String segment,
-                                final int position )
-    
-        throws VersionFormatException
-        
-    {
-        try
-        {
-            if( position == 0 )
-            {
-                return new Integer( segment );
-            }
-            else
-            {
-                return new BigDecimal( "." + segment ); //$NON-NLS-1$
-            }
-        }
-        catch( NumberFormatException e )
-        {
-            throw new VersionFormatException( this, version );
-        }
-    }
-    
-    /**
-     * Parses the version string.
-     * 
-     * @param ver the version string
-     * @return an array containing the parsed representation of the version
-     */
-    
-    private Comparable[] parse( final String ver )
-    {
-        final ArrayList segments = new ArrayList();
-        
-        for( StringTokenizer t = new StringTokenizer( ver, getSeparators() );
-             t.hasMoreTokens(); )
-        {
-            segments.add( t.nextToken() );
-        }
-        
-        final Comparable[] parsed = new Comparable[ segments.size() ];
-        
-        for( int i = 0, n = segments.size(); i < n; i++ )
-        {
-            parsed[ i ] = parse( ver, (String) segments.get( i ), i );
-        }
-        
-        return parsed;
-    }
-    
-}
diff --git a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/FacetedProjectFramework.java b/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/FacetedProjectFramework.java
deleted file mode 100644
index a5178a0..0000000
--- a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/FacetedProjectFramework.java
+++ /dev/null
@@ -1,125 +0,0 @@
-package org.eclipse.wst.common.project.facet.core;
-
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.wst.common.project.facet.core.internal.FacetedProjectNature;
-import org.eclipse.wst.common.project.facet.core.internal.ProjectFacetsManagerImpl;
-
-public final class FacetedProjectFramework
-{
-    public static final String PLUGIN_ID 
-        = "org.eclipse.wst.common.project.facet.core"; //$NON-NLS-1$
-    
-    private static ProjectFacetsManagerImpl impl = null;
-    
-    private FacetedProjectFramework() { }
-    
-    /**
-     * <p>Determines whether the specified project facet is installed in the
-     * provided project. Returns <code>false</code> if the project is not 
-     * accessible, the project is not faceted or the facet id is unrecognized.</p>
-     * 
-     * <p>This method is explicitly designed to avoid activation of the Faceted
-     * Project Framework if the project is not faceted. For the code that
-     * operates in the context where it can be assumed that the framework has
-     * started already, better performance can be achieved by storing 
-     * {@see IProjectFacet} and {@see IProjectFacetVersion} instances using the
-     * singleton pattern and using the
-     * {@see IFacetedProject.hasProjectFacet(IProjectFacet)} or
-     * {@see IFacetedProject.hasProjectFacet(IProjectFacetVersion)} methods.</p>
-     * 
-     * <p>This method is equivalent to calling 
-     * {@see hasProjectFacet(IProject,String,String)} with <code>null</code>
-     * version expression parameter.</p>
-     * 
-     * @param project the project to check for the facet presence
-     * @param fid the project facet id
-     * @throws CoreException if failed while reading faceted project metadata
-     */
-
-    public static boolean hasProjectFacet( final IProject project,
-                                           final String fid )
-    
-        throws CoreException
-        
-    {
-        return hasProjectFacet( project, fid, null );
-    }
-    
-    /**
-     * <p>Determines whether the specified project facet is installed in the
-     * provided project. Returns <code>false</code> if the project is not 
-     * accessible, the project is not faceted or the facet id is unrecognized.</p>
-     * 
-     * <p>This method is explicitly designed to avoid activation of the Faceted
-     * Project Framework if the project is not faceted. For the code that
-     * operates in the context where it can be assumed that the framework has
-     * started already, better performance can be achieved by storing 
-     * {@see IProjectFacet} and {@see IProjectFacetVersion} instances using the
-     * singleton pattern and using the
-     * {@see IFacetedProject.hasProjectFacet(IProjectFacet)} or
-     * {@see IFacetedProject.hasProjectFacet(IProjectFacetVersion)} methods.</p>
-     * 
-     * @param project the project to check for the facet presence
-     * @param fid the project facet id
-     * @param vexpr the version match expression, or <code>null</code> to
-     *   match any version
-     * @throws CoreException if failed while reading faceted project metadata;
-     *   if the version expression is invalid
-     */
-
-    public static boolean hasProjectFacet( final IProject project,
-                                           final String fid,
-                                           final String vexpr )
-    
-        throws CoreException
-        
-    {
-        if( project.isAccessible() &&
-            project.isNatureEnabled( FacetedProjectNature.NATURE_ID ) )
-        {
-            initialize();
-            
-            final IFacetedProject fproj = ProjectFacetsManager.create( project );
-            
-            if( fproj != null )
-            {
-                if( ProjectFacetsManager.isProjectFacetDefined( fid ) )
-                {
-                    final IProjectFacet f = ProjectFacetsManager.getProjectFacet( fid );
-                    
-                    if( vexpr == null )
-                    {
-                        return fproj.hasProjectFacet( f );
-                    }
-                    else
-                    {
-                        final IProjectFacetVersion fv = fproj.getInstalledVersion( f );
-                        
-                        if( fv != null )
-                        {
-                            return f.getVersions( vexpr ).contains( fv );
-                        }
-                    }
-                }
-            }
-        }
-        
-        return false;
-    }
-    
-    private static synchronized void initialize()
-    {
-        if( impl == null )
-        {
-            impl = new ProjectFacetsManagerImpl();
-        }
-    }
-    
-    static ProjectFacetsManagerImpl getProjectFacetsManagerImpl()
-    {
-        initialize();
-        return impl;
-    }
-
-}
diff --git a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/IActionConfig.java b/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/IActionConfig.java
deleted file mode 100644
index 542cf95..0000000
--- a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/IActionConfig.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/******************************************************************************
- * Copyright (c) 2005, 2006 BEA Systems, Inc.
- * 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:
- *    Konstantin Komissarchik - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.wst.common.project.facet.core;
-
-import org.eclipse.core.runtime.IStatus;
-
-/**
- * <p><i>This class is part of an interim API that is still under development 
- * and expected to change significantly before reaching stability. It is being 
- * made available at this early stage to solicit feedback from pioneering 
- * adopters on the understanding that any code that uses this API will almost 
- * certainly be broken (repeatedly) as the API evolves.</i></p>
- * 
- * @author <a href="mailto:kosta@bea.com">Konstantin Komissarchik</a>
- */
-
-public interface IActionConfig
-{
-    void setVersion( IProjectFacetVersion fv );
-    void setProjectName( String pjname );
-    IStatus validate();
-}
diff --git a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/IActionConfigFactory.java b/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/IActionConfigFactory.java
deleted file mode 100644
index 42909b6..0000000
--- a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/IActionConfigFactory.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/******************************************************************************
- * Copyright (c) 2005, 2006 BEA Systems, Inc.
- * 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:
- *    Konstantin Komissarchik - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.wst.common.project.facet.core;
-
-import org.eclipse.core.runtime.CoreException;
-
-/**
- * This interface is implemented in order to provide a method for creating 
- * a config object that will be used for parameterizing the facet action
- * delegate.
- * 
- * <p><i>This class is part of an interim API that is still under development 
- * and expected to change significantly before reaching stability. It is being 
- * made available at this early stage to solicit feedback from pioneering 
- * adopters on the understanding that any code that uses this API will almost 
- * certainly be broken (repeatedly) as the API evolves.</i></p>
- * 
- * @author <a href="mailto:kosta@bea.com">Konstantin Komissarchik</a>
- */
-
-public interface IActionConfigFactory
-{
-    /**
-     * Creates a new facet action configuration object. The new configuration
-     * object should ideally be populated with reasonable defaults.
-     * 
-     * @return a new facet action configuration object
-     * @throws CoreException if failed while creating the configuration object
-     */
-    
-    Object create()
-    
-        throws CoreException;
-    
-}
diff --git a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/IActionDefinition.java b/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/IActionDefinition.java
deleted file mode 100644
index 8e46b9d..0000000
--- a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/IActionDefinition.java
+++ /dev/null
@@ -1,114 +0,0 @@
-/******************************************************************************
- * Copyright (c) 2005, 2006 BEA Systems, Inc.
- * 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:
- *    Konstantin Komissarchik - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.wst.common.project.facet.core;
-
-import java.util.Map;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.wst.common.project.facet.core.IFacetedProject.Action;
-
-/**
- * An action is an operation on a single facet within a faceted project to
- * install, uninstall, or change the version of the facet. An action definition
- * represents the information supplied by the facet author regarding the
- * implementation of an action. A single action definition can apply to multiple
- * facet versions. For instance, the facet author may choose to supply one
- * action definition for all versions of his facet. 
- * 
- * @author <a href="mailto:kosta@bea.com">Konstantin Komissarchik</a>
- */
-
-public interface IActionDefinition
-{
-    /**
-     * The name of the property that's used to constraint the starting version
-     * of the VERSION_CHANGE action definition.
-     */
-    
-    static final String PROP_FROM_VERSIONS = "from.versions"; //$NON-NLS-1$
-    
-    /**
-     * Returns the id of the action definition. If not explicitly specified, a
-     * default action id is generated that takes the following form:
-     * [facet-id]#[version-expression]#[action-type](#[prop.name]=[prop.value])*.
-     * 
-     * @return the id of the action definition
-     */
-    
-    String getId();
-    
-    /**
-     * Returns the project facet that this action definition is associated with.
-     * 
-     * @return the project facet that this action definition is associated with
-     */
-    
-    IProjectFacet getProjectFacet();
-    
-    /**
-     * Returns the version expression that controls which facet versions this
-     * action definition applies to.
-     * 
-     * @return the version expression that controls which facet versions this
-     *   action definition applies to
-     */
-    
-    IVersionExpr getVersionExpr();
-    
-    /**
-     * Returns the action type, such as <code>INSTALL</code>, <code>UNINSTALL</code>,
-     * or <code>VERSION_CHANGE</code>.
-     * 
-     * @return the action type
-     */
-    
-    Action.Type getActionType();
-    
-    /**
-     * Returns the properties that further specify action behavior and 
-     * applicability.
-     * 
-     * @return the properties of this action definition (key type: {@see String}, 
-     *   value type {@see Object})
-     */
-    
-    Map getProperties();
-    
-    /**
-     * Returns the property value corresponding to the provided name.
-     * 
-     * @param name the name of the property
-     * @return the value of the property
-     */
-    
-    Object getProperty( String name );
-    
-    /**
-     * Creates a new config object that can be used for parameterizing the
-     * execution of this action. If this action definition does not specify a
-     * config object factory, this method will return <code>null</code>.
-     * 
-     * @param fv the actual facet version that this config object will be used
-     *   with; should be one of the versions matched by the version expression
-     *   specified for this action definition
-     * @param pjname the project name
-     * @return the new config object
-     * @throws CoreException if failed while instantiating the config object
-     *   factory or creating the config object
-     */
-    
-    Object createConfigObject( IProjectFacetVersion fv,
-                               String pjname )
-    
-        throws CoreException;
-    
-}
\ No newline at end of file
diff --git a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/ICategory.java b/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/ICategory.java
deleted file mode 100644
index 38d1c63..0000000
--- a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/ICategory.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/******************************************************************************
- * Copyright (c) 2005 BEA Systems, Inc.
- * 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:
- *    Konstantin Komissarchik - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.wst.common.project.facet.core;
-
-import java.util.Set;
-
-import org.eclipse.core.runtime.IAdaptable;
-
-/**
- * Models a grouping of project facets that are intended to be selected and 
- * deselected as a set. This interface is not intended to be implemented by 
- * clients.
- * 
- * <p><i>This class is part of an interim API that is still under development 
- * and expected to change significantly before reaching stability. It is being 
- * made available at this early stage to solicit feedback from pioneering 
- * adopters on the understanding that any code that uses this API will almost 
- * certainly be broken (repeatedly) as the API evolves.</i></p>
- * 
- * @author <a href="mailto:kosta@bea.com">Konstantin Komissarchik</a>
- */
-
-public interface ICategory
-
-    extends IAdaptable
-    
-{
-    String getId();
-    String getPluginId();
-    String getLabel();
-    String getDescription();
-    
-    /**
-     * Returns the project facets that compose this category.
-     * 
-     * @return the member project facets (element type: {@see IProjectFacet})
-     */
-    
-    Set getProjectFacets();
-}
diff --git a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/IConstraint.java b/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/IConstraint.java
deleted file mode 100644
index fe2eebd..0000000
--- a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/IConstraint.java
+++ /dev/null
@@ -1,132 +0,0 @@
-/******************************************************************************
- * Copyright (c) 2005 BEA Systems, Inc.
- * 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:
- *    Konstantin Komissarchik - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.wst.common.project.facet.core;
-
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.core.runtime.IStatus;
-
-/**
- * Models a single constraint in the constraint expression. 
- *  
- * <p><i>This class is part of an interim API that is still under development 
- * and expected to change significantly before reaching stability. It is being 
- * made available at this early stage to solicit feedback from pioneering 
- * adopters on the understanding that any code that uses this API will almost 
- * certainly be broken (repeatedly) as the API evolves.</i></p>
- * 
- * @author <a href="mailto:kosta@bea.com">Konstantin Komissarchik</a>
- */
-
-public interface IConstraint 
-{
-    /**
-     * The enumeration of operator types.
-     *  
-     * @author <a href="mailto:kosta@bea.com">Konstantin Komissarchik</a>
-     */
-    
-    static final class Type
-    {
-        private static final Map items = new HashMap();
-
-        public static final Type AND 
-            = new Type( "and" ); //$NON-NLS-1$
-        
-        public static final Type OR 
-            = new Type( "or" ); //$NON-NLS-1$
-        
-        public static final Type REQUIRES 
-            = new Type( "requires" ); //$NON-NLS-1$
-        
-        public static final Type CONFLICTS 
-            = new Type( "conflicts" ); //$NON-NLS-1$
-        
-        private final String name;
-        
-        private Type( final String name )
-        {
-            this.name = name;
-            items.put( name, this );
-        }
-        
-        public static Type valueOf( final String name )
-        {
-            return (Type) items.get( name.toLowerCase() );
-        }
-        
-        public String name()
-        {
-            return this.name;
-        }
-        
-        public String toString()
-        {
-            return this.name;
-        }
-    }
-    
-    /**
-     * Returns the operator type
-     * 
-     * @return the operator type
-     */
-    
-    Type getType();
-    
-    /**
-     * Returns the list operands.
-     * 
-     * @return the list of operands (element type: {@link Object})
-     */
-    
-    List getOperands();
-    
-    /**
-     * Returns the operand at the specified position.
-     * 
-     * @param index the position of the operand in the list of operands
-     * @return the operand
-     */
-    
-    Object getOperand( int index );
-    
-    /**
-     * Checks this constraint against the given set of project facets.
-     * 
-     * @param facets a set of project facets (element type:
-     *   {@link IProjectFacetVersion})
-     * @return a status object with severity of {@see IStatus#OK} if the
-     *   constraint was satisfied or otherwise a {@see MultiStatus} composed of
-     *   {@see ValidationProblem} status objects
-     */
-    
-    IStatus check( Collection facets );
-    
-    /**
-     * Checks this constraint against the given set of project facets.
-     * 
-     * @param facets a set of project facets (element type:
-     *   {@link IProjectFacetVersion})
-     * @param validateSoftDependencies if <code>true</code> soft dependencies
-     *   will be treated as required
-     * @return a status object with severity of {@see IStatus#OK} if the
-     *   constraint was satisfied or otherwise a {@see MultiStatus} composed of
-     *   {@see ValidationProblem} status objects
-     */
-
-    IStatus check( Collection facets,
-                   boolean validateSoftDependencies );
-}
diff --git a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/IDelegate.java b/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/IDelegate.java
deleted file mode 100644
index 4c4da44..0000000
--- a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/IDelegate.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/******************************************************************************
- * Copyright (c) 2005 BEA Systems, Inc.
- * 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:
- *    Konstantin Komissarchik - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.wst.common.project.facet.core;
-
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-
-/**
- * This interface is implemented in order to provide logic associated with
- * a particular event in project facet's life cycle, such as install or 
- * uninstall.
- * 
- * <p><i>This class is part of an interim API that is still under development 
- * and expected to change significantly before reaching stability. It is being 
- * made available at this early stage to solicit feedback from pioneering 
- * adopters on the understanding that any code that uses this API will almost 
- * certainly be broken (repeatedly) as the API evolves.</i></p>
- * 
- * @author <a href="mailto:kosta@bea.com">Konstantin Komissarchik</a>
- */
-
-public interface IDelegate 
-{
-    /**
-     * The method that's called to execute the delegate.
-     * 
-     * @param project the workspace project
-     * @param fv the project facet version that this delegate is handling; this
-     *   is useful when sharing the delegate among several versions of the same
-     *   project facet or even different project facets
-     * @param config the configuration object, or <code>null</code> if defaults
-     *   should be used
-     * @param monitor the progress monitor
-     * @throws CoreException if the delegate fails for any reason
-     */
-    
-    void execute( IProject project,
-                  IProjectFacetVersion fv,
-                  Object config,
-                  IProgressMonitor monitor )
-    
-        throws CoreException;
-    
-}
diff --git a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/IFacetedProject.java b/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/IFacetedProject.java
deleted file mode 100644
index f9c6449..0000000
--- a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/IFacetedProject.java
+++ /dev/null
@@ -1,488 +0,0 @@
-/******************************************************************************
- * Copyright (c) 2005 BEA Systems, Inc.
- * 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:
- *    Konstantin Komissarchik - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.wst.common.project.facet.core;
-
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Set;
-
-import org.eclipse.core.resources.IMarker;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.wst.common.project.facet.core.runtime.IRuntime;
-
-/**
- * This interface is used for manipulating the set of facets installed on a
- * project. Use {@see ProjectFacetsManager#create(IProject)} to get an instance 
- * of this interface.
- *  
- * <p><i>This class is part of an interim API that is still under development 
- * and expected to change significantly before reaching stability. It is being 
- * made available at this early stage to solicit feedback from pioneering 
- * adopters on the understanding that any code that uses this API will almost 
- * certainly be broken (repeatedly) as the API evolves.</i></p>
- * 
- * @author <a href="mailto:kosta@bea.com">Konstantin Komissarchik</a>
- */
-
-public interface IFacetedProject 
-{
-    /**
-     * Represents a single action such as installing or uninstalling a project
-     * facet.
-     *  
-     * @author <a href="mailto:kosta@bea.com">Konstantin Komissarchik</a>
-     */
-    
-    static final class Action
-    {
-        /**
-         * The action type enumeration.
-         *  
-         * @author <a href="mailto:kosta@bea.com">Konstantin Komissarchik</a>
-         */
-        
-        public static final class Type
-        {
-            private static final Map items = new HashMap();
-            
-            public static final Type INSTALL 
-                = new Type( "INSTALL" ); //$NON-NLS-1$
-            
-            public static final Type UNINSTALL 
-                = new Type( "UNINSTALL" ); //$NON-NLS-1$
-            
-            public static final Type VERSION_CHANGE 
-                = new Type( "VERSION_CHANGE" ); //$NON-NLS-1$
-            
-            static
-            {
-                // Backwards compatibility.
-                
-                items.put( "install", INSTALL ); //$NON-NLS-1$
-                items.put( "uninstall", UNINSTALL ); //$NON-NLS-1$
-                items.put( "version-change", VERSION_CHANGE ); //$NON-NLS-1$
-            }
-            
-            private final String name;
-            
-            private Type( final String name )
-            {
-                this.name = name;
-                items.put( name, this );
-            }
-            
-            public static Type valueOf( final String name )
-            {
-                return (Type) items.get( name );
-            }
-            
-            public String name()
-            {
-                return this.name;
-            }
-            
-            public String toString()
-            {
-                return this.name;
-            }
-        }
-        
-        private final Type type;
-        private final IProjectFacetVersion fv;
-        private final Object config;
-        
-        /**
-         * Creates a new action.
-         * 
-         * @param type action type
-         * @param fv the the project facet version
-         * @param config the configuration object, or <code>null</code>
-         */
-        
-        public Action( final Type type,
-                       final IProjectFacetVersion fv,
-                       final Object config )
-        {
-            if( type == null || fv == null )
-            {
-                throw new IllegalArgumentException();
-            }
-            
-            this.type = type;
-            this.fv = fv;
-            this.config = config;
-        }
-        
-        /**
-         * Returns the action type
-         * 
-         * @return the action type
-         */
-        
-        public Type getType()
-        {
-            return this.type;
-        }
-        
-        /**
-         * Returns the descriptor for the project facet version that this 
-         * action will be manipulating.
-         * 
-         * @return the descriptor for the project facet version that this action 
-         *   will be manipulating
-         */
-        
-        public IProjectFacetVersion getProjectFacetVersion()
-        {
-            return this.fv;
-        }
-        
-        /**
-         * Returns the configuration object associated with this action, if any.
-         * 
-         * @return the configuration object associated with this action, or
-         *   <code>null</code>
-         */
-        
-        public Object getConfig()
-        {
-            return this.config;
-        }
-        
-        public boolean equals( final Object obj )
-        {
-            if( ! ( obj instanceof Action ) )
-            {
-                return false;
-            }
-            else
-            {
-                final Action action = (Action) obj;
-                
-                return this.type == action.type && 
-                       this.fv.equals( action.fv );
-            }
-        }
-        
-        public int hashCode()
-        {
-            return this.type.hashCode() ^ this.fv.hashCode();
-        }
-        
-        public String toString()
-        {
-            final StringBuffer buf = new StringBuffer();
-            
-            buf.append( this.type.toString() );
-            buf.append( '[' );
-            buf.append( this.fv.getProjectFacet().getId() );
-            buf.append( ' ' );
-            buf.append( this.fv.getVersionString() );
-            buf.append( ']' );
-            
-            return buf.toString();
-        }
-    }
-    
-    IProject getProject();
-    
-    /**
-     * Returns the set of project facets currently installed on this project.
-     * 
-     * @return the set of project facets currently installed on this project 
-     *   (element type: {@see IProjectFacetVersion})
-     */
-    
-    Set getProjectFacets();
-    
-    /**
-     * Determines whether any version of the specified project facet is 
-     * installed on this project.
-     * 
-     * @param f the project facet descriptor
-     * @return <code>true</code> if any version of the specified project facet 
-     *   is installed on this project, <code>false</code> otherwise
-     */
-    
-    boolean hasProjectFacet( IProjectFacet f );
-    
-    /**
-     * Determines whether the specfied project facet version is installed on 
-     * this project.
-     * 
-     * @param fv the project facet version descriptor
-     * @return <code>true</code> if the specified project facet version is 
-     *   installed on this project, <code>false</code> otherwise
-     */
-    
-    boolean hasProjectFacet( IProjectFacetVersion fv );
-    
-    IProjectFacetVersion getInstalledVersion( IProjectFacet f );
-    
-    /**
-     * <p>Installs a project facet on this project. This method is equivalent to 
-     * calling the {@see #modify(Set, IProgressMonitor)} method with a single 
-     * install action.</p>
-     * 
-     * <p>This method should not be called from the UI thread as it is long-
-     * running and may trigger resource change events. Although this framework
-     * is safe, there is no guarantee that other bundles are UI-safe and the
-     * risk of UI deadlock is high.</p>
-     * 
-     * @param fv the descriptor of the project facet version that should be 
-     *   installed
-     * @param config the associated configuration object, or <code>null</code>
-     * @param monitor a progress monitor, or null if progress reporting and 
-     *   cancellation are not desired
-     * @throws CoreException if anything goes wrong during install
-     */
-    
-    void installProjectFacet( IProjectFacetVersion fv,
-                              Object config,
-                              IProgressMonitor monitor)
-    
-        throws CoreException;
-    
-    /**
-     * <p>Uninstalls a project facet from this project. This method is 
-     * equivalent to calling the {@see #modify(Set, IProgressMonitor)} method 
-     * with a single uninstall action.</p>
-     * 
-     * <p>This method should not be called from the UI thread as it is long-
-     * running and may trigger resource change events. Although this framework
-     * is safe, there is no guarantee that other bundles are UI-safe and the
-     * risk of UI deadlock is high.</p>
-     * 
-     * @param fv the descriptor of the project facet version that should be 
-     *   uninstalled
-     * @param config the associated configuration object, or <code>null</code>
-     * @param monitor a progress monitor, or null if progress reporting and 
-     *   cancellation are not desired
-     * @throws CoreException if anything goes wrong during uninstall
-     */
-    
-    void uninstallProjectFacet( IProjectFacetVersion fv,
-                                Object config,
-                                IProgressMonitor monitor )
-    
-        throws CoreException;
-    
-    /**
-     * <p>Modifies the set of project facets installed on this project by 
-     * performing a series of actions such as install and uninstall.</p>
-     * 
-     * <p>This method should not be called from the UI thread as it is long-
-     * running and may trigger resource change events. Although this framework
-     * is safe, there is no guarantee that other bundles are UI-safe and the
-     * risk of UI deadlock is high.</p>
-     * 
-     * @param actions the set of actions to apply to the project
-     * @param monitor a progress monitor, or null if progress reporting and 
-     *   cancellation are not desired
-     * @throws CoreException if anything goes wrong while applying actions
-     */
-    
-    void modify( Set actions,
-                 IProgressMonitor monitor )
-    
-        throws CoreException;
-    
-    /**
-     * Returns the set of fixed project facets for this project. Fixed facets 
-     * cannot be uninstalled, but the installed version can be changed.
-     * 
-     * @return the set of fixed project facets for this project (element type:
-     *   {@see IProjectFacet})
-     */
-    
-    Set getFixedProjectFacets();
-    
-    /**
-     * Sets the set of fixed project facets for this project. Fixed facets 
-     * cannot be uninstalled, but the installed version can be changed.
-     * 
-     * @param facets the set of project facets to mark as fixed (element type:
-     *   {@see IProjectFacet})
-     * @throws CoreException if failed while updating the set of fixed project
-     *   facets
-     */
-
-    void setFixedProjectFacets( Set facets )
-    
-        throws CoreException;
-    
-    /**
-     * 
-     * @deprecated use getTargetRuntimes() and getPrimaryRuntime() instead
-     */
-    
-    IRuntime getRuntime();
-    
-    /**
-     * 
-     * <p>This method should not be called from the UI thread as it is long-
-     * running and may trigger resource change events. Although this framework
-     * is safe, there is no guarantee that other bundles are UI-safe and the
-     * risk of UI deadlock is high.</p>
-     * 
-     * @param monitor a progress monitor, or null if progress reporting and 
-     *   cancellation are not desired
-     * @deprecated use setTargetRuntimes() and setPrimaryRuntime() instead
-     */
-    
-    void setRuntime( IRuntime runtime,
-                     IProgressMonitor monitor )
-    
-        throws CoreException;
-    
-    /**
-     * <p>Returns the set of all runtimes that this project is targeting. When a
-     * project targets a runtime, the set of facets that can be installed is
-     * limited to those supported by that runtime. When a project targets
-     * multiple runtimes, the set of applicable facets is limited to those
-     * supported by all targeted runtimes.</p>
-     * 
-     * @return the set of targeted runtimes (element type: {@see IRuntime})
-     */
-    
-    Set getTargetedRuntimes();
-    
-    /**
-     * <p>Sets the runtimes that this project will target. When a project 
-     * targets a runtime, the set of facets that can be installed is limited to 
-     * those supported by that runtime. When a project targets multiple 
-     * runtimes, the set of applicable facets is limited to those supported by 
-     * all targeted runtimes.<p>
-     * 
-     * <p>If the existing primary runtime is <code>null</code> or is not part of 
-     * the new set of targeted runtimes, the primary runtime will be reset to 
-     * one picked at random from the new set. If the new set is empty, the 
-     * primary runtime will be set to <code>null</code>.</p>
-     * 
-     * <p>This method should not be called from the UI thread as it is long-
-     * running and may trigger resource change events. Although this framework
-     * is safe, there is no guarantee that other bundles are UI-safe and the
-     * risk of UI deadlock is high.</p>
-     * 
-     * @param runtimes the new set of runtimes to target (element type: 
-     *   {@see IRuntime})
-     * @param monitor a progress monitor, or <code>null</code> if progress
-     *   reporting and cancelation are not desired
-     * @throws CoreException if the project contains one or more facets that
-     *   are not supported by all of the new runtimes; if failed for any other 
-     *   reason
-     */
-    
-    void setTargetedRuntimes( Set runtimes,
-                              IProgressMonitor monitor )
-    
-        throws CoreException;
-    
-    /**
-     * <p>Adds a new runtime to the set of runtimes targeted by this project.
-     * If the set of targeted runtimes has been empty prior to this call, this
-     * runtime will become the primary runtime</p>
-     *  
-     * <p>This method should not be called from the UI thread as it is long-
-     * running and may trigger resource change events. Although this framework
-     * is safe, there is no guarantee that other bundles are UI-safe and the
-     * risk of UI deadlock is high.</p>
-     * 
-     * @param runtime the runtime
-     * @param monitor a progress monitor, or <code>null</code> if progress
-     *   reporting and cancelation are not desired
-     * @throws CoreException if the project contains one or more facets that
-     *   are not supported by this runtime; if failed for any other reason
-     */
-    
-    void addTargetedRuntime( IRuntime runtime,
-                             IProgressMonitor monitor )
-    
-        throws CoreException;
-    
-    /**
-     * <p>Removes a runtime from the set of runtimes targeted by this project.
-     * If this runtime has been the primary runtime prior to this call, a new
-     * primary will be automatically assigned (unless the list of target
-     * runtimes becomes empty, in which case the primary runtime will be set
-     * to <code>null</code>).</p>
-     * 
-     * <p>This method should not be called from the UI thread as it is long-
-     * running and may trigger resource change events. Although this framework
-     * is safe, there is no guarantee that other bundles are UI-safe and the
-     * risk of UI deadlock is high.</p>
-     * 
-     * @param runtime the runtime to remove
-     * @param monitor a progress monitor, or <code>null</code> if progress
-     *   reporting and cancelation are not desired
-     * @throws CoreException if failed for any reason
-     */
-    
-    void removeTargetedRuntime( IRuntime runtime,
-                                IProgressMonitor monitor )
-    
-        throws CoreException;
-
-    /**
-     * <p>Returns the primary target runtime for this project. There is always
-     * a primary runtime unless the list of target runtimes is empty.</p>
-     * 
-     * @return the primary runtime, or <code>null</code>
-     */
-    
-    IRuntime getPrimaryRuntime();
-    
-    /**
-     * <p>Sets the primary target runtime for this project. The new primary has
-     * to be one of the runtimes currently targeted by the project.
-     * 
-     * <p>This method should not be called from the UI thread as it is long-
-     * running and may trigger resource change events. Although this framework
-     * is safe, there is no guarantee that other bundles are UI-safe and the
-     * risk of UI deadlock is high.</p>
-     * 
-     * @param runtime the new primary runtime
-     * @param monitor a progress monitor, or <code>null</code> if progress
-     *   reporting and cancelation are not desired
-     * @throws CoreException if the primary runtime is not one of the runtimes
-     *   currently targeted by the project; if failed for any other reason
-     */
-
-    void setPrimaryRuntime( IRuntime runtime,
-                            IProgressMonitor monitor )
-    
-        throws CoreException;
-    
-    IMarker createErrorMarker( String message )
-    
-        throws CoreException;
-    
-    IMarker createErrorMarker( String type,
-                               String message )
-    
-        throws CoreException;
-    
-    IMarker createWarningMarker( String message )
-    
-        throws CoreException;
-    
-    IMarker createWarningMarker( String type,
-                                 String message )
-    
-        throws CoreException;
-    
-    void addListener( IFacetedProjectListener listener );
-    void removeListener( IFacetedProjectListener listener );
-    
-}
diff --git a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/IFacetedProjectListener.java b/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/IFacetedProjectListener.java
deleted file mode 100644
index 45cf67f..0000000
--- a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/IFacetedProjectListener.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/******************************************************************************
- * Copyright (c) 2005 BEA Systems, Inc.
- * 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:
- *    Konstantin Komissarchik - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.wst.common.project.facet.core;
-
-/**
- * <p><i>This class is part of an interim API that is still under development 
- * and expected to change significantly before reaching stability. It is being 
- * made available at this early stage to solicit feedback from pioneering 
- * adopters on the understanding that any code that uses this API will almost 
- * certainly be broken (repeatedly) as the API evolves.</i></p>
- * 
- * @author <a href="mailto:kosta@bea.com">Konstantin Komissarchik</a>
- */
-
-public interface IFacetedProjectListener
-{
-    void projectChanged();
-}
diff --git a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/IFacetedProjectTemplate.java b/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/IFacetedProjectTemplate.java
deleted file mode 100644
index 176f858..0000000
--- a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/IFacetedProjectTemplate.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/******************************************************************************
- * Copyright (c) 2005 BEA Systems, Inc.
- * 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:
- *    Konstantin Komissarchik - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.wst.common.project.facet.core;
-
-import java.util.Set;
-
-/**
- * <p><i>This class is part of an interim API that is still under development 
- * and expected to change significantly before reaching stability. It is being 
- * made available at this early stage to solicit feedback from pioneering 
- * adopters on the understanding that any code that uses this API will almost 
- * certainly be broken (repeatedly) as the API evolves.</i></p>
- * 
- * @author <a href="mailto:kosta@bea.com">Konstantin Komissarchik</a>
- */
-
-public interface IFacetedProjectTemplate
-{
-    String getId();
-    String getLabel();
-    
-    /**
-     * 
-     * @return the set of fixed project facets (element type: 
-     *   {@see IProjectFacet})
-     */
-    
-    Set getFixedProjectFacets();
-    IPreset getInitialPreset();
-}
diff --git a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/IFacetedProjectValidator.java b/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/IFacetedProjectValidator.java
deleted file mode 100644
index 7fad4ab..0000000
--- a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/IFacetedProjectValidator.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/******************************************************************************
- * Copyright (c) 2005 BEA Systems, Inc.
- * 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:
- *    Konstantin Komissarchik - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.wst.common.project.facet.core;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.wst.common.project.facet.core.internal.FacetCorePlugin;
-
-/**
- * <p><i>This class is part of an interim API that is still under development 
- * and expected to change significantly before reaching stability. It is being 
- * made available at this early stage to solicit feedback from pioneering 
- * adopters on the understanding that any code that uses this API will almost 
- * certainly be broken (repeatedly) as the API evolves.</i></p>
- * 
- * @author <a href="mailto:kosta@bea.com">Konstantin Komissarchik</a>
- */
-
-public interface IFacetedProjectValidator
-{
-    /**
-     * The marker type that should be used as the base for all markers reported
-     * by the faceted project validator.
-     */
-    
-    static final String BASE_MARKER_ID
-        = FacetCorePlugin.PLUGIN_ID + ".validation.marker"; //$NON-NLS-1$
-    
-    void validate( IFacetedProject fproj )
-    
-        throws CoreException;
-    
-}
diff --git a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/IGroup.java b/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/IGroup.java
deleted file mode 100644
index 5dd8fc9..0000000
--- a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/IGroup.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/******************************************************************************
- * Copyright (c) 2005 BEA Systems, Inc.
- * 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:
- *    Konstantin Komissarchik - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.wst.common.project.facet.core;
-
-import java.util.Set;
-
-/**
- * A group is a named collection collection of {@see IProjectFacetVersion} 
- * objects. It's used for a variety of purposes including as a parameter to 
- * the "one-of" constraint. A given project facet version can belong to
- * several groups.
- * 
- * <p><i>This class is part of an interim API that is still under development 
- * and expected to change significantly before reaching stability. It is being 
- * made available at this early stage to solicit feedback from pioneering 
- * adopters on the understanding that any code that uses this API will almost 
- * certainly be broken (repeatedly) as the API evolves.</i></p>
- * 
- * @author <a href="mailto:kosta@bea.com">Konstantin Komissarchik</a>
- */
-
-public interface IGroup 
-{
-    /**
-     * Returns the id of this set.
-     * 
-     * @return the id of this set
-     */
-    
-    String getId();
-    
-    /**
-     * Returns the set of member project facets.
-     * 
-     * @return the set of member project facets (element type: {@link 
-     * IProjectFacetVersion})
-     */
-    
-    Set getMembers();
-
-}
diff --git a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/IListener.java b/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/IListener.java
deleted file mode 100644
index 9cef741..0000000
--- a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/IListener.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/******************************************************************************
- * Copyright (c) 2005 BEA Systems, Inc.
- * 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:
- *    Konstantin Komissarchik - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.wst.common.project.facet.core;
-
-/**
- * <p><i>This class is part of an interim API that is still under development 
- * and expected to change significantly before reaching stability. It is being 
- * made available at this early stage to solicit feedback from pioneering 
- * adopters on the understanding that any code that uses this API will almost 
- * certainly be broken (repeatedly) as the API evolves.</i></p>
- * 
- * @author <a href="mailto:kosta@bea.com">Konstantin Komissarchik</a>
- */
-
-public interface IListener
-{
-    void handle();
-}
diff --git a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/IPreset.java b/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/IPreset.java
deleted file mode 100644
index dc58286..0000000
--- a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/IPreset.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/******************************************************************************
- * Copyright (c) 2005 BEA Systems, Inc.
- * 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:
- *    Konstantin Komissarchik - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.wst.common.project.facet.core;
-
-import java.util.Set;
-
-/**
- * A preset is a user convenience mechanism for quickly selecting a predefined 
- * set of project facets. Presets can be defined by plugin writers through the
- * supplied extension point as well as by end users. When a user preset is
- * created, the metadata describing it is stored in the workspace.
- * 
- * <p><i>This class is part of an interim API that is still under development 
- * and expected to change significantly before reaching stability. It is being 
- * made available at this early stage to solicit feedback from pioneering 
- * adopters on the understanding that any code that uses this API will almost 
- * certainly be broken (repeatedly) as the API evolves.</i></p>
- * 
- * @author <a href="mailto:kosta@bea.com">Konstantin Komissarchik</a>
- */
-
-public interface IPreset
-{
-    /**
-     * Returns the id of the preset.
-     * 
-     * @return the id of the preset
-     */
-    
-    String getId();
-
-    /**
-     * Returns the preset label. The label should be used when presenting the
-     * preset to the user.
-     * 
-     * @return the preset label
-     */
-    
-    String getLabel();
-    
-    /**
-     * Returns the description of the preset.
-     * 
-     * @return the description of the preset
-     */
-    
-    String getDescription();
-    
-    /**
-     * Returns the project facets that are part of this preset.
-     * 
-     * @return project facets that are part of this preset (element type: 
-     *   {@link IProjectFacetVersion})
-     */
-
-    Set getProjectFacets();
-    
-    /**
-     * Indicates whether the preset is user defined. A user-defined preset is
-     * stored in the workspace and can be deleted.
-     * 
-     * @return <code>true</code> if the preset is user-defined,
-     *   <code>false</code> otherwise
-     */
-    
-    boolean isUserDefined();
-    
-}
diff --git a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/IProjectFacet.java b/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/IProjectFacet.java
deleted file mode 100644
index 72f738d..0000000
--- a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/IProjectFacet.java
+++ /dev/null
@@ -1,159 +0,0 @@
-/******************************************************************************
- * Copyright (c) 2005 BEA Systems, Inc.
- * 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:
- *    Konstantin Komissarchik - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.wst.common.project.facet.core;
-
-import java.util.Comparator;
-import java.util.List;
-import java.util.Set;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.wst.common.project.facet.core.runtime.IRuntime;
-
-/**
- * Contains metadata that describes a project facet. This interface is not 
- * intended to be implemented by clients.
- * 
- * <p><i>This class is part of an interim API that is still under development 
- * and expected to change significantly before reaching stability. It is being 
- * made available at this early stage to solicit feedback from pioneering 
- * adopters on the understanding that any code that uses this API will almost 
- * certainly be broken (repeatedly) as the API evolves.</i></p>
- * 
- * @author <a href="mailto:kosta@bea.com">Konstantin Komissarchik</a>
- */
-
-public interface IProjectFacet
-
-    extends IAdaptable
-    
-{
-    /**
-     * Returns the project facet identifier. 
-     * 
-     * @return the project facet identifier
-     */
-
-    String getId();
-    
-    /**
-     * Returns the id of the plugin that defines this project facet. This method
-     * will return <code>null</code> if this facet is not defined. 
-     * 
-     * @return the id of the plugin that defines this project facet, or
-     *   <code>null</code>
-     */
-    
-    String getPluginId();
-    
-    /**
-     * Returns the project facet label. The label should be used when presenting
-     * the project facet to the user.
-     * 
-     * @return the project facet label
-     */
-
-    String getLabel();
-    
-    /**
-     * Returns the project facet description.
-     * 
-     * @return the project facet description
-     */
-
-    String getDescription();
-    
-    /**
-     * Returns the category, if any, that this project facet belongs to.
-     * 
-     * @return the category that this project facet belongs to, or 
-     *   <code>null</code>
-     */
-    
-    ICategory getCategory();
-    
-    /**
-     * Returns the descriptors of all versions of this project facet.
-     * 
-     * @return the descriptors of all versions of this project facet (element
-     *   type: {@see IProjectFacetVersion})
-     */
-    
-    Set getVersions();
-    
-    Set getVersions( String expr )
-    
-        throws CoreException;
-    
-    /**
-     * Determines whether the specified project facet version exists.
-     * 
-     * @param version the verson string
-     * @return <code>true</code> if the specified project facet version exists,
-     *   <code>false</code> otherwise
-     */
-    
-    boolean hasVersion( String version );
-    
-    /**
-     * Returns the descriptor of the given project facet version.
-     * 
-     * @param version the version string
-     * @return the descriptor of the given project facet version, or 
-     *   <code>null</code>
-     */
-        
-    IProjectFacetVersion getVersion( String version );
-    
-    /**
-     * Returns the latest version of the project facet as specified by the 
-     * version comparator.
-     * 
-     * @return returns the latest version of the project facet
-     */
-    
-    IProjectFacetVersion getLatestVersion()
-    
-        throws VersionFormatException, CoreException;
-    
-    IProjectFacetVersion getLatestSupportedVersion( IRuntime runtime )
-    
-        throws CoreException;
-
-    /**
-     * Returns a sorted list containing the descriptors of all versions of this 
-     * project facet. 
-     * 
-     * @param ascending whether version descriptors should be sorted in 
-     *   ascending order
-     * @return a sorted list containing the descriptors of all versions of this 
-     *   project facet (element type: {@see IProjectFacetVersion})
-     * @throws VersionFormatException if failed while parsing a version string
-     */
-    
-    List getSortedVersions( boolean ascending )
-    
-        throws VersionFormatException, CoreException;
-    
-    /**
-     * Returns the version comparator specified for this project facet. If no 
-     * version comparator is specified, this method will return an instance of 
-     * the {@see DefaultVersionComparator}.
-     * 
-     * @return the version comparator specified for this project facet
-     */
-    
-    Comparator getVersionComparator()
-    
-        throws CoreException;
-    
-}
diff --git a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/IProjectFacetVersion.java b/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/IProjectFacetVersion.java
deleted file mode 100644
index 56c50ea..0000000
--- a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/IProjectFacetVersion.java
+++ /dev/null
@@ -1,193 +0,0 @@
-/******************************************************************************
- * Copyright (c) 2005, 2006 BEA Systems, Inc.
- * 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:
- *    Konstantin Komissarchik - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.wst.common.project.facet.core;
-
-import java.util.Set;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.wst.common.project.facet.core.IFacetedProject.Action;
-
-/**
- * Contains metadata that describes a specific version of a project facet. This 
- * interface is not intended to be implemented by by clients.
- * 
- * <p><i>This class is part of an interim API that is still under development 
- * and expected to change significantly before reaching stability. It is being 
- * made available at this early stage to solicit feedback from pioneering 
- * adopters on the understanding that any code that uses this API will almost 
- * certainly be broken (repeatedly) as the API evolves.</i></p>
- * 
- * @author <a href="mailto:kosta@bea.com">Konstantin Komissarchik</a>
- */
-
-public interface IProjectFacetVersion
-{
-    /**
-     * Returns the project facet descriptor.
-     * 
-     * @return the project facet descriptor
-     */
-    
-    IProjectFacet getProjectFacet();
-    
-    /**
-     * Returns the version string.
-     * 
-     * @return the version string
-     */
-    
-    String getVersionString();
-    
-    /**
-     * Returns the id of the plugin that defines this project facet version. 
-     * This method will return <code>null</code> if this version is not defined. 
-     * 
-     * @return the id of the plugin that defines this project facet version, or
-     *   <code>null</code>
-     */
-    
-    String getPluginId();
-    
-    /**
-     * Returns the constraint that has to be satisfied prior to installing this
-     * project facet.
-     * 
-     * @return the constraint that has to be satisfied prior to installing this 
-     *   project facet
-     */
-    
-    IConstraint getConstraint();
-    
-    /**
-     * Determines whether this project facet version supports a particular 
-     * action type. For instance, some project facets may not be uninstallable, 
-     * in which case they will not support <code>Action.Type.UNINSTALL</code>.
-     * 
-     * @param base the set of facets currently installed in the project that
-     *   the desired action type would be executed against (element type:
-     *   {@see IProjectFacetVersion})
-     * @param type action type
-     * @return <code>true</code> if and only if this project facet supports the 
-     *   provided action type
-     */
-    
-    boolean supports( Set base,
-                      Action.Type type );
-    
-    /**
-     * Determines whether this project facet version supports a particular 
-     * action type. For instance, some project facets may not be uninstallable, 
-     * in which case they will not support <code>Action.Type.UNINSTALL</code>.
-     * 
-     * @param type action type
-     * @return <code>true</code> if this project facet supports the provided 
-     *   action type, <code>false</code> otherwise
-     * @deprecated use {@link supports( Set, Action.Type)} instead
-     */
-    
-    boolean supports( Action.Type type );
-    
-    /**
-     * Returns all of the action definitions for this project facet version.
-     * 
-     * @return all of the action definitions for this project facet version
-     *   (element type: {@link IActionDefinition})
-     */
-    
-    Set getActionDefinitions();
-    
-    /**
-     * Returns the action definitions corresponding to a particular action type
-     * over this project facet version. For <code>INSTALL</code> and
-     * <code>UNINSTALL</code> action types, this method will return a set of
-     * length 0 or 1. For <code>VERSION_CHANGE</code> action type, the returned
-     * set may contain more than one item as there may exist multiple action
-     * definitions for converting from various versions.
-     * 
-     * @param type action type
-     * @return a set containing action definitions corresponding to a particular
-     *   action type over this project facet version 
-     *   (element type: {@link IActionDefinition})
-     */
-    
-    Set getActionDefinitions( Action.Type type );
-    
-    /**
-     * Returns the action definition corresponding to a particular action type
-     * over this project facet version. The {@link supports( Set, Action.Type )} 
-     * method can be used to check whether the action is supported prior to
-     * calling this method.
-     * 
-     * @param base the set of facets currently installed in the project that
-     *   the desired action type would be executed against (element type:
-     *   {@see IProjectFacetVersion})
-     * @param type action type
-     * @return the action definition corresponding to a particular action type
-     *   over this project facet version
-     * @throws CoreException if this project facet version does not support the
-     *   provided action type
-     */
-    
-    IActionDefinition getActionDefinition( Set base,
-                                           Action.Type type )
-    
-        throws CoreException;
-    
-    /**
-     * Creates a new instance of the config object associated with the specified
-     * action on this facet. Will return <code>null</code> if the action 
-     * requires no config.
-     * 
-     * @param type the type of the action.
-     * @param pjname the name of the project that this action will be executed
-     *   on
-     * @return the action config object, or <code>null</code>
-     * @throws CoreException if this project facet version does not support the
-     *   specified action type or if failed while creating the action config
-     *   object
-     * @deprecated this method will not behave correctly in presence of multiple
-     * action definitions of the same type as can be the case with VERSION_CHANGE
-     * actions; instead use IActionDefinition.createConfigObject()
-     */
-    
-    Object createActionConfig( Action.Type type,
-                               String pjname )
-    
-        throws CoreException;
-    
-    /**
-     * @deprecated this method will not behave correctly in presence of multiple
-     * action definitions of the same type as can be the case with VERSION_CHANGE
-     * actions; instead compare appropriate IActionDefinition objects directly 
-     */
-    
-    boolean isSameActionConfig( Action.Type type,
-                                IProjectFacetVersion fv )
-    
-        throws CoreException;
-    
-    /**
-     * Determines whether this facet version is valid for projects that have
-     * the provided set of fixed facets. The determination is done by checking 
-     * to see whether this facet or any of its dependencies are in conflict with
-     * any of the fixed facets.
-     * 
-     * @param fixed the set of fixed facets (element type: {@see IProjectFacet})
-     * @return <code>true</code> if this facet version is valid for the projects
-     *   that have the provided set of fixed facets
-     */
-    
-    boolean isValidFor( Set fixed );
-    
-    boolean conflictsWith( IProjectFacetVersion fv );
-    
-}
diff --git a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/IRuntimeChangedEvent.java b/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/IRuntimeChangedEvent.java
deleted file mode 100644
index 1410b5e..0000000
--- a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/IRuntimeChangedEvent.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/******************************************************************************
- * Copyright (c) 2006 BEA Systems, Inc.
- * 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:
- *    Konstantin Komissarchik - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.wst.common.project.facet.core;
-
-import org.eclipse.wst.common.project.facet.core.runtime.IRuntime;
-
-/**
- * Describes the runtime changed event to the RUNTIME_CHANGED event handlers.
- * 
- * <p><i>This class is part of an interim API that is still under development 
- * and expected to change significantly before reaching stability. It is being 
- * made available at this early stage to solicit feedback from pioneering 
- * adopters on the understanding that any code that uses this API will almost 
- * certainly be broken (repeatedly) as the API evolves.</i></p>
- * 
- * @author <a href="mailto:kosta@bea.com">Konstantin Komissarchik</a>
- */
-
-public interface IRuntimeChangedEvent
-{
-    /**
-     * Returns the runtime previously associated with the project.
-     * 
-     * @return the runtime previously associated with the project, or
-     *   <code>null</code>
-     */
-    
-    IRuntime getOldRuntime();
-    
-    /**
-     * Returns the runtime that's now associated with the project.
-     * 
-     * @return the runtime that's now associated with the project, or
-     *   <code>null</code>
-     */
-    
-    IRuntime getNewRuntime();
-    
-}
diff --git a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/IVersionExpr.java b/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/IVersionExpr.java
deleted file mode 100644
index f93105a..0000000
--- a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/IVersionExpr.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/******************************************************************************
- * Copyright (c) 2005, 2006 BEA Systems, Inc.
- * 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:
- *    Konstantin Komissarchik - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.wst.common.project.facet.core;
-
-/**
- * The compiled form of a version expression. A version expression is used to
- * specify one or more versions.
- * 
- * @author <a href="mailto:kosta@bea.com">Konstantin Komissarchik</a>
- */
-
-public interface IVersionExpr
-{
-    /**
-     * Evaluates the version expression against the specified version. Returns
-     * <code>true</code> if and only if the version expression matches the
-     * specified version.
-     * 
-     * @param version the version string to check against the version expression
-     * @return <code>true</code> if and only if the version expression matches
-     *   the specified version
-     */
-    
-    boolean evaluate( String version );
-    
-    /**
-     * Returns human-readable form of the version expression that uses
-     * descriptive terms rather than symbols.
-     * 
-     * @return human-readable form of the version expression
-     */
-    
-    String toDisplayString();
-    
-}
diff --git a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/ProjectFacetsManager.java b/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/ProjectFacetsManager.java
deleted file mode 100644
index c731f11..0000000
--- a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/ProjectFacetsManager.java
+++ /dev/null
@@ -1,451 +0,0 @@
-/******************************************************************************
- * Copyright (c) 2005 BEA Systems, Inc.
- * 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:
- *    Konstantin Komissarchik - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.wst.common.project.facet.core;
-
-import java.util.List;
-import java.util.Set;
-
-import org.eclipse.core.resources.IProject;
-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.wst.common.project.facet.core.IFacetedProject.Action;
-import org.eclipse.wst.common.project.facet.core.internal.ProjectFacetsManagerImpl;
-
-/**
- * This is the entry point to the project facet framework API. From here, you 
- * can (among other things) list available project facets and create instances 
- * of {@see IFacetedProject}.
- * 
- * <p><i>This class is part of an interim API that is still under development 
- * and expected to change significantly before reaching stability. It is being 
- * made available at this early stage to solicit feedback from pioneering 
- * adopters on the understanding that any code that uses this API will almost 
- * certainly be broken (repeatedly) as the API evolves.</i></p>
- * 
- * @author <a href="mailto:kosta@bea.com">Konstantin Komissarchik</a>
- */
-
-public final class ProjectFacetsManager 
-{
-    private static ProjectFacetsManagerImpl impl 
-        = FacetedProjectFramework.getProjectFacetsManagerImpl();
-    
-    private ProjectFacetsManager() {}
-    
-    /**
-     * Returns all of the available project facets.
-     * 
-     * @return a set containing all of the available project facets (element 
-     *   type: {@link IProjectFacet})
-     */
-    
-    public static Set getProjectFacets()
-    {
-        return impl.getProjectFacets();
-    }
-
-    /**
-     * Determines whether a given project facet id is recognized.
-     * 
-     * @param id the id of the project facet
-     * @return <code>true</code> if the project facet id is recognized, 
-     *   <code>false</code> otherwise 
-     */
-    
-    public static boolean isProjectFacetDefined( final String id )
-    {
-        return impl.isProjectFacetDefined( id );
-    }
-    
-    /**
-     * Returns the project facet descriptor corresponding to the specified id.
-     * 
-     * @param id the id of the project facet
-     * @return the project facet descriptor
-     * @throws IllegalArgumentException if id is not found
-     */
-    
-    public static IProjectFacet getProjectFacet( final String id )
-    {
-        return impl.getProjectFacet( id );
-    }
-    
-    /**
-     * Returns all of the available project facet action definitions.
-     * 
-     * @return a set containing all of the available project facets action
-     *   definitions (element type: {@link IActionDefinition})
-     */
-    
-    public static Set getActionDefinitions()
-    {
-        return impl.getActionDefinitions();
-    }
-    
-    /**
-     * Determines whether a given project facet action id is recognized.
-     * 
-     * @param id the id of the project facet action
-     * @return <code>true</code> if the project facet action id is recognized, 
-     *   <code>false</code> otherwise 
-     */
-    
-    public static boolean isActionDefined( final String id )
-    {
-        return impl.isActionDefined( id );
-    }
-    
-    /**
-     * Returns the project facet action definition corresponding to the 
-     * specified action id.
-     * 
-     * @param id the id of the project facet action
-     * @return the project facet action definition
-     * @throws IllegalArgumentException if id is not found
-     */
-    
-    public static IActionDefinition getActionDefinition( final String id )
-    {
-        return impl.getActionDefinition( id );
-    }
-
-    /**
-     * Returns all of the categories.
-     * 
-     * @return a set containing all of the categories (element type: {@link 
-     *   ICategory})
-     */
-    
-    public static Set getCategories()
-    {
-        return impl.getCategories();
-    }
-
-    /**
-     * Determines whether a given category id is recognized.
-     * 
-     * @param id the id of the category
-     * @return <code>true</code> if the category id is recognized, 
-     *   <code>false</code> otherwise
-     */
-    
-    public static boolean isCategoryDefined( final String id )
-    {
-        return impl.isCategoryDefined( id );
-    }
-    
-    /**
-     * Returns the category corresponding to the specified id.
-     * 
-     * @param id the id of the category
-     * @return the category
-     * @throws IllegalArgumentException if id is not found
-     */
-    
-    public static ICategory getCategory( final String id )
-    {
-        return impl.getCategory( id );
-    }
-    
-    /**
-     * Returns all of the presets.
-     * 
-     * @return a set conaining all of the presets (element type: 
-     *   {@link IPreset})
-     */
-    
-    public static Set getPresets()
-    {
-        return impl.getPresets();
-    }
-    
-    /**
-     * Determines whether a given preset id is recognized.
-     * 
-     * @param id the preset id
-     * @return <code>true</code> if the preset id is recognized,
-     *   <code>false</code> otherwise
-     */
-    
-    public static boolean isPresetDefined( final String id )
-    {
-        return impl.isPresetDefined( id );
-    }
-    
-    /**
-     * Returns the preset corresponding to the specified id.
-     * 
-     * @param id the preset id
-     * @return the preset
-     * @throws IllegalArgumentException if the preset is not found
-     */
-    
-    public static IPreset getPreset( final String id )
-    {
-        return impl.getPreset( id );
-    }
-    
-    /**
-     * Defines a new preset. User-defined presets are stored in the workspace. 
-     * 
-     * @param name the name of the preset
-     * @param facets the set of project facets that the preset should contain
-     *   (element type: {@see IProjectFacetVersion})
-     * @return the preset
-     */
-    
-    public static IPreset definePreset( final String name,
-                                        final Set facets )
-    {
-        return impl.definePreset( name, facets );
-    }
-    
-    /**
-     * Defines a new preset. User-defined presets are stored in the workspace. 
-     * 
-     * @param name the name of the preset
-     * @param description the description of the preset
-     * @param facets the set of project facets that the preset should contain
-     *   (element type: {@see IProjectFacetVersion})
-     * @return the preset
-     */
-    
-    public static IPreset definePreset( final String name,
-                                        final String description,
-                                        final Set facets )
-    {
-        return impl.definePreset( name, description, facets );
-    }
-
-    /**
-     * Deletes a preset. Note that only user-defined presets can be deleted.
-     * 
-     * @param preset the preset
-     * @return <code>true</code> if the preset was deleted, or 
-     *   <code>false</code> if the preset was not found or was not user-defined 
-     */
-    
-    public static boolean deletePreset( final IPreset preset )
-    {
-        return impl.deletePreset( preset );
-    }
-    
-    /**
-     * Returns all of the faceted project templates.
-     * 
-     * @return a set conaining all of the faceted project templates (element 
-     *   type: {@link IFacetedProjectTemplate})
-     */
-    
-    public static Set getTemplates()
-    {
-        return impl.getTemplates();
-    }
-    
-    /**
-     * Determines whether a given template id is recognized.
-     * 
-     * @param id the template id
-     * @return <code>true</code> if the template id is recognized,
-     *   <code>false</code> otherwise
-     */
-    
-    public static boolean isTemplateDefined( final String id )
-    {
-        return impl.isTemplateDefined( id );
-    }
-    
-    /**
-     * Returns the faceted project template corresponding to the specified id.
-     * 
-     * @param id the template id
-     * @return the faceted project templte
-     * @throws IllegalArgumentException if the template is not found
-     */
-    
-    public static IFacetedProjectTemplate getTemplate( final String id )
-    {
-        return impl.getTemplate( id );
-    }
-    
-    /**
-     * Returns all of the groups.
-     * 
-     * @return a set containing all of the groups (element type: {@link IGroup})
-     */
-    
-    public static Set getGroups()
-    {
-        return impl.getGroups();
-    }
-
-    /**
-     * Determines whether a given group id is recognized.
-     * 
-     * @param id the group id
-     * @return <code>true</code> if the group id is recognized, 
-     *   <code>false</code> otherwise
-     */
-    
-    public static boolean isGroupDefined( final String id )
-    {
-        return impl.isGroupDefined( id );
-    }
-    
-    /**
-     * Returns the group corresponding to the specified id.
-     * 
-     * @param id the group id
-     * @return the group descriptor
-     * @throws IllegalArgumentException if the group id is not found 
-     */
-    
-    public static IGroup getGroup( final String id )
-    {
-        return impl.getGroup( id );
-    }
-    
-    public static Set getFacetedProjects()
-    
-        throws CoreException
-        
-    {
-        return impl.getFacetedProjects();
-    }
-
-    public static Set getFacetedProjects( final IProjectFacet f )
-    
-        throws CoreException
-        
-    {
-        return impl.getFacetedProjects( f );
-    }
-
-    public static Set getFacetedProjects( final IProjectFacetVersion fv )
-    
-        throws CoreException
-        
-    {
-        return impl.getFacetedProjects( fv );
-    }
-    
-    /**
-     * Creates a wrapper around an <code>IProject</code> that exposes API for
-     * manipulating the set of project facets installed on a project.
-     *  
-     * @param project an Eclipse project
-     * @return an instance of {@link IFacetedProject}, or <code>null</code>
-     * @throws CoreException
-     */
-
-    public static IFacetedProject create( final IProject project )
-    
-        throws CoreException
-        
-    {
-        return impl.create( project );
-    }
-    
-    /**
-     * <p>Creates a wrapper around an <code>IProject</code> that exposes API for
-     * manipulating the set of project facets installed on a project. The
-     * project will be made into a faceted project if necessary.</p>
-     * 
-     * <p>This method should not be called from the UI thread as it is long-
-     * running and may trigger resource change events. Although this framework
-     * is safe, there is no guarantee that other bundles are UI-safe and the
-     * risk of UI deadlock is high.</p>
-     *  
-     * @param project an Eclipse project
-     * @param convertIfNecessary whether the project should be converted into a
-     *   faceted project
-     * @param monitor a progress monitor, or null if progress reporting and 
-     *   cancellation are not desired
-     * @return an instance of {@link IFacetedProject}, or <code>null</code>
-     * @throws CoreException
-     */
-
-    public static IFacetedProject create( final IProject project,
-                                          final boolean convertIfNecessary,
-                                          final IProgressMonitor monitor )
-    
-        throws CoreException
-        
-    {
-        return impl.create( project, convertIfNecessary, monitor );
-    }
-
-    /**
-     * <p>Creates a new faceted project.</p>
-     * 
-     * <p>This method should not be called from the UI thread as it is long-
-     * running and may trigger resource change events. Although this framework
-     * is safe, there is no guarantee that other bundles are UI-safe and the
-     * risk of UI deadlock is high.</p>
-
-     * @param name project name
-     * @param location 
-     * @param monitor a progress monitor, or null if progress reporting and 
-     *   cancellation are not desired
-     * @return an instance of {@link IFacetedProject}
-     * @throws CoreException
-     */
-    
-    public static IFacetedProject create( final String name,
-                                          final IPath location,
-                                          final IProgressMonitor monitor )
-    
-        throws CoreException
-        
-    {
-        return impl.create( name, location, monitor );
-    }
-    
-    /**
-     * Checks the validity of applying the specified set of actions to the
-     * specified set of base project facets. Returns the union of all validation
-     * problems that are found.
-     *
-     * @param base the set of project facets that the actions will be applied to
-     *   (element type: {@link IProjectFacetVersion})
-     * @param actions the set of actions to evaluate (element type: {@link 
-     *   Action})
-     * @return a status object with severity of {@see IStatus#OK} if all of the
-     *   constraints were satisfied or otherwise a {@see MultiStatus} composed
-     *   of {@see ValidationProblem} status objects
-     */
-    
-    public static IStatus check( final Set base,
-                                 final Set actions )
-    {
-        return impl.check( base, actions );
-    }
-    
-    /**
-     * Sorts actions in the order that they should be applied to a project such
-     * that project facet constraints are not violated.
-     * 
-     * @param base the set of project facets that the actions will be applied to
-     *   (element type: {@link IProjectFacetVersion})
-     * @param actions the list of actions to sort (element type: {@link 
-     *   Action}); this list will be modified
-     */
-    
-    public static void sort( final Set base,
-                             final List actions )
-    {
-        impl.sort( base, actions );
-    }
-    
-}
diff --git a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/VersionFormatException.java b/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/VersionFormatException.java
deleted file mode 100644
index 2d5c1fa..0000000
--- a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/VersionFormatException.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/******************************************************************************
- * Copyright (c) 2005 BEA Systems, Inc.
- * 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:
- *    Konstantin Komissarchik - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.wst.common.project.facet.core;
-
-import org.eclipse.osgi.util.NLS;
-
-/**
- * The exception that's thrown when version string cannot be parsed.
- * 
- * <p><i>This class is part of an interim API that is still under development 
- * and expected to change significantly before reaching stability. It is being 
- * made available at this early stage to solicit feedback from pioneering 
- * adopters on the understanding that any code that uses this API will almost 
- * certainly be broken (repeatedly) as the API evolves.</i></p>
- * 
- * @author <a href="mailto:kosta@bea.com">Konstantin Komissarchik</a>
- */
-
-public class VersionFormatException 
-    
-    extends RuntimeException 
-    
-{
-    private static final long serialVersionUID = 1L;
-    
-    private final Object comparator;
-    private final String version;
-    
-    public VersionFormatException( final Object comparator,
-                                   final String version )
-    {
-        this.comparator = comparator;
-        this.version = version;
-    }
-    
-    public Object getComparator()
-    {
-        return this.comparator;
-    }
-    
-    public String getVersion()
-    {
-        return this.version;
-    }
-    
-    public String getMessage()
-    {
-        return NLS.bind( Resources.couldNotParse, this.version,
-                         this.comparator.getClass().getName() );
-    }
-    
-    private static final class Resources
-    
-        extends NLS
-        
-    {
-        public static String couldNotParse;
-        
-        static
-        {
-            initializeMessages( VersionFormatException.class.getName(), 
-                                Resources.class );
-        }
-    }
-
-}
diff --git a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/VersionFormatException.properties b/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/VersionFormatException.properties
deleted file mode 100644
index 4979d82..0000000
--- a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/VersionFormatException.properties
+++ /dev/null
@@ -1 +0,0 @@
-couldNotParse = Could not parse "{0}" with {1}.
diff --git a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/ActionDefinition.java b/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/ActionDefinition.java
deleted file mode 100644
index 1480d06..0000000
--- a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/ActionDefinition.java
+++ /dev/null
@@ -1,192 +0,0 @@
-/******************************************************************************
- * Copyright (c) 2005, 2006 BEA Systems, Inc.
- * 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:
- *    Konstantin Komissarchik - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.wst.common.project.facet.core.internal;
-
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IAdapterManager;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.wst.common.project.facet.core.IActionConfig;
-import org.eclipse.wst.common.project.facet.core.IActionConfigFactory;
-import org.eclipse.wst.common.project.facet.core.IActionDefinition;
-import org.eclipse.wst.common.project.facet.core.IDelegate;
-import org.eclipse.wst.common.project.facet.core.IProjectFacet;
-import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion;
-import org.eclipse.wst.common.project.facet.core.IVersionExpr;
-import org.eclipse.wst.common.project.facet.core.IFacetedProject.Action;
-
-/**
- * The implementation of the <code>IActionDefinition</code> interface.
- * 
- * @author <a href="mailto:kosta@bea.com">Konstantin Komissarchik</a>
- */
-
-public final class ActionDefinition
-
-    implements IActionDefinition
-    
-{
-    private String id;
-    private String pluginId;
-    private IProjectFacet facet;
-    private IVersionExpr versionMatchExpr;
-    private Action.Type type;
-    private final Map properties = new HashMap();
-    private final Map propertiesReadOnly = Collections.unmodifiableMap( this.properties );
-    private String delegateClassName;
-    private IDelegate delegate = null;
-    private String configFactoryClassName;
-    
-    public String getId()
-    {
-        return this.id;
-    }
-    
-    void setId( final String id )
-    {
-        this.id = id;
-    }
-    
-    void setPluginId( final String pluginId )
-    {
-        this.pluginId = pluginId;
-    }
-    
-    public IProjectFacet getProjectFacet()
-    {
-        return this.facet;
-    }
-    
-    void setProjectFacet( final IProjectFacet facet )
-    {
-        this.facet = facet;
-    }
-    
-    public IVersionExpr getVersionExpr()
-    {
-        return this.versionMatchExpr;
-    }
-    
-    void setVersionExpr( final IVersionExpr expr )
-    {
-        this.versionMatchExpr = expr;
-    }
-    
-    public Action.Type getActionType()
-    {
-        return this.type;
-    }
-    
-    void setActionType( final Action.Type type )
-    {
-        this.type = type;
-    }
-    
-    public Map getProperties()
-    {
-        return this.propertiesReadOnly;
-    }
-    
-    void setProperty( final String name,
-                      final Object value )
-    {
-        this.properties.put( name, value );
-    }
-    
-    public Object getProperty( final String name )
-    {
-        return this.properties.get( name );
-    }
-    
-    public Object createConfigObject( final IProjectFacetVersion fv,
-                                      final String pjname )
-    
-        throws CoreException
-        
-    {
-        if( this.configFactoryClassName == null )
-        {
-            return null;
-        }
-        else
-        {
-            final Object factory 
-                = FacetCorePlugin.instantiate( this.pluginId, 
-                                               this.configFactoryClassName, 
-                                               IActionConfigFactory.class );
-            
-            final Object config = ( (IActionConfigFactory) factory ).create();
-            
-            IActionConfig cfg = null;
-            
-            if( config instanceof IActionConfig )
-            {
-                cfg = (IActionConfig) config;
-            }
-            else
-            {
-                final IAdapterManager m = Platform.getAdapterManager();
-                cfg = (IActionConfig) m.loadAdapter( config, IActionConfig.class.getName() );
-            }
-            
-            if( cfg != null )
-            {
-                cfg.setVersion( fv );
-                cfg.setProjectName( pjname );
-            }
-            
-            return config;
-        }
-    }
-    
-    String getDelegateClassName()
-    {
-        return this.delegateClassName;
-    }
-    
-    void setDelegateClassName( final String delegateClassName )
-    {
-        this.delegateClassName = delegateClassName;
-    }
-    
-    IDelegate getDelegate()
-    
-        throws CoreException
-        
-    {
-        if( this.delegate == null )
-        {
-            final Object obj 
-                = FacetCorePlugin.instantiate( this.pluginId, 
-                                               this.delegateClassName, 
-                                               IDelegate.class );
-            
-            this.delegate = (IDelegate) obj;
-        }
-        
-        return this.delegate;
-    }
-    
-    String getConfigFactoryClassName()
-    {
-        return this.configFactoryClassName;
-    }
-    
-    void setConfigFactoryClassName( final String configFactoryClassName )
-    {
-        this.configFactoryClassName = configFactoryClassName;
-    }
-    
-}
\ No newline at end of file
diff --git a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/BasicFacetedProjectValidator.java b/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/BasicFacetedProjectValidator.java
deleted file mode 100644
index 5010337..0000000
--- a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/BasicFacetedProjectValidator.java
+++ /dev/null
@@ -1,121 +0,0 @@
-/******************************************************************************
- * Copyright (c) 2005 BEA Systems, Inc.
- * 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:
- *    Konstantin Komissarchik - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.wst.common.project.facet.core.internal;
-
-import java.util.Iterator;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.wst.common.project.facet.core.IFacetedProject;
-import org.eclipse.wst.common.project.facet.core.IFacetedProjectValidator;
-import org.eclipse.wst.common.project.facet.core.IProjectFacet;
-import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion;
-import org.eclipse.wst.common.project.facet.core.runtime.IRuntime;
-import org.eclipse.wst.common.project.facet.core.runtime.internal.UnknownRuntime;
-
-/**
- * @author <a href="mailto:kosta@bea.com">Konstantin Komissarchik</a>
- */
-
-public final class BasicFacetedProjectValidator
-
-    implements IFacetedProjectValidator
-    
-{
-    public void validate( final IFacetedProject fproj ) 
-    
-        throws CoreException
-        
-    {
-        // Are any of the target runtimes not defined?
-        
-        for( Iterator itr1 = fproj.getTargetedRuntimes().iterator();
-             itr1.hasNext(); )
-        {
-            final IRuntime r = (IRuntime) itr1.next();
-            
-            if( r instanceof UnknownRuntime )
-            {
-                final String msg
-                    = NLS.bind( Resources.runtimeNotDefined, r.getName() );
-                
-                fproj.createErrorMarker( msg );
-            }
-        }
-        
-        // Is an installed facet not supported by the runtime?
-        
-        for( Iterator itr1 = fproj.getTargetedRuntimes().iterator();
-             itr1.hasNext(); )
-        {
-            final IRuntime r = (IRuntime) itr1.next();
-            
-            for( Iterator itr2 = fproj.getProjectFacets().iterator(); 
-                 itr2.hasNext(); )
-            {
-                final IProjectFacetVersion fv 
-                    = (IProjectFacetVersion) itr2.next();
-                
-                if( ! r.supports( fv ) )
-                {
-                    final String msg
-                        = NLS.bind( Resources.facetNotSupported, fv.toString(), 
-                                    r.getName() );
-                    
-                    fproj.createErrorMarker( msg );
-                }
-            }
-        }
-        
-        // Does the project contain any unknown facets or versions?
-        
-        for( Iterator itr = fproj.getProjectFacets().iterator(); itr.hasNext(); )
-        {
-            final IProjectFacetVersion fv = (IProjectFacetVersion) itr.next();
-            final IProjectFacet f = fv.getProjectFacet();
-            
-            if( f.getPluginId() == null )
-            {
-                final String msg 
-                    = NLS.bind( Resources.facetNotFound, f.getId() );
-                
-                fproj.createWarningMarker( msg );
-            }
-            else if( fv.getPluginId() == null )
-            {
-                final String msg
-                    = NLS.bind( Resources.facetVersionNotFound, f.getId(),
-                                fv.getVersionString() );
-                
-                fproj.createWarningMarker( msg );
-            }
-        }
-    }
-    
-    private static final class Resources
-    
-        extends NLS
-        
-    {
-        public static String runtimeNotDefined;
-        public static String facetNotSupported;
-        public static String facetNotFound;
-        public static String facetVersionNotFound;
-        
-        static
-        {
-            initializeMessages( BasicFacetedProjectValidator.class.getName(), 
-                                Resources.class );
-        }
-    }
-
-}
diff --git a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/BasicFacetedProjectValidator.properties b/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/BasicFacetedProjectValidator.properties
deleted file mode 100644
index c6511af..0000000
--- a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/BasicFacetedProjectValidator.properties
+++ /dev/null
@@ -1,4 +0,0 @@
-runtimeNotDefined = Target runtime {0} is not defined.
-facetNotSupported = Project facet {0} is not supported by target runtime {1}.
-facetNotFound = Implementation of project facet {0} could not be found. Functionality will be limited.
-facetVersionNotFound = Implementation of version {1} of project facet {0} could not be found. Functionality will be limited.
diff --git a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/Category.java b/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/Category.java
deleted file mode 100644
index b3a327b..0000000
--- a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/Category.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/******************************************************************************
- * Copyright (c) 2005 BEA Systems, Inc.
- * 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:
- *    Konstantin Komissarchik - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.wst.common.project.facet.core.internal;
-
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Set;
-
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.wst.common.project.facet.core.ICategory;
-import org.eclipse.wst.common.project.facet.core.IProjectFacet;
-
-/**
- * @author <a href="mailto:kosta@bea.com">Konstantin Komissarchik</a>
- */
-
-public final class Category 
-
-    implements ICategory 
-    
-{
-    private String id = null;
-    private String plugin = null;
-    private String label = null;
-    private String description = null;
-    private HashSet facets = new HashSet();
-    private Set facetsReadOnly = Collections.unmodifiableSet( this.facets );
-    
-    Category() {}
-    
-    public String getId() 
-    {
-        return this.id;
-    }
-    
-    void setId( final String id )
-    {
-        this.id = id;
-    }
-    
-    public String getPluginId()
-    {
-        return this.plugin;
-    }
-    
-    void setPluginId( final String plugin )
-    {
-        this.plugin = plugin;
-    }
-    
-    public String getLabel() 
-    {
-        return this.label;
-    }
-    
-    void setLabel( final String label )
-    {
-        this.label = label;
-    }
-
-    public String getDescription() 
-    {
-        return this.description;
-    }
-    
-    void setDescription( final String description )
-    {
-        this.description = description;
-    }
-    
-    public Set getProjectFacets()
-    {
-        return this.facetsReadOnly;
-    }
-    
-    void addProjectFacet( final IProjectFacet f )
-    {
-        this.facets.add( f );
-    }
-    
-    public Object getAdapter( final Class type )
-    {
-        return Platform.getAdapterManager().loadAdapter( this, type.getName() );
-    }
-    
-    public String toString()
-    {
-        return this.label;
-    }
-
-}
diff --git a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/Constraint.java b/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/Constraint.java
deleted file mode 100644
index 466b53f..0000000
--- a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/Constraint.java
+++ /dev/null
@@ -1,314 +0,0 @@
-/******************************************************************************
- * Copyright (c) 2005 - 2006 BEA Systems, Inc.
- * 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:
- *    Konstantin Komissarchik - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.wst.common.project.facet.core.internal;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.MultiStatus;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.wst.common.project.facet.core.IConstraint;
-import org.eclipse.wst.common.project.facet.core.IGroup;
-import org.eclipse.wst.common.project.facet.core.IProjectFacet;
-import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion;
-
-/**
- * @author <a href="mailto:kosta@bea.com">Konstantin Komissarchik</a>
- */
-
-public final class Constraint
-
-    implements IConstraint
-    
-{
-    private final IProjectFacetVersion fv;
-    private final Type type;
-    private final List operands;
-    
-    Constraint( final IProjectFacetVersion fv,
-                final Type type,
-                final Object[] operands )
-    {
-        this.fv = fv;
-        this.type = type;
-        
-        final ArrayList temp = new ArrayList();
-        
-        for( int i = 0; i < operands.length; i++ )
-        {
-            temp.add( operands[ i ] );
-        }
-        
-        this.operands = Collections.unmodifiableList( temp );
-    }
-    
-    public Type getType()
-    {
-        return this.type;
-    }
-    
-    public List getOperands()
-    {
-        return this.operands;
-    }
-    
-    public Object getOperand( final int index )
-    {
-        return this.operands.get( index );
-    }
-    
-    public IStatus check( final Collection facets )
-    {
-        return check( facets, false );
-    }
-    
-    public IStatus check( final Collection facets,
-                          final boolean validateSoftDeps )
-    {
-        final MultiStatus result = createMultiStatus(); 
-        
-        if( this.type == Type.AND )
-        {
-            for( Iterator itr = this.operands.iterator(); itr.hasNext(); )
-            {
-                final IConstraint operand 
-                    = (IConstraint) itr.next();
-                
-                final IStatus st = operand.check( facets, validateSoftDeps );
-                
-                if( st.getSeverity() != IStatus.OK )
-                {
-                    result.addAll( st );
-                }
-            }
-        }
-        else if( this.type == Type.OR )
-        {
-            boolean someBranchWorks = false;
-            
-            for( Iterator itr = this.operands.iterator(); itr.hasNext();  )
-            {
-                final IConstraint operand
-                    = (IConstraint) itr.next();
-                
-                if( operand.check( facets, validateSoftDeps ).isOK() )
-                {
-                    someBranchWorks = true;
-                    break;
-                }
-            }
-            
-            if( ! someBranchWorks )
-            {
-                ValidationProblem p = null;
-                
-                if( this.operands.size() == 2 && containsOnlyRequires() )
-                {
-                    final ProjectFacetRef[] frefs = new ProjectFacetRef[ 2 ];
-                    
-                    for( int i = 0; i < 2; i++ )
-                    {
-                        final IConstraint c 
-                            = (IConstraint) this.operands.get( i );
-                        
-                        final IProjectFacet rf 
-                            = (IProjectFacet) c.getOperand( 0 );
-
-                        final VersionExpr vexpr 
-                            = (VersionExpr) c.getOperand( 1 );
-                        
-                        frefs[ i ] = new ProjectFacetRef( rf, vexpr );
-                    }
-                    
-                    p = new ValidationProblem( ValidationProblem.Type.REQUIRES_ONE_OF_TWO,
-                                               this.fv, frefs[ 0 ], 
-                                               frefs[ 1 ] );
-                }
-                
-                if( p == null )
-                {
-                    p = new ValidationProblem( ValidationProblem.Type.COMPLEX,
-                                               this.fv );
-                }
-                
-                result.add( p );
-            }
-        }
-        else if( this.type == Type.REQUIRES )
-        {
-            final IProjectFacet rf = (IProjectFacet) this.operands.get( 0 );
-            final VersionExpr vexpr = (VersionExpr) this.operands.get( 1 );
-            
-            final boolean soft
-                = ( (Boolean) this.operands.get( 2 ) ).booleanValue();
-            
-            if( ! soft || validateSoftDeps )
-            {
-                boolean found = false;
-                
-                for( Iterator itr = facets.iterator(); itr.hasNext(); )
-                {
-                    final IProjectFacetVersion fv 
-                        = (IProjectFacetVersion) itr.next();
-                    
-                    if( fv.getProjectFacet() == rf )
-                    {
-                        try
-                        {
-                            if( vexpr.evaluate( (IVersion) fv ) )
-                            {
-                                found = true;
-                            }
-                        }
-                        catch( CoreException e )
-                        {
-                            FacetCorePlugin.log( e );
-                        }
-                        
-                        break;
-                    }
-                }
-                
-                if( ! found )
-                {
-                    final ValidationProblem.Type ptype 
-                        = ValidationProblem.Type.REQUIRES;
-                    
-                    final ProjectFacetRef fref 
-                        = new ProjectFacetRef( rf, vexpr );
-                    
-                    final ValidationProblem problem
-                        = new ValidationProblem( ptype, this.fv, fref ); 
-                    
-                    result.add( problem );
-                }
-            }
-        }
-        else if( this.type == Type.CONFLICTS )
-        {
-            final Object firstOperand = this.operands.get( 0 );
-            
-            if( firstOperand instanceof IGroup )
-            {
-                final IGroup group = (IGroup) firstOperand;
-            
-                for( Iterator itr = group.getMembers().iterator(); 
-                     itr.hasNext(); )
-                {
-                    final IProjectFacetVersion member
-                        = (IProjectFacetVersion) itr.next();
-                    
-                    if( member.getProjectFacet() != this.fv.getProjectFacet() && 
-                        facets.contains( member ) )
-                    {
-                        final ValidationProblem.Type t 
-                            = ValidationProblem.Type.CONFLICTS;
-                                
-                        final ValidationProblem problem
-                            = new ValidationProblem( t, this.fv, member );
-                        
-                        result.add( problem );
-                    }
-                }
-            }
-            else
-            {
-                final IProjectFacet f = (IProjectFacet) firstOperand;
-                
-                final VersionExpr vexpr
-                    = this.operands.size() == 2 
-                      ? (VersionExpr) this.operands.get( 1 ) : null;
-                      
-                for( Iterator itr = facets.iterator(); itr.hasNext(); )
-                {
-                    final IProjectFacetVersion fver 
-                        = (IProjectFacetVersion) itr.next();
-                    
-                    if( fver.getProjectFacet() == f )
-                    {
-                        try
-                        {
-                            if( vexpr == null 
-                                || vexpr.evaluate( (IVersion) fver ) )
-                            {
-                                final ValidationProblem.Type t 
-                                    = ValidationProblem.Type.CONFLICTS;
-                                        
-                                final ValidationProblem problem
-                                    = new ValidationProblem( t, this.fv, fver );
-                                
-                                result.add( problem );
-                                
-                                break;
-                            }
-                        }
-                        catch( CoreException e )
-                        {
-                            FacetCorePlugin.log( e );
-                            break;
-                        }
-                    }
-                }
-            }
-        }
-        else
-        {
-            throw new IllegalStateException();
-        }
-        
-        return result;
-    }
-    
-    private boolean containsOnlyRequires()
-    {
-        for( Iterator itr = this.operands.iterator(); itr.hasNext(); )
-        {
-            if( ( (IConstraint) itr.next() ).getType() != Type.REQUIRES )
-            {
-                return false;
-            }
-        }
-        
-        return true;
-    }
-    
-    static MultiStatus createMultiStatus()
-    {
-        return createMultiStatus( new IStatus[ 0 ] );
-    }
-
-    static MultiStatus createMultiStatus( final IStatus[] children )
-    {
-        return new MultiStatus( FacetCorePlugin.PLUGIN_ID, 0, children, 
-                                Resources.validationProblems, null );
-    }
-
-    private static final class Resources
-    
-        extends NLS
-        
-    {
-        public static String validationProblems;
-        
-        static
-        {
-            initializeMessages( Constraint.class.getName(), 
-                                Resources.class );
-        }
-    }
-    
-}
diff --git a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/Constraint.properties b/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/Constraint.properties
deleted file mode 100644
index 9b2f33c..0000000
--- a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/Constraint.properties
+++ /dev/null
@@ -1 +0,0 @@
-validationProblems = One or more constraints have not been satisfied.
\ No newline at end of file
diff --git a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/CopyOnWriteSet.java b/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/CopyOnWriteSet.java
deleted file mode 100644
index ca26fc4..0000000
--- a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/CopyOnWriteSet.java
+++ /dev/null
@@ -1,154 +0,0 @@
-/******************************************************************************
- * Copyright (c) 2005 BEA Systems, Inc.
- * 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:
- *    Konstantin Komissarchik - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.wst.common.project.facet.core.internal;
-
-import java.util.AbstractSet;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Set;
-
-/**
- * @author <a href="mailto:kosta@bea.com">Konstantin Komissarchik</a>
- */
-
-public final class CopyOnWriteSet
-
-    extends AbstractSet
-    
-{
-    private Set base;
-    private Set baseReadOnly;
-    
-    public CopyOnWriteSet()
-    {
-        this.base = new HashSet();
-        this.baseReadOnly = null;
-    }
-    
-    public boolean add( final Object obj )
-    {
-        copy();
-        return this.base.add( obj );
-    }
-
-    public boolean addAll( final Collection collection )
-    {
-        copy();
-        return this.base.addAll( collection );
-    }
-    
-    public boolean remove( final Object obj )
-    {
-        copy();
-        return this.base.remove( obj );
-    }
-    
-    public boolean removeAll( final Collection collection )
-    {
-        copy();
-        return this.base.removeAll( collection );
-    }
-
-    public boolean retainAll( final Collection collection )
-    {
-        copy();
-        return this.base.retainAll( collection );
-    }
-    
-    public void clear()
-    {
-        if( this.baseReadOnly != null )
-        {
-            this.base = new HashSet();
-            this.baseReadOnly = null;
-        }
-        else
-        {
-            this.base.clear();
-        }
-    }
-
-    public int size()
-    {
-        return this.base.size();
-    }
-
-    public Iterator iterator()
-    {
-        return new CopyOnWriteIterator( this.base.iterator() );
-    }
-    
-    public Set getReadOnlySet()
-    {
-        if( this.baseReadOnly == null )
-        {
-            this.baseReadOnly = Collections.unmodifiableSet( this.base );
-        }
-        
-        return this.baseReadOnly;
-    }
-    
-    private boolean copy()
-    {
-        if( this.baseReadOnly != null )
-        {
-            this.base = new HashSet( this.base );
-            this.baseReadOnly = null;
-            return true;
-        }
-        else
-        {
-            return false;
-        }
-    }
-    
-    private final class CopyOnWriteIterator
-    
-        implements Iterator
-        
-    {
-        private final Iterator itr;
-        private Object current;
-        
-        public CopyOnWriteIterator( final Iterator itr )
-        {
-            this.itr = itr;
-            this.current = null;
-        }
-        
-        public void remove()
-        {
-            if( copy() )
-            {
-                CopyOnWriteSet.this.base.remove( this.current );
-            }
-            else
-            {
-                this.itr.remove();
-            }
-        }
-
-        public boolean hasNext()
-        {
-            return this.itr.hasNext();
-        }
-
-        public Object next()
-        {
-            this.current = this.itr.next();
-            return this.current;
-        }
-    }
-
-}
diff --git a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/EventHandler.java b/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/EventHandler.java
deleted file mode 100644
index 039dd92..0000000
--- a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/EventHandler.java
+++ /dev/null
@@ -1,154 +0,0 @@
-/******************************************************************************
- * Copyright (c) 2006 BEA Systems, Inc.
- * 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:
- *    Konstantin Komissarchik - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.wst.common.project.facet.core.internal;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.wst.common.project.facet.core.IDelegate;
-import org.eclipse.wst.common.project.facet.core.IProjectFacet;
-
-/**
- * Describes a single faceted project event handler registered via the
- * <code>org.eclipse.wst.common.project.facet.core.facets</code> extension
- * point.
- * 
- * @author <a href="mailto:kosta@bea.com">Konstantin Komissarchik</a>
- */
-
-public final class EventHandler
-{
-    public static final class Type
-    {
-        private static final Map items = new HashMap();
-
-        public static final Type PRE_INSTALL 
-            = new Type( "PRE_INSTALL" ); //$NON-NLS-1$
-        
-        public static final Type POST_INSTALL 
-            = new Type( "POST_INSTALL" ); //$NON-NLS-1$
-        
-        public static final Type PRE_UNINSTALL 
-            = new Type( "PRE_UNINSTALL" ); //$NON-NLS-1$
-        
-        public static final Type POST_UNINSTALL 
-            = new Type( "POST_UNINSTALL" ); //$NON-NLS-1$
-        
-        public static final Type PRE_VERSION_CHANGE
-            = new Type( "PRE_VERSION_CHANGE" ); //$NON-NLS-1$
-        
-        public static final Type POST_VERSION_CHANGE
-            = new Type( "POST_VERSION_CHANGE" ); //$NON-NLS-1$
-        
-        public static final Type RUNTIME_CHANGED
-            = new Type( "RUNTIME_CHANGED" ); //$NON-NLS-1$
-        
-        private final String name;
-        
-        private Type( final String name )
-        {
-            this.name = name;
-            items.put( name, this );
-        }
-        
-        public static Type valueOf( final String name )
-        {
-            return (Type) items.get( name );
-        }
-        
-        public String name()
-        {
-            return this.name;
-        }
-        
-        public String toString()
-        {
-            return this.name;
-        }
-    }
-    
-    private IProjectFacet facet;
-    private VersionExpr vexpr;
-    private Type type;
-    private String pluginId;
-    private Object delegate;
-    
-    EventHandler() {}
-    
-    IProjectFacet getProjectFacet()
-    {
-        return this.facet;
-    }
-    
-    void setProjectFacet( final IProjectFacet facet )
-    {
-        this.facet = facet;
-    }
-    
-    VersionExpr getVersionExpr()
-    {
-        return this.vexpr;
-    }
-    
-    void setVersionExpr( final VersionExpr vexpr )
-    {
-        this.vexpr = vexpr;
-    }
-    
-    Type getType()
-    {
-        return this.type;
-    }
-    
-    void setType( final Type type )
-    {
-        this.type = type;
-    }
-    
-    String getPluginId()
-    {
-        return this.pluginId;
-    }
-    
-    void setPluginId( final String pluginId )
-    {
-        this.pluginId = pluginId;
-    }
-    
-    boolean hasDelegate()
-    {
-        return ( this.delegate != null );
-    }
-    
-    IDelegate getDelegate()
-        
-        throws CoreException
-        
-    {
-        if( this.delegate instanceof String )
-        {
-            this.delegate 
-                = FacetCorePlugin.instantiate( this.pluginId, 
-                                               (String) this.delegate, 
-                                               IDelegate.class );
-        }
-        
-        return (IDelegate) this.delegate;
-    }
-    
-    void setDelegate( final String className )
-    {
-        this.delegate = className;
-    }
-    
-}
diff --git a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/FacetCorePlugin.java b/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/FacetCorePlugin.java
deleted file mode 100644
index bab8521..0000000
--- a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/FacetCorePlugin.java
+++ /dev/null
@@ -1,177 +0,0 @@
-/******************************************************************************
- * Copyright (c) 2005, 2006 BEA Systems, Inc.
- * 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:
- *    Konstantin Komissarchik - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.wst.common.project.facet.core.internal;
-
-import java.util.HashSet;
-import java.util.Set;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.ILog;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.wst.common.project.facet.core.FacetedProjectFramework;
-import org.osgi.framework.Bundle;
-
-/**
- * @author <a href="mailto:kosta@bea.com">Konstantin Komissarchik</a>
- */
-
-public final class FacetCorePlugin 
-{
-    public static final String PLUGIN_ID = FacetedProjectFramework.PLUGIN_ID;
-    
-    private static final String TRACING_ACTION_SORTING
-        = PLUGIN_ID + "/actionSorting"; //$NON-NLS-1$
-
-    private static final String TRACING_FRAMEWORK_ACTIVATION
-        = PLUGIN_ID + "/activation"; //$NON-NLS-1$
-    
-    private static final Set messagesLogged = new HashSet();
-    
-    private static final ILog platformLog
-        = Platform.getLog( Platform.getBundle( PLUGIN_ID ) );
-    
-    public static boolean isTracingActionSorting()
-    {
-        return checkDebugOption( TRACING_ACTION_SORTING );
-    }
-    
-    public static boolean isTracingFrameworkActivation()
-    {
-        return checkDebugOption( TRACING_FRAMEWORK_ACTIVATION );
-    }
-    
-    private static boolean checkDebugOption( final String debugOption )
-    {
-        final String optionValue = Platform.getDebugOption( debugOption );
-        
-        return optionValue == null 
-               ? false : Boolean.valueOf( optionValue ).equals( Boolean.TRUE );
-    }
-    
-    public static void log( final Exception e )
-    {
-        final String msg = e.getMessage() + ""; //$NON-NLS-1$
-        log( new Status( IStatus.ERROR, PLUGIN_ID, IStatus.OK, msg, e ) );
-    }
-
-    public static void log( final IStatus status )
-    {
-        platformLog.log( status );
-    }
-    
-    public static void log( final String msg )
-    {
-        log( new Status( IStatus.ERROR, PLUGIN_ID, IStatus.OK, msg, null ) );
-    }
-    
-    public static void logError( final String msg )
-    {
-        logError( msg, false );
-    }
-    
-    public static void logError( final String msg,
-                                 final boolean suppressDuplicates )
-    {
-        if( suppressDuplicates && messagesLogged.contains( msg ) )
-        {
-            return;
-        }
-        
-        messagesLogged.add( msg );
-        
-        log( new Status( IStatus.ERROR, PLUGIN_ID, IStatus.OK, msg, null ) );
-    }
-
-    public static void logWarning( final String msg )
-    {
-        logWarning( msg, false );
-    }
-    
-    public static void logWarning( final String msg,
-                                   final boolean suppressDuplicates )
-    {
-        if( suppressDuplicates && messagesLogged.contains( msg ) )
-        {
-            return;
-        }
-        
-        messagesLogged.add( msg );
-        
-        log( new Status( IStatus.WARNING, PLUGIN_ID, IStatus.OK, msg, null ) );
-    }
-    
-    public static IStatus createErrorStatus( final String msg )
-    {
-        return createErrorStatus( msg, null );
-    }
-
-    public static IStatus createErrorStatus( final String msg,
-                                             final Exception e )
-    {
-        return new Status( IStatus.ERROR, FacetCorePlugin.PLUGIN_ID, 0, msg, e );
-    }
-    
-    public static Object instantiate( final String pluginId,
-                                      final String clname,
-                                      final Class interfc )
-    
-        throws CoreException
-        
-    {
-        final Bundle bundle = Platform.getBundle( pluginId );
-        
-        final Object obj;
-        
-        try
-        {
-            final Class cl = bundle.loadClass( clname );
-            obj = cl.newInstance();
-        }
-        catch( Exception e )
-        {
-            final String msg
-                = NLS.bind( Resources.failedToCreate, clname );
-            
-            throw new CoreException( createErrorStatus( msg, e ) );
-        }
-        
-        if( ! interfc.isAssignableFrom( obj.getClass() ) )
-        {
-            final String msg
-                = NLS.bind( Resources.doesNotImplement, clname, 
-                            interfc.getClass().getName() );
-            
-            throw new CoreException( createErrorStatus( msg ) );
-        }
-        
-        return obj;
-    }
-    
-    private static final class Resources
-    
-        extends NLS
-        
-    {
-        public static String failedToCreate;
-        public static String doesNotImplement;
-        
-        static
-        {
-            initializeMessages( FacetCorePlugin.class.getName(), 
-                                Resources.class );
-        }
-    }
-    
-}
diff --git a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/FacetCorePlugin.properties b/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/FacetCorePlugin.properties
deleted file mode 100644
index a252b6c..0000000
--- a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/FacetCorePlugin.properties
+++ /dev/null
@@ -1,2 +0,0 @@
-failedToCreate = Failed to instantiate class {0}.
-doesNotImplement = Class {0} does not implement {1} interface.
\ No newline at end of file
diff --git a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/FacetedProject.java b/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/FacetedProject.java
deleted file mode 100644
index edc3da5..0000000
--- a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/FacetedProject.java
+++ /dev/null
@@ -1,1656 +0,0 @@
-/******************************************************************************
- * Copyright (c) 2005, 2006 BEA Systems, Inc.
- * 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:
- *    Konstantin Komissarchik - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.wst.common.project.facet.core.internal;
-
-import java.io.ByteArrayInputStream;
-import java.io.File;
-import java.io.InputStream;
-import java.io.PrintWriter;
-import java.io.StringReader;
-import java.io.StringWriter;
-import java.io.UnsupportedEncodingException;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IFolder;
-import org.eclipse.core.resources.IMarker;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.IWorkspace;
-import org.eclipse.core.resources.IWorkspaceRunnable;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IAdapterManager;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.SubProgressMonitor;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.wst.common.project.facet.core.IActionConfig;
-import org.eclipse.wst.common.project.facet.core.IActionDefinition;
-import org.eclipse.wst.common.project.facet.core.IDelegate;
-import org.eclipse.wst.common.project.facet.core.IFacetedProject;
-import org.eclipse.wst.common.project.facet.core.IFacetedProjectListener;
-import org.eclipse.wst.common.project.facet.core.IFacetedProjectValidator;
-import org.eclipse.wst.common.project.facet.core.IProjectFacet;
-import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion;
-import org.eclipse.wst.common.project.facet.core.IRuntimeChangedEvent;
-import org.eclipse.wst.common.project.facet.core.ProjectFacetsManager;
-import org.eclipse.wst.common.project.facet.core.runtime.IRuntime;
-import org.eclipse.wst.common.project.facet.core.runtime.RuntimeManager;
-import org.eclipse.wst.common.project.facet.core.runtime.internal.UnknownRuntime;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-import org.xml.sax.EntityResolver;
-import org.xml.sax.InputSource;
-
-/**
- * @author <a href="mailto:kosta@bea.com">Konstantin Komissarchik</a>
- */
-
-/* 
- * Synchronization Notes
- * 
- * 1. There is an internal lock object that's used to synchronize access to
- *    the data structure. By synchronizing on an internal object, outside code
- *    cannot cause a deadlock by synchronizing on the FacetedProject object.
- *    
- * 2. Readers synchronize on the lock object for the duration of the method
- *    call. This protects the readers from writers and makes sure that reader
- *    is not reading stale data from thread's local memory.
- *    
- * 3. All collections that are returned by the reader methods are guaranteed
- *    to not change after the fact. This is implemented through a copy-on-write 
- *    policy.
- * 
- * 4. Writers synchronize on the lock object briefly at the start of the method 
- *    and mark the FacetedProject as being modified. If the project is already
- *    being modified, the new writer will wait. Inside the bodies of the
- *    modifier methods, the writer thread is only synchronized on the lock
- *    object while modifying the internal datastructures. These synchronization
- *    sections are kept short and they never span over code that might modify
- *    file system resources. This is done to prevent deadlocks. Once the write
- *    is complete, the writer thread synchronizes on the lock object, resets the 
- *    "being modified" flag, and notifies any writers that may be waiting. 
- */
-
-public final class FacetedProject
-
-    implements IFacetedProject
-    
-{
-    private static final String TRACING_DELEGATE_CALLS
-        = FacetCorePlugin.PLUGIN_ID + "/delegate/calls"; //$NON-NLS-1$
-    
-    private static final String FACETS_METADATA_FILE
-        = ".settings/" + FacetCorePlugin.PLUGIN_ID + ".xml"; //$NON-NLS-1$ //$NON-NLS-2$
-    
-    private static final String EL_RUNTIME = "runtime"; //$NON-NLS-1$
-    private static final String EL_SECONDARY_RUNTIME = "secondary-runtime"; //$NON-NLS-1$
-    private static final String EL_FIXED = "fixed"; //$NON-NLS-1$
-    private static final String EL_INSTALLED = "installed"; //$NON-NLS-1$
-    private static final String ATTR_NAME = "name"; //$NON-NLS-1$
-    private static final String ATTR_FACET = "facet"; //$NON-NLS-1$
-    private static final String ATTR_VERSION = "version"; //$NON-NLS-1$
-
-    private final IProject project;
-    private final CopyOnWriteSet facets;
-    private final CopyOnWriteSet fixed;
-    private final Map unknownFacets = new HashMap();
-    private final CopyOnWriteSet targetedRuntimes;
-    private String primaryRuntime;
-    IFile f;
-    private long fModificationStamp = -1;
-    private final List listeners;
-    private final Object lock = new Object();
-    private boolean isBeingModified = false;
-    private Thread modifierThread = null;
-    
-    FacetedProject( final IProject project )
-    
-        throws CoreException
-        
-    {
-        this.project = project;
-        this.facets = new CopyOnWriteSet();
-        this.fixed = new CopyOnWriteSet();
-        this.targetedRuntimes = new CopyOnWriteSet();
-        this.listeners = new ArrayList();
-        
-        this.f = project.getFile( FACETS_METADATA_FILE );
-        
-        refresh();
-    }
-    
-    public IProject getProject()
-    {
-        return this.project;
-    }
-    
-    public Set getProjectFacets()
-    {
-        synchronized( this.lock )
-        {
-            return this.facets.getReadOnlySet();
-        }
-    }
-    
-    public boolean hasProjectFacet( final IProjectFacet f )
-    {
-        synchronized( this.lock )
-        {
-            for( Iterator itr = this.facets.iterator(); itr.hasNext(); )
-            {
-                final IProjectFacetVersion fv 
-                    = (IProjectFacetVersion) itr.next();
-                
-                if( fv.getProjectFacet() == f )
-                {
-                    return true;
-                }
-            }
-            
-            return false;
-        }
-    }
-    
-    public boolean hasProjectFacet( final IProjectFacetVersion fv )
-    {
-        synchronized( this.lock )
-        {
-            return this.facets.contains( fv );
-        }
-    }
-    
-    public IProjectFacetVersion getInstalledVersion( final IProjectFacet f )
-    {
-        synchronized( this.lock )
-        {
-            for( Iterator itr = this.facets.iterator(); itr.hasNext(); )
-            {
-                final IProjectFacetVersion fv 
-                    = (IProjectFacetVersion) itr.next();
-                
-                if( fv.getProjectFacet() == f )
-                {
-                    return fv;
-                }
-            }
-            
-            return null;
-        }
-    }
-
-    public void installProjectFacet( final IProjectFacetVersion fv,
-                                     final Object config,
-                                     final IProgressMonitor monitor )
-    
-        throws CoreException
-        
-    {
-        final Action action 
-            = new Action( Action.Type.INSTALL, fv, config );
-            
-        modify( Collections.singleton( action ), monitor );
-    }
-
-    public void uninstallProjectFacet( final IProjectFacetVersion fv,
-                                       final Object config,
-                                       final IProgressMonitor monitor )
-    
-        throws CoreException
-        
-    {
-        final Action action 
-            = new Action( Action.Type.UNINSTALL, fv, config );
-            
-        modify( Collections.singleton( action ), monitor );
-    }
-    
-    public void modify( final Set actions,
-                        final IProgressMonitor monitor )
-    
-        throws CoreException
-        
-    {
-        final IWorkspaceRunnable wr = new IWorkspaceRunnable()
-        {
-            public void run( final IProgressMonitor monitor ) 
-            
-                throws CoreException
-                
-            {
-                beginModification();
-                
-                try
-                {
-                    modifyInternal( actions, monitor );
-                }
-                finally
-                {
-                    endModification();
-                }
-            }
-        };
-        
-        final IWorkspace ws = ResourcesPlugin.getWorkspace();
-        ws.run( wr, ws.getRoot(), IWorkspace.AVOID_UPDATE, monitor );
-        
-        notifyListeners();
-    }
-        
-    private void modifyInternal( final Set actions,
-                                 final IProgressMonitor monitor )
-    
-        throws CoreException
-        
-    {
-        if( monitor != null )
-        {
-            monitor.beginTask( "", actions.size() * 100 ); //$NON-NLS-1$
-        }
-        
-        try
-        {
-            final IStatus st 
-                = ProjectFacetsManager.check( this.facets, actions );
-            
-            if( ! st.isOK() )
-            {
-                throw new CoreException( st );
-            }
-            
-            // Sort the actions into the order of execution.
-            
-            final List copy = new ArrayList( actions );
-            ProjectFacetsManager.sort( this.facets, copy );
-            
-            // Update and check the action configs.
-            
-            for( int i = 0, n = copy.size(); i < n; i++ )
-            {
-                Action action = (Action) copy.get( i );
-                final IProjectFacetVersion fv = action.getProjectFacetVersion();
-                Object config = action.getConfig();
-                
-                if( config == null )
-                {
-                    final IActionDefinition def 
-                        = fv.getActionDefinition( this.facets, action.getType() );
-                    
-                    config = def.createConfigObject( fv, this.project.getName() );
-                    
-                    if( config != null )
-                    {
-                        action = new Action( action.getType(), fv, config );
-                        copy.set( i, action );
-                    }
-                }
-                
-                if( config != null )
-                {
-                    IActionConfig cfg = null;
-                    
-                    if( config instanceof IActionConfig )
-                    {
-                        cfg = (IActionConfig) config;
-                    }
-                    else
-                    {
-                        final IAdapterManager m = Platform.getAdapterManager();
-                        cfg = (IActionConfig) m.loadAdapter( config, IActionConfig.class.getName() );
-                    }
-                    
-                    if( cfg != null )
-                    {
-                        cfg.setProjectName( this.project.getName() );
-                        cfg.setVersion( fv );
-                        
-                        final IStatus status = cfg.validate();
-                        
-                        if( status.getSeverity() != IStatus.OK )
-                        {
-                            throw new CoreException( status );
-                        }
-                    }
-                }
-            }
-            
-            // Execute the actions.
-            
-            for( Iterator itr = copy.iterator(); itr.hasNext(); )
-            {
-                final Action action = (Action) itr.next();
-                final Action.Type type = action.getType();
-                
-                final ProjectFacetVersion fv 
-                    = (ProjectFacetVersion) action.getProjectFacetVersion();
-                
-                final IActionDefinition def 
-                    = fv.getActionDefinition( this.facets, type );
-                
-                callEventHandlers( fv, getPreEventHandlerType( type ), 
-                                   action.getConfig(), submon( monitor, 10 ) );
-                
-                final IDelegate delegate 
-                    = ( (ActionDefinition) def ).getDelegate();
-                
-                if( delegate == null )
-                {
-                    if( monitor != null )
-                    {
-                        monitor.worked( 80 );
-                    }
-                }
-                else
-                {
-                    callDelegate( fv, delegate, action.getConfig(), type,
-                                  submon( monitor, 80 ) );
-                }
-        
-                synchronized( this.lock )
-                {
-                    apply( action );
-                }
-                
-                save();
-
-                callEventHandlers( fv, getPostEventHandlerType( type ), 
-                                   action.getConfig(), submon( monitor, 10 ) );
-            }
-        }
-        finally
-        {
-            if( monitor != null )
-            {
-                monitor.done();
-            }
-        }
-    }
-    
-    public Set getFixedProjectFacets()
-    {
-        synchronized( this.lock )
-        {
-            return this.fixed.getReadOnlySet();
-        }
-    }
-    
-    public void setFixedProjectFacets( final Set facets )
-    
-        throws CoreException
-        
-    {
-        final IWorkspaceRunnable wr = new IWorkspaceRunnable()
-        {
-            public void run( final IProgressMonitor monitor ) 
-            
-                throws CoreException
-                
-            {
-                beginModification();
-                
-                try
-                {
-                    synchronized( FacetedProject.this.lock )
-                    {
-                        FacetedProject.this.fixed.clear();
-                        FacetedProject.this.fixed.addAll( facets );
-                    }
-                        
-                    save();
-                }
-                finally
-                {
-                    endModification();
-                }
-            }
-        };
-        
-        final IWorkspace ws = ResourcesPlugin.getWorkspace();
-        ws.run( wr, ws.getRoot(), IWorkspace.AVOID_UPDATE, null );
-        
-        notifyListeners();
-    }
-    
-    /**
-     * @deprecated
-     */
-    
-    public IRuntime getRuntime()
-    {
-        return getPrimaryRuntime();
-    }
-    
-    /**
-     * @deprecated
-     */
-    
-    public void setRuntime( final IRuntime runtime,
-                            final IProgressMonitor monitor )
-    
-        throws CoreException
-        
-    {
-        final Set runtimes
-            = runtime == null 
-              ? Collections.EMPTY_SET : Collections.singleton( runtime );
-        
-        setTargetedRuntimes( runtimes, monitor );
-    }
-    
-    public Set getTargetedRuntimes()
-    {
-        synchronized( this.lock )
-        {
-            final Set result = new HashSet();
-            
-            for( Iterator itr = this.targetedRuntimes.iterator(); itr.hasNext(); )
-            {
-                result.add( getRuntimeFromName( (String) itr.next() ) );
-            }
-            
-            return Collections.unmodifiableSet( result );
-        }
-    }
-    
-    public void setTargetedRuntimes( final Set runtimes,
-                                     final IProgressMonitor monitor )
-    
-        throws CoreException
-        
-    {
-        final IWorkspaceRunnable wr = new IWorkspaceRunnable()
-        {
-            public void run( final IProgressMonitor monitor ) 
-            
-                throws CoreException
-                
-            {
-                beginModification();
-                
-                try
-                {
-                    setTargetedRuntimesInternal( runtimes, monitor );
-                }
-                finally
-                {
-                    endModification();
-                }
-            }
-        };
-        
-        final IWorkspace ws = ResourcesPlugin.getWorkspace();
-        ws.run( wr, ws.getRoot(), IWorkspace.AVOID_UPDATE, null );
-        
-        notifyListeners();
-    }
-    
-    private void setTargetedRuntimesInternal( final Set runtimes,
-                                              final IProgressMonitor monitor )
-    
-        throws CoreException
-        
-    {
-        if( monitor != null )
-        {
-            monitor.beginTask( "", this.facets.size() + 1 ); //$NON-NLS-1$
-        }
-        
-        try
-        {
-            if( this.targetedRuntimes.size() == runtimes.size() )
-            {
-                boolean different = false;
-                
-                for( Iterator itr = runtimes.iterator(); itr.hasNext(); )
-                {
-                    final String rname = ( (IRuntime) itr.next() ).getName();
-                    
-                    if( ! this.targetedRuntimes.contains( rname ) )
-                    {
-                        different = true;
-                        break;
-                    }
-                }
-                
-                if( ! different )
-                {
-                    return;
-                }
-            }
-            
-            for( Iterator itr1 = runtimes.iterator(); itr1.hasNext(); )
-            {
-                final IRuntime runtime = (IRuntime) itr1.next();
-
-                for( Iterator itr = this.facets.iterator(); itr.hasNext(); )
-                {
-                    final IProjectFacetVersion fv 
-                        = (IProjectFacetVersion) itr.next();
-                    
-                    if( ! runtime.supports( fv ) )
-                    {
-                        final String msg 
-                            = NLS.bind( Resources.facetNotSupported, 
-                                        runtime.getName(), fv.toString() );
-                        
-                        final IStatus st 
-                            = FacetCorePlugin.createErrorStatus( msg );
-                        
-                        throw new CoreException( st );
-                    }
-                }
-            }
-            
-            final IRuntime oldPrimary;
-            final IRuntime newPrimary;
-            
-            synchronized( this.lock )
-            {
-                this.targetedRuntimes.clear();
-                
-                for( Iterator itr = runtimes.iterator(); itr.hasNext(); )
-                {
-                    final IRuntime runtime = (IRuntime) itr.next();
-                    this.targetedRuntimes.add( runtime.getName() );
-                }
-                
-                oldPrimary = getPrimaryRuntime();
-                assignPrimaryRuntimeIfNecessary();
-                newPrimary = getPrimaryRuntime();
-            }
-            
-            save();
-            
-            if( monitor != null )
-            {
-                monitor.worked( 1 );
-            }
-
-            if( ! equals( oldPrimary, newPrimary ) )
-            {
-                final IRuntimeChangedEvent event 
-                    = new RuntimeChangedEvent( oldPrimary, newPrimary );
-    
-                for( Iterator itr = this.facets.iterator(); itr.hasNext(); )
-                {
-                    final ProjectFacetVersion fv
-                        = (ProjectFacetVersion) itr.next();
-                    
-                    callEventHandlers( fv, EventHandler.Type.RUNTIME_CHANGED, 
-                                       event, submon( monitor, 1 ) );
-                }
-            }
-        }
-        finally
-        {
-            if( monitor != null )
-            {
-                monitor.done();
-            }
-        }
-    }
-    
-    public void addTargetedRuntime( final IRuntime runtime,
-                                    final IProgressMonitor monitor )
-    
-        throws CoreException
-        
-    {
-        final IWorkspaceRunnable wr = new IWorkspaceRunnable()
-        {
-            public void run( final IProgressMonitor monitor ) 
-            
-                throws CoreException
-                
-            {
-                beginModification();
-                
-                try
-                {
-                    addTargetedRuntimeInternal( runtime, monitor );
-                }
-                finally
-                {
-                    endModification();
-                }
-            }
-        };
-        
-        final IWorkspace ws = ResourcesPlugin.getWorkspace();
-        ws.run( wr, ws.getRoot(), IWorkspace.AVOID_UPDATE, null );
-        
-        notifyListeners();
-    }
-    
-    private void addTargetedRuntimeInternal( final IRuntime runtime,
-                                             final IProgressMonitor monitor )
-    
-        throws CoreException
-        
-    {
-        if( monitor != null )
-        {
-            monitor.beginTask( "", 1 ); //$NON-NLS-1$
-        }
-        
-        try
-        {
-            if( runtime == null )
-            {
-                throw new NullPointerException();
-            }
-            
-            if( this.targetedRuntimes.contains( runtime.getName() ) )
-            {
-                return;
-            }
-            
-            for( Iterator itr = this.facets.iterator(); itr.hasNext(); )
-            {
-                final IProjectFacetVersion fv 
-                    = (IProjectFacetVersion) itr.next();
-                
-                if( ! runtime.supports( fv ) )
-                {
-                    final String msg 
-                        = NLS.bind( Resources.facetNotSupported, 
-                                    runtime.getName(), fv.toString() );
-                    
-                    final IStatus st 
-                        = FacetCorePlugin.createErrorStatus( msg );
-                    
-                    throw new CoreException( st );
-                }
-            }
-            
-            synchronized( this.lock )
-            {
-                this.targetedRuntimes.add( runtime.getName() );
-            }
-            
-            save();
-            
-            if( monitor != null )
-            {
-                monitor.worked( 1 );
-            }
-        }
-        finally
-        {
-            if( monitor != null )
-            {
-                monitor.done();
-            }
-        }
-    }
-    
-    public void removeTargetedRuntime( final IRuntime runtime,
-                                     final IProgressMonitor monitor )
-    
-        throws CoreException
-        
-    {
-        final IWorkspaceRunnable wr = new IWorkspaceRunnable()
-        {
-            public void run( final IProgressMonitor monitor ) 
-            
-                throws CoreException
-                
-            {
-                beginModification();
-                
-                try
-                {
-                    removeTargetedRuntimeInternal( runtime, monitor );
-                }
-                finally
-                {
-                    endModification();
-                }
-            }
-        };
-        
-        final IWorkspace ws = ResourcesPlugin.getWorkspace();
-        ws.run( wr, ws.getRoot(), IWorkspace.AVOID_UPDATE, null );
-        
-        notifyListeners();
-    }
-
-    private void removeTargetedRuntimeInternal( final IRuntime runtime,
-                                                final IProgressMonitor monitor )
-    
-        throws CoreException
-        
-    {
-        if( monitor != null )
-        {
-            monitor.beginTask( "", this.facets.size() + 1 ); //$NON-NLS-1$
-        }
-        
-        try
-        {
-            if( runtime == null || 
-                this.targetedRuntimes.contains( runtime.getName() ) )
-            {
-                return;
-            }
-            
-            final IRuntime oldPrimary;
-            final IRuntime newPrimary;
-            
-            synchronized( this.lock )
-            {
-                this.targetedRuntimes.remove( runtime.getName() );
-                
-                oldPrimary = getPrimaryRuntime();
-                assignPrimaryRuntimeIfNecessary();
-                newPrimary = getPrimaryRuntime();
-            }
-            
-            save();
-            
-            if( monitor != null )
-            {
-                monitor.worked( 1 );
-            }
-
-            if( ! equals( oldPrimary, newPrimary ) )
-            {
-                final IRuntimeChangedEvent event 
-                    = new RuntimeChangedEvent( oldPrimary, newPrimary );
-    
-                for( Iterator itr = this.facets.iterator(); itr.hasNext(); )
-                {
-                    final ProjectFacetVersion fv
-                        = (ProjectFacetVersion) itr.next();
-                    
-                    callEventHandlers( fv, EventHandler.Type.RUNTIME_CHANGED, 
-                                       event, submon( monitor, 1 ) );
-                }
-            }
-        }
-        finally
-        {
-            if( monitor != null )
-            {
-                monitor.done();
-            }
-        }
-    }
-    
-    public IRuntime getPrimaryRuntime()
-    {
-        synchronized( this.lock )
-        {
-            if( this.primaryRuntime == null )
-            {
-                return null;
-            }
-            else
-            {
-                return getRuntimeFromName( this.primaryRuntime );
-            }
-        }
-    }
-    
-    public void setPrimaryRuntime( final IRuntime runtime,
-                                   final IProgressMonitor monitor )
-    
-        throws CoreException
-        
-    {
-        final IWorkspaceRunnable wr = new IWorkspaceRunnable()
-        {
-            public void run( final IProgressMonitor monitor ) 
-            
-                throws CoreException
-                
-            {
-                beginModification();
-                
-                try
-                {
-                    setPrimaryRuntimeInternal( runtime, monitor );
-                }
-                finally
-                {
-                    endModification();
-                }
-            }
-        };
-        
-        final IWorkspace ws = ResourcesPlugin.getWorkspace();
-        ws.run( wr, ws.getRoot(), IWorkspace.AVOID_UPDATE, null );
-        
-        notifyListeners();
-    }
-    
-    private void setPrimaryRuntimeInternal( final IRuntime runtime,
-                                            final IProgressMonitor monitor )
-    
-        throws CoreException
-        
-    {
-        if( monitor != null )
-        {
-            monitor.beginTask( "", this.facets.size() + 1 ); //$NON-NLS-1$
-        }
-        
-        try
-        {
-            if( runtime == null )
-            {
-                throw new NullPointerException();
-            }
-            
-            if( equals( this.primaryRuntime, runtime.getName() ) )
-            {
-                return;
-            }
-
-            if( ! this.targetedRuntimes.contains( runtime.getName() ) )
-            {
-                final String msg = Resources.newPrimaryNotTargetRuntime;
-                final IStatus st = FacetCorePlugin.createErrorStatus( msg );
-            
-                throw new CoreException( st );
-            }
-            
-            final IRuntime oldPrimary;
-            
-            synchronized( this.lock )
-            {
-                oldPrimary = getPrimaryRuntime();
-                this.primaryRuntime = runtime.getName();
-            }
-            
-            save();
-            
-            if( monitor != null )
-            {
-                monitor.worked( 1 );
-            }
-
-            final IRuntimeChangedEvent event 
-                = new RuntimeChangedEvent( oldPrimary, runtime );
-
-            for( Iterator itr = this.facets.iterator(); itr.hasNext(); )
-            {
-                final ProjectFacetVersion fv
-                    = (ProjectFacetVersion) itr.next();
-                
-                callEventHandlers( fv, EventHandler.Type.RUNTIME_CHANGED, 
-                                   event, submon( monitor, 1 ) );
-            }
-        }
-        finally
-        {
-            if( monitor != null )
-            {
-                monitor.done();
-            }
-        }
-    }
-    
-    private static IRuntime getRuntimeFromName( final String name )
-    {
-        if( RuntimeManager.isRuntimeDefined( name ) )
-        {
-            return RuntimeManager.getRuntime( name );
-        }
-        else
-        {
-            return new UnknownRuntime( name );
-        }
-    }
-    
-    private void assignPrimaryRuntimeIfNecessary()
-    {
-        if( this.targetedRuntimes.isEmpty() )
-        {
-            this.primaryRuntime = null;
-        }
-        else
-        {
-            if( this.primaryRuntime == null || 
-                ! this.targetedRuntimes.contains( this.primaryRuntime ) )
-            {
-                this.primaryRuntime 
-                    = (String) this.targetedRuntimes.iterator().next();
-            }
-        }
-    }
-    
-    public IMarker createErrorMarker( final String message )
-    
-        throws CoreException
-        
-    {
-        return createErrorMarker( IFacetedProjectValidator.BASE_MARKER_ID, message );
-    }
-
-    public IMarker createErrorMarker( final String type,
-                                      final String message )
-    
-        throws CoreException
-        
-    {
-        return createMarker( IMarker.SEVERITY_ERROR, type, message );
-    }
-    
-    public IMarker createWarningMarker( final String message )
-    
-        throws CoreException
-        
-    {
-        return createWarningMarker( IFacetedProjectValidator.BASE_MARKER_ID, message );
-    }
-    
-    public IMarker createWarningMarker( final String type,
-                                      final String message )
-    
-        throws CoreException
-        
-    {
-        return createMarker( IMarker.SEVERITY_WARNING, type, message );
-    }
-    
-    private IMarker createMarker( final int severity,
-                                  final String type,
-                                  final String message )
-      
-        throws CoreException
-      
-    {
-        final IMarker[] existing
-            = this.project.findMarkers( type, false, IResource.DEPTH_ZERO );
-        
-        for( int i = 0; i < existing.length; i++ )
-        {
-            final IMarker m = existing[ i ];
-            
-            if( m.getAttribute( IMarker.SEVERITY, -1 ) == severity &&
-                m.getAttribute( IMarker.MESSAGE, "" ).equals( message ) ) //$NON-NLS-1$
-            {
-                return m;
-            }
-        }
-        
-        final IMarker m = this.project.createMarker( type );
-      
-        m.setAttribute( IMarker.MESSAGE, message ); 
-        m.setAttribute( IMarker.SEVERITY, severity );
-      
-        return m;
-    }
-    
-    public void addListener( final IFacetedProjectListener listener )
-    {
-        synchronized( this.listeners )
-        {
-            this.listeners.add( listener );
-        }
-    }
-    
-    public void removeListener( final IFacetedProjectListener listener )
-    {
-        synchronized( this.listeners )
-        {
-            this.listeners.remove( listener );
-        }
-    }
-    
-    private void notifyListeners()
-    {
-        // Copy the list of listeners in order to avoid holding the monitor
-        // while calling the listeners. This is done to avoid potential 
-        // deadlocks.
-        
-        final Object[] copy;
-        
-        synchronized( this.listeners )
-        {
-            copy = this.listeners.toArray();
-        }
-        
-        for( int i = 0; i < copy.length; i++ )
-        {
-            try
-            {
-                ( (IFacetedProjectListener) copy[ i ] ).projectChanged();
-            }
-            catch( Exception e )
-            {
-                FacetCorePlugin.log( e );
-            }
-        }
-    }
-    
-    private void beginModification()
-    
-        throws CoreException
-        
-    {
-        synchronized( this.lock )
-        {
-            while( this.isBeingModified )
-            {
-                if( this.modifierThread == Thread.currentThread() )
-                {
-                    final String msg = Resources.illegalModificationMsg;
-                    final IStatus st = FacetCorePlugin.createErrorStatus( msg );
-                    
-                    throw new CoreException( st );
-                }
-                
-                try
-                {
-                    this.lock.wait();
-                }
-                catch( InterruptedException e ) {}
-            }
-            
-            this.isBeingModified = true;
-            this.modifierThread = Thread.currentThread();
-        }
-    }
-    
-    private void endModification()
-    {
-        synchronized( this.lock )
-        {
-            this.isBeingModified = false;
-            this.modifierThread = null;
-            this.lock.notifyAll();
-        }
-    }
-    
-    private EventHandler.Type getPreEventHandlerType( final Action.Type t )
-    {
-        if( t == Action.Type.INSTALL )
-        {
-            return EventHandler.Type.PRE_INSTALL;
-        }
-        else if( t == Action.Type.UNINSTALL )
-        {
-            return EventHandler.Type.PRE_UNINSTALL;
-        }
-        else if( t == Action.Type.VERSION_CHANGE )
-        {
-            return EventHandler.Type.PRE_VERSION_CHANGE;
-        }
-        else
-        {
-            throw new IllegalStateException();
-        }
-    }
-    
-    private EventHandler.Type getPostEventHandlerType( final Action.Type t )
-    {
-        if( t == Action.Type.INSTALL )
-        {
-            return EventHandler.Type.POST_INSTALL;
-        }
-        else if( t == Action.Type.UNINSTALL )
-        {
-            return EventHandler.Type.POST_UNINSTALL;
-        }
-        else if( t == Action.Type.VERSION_CHANGE )
-        {
-            return EventHandler.Type.POST_VERSION_CHANGE;
-        }
-        else
-        {
-            throw new IllegalStateException();
-        }
-    }
-
-    private void callEventHandlers( final IProjectFacetVersion fv,
-                                    final EventHandler.Type type,
-                                    final Object config,
-                                    final IProgressMonitor monitor )
-    
-        throws CoreException
-        
-    {
-        final ProjectFacet f = (ProjectFacet) fv.getProjectFacet();
-        final List handlers = f.getEventHandlers( fv, type );
-        
-        if( monitor != null )
-        {
-            monitor.beginTask( "", handlers.size() ); //$NON-NLS-1$
-        }
-        
-        try
-        {
-            for( Iterator itr = handlers.iterator(); itr.hasNext(); )
-            {
-                final EventHandler h = (EventHandler) itr.next();
-                IDelegate delegate = null;
-                
-                try
-                {
-                    delegate = h.getDelegate();
-                }
-                catch( CoreException e )
-                {
-                    FacetCorePlugin.log( e.getStatus() );
-                }
-                
-                if( delegate != null )
-                {
-                    callDelegate( fv, delegate, config, type,
-                                  submon( monitor, 1 ) );
-                }
-                
-                if( monitor != null )
-                {
-                    monitor.worked( 1 );
-                }
-            }
-        }
-        finally
-        {
-            if( monitor != null )
-            {
-                monitor.done();
-            }
-        }
-    }
-    
-    private void callDelegate( final IProjectFacetVersion fv,
-                               final IDelegate delegate,
-                               final Object config,
-                               final Object context,
-                               final IProgressMonitor monitor )
-    
-        throws CoreException
-        
-    {
-        final String tracingDelegateCallsStr
-            = Platform.getDebugOption( TRACING_DELEGATE_CALLS );
-        
-        final boolean tracingDelegateCalls 
-            = tracingDelegateCallsStr == null ? false 
-              : tracingDelegateCallsStr.equals( "true" );  //$NON-NLS-1$
-        
-        long timeStarted = -1;
-        
-        if( tracingDelegateCalls )
-        {
-            final String msg
-                = Resources.bind( Resources.tracingDelegateStarting,
-                                  fv.getProjectFacet().getId(),
-                                  fv.getVersionString(), context.toString(),
-                                  delegate.getClass().getName() );
-            
-            System.out.println( msg );
-            
-            timeStarted = System.currentTimeMillis();
-        }
-        
-        try
-        {
-            delegate.execute( this.project, fv, config, monitor ); 
-        }
-        catch( Exception e )
-        {
-            final String msg;
-            
-            if( context == Action.Type.INSTALL ||
-                context == EventHandler.Type.PRE_INSTALL ||
-                context == EventHandler.Type.POST_INSTALL )
-            {
-                msg = NLS.bind( Resources.failedOnInstall, fv );
-            }
-            else if( context == Action.Type.UNINSTALL ||
-                     context == EventHandler.Type.PRE_UNINSTALL ||
-                     context == EventHandler.Type.POST_UNINSTALL )
-            {
-                msg = NLS.bind( Resources.failedOnUninstall, fv );
-            }
-            else if( context == Action.Type.VERSION_CHANGE ||
-                     context == EventHandler.Type.PRE_VERSION_CHANGE ||
-                     context == EventHandler.Type.POST_VERSION_CHANGE )
-            {
-                msg = NLS.bind( Resources.failedOnVersionChange, 
-                                fv.getProjectFacet().getLabel(), 
-                                fv.getVersionString() );
-            }
-            else if( context == EventHandler.Type.RUNTIME_CHANGED )
-            {
-                msg = NLS.bind( Resources.failedOnRuntimeChanged, fv );
-            }
-            else
-            {
-                throw new IllegalStateException( context.toString() );
-            }
-            
-            final IStatus status
-                = new Status( IStatus.ERROR, FacetCorePlugin.PLUGIN_ID, 0, 
-                              msg, e );
-
-            throw new CoreException( status ); 
-        }
-        
-        if( tracingDelegateCalls )
-        {
-            final long duration = System.currentTimeMillis() - timeStarted;
-            
-            final String msg 
-                = NLS.bind( Resources.tracingDelegateFinished, 
-                            String.valueOf( duration ) );
-            
-            System.out.println( msg );
-        }
-    }
-    
-    private void apply( final Action action )
-    {
-        final Action.Type type = action.getType();
-        final IProjectFacetVersion fv = action.getProjectFacetVersion();
-        
-        if( type == Action.Type.INSTALL )
-        {
-            this.facets.add( fv );
-        }
-        else if( type == Action.Type.UNINSTALL )
-        {
-            this.facets.remove( fv );
-        }
-        else if( type == Action.Type.VERSION_CHANGE )
-        {
-            for( Iterator itr = this.facets.iterator(); itr.hasNext(); )
-            {
-                final IProjectFacetVersion x 
-                    = (IProjectFacetVersion) itr.next();
-                
-                if( x.getProjectFacet() == fv.getProjectFacet() )
-                {
-                    itr.remove();
-                    break;
-                }
-            }
-            
-            this.facets.add( fv );
-        }
-    }
-    
-    private void save()
-    
-        throws CoreException
-        
-    {
-        final StringWriter w = new StringWriter();
-        final PrintWriter out = new PrintWriter( w );
-        
-        final String nl = System.getProperty( "line.separator" ); //$NON-NLS-1$
-        
-        out.print( "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" ); //$NON-NLS-1$
-        out.print( nl );
-        out.print( "<faceted-project>" ); //$NON-NLS-1$
-        out.print( nl );
-        
-        if( this.primaryRuntime != null )
-        {
-            out.print( "  <runtime name=\"" ); //$NON-NLS-1$
-            out.print( this.primaryRuntime );
-            out.print( "\"/>" ); //$NON-NLS-1$
-            out.print( nl );
-        }
-        
-        for( Iterator itr = this.targetedRuntimes.iterator(); itr.hasNext(); )
-        {
-            final String name = (String) itr.next();
-            
-            if( ! name.equals( this.primaryRuntime ) )
-            {
-                out.print( "  <secondary-runtime name=\"" ); //$NON-NLS-1$
-                out.print( name );
-                out.print( "\"/>" ); //$NON-NLS-1$
-                out.print( nl );
-            }
-        }
-        
-        for( Iterator itr = this.fixed.iterator(); itr.hasNext(); )
-        {
-            final IProjectFacet f = (IProjectFacet) itr.next();
-            
-            out.print( "  <fixed facet=\"" ); //$NON-NLS-1$
-            out.print( f.getId() );
-            out.print( "\"/>" ); //$NON-NLS-1$
-            out.print( nl );
-        }
-        
-        for( Iterator itr = this.facets.iterator(); itr.hasNext(); )
-        {
-            final IProjectFacetVersion fv
-                = (IProjectFacetVersion) itr.next();
-            
-            out.print( "  <installed facet=\"" ); //$NON-NLS-1$
-            out.print( fv.getProjectFacet().getId() );
-            out.print( "\" version=\"" ); //$NON-NLS-1$
-            out.print( fv.getVersionString() );
-            out.print( "\"/>" ); //$NON-NLS-1$
-            out.print( nl );
-        }
-        
-        out.print( "</faceted-project>" ); //$NON-NLS-1$
-        out.print( nl );
-        
-        final byte[] bytes;
-        
-        try
-        {
-            bytes = w.getBuffer().toString().getBytes( "UTF-8" ); //$NON-NLS-1$
-        }
-        catch( UnsupportedEncodingException e )
-        {
-            // Unexpected. All JVMs are supposed to support UTF-8.
-            throw new RuntimeException( e );
-        }
-        
-        final InputStream in = new ByteArrayInputStream( bytes );
-        
-        if( this.f.exists() )
-        {
-            this.f.setContents( in, true, false, null );
-        }
-        else
-        {
-            final IFolder parent = (IFolder) this.f.getParent();
-            
-            if( ! parent.exists() )
-            {
-                parent.create( true, true, null );
-            }
-            
-            this.f.create( in, true, null );
-        }
-        
-        this.fModificationStamp = this.f.getModificationStamp();
-    }
-
-    public void refresh()
-    
-        throws CoreException
-        
-    {
-        synchronized( this.lock )
-        {
-            if( this.isBeingModified )
-            {
-                return;
-            }
-            
-            if( this.f.exists() && 
-                this.f.getModificationStamp() == this.fModificationStamp )
-            {
-                return;
-            }
-            
-            beginModification();
-            
-            try
-            {
-                this.facets.clear();
-                this.fixed.clear();
-                this.unknownFacets.clear();
-                this.targetedRuntimes.clear();
-                this.primaryRuntime = null;
-                
-                if( ! this.f.exists() )
-                {
-                    this.fModificationStamp = -1;
-                    return;
-                }
-                
-                this.fModificationStamp = this.f.getModificationStamp();
-                
-                final Element root = parse( this.f.getLocation().toFile() );
-                final Element[] elements = children( root );
-                
-                for( int i = 0; i < elements.length; i++ )
-                {
-                    final Element e = elements[ i ];
-                    final String name = e.getNodeName();
-                    
-                    if( name.equals( EL_RUNTIME ) )
-                    {
-                        this.primaryRuntime = e.getAttribute( ATTR_NAME );
-                        this.targetedRuntimes.add( this.primaryRuntime );
-                    }
-                    else if( name.equals( EL_SECONDARY_RUNTIME ) )
-                    {
-                        this.targetedRuntimes.add( e.getAttribute( ATTR_NAME ) );
-                    }
-                    else if( name.equals( EL_FIXED ) )
-                    {
-                        final String id = e.getAttribute( ATTR_FACET );
-                        final IProjectFacet f;
-                        
-                        if( ProjectFacetsManager.isProjectFacetDefined( id ) )
-                        {
-                            f = ProjectFacetsManager.getProjectFacet( id );
-                        }
-                        else
-                        {
-                            f = createUnknownFacet( id );
-                        }
-                        
-                        this.fixed.add( f );
-                    }
-                    else if( name.equals( EL_INSTALLED ) )
-                    {
-                        final String id = e.getAttribute( ATTR_FACET );
-                        final String version = e.getAttribute( ATTR_VERSION );
-                        
-                        final IProjectFacet f;
-                        
-                        if( ProjectFacetsManager.isProjectFacetDefined( id ) )
-                        {
-                            f = ProjectFacetsManager.getProjectFacet( id );
-                        }
-                        else
-                        {
-                            f = createUnknownFacet( id );
-                        }
-                        
-                        final IProjectFacetVersion fv;
-                        
-                        if( f.hasVersion( version ) )
-                        {
-                            fv = f.getVersion( version );
-                        }
-                        else
-                        {
-                            fv = createUnknownFacetVersion( f, version );
-                        }
-                            
-                        this.facets.add( fv );
-                    }
-                }
-                
-                notifyListeners();
-            }
-            finally
-            {
-                endModification();
-            }
-        }
-    }
-    
-    private ProjectFacet createUnknownFacet( final String id )
-    {
-        ProjectFacet f = (ProjectFacet) this.unknownFacets.get( id );
-        
-        if( f == null )
-        {
-            f = new ProjectFacet();
-            f.setId( id );
-            f.setLabel( id );
-            
-            this.unknownFacets.put( id, f );
-        }
-        
-        return f;
-    }
-    
-    private ProjectFacetVersion createUnknownFacetVersion( final IProjectFacet f,
-                                                           final String version )
-    {
-        final ProjectFacetVersion fv;
-        
-        if( f.hasVersion( version ) )
-        {
-            fv = (ProjectFacetVersion) f.getVersion( version );
-        }
-        else
-        {
-            fv = new ProjectFacetVersion();
-            fv.setProjectFacet( (ProjectFacet) f );
-            fv.setVersionString( version );
-        }
-        
-        return fv;
-    }
-    
-    private static Element parse( final File f )
-    {
-        final DocumentBuilder docbuilder;
-        
-        try
-        {
-            final DocumentBuilderFactory factory 
-                = DocumentBuilderFactory.newInstance();
-            
-            factory.setValidating( false );
-            
-            docbuilder = factory.newDocumentBuilder();
-            
-            docbuilder.setEntityResolver
-            (
-                new EntityResolver()
-                {
-                    public InputSource resolveEntity( final String publicID, 
-                                                      final String systemID )
-                    {
-                        return new InputSource( new StringReader( "" ) ); //$NON-NLS-1$
-                    }
-                }
-            );
-        }
-        catch( ParserConfigurationException e )
-        {
-            throw new RuntimeException( e );
-        }
-
-        try
-        {
-            return docbuilder.parse( f ).getDocumentElement();
-        }
-        catch( Exception e )
-        {
-            throw new RuntimeException( e );
-        }
-    }
-    
-    private Element[] children( final Element element )
-    {
-        final List list = new ArrayList();
-        final NodeList nl = element.getChildNodes();
-        
-        for( int i = 0, n = nl.getLength(); i < n; i++ )
-        {
-            final Node node = nl.item( i );
-            
-            if( node.getNodeType() == Node.ELEMENT_NODE )
-            {
-                list.add( node );
-            }
-        }
-        
-        return (Element[]) list.toArray( new Element[ list.size() ] );
-    }
-    
-    private static IProgressMonitor submon( final IProgressMonitor parent,
-                                            final int ticks )
-    {
-        return ( parent == null ? null : new SubProgressMonitor( parent, ticks ) );
-    }
-    
-    private static boolean equals( final Object obj1,
-                                   final Object obj2 )
-    {
-        if( obj1 == obj2 )
-        {
-            return true;
-        }
-        else if( obj1 == null || obj2 == null )
-        {
-            return false;
-        }
-        else
-        {
-            return obj1.equals( obj2 );
-        }
-    }
-    
-    private static final class Resources
-    
-        extends NLS
-        
-    {
-        public static String failedOnInstall;
-        public static String failedOnUninstall;
-        public static String failedOnVersionChange;
-        public static String failedOnRuntimeChanged;
-        public static String facetNotDefined;
-        public static String facetVersionNotDefined;
-        public static String facetNotSupported;
-        public static String illegalModificationMsg;
-        public static String tracingDelegateStarting;
-        public static String tracingDelegateFinished;
-        public static String newPrimaryNotTargetRuntime;
-        
-        static
-        {
-            initializeMessages( FacetedProject.class.getName(), 
-                                Resources.class );
-        }
-        
-        public static final String bind( final String msg,
-                                         final String arg1,
-                                         final String arg2,
-                                         final String arg3,
-                                         final String arg4 )
-        {
-            return NLS.bind( msg, new Object[] { arg1, arg2, arg3, arg4 } );
-        }
-    }
-
-}
diff --git a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/FacetedProject.properties b/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/FacetedProject.properties
deleted file mode 100644
index f08ecbd..0000000
--- a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/FacetedProject.properties
+++ /dev/null
@@ -1,15 +0,0 @@
-failedOnInstall = Failed while installing {0}.
-failedOnUninstall = Failed while uninstalling {0}.
-failedOnVersionChange = Failed while changing version of {0} to {1}.
-failedOnRuntimeChanged = Failed while {0} was reacting to changed runtime.
-facetNotDefined = Facet {0} is not defined.
-facetVersionNotDefined = Version {1} of facet {0} is not defined.
-facetNotSupported = Runtime {0} does not support project facet {1}.
-illegalModificationMsg = Cannot modify faceted project from within a facet delegate.
-tracingDelegateStarting = \
-Calling project facet delegate:\n\
-\  facet: {0} : {1}\n\
-\  type:  {2}\n\
-\  class: {3}
-tracingDelegateFinished = Project facet delegate completed successfully in {0} ms.
-newPrimaryNotTargetRuntime = Primary runtime has to be one of the targeted runtimes.
\ No newline at end of file
diff --git a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/FacetedProjectAdapter.java b/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/FacetedProjectAdapter.java
deleted file mode 100644
index ac484a0..0000000
--- a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/FacetedProjectAdapter.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/******************************************************************************
- * Copyright (c) 2005 BEA Systems, Inc.
- * 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:
- *    Konstantin Komissarchik - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.wst.common.project.facet.core.internal;
-
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IAdapterFactory;
-import org.eclipse.wst.common.project.facet.core.IFacetedProject;
-import org.eclipse.wst.common.project.facet.core.ProjectFacetsManager;
-
-/**
- * Adapts {@see IProject} to {@see IFacetedProject}.
- * 
- * @author <a href="mailto:kosta@bea.com">Konstantin Komissarchik</a>
- */
-
-public final class FacetedProjectAdapter
-
-    implements IAdapterFactory
-    
-{
-    private static final Class[] ADAPTER_TYPES = { IFacetedProject.class };
-    
-    public Object getAdapter( final Object adaptable, 
-                              final Class adapterType )
-    {
-        if( adapterType == IFacetedProject.class )
-        {
-            try
-            {
-                return ProjectFacetsManager.create( (IProject) adaptable );
-            }
-            catch( CoreException e )
-            {
-                FacetCorePlugin.log( e.getStatus() );
-            }
-        }
-
-        return null;
-    }
-
-    public Class[] getAdapterList()
-    {
-        return ADAPTER_TYPES;
-    }
-
-}
diff --git a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/FacetedProjectNature.java b/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/FacetedProjectNature.java
deleted file mode 100644
index 9cb2bb1..0000000
--- a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/FacetedProjectNature.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/******************************************************************************
- * Copyright (c) 2005 BEA Systems, Inc.
- * 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:
- *    Konstantin Komissarchik - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.wst.common.project.facet.core.internal;
-
-import org.eclipse.core.resources.ICommand;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IProjectDescription;
-import org.eclipse.core.resources.IProjectNature;
-import org.eclipse.core.runtime.CoreException;
-
-/**
- * @author <a href="mailto:kosta@bea.com">Konstantin Komissarchik</a>
- */
-
-public final class FacetedProjectNature
-
-    implements IProjectNature
-
-{
-    public static final String NATURE_ID 
-        = FacetCorePlugin.PLUGIN_ID + ".nature"; //$NON-NLS-1$
-    
-    private IProject project;
-    
-    public IProject getProject()
-    {
-        return this.project;
-    }
-    
-    public void setProject( final IProject project )
-    {
-        this.project = project;
-    }
-    
-    public void configure() 
-    
-        throws CoreException
-        
-    {
-        final IProjectDescription desc = this.project.getDescription();
-        
-        final ICommand[] existing = desc.getBuildSpec();
-        final ICommand[] cmds = new ICommand[ existing.length + 1 ];
-        
-        final ICommand newcmd = this.project.getDescription().newCommand();
-        newcmd.setBuilderName( FacetedProjectValidationBuilder.BUILDER_ID );
-        
-        cmds[ 0 ] = newcmd;
-        System.arraycopy( existing, 0, cmds, 1, existing.length );
-        
-        desc.setBuildSpec( cmds );
-        this.project.setDescription( desc, null );
-    }
-    
-    public void deconfigure() {}
-    
-}
diff --git a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/FacetedProjectPropertyTester.java b/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/FacetedProjectPropertyTester.java
deleted file mode 100644
index 426b442..0000000
--- a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/FacetedProjectPropertyTester.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/******************************************************************************
- * Copyright (c) 2005, 2006 BEA Systems, Inc.
- * 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:
- *    Konstantin Komissarchik - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.wst.common.project.facet.core.internal;
-
-import org.eclipse.core.expressions.PropertyTester;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.wst.common.project.facet.core.FacetedProjectFramework;
-
-/**
- * @author <a href="mailto:kosta@bea.com">Konstantin Komissarchik</a>
- */
-
-public final class FacetedProjectPropertyTester
-
-    extends PropertyTester
-    
-{
-    public boolean test( final Object receiver, 
-                         final String property, 
-                         final Object[] args, 
-                         final Object value )
-    {
-        try
-        {
-            if( ! ( receiver instanceof IResource ) )
-            {
-                return false;
-            }
-            
-            final IProject pj = ( (IResource) receiver ).getProject();
-            
-            if( pj == null )
-            {
-                return false;
-            }
-            
-            final String val = (String) value;
-            final int colon = val.indexOf( ':' );
-            
-            final String fid;
-            final String vexpr;
-            
-            if( colon == -1 || colon == val.length() - 1 )
-            {
-                fid = val;
-                vexpr = null;
-            }
-            else
-            {
-                fid = val.substring( 0, colon );
-                vexpr = val.substring( colon + 1 );
-            }
-            
-            return FacetedProjectFramework.hasProjectFacet( pj, fid, vexpr );
-        }
-        catch( CoreException e )
-        {
-            FacetCorePlugin.log( e.getStatus() );
-        }
-            
-        return false;
-    }
-
-}
diff --git a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/FacetedProjectTemplate.java b/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/FacetedProjectTemplate.java
deleted file mode 100644
index 08e11be..0000000
--- a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/FacetedProjectTemplate.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/******************************************************************************
- * Copyright (c) 2005 BEA Systems, Inc.
- * 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:
- *    Konstantin Komissarchik - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.wst.common.project.facet.core.internal;
-
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Set;
-
-import org.eclipse.wst.common.project.facet.core.IFacetedProjectTemplate;
-import org.eclipse.wst.common.project.facet.core.IPreset;
-import org.eclipse.wst.common.project.facet.core.IProjectFacet;
-
-/**
- * @author <a href="mailto:kosta@bea.com">Konstantin Komissarchik</a>
- */
-
-public final class FacetedProjectTemplate
-
-    implements IFacetedProjectTemplate
-    
-{
-    private String id;
-    private String label;
-    private final Set fixed = new HashSet();
-    private final Set fixedReadOnly = Collections.unmodifiableSet( this.fixed );
-    private IPreset preset;
-    
-    FacetedProjectTemplate() {}
-    
-    public String getId()
-    {
-        return this.id;
-    }
-    
-    void setId( final String id )
-    {
-        this.id = id;
-    }
-
-    public String getLabel()
-    {
-        return this.label;
-    }
-    
-    void setLabel( final String label )
-    {
-        this.label = label;
-    }
-
-    public Set getFixedProjectFacets()
-    {
-        return this.fixedReadOnly;
-    }
-    
-    void addFixedProjectFacet( final IProjectFacet facet )
-    {
-        this.fixed.add( facet );
-    }
-
-    public IPreset getInitialPreset()
-    {
-        return this.preset;
-    }
-    
-    void setInitialPreset( final IPreset preset )
-    {
-        this.preset = preset;
-    }
-
-}
diff --git a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/FacetedProjectValidationBuilder.java b/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/FacetedProjectValidationBuilder.java
deleted file mode 100644
index 38bd6cf..0000000
--- a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/FacetedProjectValidationBuilder.java
+++ /dev/null
@@ -1,211 +0,0 @@
-/******************************************************************************
- * Copyright (c) 2005 BEA Systems, Inc.
- * 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:
- *    Konstantin Komissarchik - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.wst.common.project.facet.core.internal;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.IncrementalProjectBuilder;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExtension;
-import org.eclipse.core.runtime.IExtensionPoint;
-import org.eclipse.core.runtime.IExtensionRegistry;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.wst.common.project.facet.core.IFacetedProject;
-import org.eclipse.wst.common.project.facet.core.IFacetedProjectValidator;
-import org.eclipse.wst.common.project.facet.core.ProjectFacetsManager;
-
-/**
- * @author <a href="mailto:kosta@bea.com">Konstantin Komissarchik</a>
- */
-
-public final class FacetedProjectValidationBuilder
-
-    extends IncrementalProjectBuilder
-    
-{
-    public static final String BUILDER_ID
-        = FacetCorePlugin.PLUGIN_ID + ".builder"; //$NON-NLS-1$
-
-    public static final String VALIDATORS_EXTENSION_ID = "validators"; //$NON-NLS-1$
-    
-    private static final String EL_VALIDATOR = "validator"; //$NON-NLS-1$
-    private static final String EL_FACET = "facet"; //$NON-NLS-1$
-    private static final String ATTR_CLASS = "class"; //$NON-NLS-1$
-
-    private static final List validators = new ArrayList();
-    
-    static
-    {
-        readMetadata();
-    }
-    
-    protected IProject[] build( final int kind, 
-                                final Map args, 
-                                final IProgressMonitor monitor ) 
-    
-        throws CoreException
-        
-    {
-        final IProject proj = getProject();
-        final IFacetedProject fproj = ProjectFacetsManager.create( proj );
-        
-        proj.deleteMarkers( IFacetedProjectValidator.BASE_MARKER_ID, true, 
-                            IResource.DEPTH_INFINITE );
-        
-        for( Iterator itr = validators.iterator(); itr.hasNext(); )
-        {
-            final ValidatorDefinition def = (ValidatorDefinition) itr.next();
-            
-            if( def.isApplicable( fproj.getProjectFacets() ) )
-            {
-                final IFacetedProjectValidator validator = def.getValidator();
-                
-                if( validator != null )
-                {
-                    validator.validate( fproj );
-                }
-            }
-        }
-        
-        return new IProject[0];
-    }
-    
-    private static void readMetadata()
-    {
-        final IExtensionRegistry registry = Platform.getExtensionRegistry();
-        
-        final IExtensionPoint point 
-            = registry.getExtensionPoint( FacetCorePlugin.PLUGIN_ID, 
-                                          VALIDATORS_EXTENSION_ID );
-        
-        if( point == null )
-        {
-            throw new RuntimeException( "Extension point not found!" ); //$NON-NLS-1$
-        }
-        
-        final ArrayList cfgels = new ArrayList();
-        final IExtension[] extensions = point.getExtensions();
-        
-        for( int i = 0; i < extensions.length; i++ )
-        {
-            final IConfigurationElement[] elements 
-                = extensions[ i ].getConfigurationElements();
-            
-            for( int j = 0; j < elements.length; j++ )
-            {
-                cfgels.add( elements[ j ] );
-            }
-        }
-        
-        for( int i = 0, n = cfgels.size(); i < n; i++ )
-        {
-            final IConfigurationElement config
-                = (IConfigurationElement) cfgels.get( i );
-            
-            if( config.getName().equals( EL_VALIDATOR ) )
-            {
-                ValidatorDefinition def = new ValidatorDefinition();
-                def.plugin = config.getContributor().getName();
-                
-                def.className = config.getAttribute( ATTR_CLASS );
-
-                if( def.className == null )
-                {
-                    ProjectFacetsManagerImpl.reportMissingAttribute( config, ATTR_CLASS );
-                    continue;
-                }
-                
-                final IConfigurationElement[] children = config.getChildren();
-                
-                for( int j = 0; j < children.length; j++ )
-                {
-                    final IConfigurationElement child = children[ j ];
-                    final String childName = child.getName();
-                    
-                    if( childName.equals( EL_FACET ) )
-                    {
-                        final ProjectFacetRef ref 
-                            = ProjectFacetRef.read( child );
-                        
-                        if( ref != null )
-                        {
-                            def.constraints.add( ref );
-                        }
-                        else
-                        {
-                            def = null;
-                            break;
-                        }
-                    }
-                }
-                
-                if( def != null )
-                {
-                    validators.add( def );
-                }
-            }
-        }
-    }
-    
-    private static final class ValidatorDefinition
-    {
-        public String plugin;
-        public String className;
-        public IFacetedProjectValidator validator;
-        public final List constraints = new ArrayList();
-        
-        public boolean isApplicable( final Set facets )
-        
-            throws CoreException
-            
-        {
-            for( Iterator itr = this.constraints.iterator(); itr.hasNext(); )
-            {
-                final ProjectFacetRef ref = (ProjectFacetRef) itr.next();
-                
-                if( ! ref.check( facets ) )
-                {
-                    return false;
-                }
-            }
-            
-            return true;
-        }
-        
-        public synchronized IFacetedProjectValidator getValidator()
-        
-            throws CoreException
-            
-        {
-            if( this.validator == null )
-            {
-                final Object instance
-                    = FacetCorePlugin.instantiate( this.plugin, 
-                                                   this.className, 
-                                                   IFacetedProjectValidator.class );
-            
-                this.validator = (IFacetedProjectValidator) instance;
-            }
-            
-            return this.validator;
-        }
-    }
-            
-}
diff --git a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/Group.java b/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/Group.java
deleted file mode 100644
index b91e369..0000000
--- a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/Group.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/******************************************************************************
- * Copyright (c) 2005 BEA Systems, Inc.
- * 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:
- *    Konstantin Komissarchik - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.wst.common.project.facet.core.internal;
-
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Set;
-
-import org.eclipse.wst.common.project.facet.core.IGroup;
-import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion;
-
-/**
- * The implementation of the {@see IGroup} interface.
- * 
- * @author <a href="mailto:kosta@bea.com">Konstantin Komissarchik</a>
- */
-
-public final class Group 
-
-    implements IGroup 
-    
-{
-    private String id = null;
-    
-    private final Set members = new HashSet();
-    
-    private final Set membersReadOnly 
-        = Collections.unmodifiableSet( this.members );
-    
-    Group() {}
-    
-    public String getId() 
-    {
-        return this.id;
-    }
-    
-    void setId( final String id )
-    {
-        this.id = id;
-    }
-    
-    public Set getMembers()
-    {
-        return this.membersReadOnly;
-    }
-    
-    void addMember( final IProjectFacetVersion fv )
-    {
-        this.members.add( fv );
-    }
-    
-    public String toString()
-    {
-        return this.id;
-    }
-
-}
diff --git a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/IVersion.java b/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/IVersion.java
deleted file mode 100644
index 72b7b8e..0000000
--- a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/IVersion.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/******************************************************************************
- * Copyright (c) 2005 BEA Systems, Inc.
- * 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:
- *    Konstantin Komissarchik - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.wst.common.project.facet.core.internal;
-
-/**
- * @author <a href="mailto:kosta@bea.com">Konstantin Komissarchik</a>
- */
-
-public abstract interface IVersion
-{
-    String getVersionString();
-    Versionable getVersionable();
-}
diff --git a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/IndexedSet.java b/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/IndexedSet.java
deleted file mode 100644
index 1f74a1a..0000000
--- a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/IndexedSet.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/******************************************************************************
- * Copyright (c) 2005 BEA Systems, Inc.
- * 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:
- *    Konstantin Komissarchik - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.wst.common.project.facet.core.internal;
-
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Set;
-
-/**
- * @author <a href="mailto:kosta@bea.com">Konstantin Komissarchik</a>
- */
-
-public final class IndexedSet
-
-    extends HashSet
-    
-{
-    private static final long serialVersionUID = 1L;
-    private final Set unmodifiable = Collections.unmodifiableSet( this );
-    private final HashMap index = new HashMap();
-    
-    public void add( final Object key,
-                     final Object value )
-    {
-        add( value );
-        this.index.put( key, value );
-    }
-    
-    public boolean delete( final Object key )
-    {
-        final Object value = this.index.get( key );
-        
-        if( value == null )
-        {
-            return false;
-        }
-        else
-        {
-            remove( value );
-            this.index.remove( key );
-            return true;
-        }
-    }
-    
-    public Object get( final Object key )
-    {
-        return this.index.get( key );
-    }
-    
-    public boolean containsKey( final Object key )
-    {
-        return this.index.containsKey( key );
-    }
-    
-    public Set getUnmodifiable()
-    {
-        return this.unmodifiable;
-    }
-}
\ No newline at end of file
diff --git a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/Preset.java b/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/Preset.java
deleted file mode 100644
index 9c458bc..0000000
--- a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/Preset.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/******************************************************************************
- * Copyright (c) 2005 BEA Systems, Inc.
- * 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:
- *    Konstantin Komissarchik - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.wst.common.project.facet.core.internal;
-
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Set;
-
-import org.eclipse.wst.common.project.facet.core.IPreset;
-import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion;
-
-/**
- * The implementation of the {@see IPreset} interface.
- * 
- * @author <a href="mailto:kosta@bea.com">Konstantin Komissarchik</a>
- */
-
-public final class Preset
-
-    implements IPreset
-    
-{
-    private String id;
-    private String label;
-    private String description;
-    
-    private final Set facets = new HashSet();
-    
-    private final Set facetsReadOnly 
-        = Collections.unmodifiableSet( this.facets );
-    
-    private boolean isUserDefined = false;
-    
-    Preset() {}
-    
-    public String getId()
-    {
-        return this.id;
-    }
-    
-    void setId( final String id )
-    {
-        this.id = id;
-    }
-
-    public String getLabel()
-    {
-        return this.label;
-    }
-    
-    void setLabel( final String label )
-    {
-        this.label = label;
-    }
-    
-    public String getDescription()
-    {
-        return this.description;
-    }
-    
-    void setDescription( final String description )
-    {
-        this.description = description;
-    }
-    
-    public Set getProjectFacets()
-    {
-        return this.facetsReadOnly;
-    }
-    
-    void addProjectFacet( final IProjectFacetVersion fv )
-    {
-        this.facets.add( fv );
-    }
-    
-    void addProjectFacet( final Set facets )
-    {
-        this.facets.addAll( facets );
-    }
-    
-    public boolean isUserDefined()
-    {
-        return this.isUserDefined;
-    }
-    
-    void setUserDefined( final boolean isUserDefined )
-    {
-        this.isUserDefined = isUserDefined;
-    }
-    
-    public String toString()
-    {
-        return this.id;
-    }
-    
-}
diff --git a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/ProjectFacet.java b/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/ProjectFacet.java
deleted file mode 100644
index f4421dc..0000000
--- a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/ProjectFacet.java
+++ /dev/null
@@ -1,258 +0,0 @@
-/******************************************************************************
- * Copyright (c) 2005, 2006 BEA Systems, Inc.
- * 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:
- *    Konstantin Komissarchik - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.wst.common.project.facet.core.internal;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Set;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.wst.common.project.facet.core.IActionDefinition;
-import org.eclipse.wst.common.project.facet.core.ICategory;
-import org.eclipse.wst.common.project.facet.core.IProjectFacet;
-import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion;
-import org.eclipse.wst.common.project.facet.core.VersionFormatException;
-import org.eclipse.wst.common.project.facet.core.runtime.IRuntime;
-
-/**
- * The implementation of the <code>IProjectFacet</code> interface.
- * 
- * @author <a href="mailto:kosta@bea.com">Konstantin Komissarchik</a>
- */
-
-public final class ProjectFacet 
-
-    extends Versionable
-    implements IProjectFacet 
-    
-{
-    private static final IVersionAdapter VERSION_ADAPTER = new IVersionAdapter()
-    {
-        public String adapt( final Object obj )
-        {
-            return ( (IProjectFacetVersion) obj ).getVersionString();
-        }
-    };
-    
-    private String id;
-    private String plugin;
-    private String label;
-    private String description;
-    private ICategory category;
-    private final List actionDefinitions = new ArrayList();
-    private final List eventHandlers = new ArrayList();
-    
-    ProjectFacet() {}
-    
-    public String getId() 
-    {
-        return this.id;
-    }
-    
-    void setId( final String id )
-    {
-        this.id = id;
-    }
-    
-    public String getPluginId()
-    {
-        return this.plugin;
-    }
-    
-    void setPluginId( final String plugin )
-    {
-        this.plugin = plugin;
-    }
-    
-    public String getLabel() 
-    {
-        return this.label;
-    }
-    
-    void setLabel( final String label )
-    {
-        this.label = label;
-    }
-
-    public String getDescription() 
-    {
-        return this.description;
-    }
-    
-    void setDescription( final String description )
-    {
-        this.description = description;
-    }
-    
-    public ICategory getCategory()
-    {
-        return this.category;
-    }
-    
-    void setCategory( final ICategory category )
-    {
-        this.category = category;
-    }
-    
-    public IProjectFacetVersion getVersion( final String version )
-    {
-        final IProjectFacetVersion fv
-            = (IProjectFacetVersion) this.versions.get( version );
-        
-        if( fv == null )
-        {
-            final String msg 
-                = NLS.bind( Resources.versionNotFound, this.getId(), version );
-            
-            throw new IllegalArgumentException( msg );
-        }
-        
-        return fv;
-    }
-    
-    void addVersion( final IProjectFacetVersion version )
-    {
-        this.versions.add( version.getVersionString(), version );
-    }
-
-    public IProjectFacetVersion getLatestVersion()
-    
-        throws VersionFormatException, CoreException
-        
-    {
-        if( this.versions.size() > 0 )
-        {
-            final Comparator comp = getVersionComparator( true, VERSION_ADAPTER );
-            final Object max = Collections.max( this.versions, comp );
-            
-            return (IProjectFacetVersion) max;
-        }
-        else
-        {
-            return null;
-        }
-    }
-    
-    public IProjectFacetVersion getLatestSupportedVersion( final IRuntime r )
-    
-        throws CoreException
-        
-    {
-        for( Iterator itr = getSortedVersions( false ).iterator(); 
-             itr.hasNext(); )
-        {
-            final IProjectFacetVersion fv = (IProjectFacetVersion) itr.next();
-            
-            if( r.supports( fv ) )
-            {
-                return fv;
-            }
-        }
-        
-        return null;
-    }
-    
-    protected IVersionAdapter getVersionAdapter()
-    {
-        return VERSION_ADAPTER;
-    }
-    
-    public Object getAdapter( final Class type )
-    {
-        return Platform.getAdapterManager().loadAdapter( this, type.getName() );
-    }
-    
-    public String createVersionNotFoundErrMsg( final String verstr )
-    {
-        return NLS.bind( ProjectFacetsManagerImpl.Resources.facetVersionNotDefined,
-                         this.id, verstr );
-    }
-    
-    public String toString()
-    {
-        return this.label;
-    }
-    
-    Set getActionDefinitions( final IProjectFacetVersion fv )
-    {
-        final Set result = new HashSet();
-        
-        for( Iterator itr = this.actionDefinitions.iterator(); itr.hasNext(); )
-        {
-            final IActionDefinition def = (IActionDefinition) itr.next();
-            
-            if( def.getVersionExpr().evaluate( fv.getVersionString() ) )
-            {
-                result.add( def );
-            }
-        }
-        
-        return result;
-    }
-    
-    void addActionDefinition( final ActionDefinition actionDefinition )
-    {
-        this.actionDefinitions.add( actionDefinition );
-    }
-    
-    List getEventHandlers( final IProjectFacetVersion fv,
-                           final EventHandler.Type type )
-    {
-        final List res = new ArrayList();
-        
-        for( Iterator itr = this.eventHandlers.iterator(); itr.hasNext(); )
-        {
-            final EventHandler h = (EventHandler) itr.next();
-            
-            try
-            {
-                if( h.getType() == type &&
-                    h.getVersionExpr().evaluate( (IVersion) fv ) )
-                {
-                    res.add( h );
-                }
-            }
-            catch( CoreException e )
-            {
-                FacetCorePlugin.log( e.getStatus() );
-            }
-        }
-        
-        return res;
-    }
-    
-    void addEventHandler( final EventHandler h )
-    {
-        this.eventHandlers.add( h );
-    }
-    
-    public static final class Resources
-    
-        extends NLS
-        
-    {
-        public static String versionNotFound;
-        
-        static
-        {
-            initializeMessages( ProjectFacet.class.getName(), 
-                                Resources.class );
-        }
-    }
-    
-}
diff --git a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/ProjectFacet.properties b/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/ProjectFacet.properties
deleted file mode 100644
index a77f881..0000000
--- a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/ProjectFacet.properties
+++ /dev/null
@@ -1,2 +0,0 @@
-versionNotFound = Could not find version {1} of project facet {0}.
-
diff --git a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/ProjectFacetRef.java b/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/ProjectFacetRef.java
deleted file mode 100644
index 310f058..0000000
--- a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/ProjectFacetRef.java
+++ /dev/null
@@ -1,144 +0,0 @@
-/******************************************************************************
- * Copyright (c) 2005 BEA Systems, Inc.
- * 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:
- *    Konstantin Komissarchik - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.wst.common.project.facet.core.internal;
-
-import java.util.Iterator;
-import java.util.Set;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.wst.common.project.facet.core.IProjectFacet;
-import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion;
-import org.eclipse.wst.common.project.facet.core.ProjectFacetsManager;
-
-/**
- * @author <a href="mailto:kosta@bea.com">Konstantin Komissarchik</a>
- */
-
-public final class ProjectFacetRef
-{
-    private static final String ATTR_ID = "id"; //$NON-NLS-1$
-    private static final String ATTR_VERSION = "version"; //$NON-NLS-1$
-    
-    private final IProjectFacet f;
-    private final VersionExpr vexpr;
-    
-    public ProjectFacetRef( final IProjectFacet f,
-                            final VersionExpr vexpr )
-    {
-        this.f = f;
-        this.vexpr = vexpr;
-    }
-    
-    public boolean check( final Set facets )
-    
-        throws CoreException
-        
-    {
-        for( Iterator itr = facets.iterator(); itr.hasNext(); )
-        {
-            final IProjectFacetVersion fv = (IProjectFacetVersion) itr.next();
-            
-            if( this.f == fv.getProjectFacet() )
-            {
-                if( this.vexpr != null )
-                {
-                    return this.vexpr.evaluate( (IVersion) fv );
-                }
-                else
-                {
-                    return true;
-                }
-            }
-        }
-        
-        return false;
-    }
-    
-    public static ProjectFacetRef read( final IConfigurationElement config )
-    {
-        final String id = config.getAttribute( ATTR_ID );
-
-        if( id == null )
-        {
-            ProjectFacetsManagerImpl.reportMissingAttribute( config, ATTR_ID );
-            return null;
-        }
-        
-        if( ! ProjectFacetsManager.isProjectFacetDefined( id ) )
-        {
-            ProjectFacetsManagerImpl.reportMissingFacet( id, config.getContributor().getName() );
-            return null;
-        }
-        
-        final IProjectFacet f = ProjectFacetsManager.getProjectFacet( id );
-        
-        final String v = config.getAttribute( ATTR_VERSION );
-        VersionExpr vexpr = null;
-        
-        if( v != null )
-        {
-            try
-            {
-                vexpr = new VersionExpr( f, v, config.getContributor().getName() );
-            }
-            catch( CoreException e )
-            {
-                FacetCorePlugin.log( e.getStatus() );
-                return null;
-            }
-        }
-        
-        return new ProjectFacetRef( f, vexpr );
-    }
-    
-    public String toString()
-    {
-        if( this.vexpr == null )
-        {
-            return this.f.getLabel();
-        }
-        else if( this.vexpr.isSingleVersionMatch() )
-        {
-            return NLS.bind( Resources.exactVersion, this.f.getLabel(),
-                             this.vexpr.toString() );
-        }
-        else if( this.vexpr.isSimpleAllowNewer() )
-        {
-            return NLS.bind( Resources.allowNewer, this.f.getLabel(),
-                             this.vexpr.getFirstVersion() );
-        }
-        else
-        {
-            return NLS.bind( Resources.versionExpr, this.f.getLabel(),
-                             this.vexpr.toString() );
-        }
-    }
-
-    private static final class Resources
-    
-        extends NLS
-        
-    {
-        public static String exactVersion;
-        public static String allowNewer;
-        public static String versionExpr;
-        
-        static
-        {
-            initializeMessages( ProjectFacetRef.class.getName(), 
-                                Resources.class );
-        }
-    }
-    
-}
diff --git a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/ProjectFacetRef.properties b/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/ProjectFacetRef.properties
deleted file mode 100644
index 4fc1f5c..0000000
--- a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/ProjectFacetRef.properties
+++ /dev/null
@@ -1,3 +0,0 @@
-exactVersion = {0} {1}
-allowNewer = {0} {1} or newer
-versionExpr = {0} with version matching expression "{1}"
diff --git a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/ProjectFacetVersion.java b/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/ProjectFacetVersion.java
deleted file mode 100644
index 7e7a87a..0000000
--- a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/ProjectFacetVersion.java
+++ /dev/null
@@ -1,491 +0,0 @@
-/******************************************************************************
- * Copyright (c) 2005, 2006 BEA Systems, Inc.
- * 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:
- *    Konstantin Komissarchik - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.wst.common.project.facet.core.internal;
-
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Set;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.wst.common.project.facet.core.IActionDefinition;
-import org.eclipse.wst.common.project.facet.core.IConstraint;
-import org.eclipse.wst.common.project.facet.core.IGroup;
-import org.eclipse.wst.common.project.facet.core.IProjectFacet;
-import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion;
-import org.eclipse.wst.common.project.facet.core.IVersionExpr;
-import org.eclipse.wst.common.project.facet.core.IFacetedProject.Action;
-
-/**
- * The implementation of the <code>IProjectFacetVersion</code> interface.
- * 
- * @author <a href="mailto:kosta@bea.com">Konstantin Komissarchik</a>
- */
-
-public final class ProjectFacetVersion 
-
-    implements IProjectFacetVersion, IVersion 
-    
-{
-    private ProjectFacet facet;
-    private String version;
-    private IConstraint constraint;
-    private String plugin;
-    
-    ProjectFacetVersion() {}
-    
-    public IProjectFacet getProjectFacet() 
-    {
-        return this.facet;
-    }
-    
-    void setProjectFacet( final ProjectFacet facet )
-    {
-        this.facet = facet;
-    }
-
-    public String getVersionString() 
-    {
-        return this.version;
-    }
-    
-    void setVersionString( final String version )
-    {
-        this.version = version;
-    }
-    
-    public Versionable getVersionable()
-    {
-        return this.facet;
-    }
-
-    public IConstraint getConstraint()
-    {
-        if( this.constraint == null )
-        {
-            this.constraint = new Constraint( this, IConstraint.Type.AND, new Object[ 0 ] );
-        }
-        
-        return this.constraint;
-    }
-    
-    void setConstraint( final IConstraint constraint )
-    {
-        this.constraint = constraint;
-    }
-    
-    public String getPluginId()
-    {
-        return this.plugin;
-    }
-    
-    void setPluginId( final String plugin )
-    {
-        this.plugin = plugin;
-    }
-    
-    public boolean supports( final Set base,
-                             final Action.Type type )
-    {
-        try
-        {
-            return ( getActionDefinitionInternal( base, type ) != null );
-        }
-        catch( CoreException e )
-        {
-            FacetCorePlugin.log( e );
-            return false;
-        }
-    }
-    
-    /**
-     * @deprecated
-     */
-    
-    public boolean supports( final Action.Type type )
-    {
-        try
-        {
-            return getActionDefinition( type ) != null;
-        }
-        catch( CoreException e )
-        {
-            FacetCorePlugin.log( e );
-            return false;
-        }
-    }
-    
-    public Set getActionDefinitions()
-    {
-        return this.facet.getActionDefinitions( this );
-    }
-    
-    public Set getActionDefinitions( final Action.Type type )
-    {
-        final Set result = new HashSet();
-        
-        for( Iterator itr = getActionDefinitions().iterator(); itr.hasNext(); )
-        {
-            final IActionDefinition def = (IActionDefinition) itr.next();
-            
-            if( def.getActionType() == type )
-            {
-                result.add( def );
-            }
-        }
-
-        if( result.size() > 1 && type != Action.Type.VERSION_CHANGE )
-        {
-            final String msg
-                = Resources.bind( Resources.multipleActionDefinitions,
-                                  this.facet.getId(), this.version,
-                                  type.toString() );
-            
-            FacetCorePlugin.logWarning( msg, true );
-        }
-        
-        return result;
-    }
-    
-    public IActionDefinition getActionDefinition( final Set base,
-                                                  final Action.Type type )
-    
-        throws CoreException
-        
-    {
-        final IActionDefinition def = getActionDefinitionInternal( base, type );
-        
-        if( def == null )
-        {
-            final String msg 
-                = NLS.bind( Resources.actionNotSupported, toString(), 
-                            type.toString() );
-            
-            throw new CoreException( FacetCorePlugin.createErrorStatus( msg ) );
-        }
-        
-        return def;
-    }
-    
-    private IActionDefinition getActionDefinitionInternal( final Set base,
-                                                           final Action.Type type )
-    
-        throws CoreException
-        
-    {
-        final Set definitions = getActionDefinitions( type );
-        
-        if( definitions.size() > 0 )
-        {
-            if( type == Action.Type.VERSION_CHANGE )
-            {
-                String fromVersion = null;
-                
-                for( Iterator itr = base.iterator(); itr.hasNext(); )
-                {
-                    final IProjectFacetVersion x = (IProjectFacetVersion) itr.next();
-                    
-                    if( x.getProjectFacet() == this.facet )
-                    {
-                        fromVersion = x.getVersionString();
-                        break;
-                    }
-                }
-                
-                if( fromVersion != null )
-                {
-                    for( Iterator itr = definitions.iterator(); itr.hasNext(); )
-                    {
-                        final IActionDefinition def = (IActionDefinition) itr.next();
-                        
-                        final IVersionExpr vexpr 
-                            = (IVersionExpr) def.getProperty( IActionDefinition.PROP_FROM_VERSIONS );
-                        
-                        if( vexpr == null || vexpr.evaluate( fromVersion ) )
-                        {
-                            return def;
-                        }
-                    }
-                }
-            }
-            else
-            {
-                return (IActionDefinition) definitions.iterator().next();
-            }
-        }
-
-        return null;
-    }
-    
-    /**
-     * @deprecated
-     */
-    
-    public IActionDefinition getActionDefinition( final Action.Type type )
-    
-        throws CoreException
-        
-    {
-        final Set definitions = getActionDefinitions( type );
-        
-        if( definitions.size() == 0 )
-        {
-            return null;
-        }
-        else
-        {
-            return (IActionDefinition) definitions.iterator().next();
-        }
-    }
-    
-    /**
-     * @deprecated
-     */
-    
-    public Object createActionConfig( final Action.Type type,
-                                      final String pjname )
-    
-        throws CoreException
-        
-    {
-        if( ! supports( type ) )
-        {
-            final String msg 
-                = NLS.bind( Resources.actionNotSupported, toString(), 
-                            type.toString() );
-            
-            throw new CoreException( FacetCorePlugin.createErrorStatus( msg ) );
-        }
-        
-        final IActionDefinition def = getActionDefinition( type );
-        
-        if( def == null )
-        {
-            return null;
-        }
-        else
-        {
-            return def.createConfigObject( this, pjname );
-        }
-    }
-    
-    /**
-     * @deprecated
-     */
-    
-    public boolean isSameActionConfig( final Action.Type type,
-                                       final IProjectFacetVersion fv )
-    
-        throws CoreException
-        
-    {
-        return ( (ProjectFacetVersion) fv ).getActionDefinition( type ) == getActionDefinition( type );
-    }
-    
-    public boolean isValidFor( final Set fixed )
-    {
-        for( Iterator itr = fixed.iterator(); itr.hasNext(); )
-        {
-            final IProjectFacet f = (IProjectFacet) itr.next();
-            
-            if( this.facet == f )
-            {
-                return true;
-            }
-        }
-        
-        for( Iterator itr1 = fixed.iterator(); itr1.hasNext(); )
-        {
-            final IProjectFacet f = (IProjectFacet) itr1.next();
-            
-            boolean conflictsWithAllVersions = true;
-            
-            for( Iterator itr2 = f.getVersions().iterator(); itr2.hasNext(); )
-            {
-                final IProjectFacetVersion fv 
-                    = (IProjectFacetVersion) itr2.next();
-                
-                if( ! ( this.conflictsWith( fv ) || fv.conflictsWith( this ) ) )
-                {
-                    conflictsWithAllVersions = false;
-                    break;
-                }
-            }
-            
-            if( conflictsWithAllVersions )
-            {
-                return false;
-            }
-        }
-        
-        return true;
-    }
-    
-    public boolean conflictsWith( final IProjectFacetVersion fv )
-    {
-        if( this == fv )
-        {
-            return false;
-        }
-        else if( this.facet == fv.getProjectFacet() )
-        {
-            return true;
-        }
-        else
-        {
-            return conflictsWith( fv, getConstraint() );
-        }
-    }
-    
-    private boolean conflictsWith( final IProjectFacetVersion fv,
-                                   final IConstraint op )
-    {
-        if( op.getType() == IConstraint.Type.AND )
-        {
-            for( Iterator itr = op.getOperands().iterator(); itr.hasNext(); )
-            {
-                if( conflictsWith( fv, (IConstraint) itr.next() ) )
-                {
-                    return true;
-                }
-            }
-            
-            return false;
-        }
-        else if( op.getType() == IConstraint.Type.OR )
-        {
-            boolean allBranchesConflict = true;
-            
-            for( Iterator itr = op.getOperands().iterator(); itr.hasNext(); )
-            {
-                if( ! conflictsWith( fv, (IConstraint) itr.next() ) )
-                {
-                    allBranchesConflict = false;
-                    break;
-                }
-            }
-            
-            return allBranchesConflict;
-        }
-        else if( op.getType() == IConstraint.Type.CONFLICTS )
-        {
-            final Object firstOperand = op.getOperand( 0 );
-            
-            if( firstOperand instanceof IGroup )
-            {
-                final IGroup group = (IGroup) firstOperand;
-                return group.getMembers().contains( fv );
-            }
-            else
-            {
-                final IProjectFacet f = (IProjectFacet) firstOperand;
-                
-                final VersionExpr vexpr
-                    = op.getOperands().size() == 2 
-                      ? (VersionExpr) op.getOperand( 1 ) : null;
-                
-                try
-                {
-                    if( fv.getProjectFacet() == f )
-                    {
-                        if( vexpr == null || vexpr.evaluate( (IVersion ) fv ) )
-                        {
-                            return true;
-                        }
-                    }
-                    
-                    return false;
-                }
-                catch( CoreException e )
-                {
-                    FacetCorePlugin.log( e );
-                    return false;
-                }
-            }
-        }
-        else if( op.getType() == IConstraint.Type.REQUIRES )
-        {
-            final IProjectFacet rf = (IProjectFacet) op.getOperand( 0 );
-            final VersionExpr vexpr = (VersionExpr) op.getOperand( 1 );
-            
-            final boolean soft
-                = ( (Boolean) op.getOperand( 2 ) ).booleanValue();
-        
-            if( soft )
-            {
-                return true;
-            }
-            else
-            {
-                boolean conflictsWithAllVersions = true;
-                
-                try
-                {
-                    final String vexprstr = vexpr.toString();
-                    
-                    for( Iterator itr = rf.getVersions( vexprstr ).iterator();
-                         itr.hasNext(); )
-                    {
-                        final IProjectFacetVersion rfv 
-                            = (IProjectFacetVersion) itr.next();
-                        
-                        if( ! rfv.conflictsWith( fv ) )
-                        {
-                            conflictsWithAllVersions = false;
-                            break;
-                        }
-                    }
-                }
-                catch( CoreException e )
-                {
-                    FacetCorePlugin.log( e );
-                    return false;
-                }
-            
-                return conflictsWithAllVersions;
-            }
-        }
-        else
-        {
-            throw new IllegalStateException();
-        }
-    }
-    
-    public String toString()
-    {
-        return this.facet.getLabel() + " " + this.version; //$NON-NLS-1$
-    }
-    
-    private static final class Resources
-    
-        extends NLS
-        
-    {
-        public static String actionNotSupported;
-        public static String multipleActionDefinitions;
-        
-        static
-        {
-            initializeMessages( ProjectFacetVersion.class.getName(), 
-                                Resources.class );
-        }
-        
-        public static String bind( final String template,
-                                   final Object arg1,
-                                   final Object arg2,
-                                   final Object arg3 )
-        {
-            return NLS.bind( template, new Object[] { arg1, arg2, arg3 } );
-        }
-    }
-
-}
diff --git a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/ProjectFacetVersion.properties b/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/ProjectFacetVersion.properties
deleted file mode 100644
index 36e31ed..0000000
--- a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/ProjectFacetVersion.properties
+++ /dev/null
@@ -1,2 +0,0 @@
-actionNotSupported = Project facet {0} does not support action type {1}.
-multipleActionDefinitions = More than one declaration found for action type {2} of projet facet {0} {1}.
diff --git a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/ProjectFacetsManagerImpl.java b/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/ProjectFacetsManagerImpl.java
deleted file mode 100644
index 593fe63..0000000
--- a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/ProjectFacetsManagerImpl.java
+++ /dev/null
@@ -1,2349 +0,0 @@
-/******************************************************************************
- * Copyright (c) 2005, 2006 BEA Systems, Inc.
- * 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:
- *    Konstantin Komissarchik - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.wst.common.project.facet.core.internal;
-
-import java.io.PrintWriter;
-import java.io.StringWriter;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IProjectDescription;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.IResourceChangeEvent;
-import org.eclipse.core.resources.IResourceChangeListener;
-import org.eclipse.core.resources.IResourceDelta;
-import org.eclipse.core.resources.IWorkspace;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExtension;
-import org.eclipse.core.runtime.IExtensionPoint;
-import org.eclipse.core.runtime.IExtensionRegistry;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.MultiStatus;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.SubProgressMonitor;
-import org.eclipse.core.runtime.preferences.IEclipsePreferences;
-import org.eclipse.core.runtime.preferences.InstanceScope;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.wst.common.project.facet.core.IActionDefinition;
-import org.eclipse.wst.common.project.facet.core.ICategory;
-import org.eclipse.wst.common.project.facet.core.IConstraint;
-import org.eclipse.wst.common.project.facet.core.IFacetedProject;
-import org.eclipse.wst.common.project.facet.core.IFacetedProjectTemplate;
-import org.eclipse.wst.common.project.facet.core.IGroup;
-import org.eclipse.wst.common.project.facet.core.IPreset;
-import org.eclipse.wst.common.project.facet.core.IProjectFacet;
-import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion;
-import org.eclipse.wst.common.project.facet.core.IFacetedProject.Action;
-import org.osgi.service.prefs.BackingStoreException;
-import org.osgi.service.prefs.Preferences;
-
-/**
- * The implementation of the {@see ProjectFacetsManager} abstract class.
- * 
- * @author <a href="mailto:kosta@bea.com">Konstantin Komissarchik</a>
- */
-
-public final class ProjectFacetsManagerImpl
-{
-    private static final String EXTENSION_ID = "facets"; //$NON-NLS-1$
-
-    private static final String ATTR_CLASS = "class"; //$NON-NLS-1$
-    private static final String ATTR_FACET = "facet"; //$NON-NLS-1$
-    private static final String ATTR_GROUP = "group"; //$NON-NLS-1$
-    private static final String ATTR_ID = "id"; //$NON-NLS-1$
-    private static final String ATTR_NAME = "name"; //$NON-NLS-1$
-    private static final String ATTR_SOFT = "soft"; //$NON-NLS-1$
-    private static final String ATTR_TYPE = "type"; //$NON-NLS-1$
-    private static final String ATTR_VALUE = "value"; //$NON-NLS-1$
-    private static final String ATTR_VERSION = "version"; //$NON-NLS-1$
-    private static final String EL_ACTION = "action"; //$NON-NLS-1$
-    private static final String EL_CATEGORY = "category"; //$NON-NLS-1$
-    private static final String EL_CONFIG_FACTORY = "config-factory"; //$NON-NLS-1$
-    private static final String EL_CONSTRAINT = "constraint"; //$NON-NLS-1$
-    private static final String EL_DELEGATE = "delegate"; //$NON-NLS-1$
-    private static final String EL_DESCRIPTION = "description"; //$NON-NLS-1$
-    private static final String EL_EVENT_HANDLER = "event-handler"; //$NON-NLS-1$
-    private static final String EL_FIXED = "fixed"; //$NON-NLS-1$
-    private static final String EL_GROUP_MEMBER = "group-member"; //$NON-NLS-1$
-    private static final String EL_LABEL = "label"; //$NON-NLS-1$
-    private static final String EL_PRESET = "preset"; //$NON-NLS-1$
-    private static final String EL_PROJECT_FACET = "project-facet"; //$NON-NLS-1$
-    private static final String EL_PROJECT_FACET_VERSION = "project-facet-version"; //$NON-NLS-1$
-    private static final String EL_PROPERTY = "property"; //$NON-NLS-1$
-    private static final String EL_TEMPLATE = "template"; //$NON-NLS-1$
-    private static final String EL_VERSION_COMPARATOR = "version-comparator"; //$NON-NLS-1$
-    
-    private static final Set facetsReportedMissing = new HashSet();
-    
-    private final IndexedSet facets;
-    private final IndexedSet actions;
-    private final IndexedSet categories;
-    private final IndexedSet presets;
-    private final IndexedSet templates;
-    private final IndexedSet groups;
-    private final Map projects;
-    
-    public ProjectFacetsManagerImpl()
-    {
-        long activationStart = 0;
-        
-        if( FacetCorePlugin.isTracingFrameworkActivation() )
-        {
-            final StringWriter sw = new StringWriter();
-            final PrintWriter pw = new PrintWriter( sw );
-            ( new Throwable() ).printStackTrace( pw );
-            
-            String context = sw.getBuffer().toString();
-            final int endOfFirstLine = context.indexOf( '\n' );
-            context = context.substring( endOfFirstLine + 1 );
-            context = context.replaceAll( "\\t", "  " ); //$NON-NLS-1$ //$NON-NLS-2$
-            
-            int length = context.length();
-            
-            if( context.charAt( length - 2 ) == '\r' )
-            {
-                length = length - 2;
-            }
-            else
-            {
-                length = length - 1;
-            }
-            
-            context = context.substring( 0, length );
-            
-            final String msg 
-                = NLS.bind( Resources.tracingFrameworkActivationStarting, 
-                            context ); 
-            
-            System.out.println( msg );
-            
-            activationStart = System.currentTimeMillis();
-        }
-        
-        this.facets = new IndexedSet();
-        this.actions = new IndexedSet();
-        this.categories = new IndexedSet();
-        this.presets = new IndexedSet();
-        this.templates = new IndexedSet();
-        this.groups = new IndexedSet();
-        this.projects = new HashMap();
-        
-        readMetadata();
-        readUserPresets();
-        
-        final IWorkspace ws = ResourcesPlugin.getWorkspace();
-        final IResourceChangeListener ls = new ResourceChangeListener();
-        ws.addResourceChangeListener( ls, IResourceChangeEvent.POST_CHANGE );
-        
-        if( FacetCorePlugin.isTracingFrameworkActivation() )
-        {
-            final long duration 
-                = System.currentTimeMillis() - activationStart;
-            
-            final String msg
-                = NLS.bind( Resources.tracingFrameworkActivationFinished, 
-                            String.valueOf( duration ) );
-            
-            System.out.println( msg );
-        }
-    }
-    
-    public Set getProjectFacets()
-    {
-        return this.facets.getUnmodifiable();
-    }
-    
-    public boolean isProjectFacetDefined( final String id )
-    {
-        return this.facets.containsKey( id );
-    }
-    
-    public IProjectFacet getProjectFacet( final String id )
-    {
-        final IProjectFacet f 
-            = (IProjectFacet) this.facets.get( id );
-        
-        if( f == null )
-        {
-            final String msg = NLS.bind( Resources.facetNotDefined, id );
-            throw new IllegalArgumentException( msg );
-        }
-        
-        return f;
-    }
-    
-    public Set getActionDefinitions()
-    {
-        return this.actions.getUnmodifiable();
-    }
-    
-    public boolean isActionDefined( final String id )
-    {
-        return this.actions.containsKey( id );
-    }
-    
-    public IActionDefinition getActionDefinition( final String id )
-    {
-        final IActionDefinition adef
-            = (IActionDefinition) this.actions.get( id );
-        
-        if( adef == null )
-        {
-            final String msg = NLS.bind( Resources.actionNotDefined, id );
-            throw new IllegalArgumentException( msg );
-        }
-        
-        return adef;
-    }
-    
-    public Set getCategories()
-    {
-        return this.categories.getUnmodifiable();
-    }
-
-    public boolean isCategoryDefined( final String id )
-    {
-        return this.categories.containsKey( id );
-    }
-    
-    public ICategory getCategory( final String id )
-    {
-        final ICategory category 
-            = (ICategory) this.categories.get( id );
-        
-        if( category == null )
-        {
-            final String msg = NLS.bind( Resources.categoryNotDefined, id );
-            throw new IllegalArgumentException( msg );
-        }
-        
-        return category;
-    }
-    
-    public Set getPresets()
-    {
-        return this.presets.getUnmodifiable();
-    }
-    
-    public boolean isPresetDefined( final String id )
-    {
-        return this.presets.containsKey( id );
-    }
-    
-    public IPreset getPreset( final String id )
-    {
-        final IPreset preset = (IPreset) this.presets.get( id );
-        
-        if( preset == null )
-        {
-            final String msg = NLS.bind( Resources.presetNotDefined, id );
-            throw new IllegalArgumentException( msg );
-        }
-        
-        return preset;
-    }
-    
-    public IPreset definePreset( final String name,
-                                 final Set facets )
-    {
-        return definePreset( name, "", facets, true ); //$NON-NLS-1$
-    }
-
-    public IPreset definePreset( final String name,
-                                 final String description,
-                                 final Set facets )
-    {
-        return definePreset( name, description, facets, true );
-    }
-    
-    private IPreset definePreset( final String name,
-                                  final String description,
-                                  final Set facets,
-                                  final boolean save )
-    {
-        synchronized( this.presets )
-        {
-            String id;
-            int i = 0;
-            
-            do
-            {
-                id = ".usr." + i; //$NON-NLS-1$
-                i++;
-            }
-            while( this.presets.containsKey( id ) );
-            
-            final Preset preset = new Preset();
-            
-            preset.setId( id );
-            preset.setLabel( name );
-            preset.setDescription( description == null ? "" : description ); //$NON-NLS-1$
-            preset.addProjectFacet( facets );
-            preset.setUserDefined( true );
-            
-            this.presets.add( id, preset );
-            
-            if( save )
-            {
-                saveUserPresets();
-            }
-            
-            return preset;
-        }
-    }
-    
-    public boolean deletePreset( final IPreset preset )
-    {
-        synchronized( this.presets )
-        {
-            if( ! preset.isUserDefined() )
-            {
-                return false;
-            }
-            
-            final boolean res = this.presets.delete( preset.getId() );
-            
-            if( res )
-            {
-                saveUserPresets();
-            }
-            
-            return res;
-        }
-    }
-    
-    public Set getTemplates()
-    {
-        return this.templates.getUnmodifiable();
-    }
-    
-    public boolean isTemplateDefined( final String id )
-    {
-        return this.templates.containsKey( id );
-    }
-    
-    public IFacetedProjectTemplate getTemplate( final String id )
-    {
-        final IFacetedProjectTemplate template 
-            = (IFacetedProjectTemplate) this.templates.get( id );
-        
-        if( template == null )
-        {
-            final String msg = NLS.bind( Resources.templateNotDefined, id );
-            throw new IllegalArgumentException( msg );
-        }
-        
-        return template;
-    }
-    
-    public Set getGroups()
-    {
-        return this.groups.getUnmodifiable();
-    }
-    
-    public boolean isGroupDefined( final String id )
-    {
-        return this.groups.containsKey( id );
-    }
-    
-    public IGroup getGroup( final String id )
-    {
-        final IGroup group = (IGroup) this.groups.get( id );
-        
-        if( group == null )
-        {
-            final String msg = NLS.bind( Resources.groupNotDefined, id );
-            throw new IllegalArgumentException( msg );
-        }
-        
-        return group;
-    }
-
-    public Set getFacetedProjects()
-    
-        throws CoreException
-        
-    {
-        return getFacetedProjects( null, null );
-    }
-
-    public Set getFacetedProjects( final IProjectFacet f )
-    
-        throws CoreException
-        
-    {
-        return getFacetedProjects( f, null );
-    }
-
-    public Set getFacetedProjects( final IProjectFacetVersion fv )
-    
-        throws CoreException
-        
-    {
-        return getFacetedProjects( null, fv );
-    }
-
-    private Set getFacetedProjects( final IProjectFacet f,
-                                    final IProjectFacetVersion fv )
-    
-        throws CoreException
-        
-    {
-        final IProject[] all 
-            = ResourcesPlugin.getWorkspace().getRoot().getProjects();
-        
-        final Set result = new HashSet();
-        
-        for( int i = 0; i < all.length; i++ )
-        {
-            final IProject proj = all[ i ];
-            final IFacetedProject fproj = create( proj );
-            
-            if( fproj != null )
-            {
-                if( ( f != null && ! fproj.hasProjectFacet( f ) ) ||
-                    ( fv != null && ! fproj.hasProjectFacet( fv ) ) )
-                {
-                    continue;
-                }
-                else
-                {
-                    result.add( fproj );
-                }
-            }
-        }
-        
-        return result;
-    }
-
-    public IFacetedProject create( final IProject project )
-    
-        throws CoreException
-        
-    {
-        if( project.isAccessible() &&
-            project.isNatureEnabled( FacetedProjectNature.NATURE_ID ) )
-        {
-            synchronized( this.projects )
-            {
-                FacetedProject fproj 
-                    = (FacetedProject) this.projects.get( project.getName() );
-                
-                if( fproj == null )
-                {
-                    fproj = new FacetedProject( project );
-                    this.projects.put( project.getName(), fproj );
-                }
-                else
-                {
-                    fproj.refresh();
-                }
-                
-                return fproj;
-            }
-        }
-
-        return null;
-    }
-
-    public IFacetedProject create( final IProject project,
-                                   final boolean convertIfNecessary,
-                                   final IProgressMonitor monitor)
-    
-        throws CoreException
-        
-    {
-        if( monitor != null )
-        {
-            monitor.beginTask( "", 1 ); //$NON-NLS-1$
-        }
-        
-        try
-        {
-            if( project.isAccessible() &&
-                ! project.isNatureEnabled( FacetedProjectNature.NATURE_ID ) && 
-                convertIfNecessary )
-            {
-                IProjectDescription description = project.getDescription();
-                String[] prevNatures = description.getNatureIds();
-                String[] newNatures = new String[ prevNatures.length + 1 ];
-                System.arraycopy( prevNatures, 0, newNatures, 0, prevNatures.length );
-                newNatures[ prevNatures.length ] = FacetedProjectNature.NATURE_ID;
-                description.setNatureIds( newNatures );
-                
-                project.setDescription( description, submon( monitor, 1 ) );
-            }
-            
-            return create( project );
-        }
-        finally
-        {
-            if( monitor != null )
-            {
-                monitor.done();
-            }
-        }
-    }
-    
-    public IFacetedProject create( final String name,
-                                   final IPath location,
-                                   final IProgressMonitor monitor )
-    
-        throws CoreException
-        
-    {
-        if( monitor != null )
-        {
-            monitor.beginTask( "", 2 ); //$NON-NLS-1$
-        }
-        
-        try
-        {
-            final IWorkspace ws = ResourcesPlugin.getWorkspace();
-            final IProject project = ws.getRoot().getProject( name );
-            
-            final IProjectDescription desc
-                = ws.newProjectDescription( name );
-    
-            desc.setLocation( location );
-                    
-            project.create( desc, submon( monitor, 1 ) );
-            project.open( IResource.BACKGROUND_REFRESH, submon( monitor, 1 ) );
-            
-            // This is odd, but apparently nature's configure() method will only
-            // be called if the setDescription() method is used. It will not be
-            // called if nature is added to the project description prior to
-            // calling IProject.create() method.
-            
-            desc.setNatureIds( new String[] { FacetedProjectNature.NATURE_ID } );
-            project.setDescription( desc, null );
-            
-            return create( project );
-        }
-        finally
-        {
-            if( monitor != null )
-            {
-                monitor.done();
-            }
-        }
-    }
-    
-    public IStatus check( final Set base,
-                          final Set actions )
-    {
-        MultiStatus result = Constraint.createMultiStatus();
-        
-        // Verify that all of the actions are supported.
-        
-        for( Iterator itr = actions.iterator(); itr.hasNext(); )
-        {
-            final Action action = (Action) itr.next();
-            
-            if( ! action.getProjectFacetVersion().supports( base, action.getType() ) )
-            {
-                final ValidationProblem.Type ptype;
-                
-                if( action.getType() == Action.Type.INSTALL )
-                {
-                    ptype = ValidationProblem.Type.INSTALL_NOT_SUPPORTED;
-                }
-                else if( action.getType() == Action.Type.UNINSTALL )
-                {
-                    ptype = ValidationProblem.Type.UNINSTALL_NOT_SUPPORTED;
-                }
-                else if( action.getType() == Action.Type.VERSION_CHANGE )
-                {
-                    ptype = ValidationProblem.Type.VERSION_CHANGE_NOT_SUPPORTED;
-                }
-                else
-                {
-                    throw new IllegalStateException();
-                }
-                
-                final IProjectFacetVersion fv = action.getProjectFacetVersion();
-                
-                final ValidationProblem vp
-                    = new ValidationProblem( ptype, 
-                                             fv.getProjectFacet().getLabel(),
-                                             fv.getVersionString() );
-                
-                result.add( vp );
-            }
-        }
-        
-        // Multiple actions on the same facet are not supported in the same
-        // batch. The only exception is an uninstall of a previosly-installed
-        // version followed by an install of a new version.
-        
-        final Map facetToActionsMap = new HashMap();
-        
-        for( Iterator itr = actions.iterator(); itr.hasNext(); )
-        {
-            final Action action = (Action) itr.next();
-            
-            final IProjectFacet f
-                = action.getProjectFacetVersion().getProjectFacet();
-            
-            Set group = (Set) facetToActionsMap.get( f );
-            
-            if( group == null )
-            {
-                group = new HashSet();
-                facetToActionsMap.put( f, group );
-            }
-            
-            group.add( action );
-        }
-        
-        for( Iterator itr1 = facetToActionsMap.entrySet().iterator(); 
-             itr1.hasNext(); )
-        {
-            final Map.Entry entry = (Map.Entry) itr1.next();
-            final Set group = (Set) entry.getValue();
-            
-            if( group.size() > 1 )
-            {
-                boolean bad = true;
-                
-                if( group.size() == 2 )
-                {
-                    Action install = null;
-                    Action uninstall = null;
-                    
-                    for( Iterator itr2 = group.iterator(); itr2.hasNext(); )
-                    {
-                        final Action action = (Action) itr2.next();
-                        
-                        if( action.getType() == Action.Type.INSTALL )
-                        {
-                            install = action;
-                        }
-                        else if( action.getType() == Action.Type.UNINSTALL )
-                        {
-                            uninstall = action;
-                        }
-                        else
-                        {
-                            break;
-                        }
-                    }
-                    
-                    if( install != null && uninstall != null )
-                    {
-                        if( base.contains( uninstall.getProjectFacetVersion() ) )
-                        {
-                            bad = false;
-                        }
-                    }
-                }
-                
-                if( bad )
-                {
-                    final ValidationProblem.Type ptype 
-                        = ValidationProblem.Type.MULTIPLE_ACTIONS_NOT_SUPPORTED;
-                    
-                    result.add( new ValidationProblem( ptype ) );
-                    
-                    break;
-                }
-            }
-        }
-        
-        // Check for attempts to uninstall or change version of facets that
-        // haven't been installed. Also check for attempts to install a facet
-        // that's already installed.
-        
-        for( Iterator itr1 = actions.iterator(); itr1.hasNext(); )
-        {
-            final Action action = (Action) itr1.next();
-            final IProjectFacetVersion fv = action.getProjectFacetVersion();
-            final IProjectFacet f = fv.getProjectFacet();
-
-            ValidationProblem.Type ptype = null;
-            
-            if( action.getType() == Action.Type.UNINSTALL )
-            {
-                if( ! base.contains( fv ) )
-                {
-                    ptype = ValidationProblem.Type.CANNOT_UNINSTALL;
-                }
-            }
-            else
-            {
-                IProjectFacetVersion existing = null;
-                
-                for( Iterator itr2 = base.iterator(); itr2.hasNext(); )
-                {
-                    final IProjectFacetVersion temp
-                        = (IProjectFacetVersion) itr2.next();
-                    
-                    if( temp.getProjectFacet() == f )
-                    {
-                        existing = temp;
-                        break;
-                    }
-                }
-                
-                if( action.getType() == Action.Type.VERSION_CHANGE && 
-                    existing == null )
-                {
-                    ptype = ValidationProblem.Type.CANNOT_CHANGE_VERSION;
-                }
-                else if( action.getType() == Action.Type.INSTALL &&
-                         existing != null )
-                {
-                    ptype = ValidationProblem.Type.FACET_ALREADY_INSTALLED;
-                }
-            }
-            
-            if( ptype != null )
-            {
-                result.add( new ValidationProblem( ptype, f.getLabel(),
-                                                   fv.getVersionString() ) );
-            }
-        }
-        
-        // Abort at this point if there are any validation problems.
-        
-        if( ! result.isOK() )
-        {
-            return result;
-        }
-        
-        // Apply all the uninstall actions.
-        
-        final Set all = new HashSet( base );
-        
-        for( Iterator itr = actions.iterator(); itr.hasNext(); )
-        {
-            final Action action = (Action) itr.next();
-            
-            if( action.getType() == Action.Type.UNINSTALL )
-            {
-                apply( all, action );
-            }
-        }
-        
-        // Apply all the install and version change actions.
-        
-        for( Iterator itr = actions.iterator(); itr.hasNext(); )
-        {
-            final Action action = (Action) itr.next();
-            
-            if( action.getType() != Action.Type.UNINSTALL )
-            {
-                apply( all, action );
-            }
-        }
-        
-        // Check the contrains on all of the facets.
-        
-        for( Iterator itr = all.iterator(); itr.hasNext(); )
-        {
-            final IProjectFacetVersion fv
-                = (IProjectFacetVersion) itr.next();
-            
-            final IConstraint constraint = fv.getConstraint();
-            
-            if( constraint != null )
-            {
-                final IStatus st = constraint.check( all );
-                
-                if( ! st.isOK() )
-                {
-                    result.addAll( st );
-                }
-            }
-        }
-        
-        // Eliminate symmetric conflicts problem entries.
-        
-        final Set problems = new HashSet();
-        IStatus[] children = result.getChildren();
-        
-        for( int i = 0; i < children.length; i++ )
-        {
-            problems.add( children[ i ] );
-        }
-        
-        final Set toremove = new HashSet();
-        
-        for( Iterator itr = problems.iterator(); itr.hasNext(); )
-        {
-            final ValidationProblem problem = (ValidationProblem) itr.next();
-            
-            if( toremove.contains( problem ) )
-            {
-                itr.remove();
-            }
-            else
-            {
-                if( problem.getType() == ValidationProblem.Type.CONFLICTS )
-                {
-                    final Object[] p = problem.getParameters();
-                    
-                    final ValidationProblem reverse
-                        = new ValidationProblem( ValidationProblem.Type.CONFLICTS,
-                                                 new Object[] { p[ 1 ], p[ 0 ] } );
-                    
-                    toremove.add( reverse );
-                }
-            }
-        }
-        
-        if( children.length != problems.size() )
-        {
-            children 
-                = (IStatus[]) problems.toArray( new IStatus[ problems.size() ] );
-            
-            result = Constraint.createMultiStatus( children );
-        }
-        
-        // Return the problems to the caller.
-        
-        return result;
-    }
-    
-    public void sort( final Set base,
-                      final List actions )
-    {
-        final int count = actions.size();
-        
-        if( count == 0 )
-        {
-            return;
-        }
-        
-        // Before sorting, check that the constraints can be met. Otherwise
-        // the sort algorithm will not terminate.
-        
-        final IStatus st = check( base, new HashSet( actions ) );
-        
-        if( ! st.isOK() )
-        {
-            FacetCorePlugin.log( st );
-            return;
-        }
-        
-        // Initialize tracing.
-        
-        List unsorted = null;
-        int steps = 0;
-        
-        if( FacetCorePlugin.isTracingActionSorting() )
-        {
-            unsorted = new ArrayList( actions );
-        }
-        
-        // Step 1 : Pre-sort all uninstall actions to the front of the list. 
-        //          Within that order, sort actions based on facet id. The
-        //          secondary sort assures a stable sort order among actions on
-        //          unrelated facets.
-        
-        final Comparator comp = new Comparator()
-        {
-            public int compare( final Object obj1, 
-                                final Object obj2 )
-            {
-                final Action a1 = (Action) obj1;
-                final Action a2 = (Action) obj2;
-                
-                int res = compare( a1.getType(), a2.getType() );
-                
-                if( res == 0 )
-                {
-                    final String fid1 
-                        = a1.getProjectFacetVersion().getProjectFacet().getId();
-                    
-                    final String fid2 
-                        = a2.getProjectFacetVersion().getProjectFacet().getId();
-                    
-                    res = fid1.compareTo( fid2 );
-                }
-                
-                return res;
-            }
-            
-            private int compare( final Action.Type t1,
-                                 final Action.Type t2 )
-            {
-                if( t1 == t2 )
-                {
-                    return 0;
-                }
-                else if( t1 == Action.Type.UNINSTALL )
-                {
-                    return -1;
-                }
-                else if( t2 == Action.Type.UNINSTALL )
-                {
-                    return 1;
-                }
-                else
-                {
-                    return 0;
-                }
-            }
-        };
-        
-        Collections.sort( actions, comp );
-        
-        // Step 2 : Sort based on the constraints.
-        
-        final HashSet fnl = new HashSet( base );
-        
-        for( Iterator itr = actions.iterator(); itr.hasNext(); )
-        {
-            apply( fnl, (Action) itr.next() );
-        }
-        
-        boolean makeAnotherPass = true;
-        
-        while( makeAnotherPass )
-        {
-            makeAnotherPass = false;
-            
-            HashSet state = new HashSet( base );
-            
-            for( int i = 0; i < count; )
-            {
-                final Action action = (Action) actions.get( i );
-                final Action.Type type = action.getType();
-                final IProjectFacetVersion fv = action.getProjectFacetVersion();
-                final IConstraint constraint = fv.getConstraint();
-                
-                if( type == Action.Type.UNINSTALL )
-                {
-                    if( ! constraint.check( state, true ).isOK() &&
-                        constraint.check( base, true ).isOK() )
-                    {
-                        moveToFront( actions, i );
-                        makeAnotherPass = true;
-                        steps++;
-                        break;
-                    }
-                    else
-                    {
-                        apply( state, action );
-                        i++;
-                    }
-                }
-                else
-                {
-                    if( constraint.check( state ).isOK() &&
-                        ! ( ! constraint.check( state, true ).isOK() &&
-                            constraint.check( fnl, true ).isOK() ) )
-                    {
-                        apply( state, action );
-                        i++;
-                    }
-                    else
-                    {
-                        moveToEnd( actions, i );
-                        steps++;
-                    }
-                }
-            }
-        }
-        
-        // Output tracing information.
-        
-        if( FacetCorePlugin.isTracingActionSorting() )
-        {
-            final String text
-                = Resources.bind( Resources.tracingActionSorting,
-                                  toString( base ), toString( unsorted ),
-                                  toString( actions ), String.valueOf( steps ) );
-            
-            System.out.println( text );
-        }
-    }
-    
-    static void apply( final Set facets,
-                       final Action action )
-    {
-        final Action.Type type = action.getType();
-        final IProjectFacetVersion fv = action.getProjectFacetVersion();
-        
-        if( type == Action.Type.INSTALL )
-        {
-            facets.add( fv );
-        }
-        else if( type == Action.Type.UNINSTALL )
-        {
-            facets.remove( fv );
-        }
-        else if( type == Action.Type.VERSION_CHANGE )
-        {
-            for( Iterator itr = facets.iterator(); itr.hasNext(); )
-            {
-                final IProjectFacetVersion x 
-                    = (IProjectFacetVersion) itr.next();
-                
-                if( x.getProjectFacet() == fv.getProjectFacet() )
-                {
-                    itr.remove();
-                    break;
-                }
-            }
-            
-            facets.add( fv );
-        }
-    }
-    
-    public static void reportMissingFacet( final String fid,
-                                           final String plugin )
-    {
-        synchronized( facetsReportedMissing )
-        {
-            if( ! facetsReportedMissing.contains( fid ) )
-            {
-                final String msg
-                    = NLS.bind( Resources.facetNotDefined, fid ) +
-                      NLS.bind( Resources.usedInPlugin, plugin );
-                
-                FacetCorePlugin.log( msg );
-                
-                facetsReportedMissing.add( fid );
-            }
-        }
-    }
-
-    public static void reportMissingFacet( final String fid,
-                                           final IProjectFacetVersion fv )
-    {
-        synchronized( facetsReportedMissing )
-        {
-            if( ! facetsReportedMissing.contains( fid ) )
-            {
-                final String msg
-                    = NLS.bind( Resources.facetNotDefined, fid ) +
-                      NLS.bind( Resources.usedInConstraint, 
-                                fv.getProjectFacet().getId(),
-                                fv.getVersionString() );
-                
-                FacetCorePlugin.log( msg );
-                
-                facetsReportedMissing.add( fid );
-            }
-        }
-    }
-    
-    private static IProgressMonitor submon( final IProgressMonitor monitor,
-                                            final int ticks )
-    {
-        if( monitor == null )
-        {
-            return null;
-        }
-        else
-        {
-            return new SubProgressMonitor( monitor, ticks );
-        }
-    }
-    
-    private static void moveToFront( final List actions,
-                                     final int index )
-    {
-        final Action action = (Action) actions.get( index );
-        
-        for( int i = index; i > 0; i-- )
-        {
-            actions.set( i, actions.get( i - 1 ) );
-        }
-        
-        actions.set( 0, action );
-    }
-    
-    private static void moveToEnd( final List actions,
-                                   final int index )
-    {
-        final Action action = (Action) actions.get( index );
-        
-        for( int i = index + 1, n = actions.size(); i < n; i++ )
-        {
-            actions.set( i - 1, actions.get( i ) );
-        }
-        
-        actions.set( actions.size() - 1, action );
-    }
-    
-    private void readMetadata()
-    {
-        final IExtensionRegistry registry = Platform.getExtensionRegistry();
-        
-        final IExtensionPoint point 
-            = registry.getExtensionPoint( FacetCorePlugin.PLUGIN_ID, 
-                                          EXTENSION_ID );
-        
-        if( point == null )
-        {
-            throw new RuntimeException( "Extension point not found!" ); //$NON-NLS-1$
-        }
-        
-        final ArrayList cfgels = new ArrayList();
-        final IExtension[] extensions = point.getExtensions();
-        
-        for( int i = 0; i < extensions.length; i++ )
-        {
-            final IConfigurationElement[] elements 
-                = extensions[ i ].getConfigurationElements();
-            
-            for( int j = 0; j < elements.length; j++ )
-            {
-                cfgels.add( elements[ j ] );
-            }
-        }
-        
-        for( int i = 0, n = cfgels.size(); i < n; i++ )
-        {
-            final IConfigurationElement config
-                = (IConfigurationElement) cfgels.get( i );
-            
-            if( config.getName().equals( EL_CATEGORY ) )
-            {
-                readCategory( config );
-            }
-        }
-        
-        for( int i = 0, n = cfgels.size(); i < n; i++ )
-        {
-            final IConfigurationElement config
-                = (IConfigurationElement) cfgels.get( i );
-            
-            if( config.getName().equals( EL_PROJECT_FACET ) )
-            {
-                readProjectFacet( config );
-            }
-        }
-        
-        final Map fvToConstraint = new HashMap();
-        final Map fvToActions = new HashMap();
-        
-        for( int i = 0, n = cfgels.size(); i < n; i++ )
-        {
-            final IConfigurationElement config
-                = (IConfigurationElement) cfgels.get( i );
-            
-            if( config.getName().equals( EL_PROJECT_FACET_VERSION ) )
-            {
-                readProjectFacetVersion( config, fvToConstraint, fvToActions );
-            }
-        }
-        
-        for( Iterator itr = fvToConstraint.entrySet().iterator(); 
-             itr.hasNext(); )
-        {
-            final Map.Entry entry = (Map.Entry) itr.next();
-            
-            final ProjectFacetVersion fv = (ProjectFacetVersion) entry.getKey();
-            
-            final IConfigurationElement config 
-                = (IConfigurationElement) entry.getValue();
-            
-            readConstraint( config, fv );
-        }
-        
-        for( Iterator itr1 = fvToActions.entrySet().iterator(); itr1.hasNext(); )
-        {
-            final Map.Entry entry = (Map.Entry) itr1.next();
-            final ProjectFacetVersion fv = (ProjectFacetVersion) entry.getKey();
-            final List actions = (List) entry.getValue();
-            
-            for( Iterator itr2 = actions.iterator(); itr2.hasNext(); )
-            {
-                final IConfigurationElement config 
-                    = (IConfigurationElement) itr2.next();
-                
-                readAction( config, (ProjectFacet) fv.getProjectFacet(), 
-                            fv.getVersionString() );
-            }
-        }
-
-        for( int i = 0, n = cfgels.size(); i < n; i++ )
-        {
-            final IConfigurationElement config
-                = (IConfigurationElement) cfgels.get( i );
-            
-            if( config.getName().equals( EL_ACTION ) )
-            {
-                readAction( config );
-            }
-            else if( config.getName().equals( EL_EVENT_HANDLER ) )
-            {
-                readEventHandler( config );
-            }
-        }
-        
-        for( int i = 0, n = cfgels.size(); i < n; i++ )
-        {
-            final IConfigurationElement config
-                = (IConfigurationElement) cfgels.get( i );
-            
-            if( config.getName().equals( EL_PRESET ) )
-            {
-                readPreset( config );
-            }
-        }
-        
-        for( int i = 0, n = cfgels.size(); i < n; i++ )
-        {
-            final IConfigurationElement config
-                = (IConfigurationElement) cfgels.get( i );
-            
-            if( config.getName().equals( EL_TEMPLATE ) )
-            {
-                readTemplate( config );
-            }
-        }
-    }
-    
-    private void readCategory( final IConfigurationElement config )
-    {
-        final Category category = new Category();
-        category.setPluginId( config.getContributor().getName() );
-        
-        final String id = config.getAttribute( ATTR_ID );
-
-        if( id == null )
-        {
-            reportMissingAttribute( config, ATTR_ID );
-            return;
-        }
-
-        category.setId( id );
-
-        final IConfigurationElement[] children = config.getChildren();
-        
-        for( int i = 0; i < children.length; i++ )
-        {
-            final IConfigurationElement child = children[ i ];
-            final String childName = child.getName();
-            
-            if( childName.equals( EL_LABEL ) )
-            {
-                category.setLabel( child.getValue().trim() );
-            }
-            else if( childName.equals( EL_DESCRIPTION ) )
-            {
-                category.setDescription( child.getValue().trim() );
-            }
-        }
-        
-        if( category.getLabel() == null )
-        {
-            category.setLabel( category.getId() );
-        }
-        
-        if( category.getDescription() == null )
-        {
-            category.setDescription( "" ); //$NON-NLS-1$
-        }
-        
-        this.categories.add( id, category );
-    }
-    
-    private void readProjectFacet( final IConfigurationElement config )
-    {
-        final String id = config.getAttribute( ATTR_ID );
-
-        if( id == null )
-        {
-            reportMissingAttribute( config, ATTR_ID );
-            return;
-        }
-        
-        final ProjectFacet descriptor = new ProjectFacet();
-        descriptor.setId( id );
-        descriptor.setPluginId( config.getContributor().getName() );
-
-        final IConfigurationElement[] children = config.getChildren();
-        
-        for( int i = 0; i < children.length; i++ )
-        {
-            final IConfigurationElement child = children[ i ];
-            final String childName = child.getName();
-            
-            if( childName.equals( EL_LABEL ) )
-            {
-                descriptor.setLabel( child.getValue().trim() );
-            }
-            else if( childName.equals( EL_DESCRIPTION ) )
-            {
-                descriptor.setDescription( child.getValue().trim() );
-            }
-            else if( childName.equals( EL_VERSION_COMPARATOR ) )
-            {
-                final String clname = child.getAttribute( ATTR_CLASS );
-                
-                if( clname == null )
-                {
-                    reportMissingAttribute( child, ATTR_CLASS );
-                    return;
-                }
-                
-                descriptor.setVersionComparator( clname );
-            }
-            else if( childName.equals( EL_CATEGORY ) )
-            {
-                final String catname = child.getValue().trim();
-                
-                final Category category 
-                    = (Category) this.categories.get( catname );
-                
-                if( category == null )
-                {
-                    final String msg
-                        = NLS.bind( Resources.categoryNotDefined, catname ) +
-                          NLS.bind( Resources.usedInPlugin, 
-                                    child.getContributor().getName() );
-                    
-                    FacetCorePlugin.log( msg );
-                    
-                    return;
-                }
-                
-                descriptor.setCategory( category );
-                category.addProjectFacet( descriptor );
-            }
-        }
-        
-        if( descriptor.getLabel() == null )
-        {
-            descriptor.setLabel( id );
-        }
-        
-        if( descriptor.getDescription() == null )
-        {
-            descriptor.setDescription( "" ); //$NON-NLS-1$
-        }
-        
-        this.facets.add( id, descriptor );
-    }
-    
-    private void readProjectFacetVersion( final IConfigurationElement config,
-                                          final Map fvToConstraint,
-                                          final Map fvToActions )
-    {
-        final String fid = config.getAttribute( ATTR_FACET );
-
-        if( fid == null )
-        {
-            reportMissingAttribute( config, ATTR_FACET );
-            return;
-        }
-        
-        final String ver = config.getAttribute( ATTR_VERSION );
-
-        if( ver == null )
-        {
-            reportMissingAttribute( config, ATTR_VERSION );
-            return;
-        }
-        
-        final ProjectFacet f = (ProjectFacet) this.facets.get( fid );
-        
-        if( f == null )
-        {
-            reportMissingFacet( fid, config.getContributor().getName() );
-            return;
-        }
-        
-        final ProjectFacetVersion fv
-            = new ProjectFacetVersion();
-        
-        fv.setProjectFacet( f );
-        fv.setVersionString( ver );
-        fv.setPluginId( config.getContributor().getName() );
-        
-        final List actions = new ArrayList();
-        fvToActions.put( fv, actions );
-        
-        final IConfigurationElement[] children = config.getChildren();
-        
-        for( int i = 0; i < children.length; i++ )
-        {
-            final IConfigurationElement child = children[ i ];
-            final String childName = child.getName();
-            
-            if( childName.equals( EL_CONSTRAINT ) )
-            {
-                fvToConstraint.put( fv, child );
-            }
-            else if( childName.equals( EL_GROUP_MEMBER ) )
-            {
-                final String id = child.getAttribute( ATTR_ID );
-                
-                if( id == null )
-                {
-                    reportMissingAttribute( child, ATTR_ID );
-                    return;
-                }
-                
-                Group group = (Group) this.groups.get( id );
-                
-                if( group == null )
-                {
-                    group = new Group();
-                    group.setId( id );
-                    
-                    this.groups.add( id, group );
-                }
-                
-                group.addMember( fv );
-            }
-            else if( childName.equals( EL_ACTION ) )
-            {
-                actions.add( child );
-            }
-        }
-        
-        f.addVersion( fv );
-
-        // This has to happen after facet version is registered.
-        
-        for( int i = 0; i < children.length; i++ )
-        {
-            final IConfigurationElement child = children[ i ];
-            final String childName = child.getName();
-            
-            if( childName.equals( EL_EVENT_HANDLER ) )
-            {
-                readEventHandler( child, f, ver );
-            }
-        }
-    }
-    
-    private void readAction( final IConfigurationElement config )
-    {
-        final String fid = config.getAttribute( ATTR_FACET );
-
-        if( fid == null )
-        {
-            reportMissingAttribute( config, ATTR_FACET );
-            return;
-        }
-        
-        final ProjectFacet f = (ProjectFacet) this.facets.get( fid );
-        
-        if( f == null )
-        {
-            reportMissingFacet( fid, config.getContributor().getName() );
-            return;
-        }
-        
-        final String ver = config.getAttribute( ATTR_VERSION );
-
-        if( ver == null )
-        {
-            reportMissingAttribute( config, ATTR_VERSION );
-            return;
-        }
-        
-        readAction( config, f, ver );
-    }
-
-    private void readAction( final IConfigurationElement config,
-                             final ProjectFacet f,
-                             final String version )
-    {
-        final String pluginId = config.getContributor().getName();
-        final ActionDefinition def = new ActionDefinition();
-        
-        def.setPluginId( pluginId );
-        
-        final String type = config.getAttribute( ATTR_TYPE );
-        
-        if( type == null )
-        {
-            reportMissingAttribute( config, ATTR_TYPE );
-            return;
-        }
-        
-        // Backwards compatibility of deprecated functionality.
-        
-        if( type.equals( "runtime-changed" ) ) //$NON-NLS-1$
-        {
-            final String msg
-                = NLS.bind( Resources.deprecatedRuntimeChangedAction, pluginId );
-            
-            FacetCorePlugin.logWarning( msg, true );
-            
-            readEventHandler( config, f, version );
-            
-            return;
-        }
-        
-        // End of backwards compatibility code.
-        
-        def.setActionType( Action.Type.valueOf( type ) ); 
-
-        if( def.getActionType() == null )
-        {
-            final String msg
-                = NLS.bind( Resources.invalidActionType, type ) +
-                  NLS.bind( Resources.usedInPlugin, pluginId );
-            
-            FacetCorePlugin.log( msg );
-            
-            return;
-        }
-        
-        try
-        {
-            def.setVersionExpr( new VersionExpr( f, version, pluginId ) );
-        }
-        catch( CoreException e )
-        {
-            FacetCorePlugin.log( e );
-            return;
-        }
-
-        final IConfigurationElement[] children = config.getChildren();
-        
-        for( int i = 0; i < children.length; i++ )
-        {
-            final IConfigurationElement child = children[ i ];
-            final String childName = child.getName();
-            
-            if( childName.equals( EL_CONFIG_FACTORY ) )
-            {
-                final String clname = child.getAttribute( ATTR_CLASS );
-                
-                if( clname == null )
-                {
-                    reportMissingAttribute( child, ATTR_CLASS );
-                    return;
-                }
-                
-                def.setConfigFactoryClassName( clname );
-            }
-            else if( childName.equals( EL_DELEGATE ) )
-            {
-                final String clname = child.getAttribute( ATTR_CLASS );
-                
-                if( clname == null )
-                {
-                    reportMissingAttribute( config, ATTR_CLASS );
-                    return;
-                }
-                
-                def.setDelegateClassName( clname );
-            }
-            else if( childName.equals( EL_PROPERTY ) )
-            {
-                final String name = child.getAttribute( ATTR_NAME );
-
-                if( name == null )
-                {
-                    reportMissingAttribute( config, ATTR_NAME );
-                    return;
-                }
-
-                final String value = child.getAttribute( ATTR_VALUE );
-                
-                if( value == null )
-                {
-                    reportMissingAttribute( config, ATTR_VALUE );
-                    return;
-                }
-                
-                if( name.equals( IActionDefinition.PROP_FROM_VERSIONS ) )
-                {
-                    if( def.getActionType() != Action.Type.VERSION_CHANGE )
-                    {
-                        final String msg
-                            = NLS.bind( Resources.propertyNotApplicable, name,
-                                        def.getActionType().name() );
-                        
-                        FacetCorePlugin.logWarning( msg );
-                    }
-                    
-                    try
-                    {
-                        final VersionExpr vexpr 
-                            = new VersionExpr( f, value, pluginId );
-                        
-                        def.setProperty( name, vexpr );
-                    }
-                    catch( CoreException e )
-                    {
-                        FacetCorePlugin.log( e );
-                        return;
-                    }
-                }
-                else
-                {
-                    final String msg
-                        = NLS.bind( Resources.unknownProperty, name ) +
-                          NLS.bind( Resources.usedInPlugin, pluginId );
-                    
-                    FacetCorePlugin.logWarning( msg );
-                }
-            }
-        }
-        
-        String id = config.getAttribute( ATTR_ID );
-        
-        if( id == null )
-        {
-            final StringBuffer buf = new StringBuffer();
-            
-            buf.append( f.getId() );
-            buf.append( '#' );
-            buf.append( version );
-            buf.append( '#' );
-            buf.append( def.getActionType().name() );
-            
-            for( Iterator itr = def.getProperties().entrySet().iterator(); 
-                 itr.hasNext(); )
-            {
-                final Map.Entry entry = (Map.Entry) itr.next();
-                
-                buf.append( '#' );
-                buf.append( (String) entry.getKey() );
-                buf.append( '=' );
-                buf.append( entry.getValue().toString() );
-                
-            }
-            
-            id = buf.toString();
-        }
-        
-        def.setId( id );
-        
-        if( isActionDefined( id ) )
-        {
-            final String msg
-                = NLS.bind( Resources.actionAlreadyDefined, id, pluginId );
-            
-            FacetCorePlugin.logError( msg );
-        }
-        else
-        {
-            this.actions.add( def.getId(), def );
-            f.addActionDefinition( def );
-        }
-    }
-    
-    private void readEventHandler( final IConfigurationElement config )
-    {
-        final String fid = config.getAttribute( ATTR_FACET );
-
-        if( fid == null )
-        {
-            reportMissingAttribute( config, ATTR_FACET );
-            return;
-        }
-        
-        final ProjectFacet f = (ProjectFacet) this.facets.get( fid );
-        
-        if( f == null )
-        {
-            reportMissingFacet( fid, config.getContributor().getName() );
-            return;
-        }
-        
-        final String ver = config.getAttribute( ATTR_VERSION );
-
-        if( ver == null )
-        {
-            reportMissingAttribute( config, ATTR_VERSION );
-            return;
-        }
-        
-        readEventHandler( config, f, ver );
-    }
-
-    private void readEventHandler( final IConfigurationElement config,
-                                   final ProjectFacet f,
-                                   final String version )
-    {
-        final EventHandler h = new EventHandler();
-        final String pluginId = config.getContributor().getName();
-        h.setPluginId( pluginId );
-        
-        final String type = config.getAttribute( ATTR_TYPE );
-        
-        if( type == null )
-        {
-            reportMissingAttribute( config, ATTR_TYPE );
-            return;
-        }
-        
-        if( type.equals( "runtime-changed" ) ) //$NON-NLS-1$
-        {
-            // Backwards compatibility of deprecated functionality.
-            
-            h.setType( EventHandler.Type.RUNTIME_CHANGED );
-        }
-        else
-        {
-            h.setType( EventHandler.Type.valueOf( type ) );
-        }
-        
-        if( h.getType() == null )
-        {
-            final String msg
-                = NLS.bind( Resources.invalidEventHandlerType, type ) +
-                  NLS.bind( Resources.usedInPlugin, pluginId );
-            
-            FacetCorePlugin.log( msg );
-            
-            return;
-        }
-        
-        try
-        {
-            h.setVersionExpr( new VersionExpr( f, version, pluginId ) );
-        }
-        catch( CoreException e )
-        {
-            FacetCorePlugin.log( e );
-            return;
-        }
-
-        final IConfigurationElement[] children = config.getChildren();
-        
-        for( int i = 0; i < children.length; i++ )
-        {
-            final IConfigurationElement child = children[ i ];
-            final String childName = child.getName();
-            
-            if( childName.equals( EL_DELEGATE ) )
-            {
-                final String clname = child.getAttribute( ATTR_CLASS );
-                
-                if( clname == null )
-                {
-                    reportMissingAttribute( config, ATTR_CLASS );
-                    return;
-                }
-                
-                h.setDelegate( clname );
-            }
-        }
-        
-        if( ! h.hasDelegate() )
-        {
-            reportMissingElement( config, EL_DELEGATE );
-            return;
-        }
-        
-        f.addEventHandler( h );
-    }
-    
-    private void readConstraint( final IConfigurationElement config,
-                                 final ProjectFacetVersion fv )
-    {
-        final IConfigurationElement[] ops = config.getChildren();
-        final ArrayList parsed = new ArrayList();
-        
-        for( int j = 0; j < ops.length; j++ )
-        {
-            final IConstraint op = readConstraintHelper( ops[ j ], fv );
-            
-            if( op != null )
-            {
-                parsed.add( op );
-            }
-        }
-        
-        if( parsed.size() == 1 )
-        {
-            fv.setConstraint( (IConstraint) parsed.get( 0 ) );
-        }
-        else if( parsed.size() > 1 )
-        {
-            final IConstraint and 
-                = new Constraint( fv, IConstraint.Type.AND, 
-                                  parsed.toArray() );
-            
-            fv.setConstraint( and );
-        }
-    }
-    
-    private IConstraint readConstraintHelper( final IConfigurationElement root,
-                                              final ProjectFacetVersion fv )
-    {
-        final String pluginId = root.getContributor().getName();
-        
-        final IConstraint.Type type
-            = IConstraint.Type.valueOf( root.getName() );
-        
-        final Object[] operands;
-     
-        if( type == IConstraint.Type.AND ||
-            type == IConstraint.Type.OR )
-        {
-            final IConfigurationElement[] children = root.getChildren();
-            operands = new IConstraint[ children.length ];
-            
-            for( int i = 0; i < children.length; i++ )
-            {
-                final IConstraint operand 
-                    = readConstraintHelper( children[ i ], fv );
-                
-                if( operand == null )
-                {
-                    return null;
-                }
-                
-                operands[ i ] = operand;
-            }
-        }
-        else if( type == IConstraint.Type.REQUIRES )
-        {
-            final String fid = root.getAttribute( ATTR_FACET );
-            
-            if( fid == null )
-            {
-                reportMissingAttribute( root, ATTR_FACET );
-                return null;
-            }
-
-            final String vexprstr = root.getAttribute( ATTR_VERSION );
-            
-            if( vexprstr == null )
-            {
-                reportMissingAttribute( root, ATTR_VERSION );
-                return null;
-            }
-            
-            final IProjectFacet f;
-            final VersionExpr vexpr;
-            
-            try
-            {
-                f = getProjectFacet( fid );
-                vexpr = new VersionExpr( f, vexprstr, pluginId );
-            }
-            catch( CoreException e )
-            {
-                FacetCorePlugin.log( e );
-                return null;
-            }
-            
-            final String softStr = root.getAttribute( ATTR_SOFT );
-            Boolean soft = Boolean.FALSE;
-            
-            if( softStr != null && softStr.equals( Boolean.TRUE.toString() ) )
-            {
-                soft = Boolean.TRUE;
-            }
-            
-            operands = new Object[] { f, vexpr, soft };
-        }
-        else if( type == IConstraint.Type.CONFLICTS )
-        {
-            final String gid = root.getAttribute( ATTR_GROUP );
-            final String fid = root.getAttribute( ATTR_FACET );
-            final String vexprstr = root.getAttribute( ATTR_VERSION );
-            
-            if( gid != null && ( fid != null || vexprstr != null ) )
-            {
-                final String msg
-                    = NLS.bind( Resources.invalidConflictsConstraint, pluginId );
-                
-                FacetCorePlugin.logError( msg, true );
-                return null;
-            }
-            else if( gid != null )
-            {
-                if( ! isGroupDefined( gid ) )
-                {
-                    final String msg
-                        = NLS.bind( Resources.groupNotDefined, gid ) +
-                          NLS.bind( Resources.usedInPlugin, pluginId );
-                    
-                    FacetCorePlugin.logError( msg, true );
-                    return null;
-                }
-                
-                operands = new Object[] { getGroup( gid ) };
-            }
-            else if( fid != null )
-            {
-                final IProjectFacet f;
-                VersionExpr vexpr = null;
-                
-                try
-                {
-                    f = getProjectFacet( fid );
-                    
-                    if( vexprstr != null )
-                    {
-                        vexpr = new VersionExpr( f, vexprstr, pluginId );
-                    }
-                }
-                catch( CoreException e )
-                {
-                    FacetCorePlugin.log( e );
-                    return null;
-                }
-                
-                if( vexpr == null )
-                {
-                    operands = new Object[] { f };
-                }
-                else
-                {
-                    operands = new Object[] { f, vexpr };
-                }
-            }
-            else
-            {
-                final String msg
-                    = Resources.bind( Resources.missingOneOfTwoAttributes,
-                                      pluginId, root.getName(), ATTR_GROUP,
-                                      ATTR_FACET );
-                
-                FacetCorePlugin.logError( msg, true );
-                return null;
-            }
-        }
-        else
-        {
-            throw new IllegalStateException();
-        }
-        
-        return new Constraint( fv, type, operands );
-    }
-    
-    private void readTemplate( final IConfigurationElement config )
-    {
-        final FacetedProjectTemplate template = new FacetedProjectTemplate();
-        
-        final String id = config.getAttribute( ATTR_ID );
-
-        if( id == null )
-        {
-            reportMissingAttribute( config, ATTR_ID );
-            return;
-        }
-
-        template.setId( id );
-
-        final IConfigurationElement[] children = config.getChildren();
-        
-        for( int i = 0; i < children.length; i++ )
-        {
-            final IConfigurationElement child = children[ i ];
-            final String childName = child.getName();
-            
-            if( childName.equals( EL_LABEL ) )
-            {
-                template.setLabel( child.getValue().trim() );
-            }
-            else if( childName.equals( EL_FIXED ) )
-            {
-                final String fid = child.getAttribute( ATTR_FACET );
-                
-                if( fid == null )
-                {
-                    reportMissingAttribute( child, ATTR_FACET );
-                    return;
-                }
-                
-                if( ! isProjectFacetDefined( fid ) )
-                {
-                    reportMissingFacet( fid, child.getContributor().getName() );
-                    return;
-                }
-                
-                template.addFixedProjectFacet( getProjectFacet( fid ) );
-            }
-            else if( childName.equals( EL_PRESET ) )
-            {
-                final String pid = child.getAttribute( ATTR_ID );
-                
-                if( pid == null )
-                {
-                    reportMissingAttribute( child, ATTR_ID );
-                    return;
-                }
-                
-                if( ! isPresetDefined( pid ) )
-                {
-                    final String msg
-                        = NLS.bind( Resources.presetNotDefined, pid ) +
-                          NLS.bind( Resources.usedInPlugin, 
-                                    child.getContributor().getName() );
-                    
-                    FacetCorePlugin.log( msg );
-                    
-                    return;
-                }
-                
-                template.setInitialPreset( getPreset( pid ) );
-            }
-        }
-        
-        this.templates.add( id, template );
-    }
-    
-    private void readPreset( final IConfigurationElement config )
-    {
-        final Preset preset = new Preset();
-        
-        final String id = config.getAttribute( ATTR_ID );
-
-        if( id == null )
-        {
-            reportMissingAttribute( config, ATTR_ID );
-            return;
-        }
-
-        preset.setId( id );
-
-        final IConfigurationElement[] children = config.getChildren();
-        
-        for( int i = 0; i < children.length; i++ )
-        {
-            final IConfigurationElement child = children[ i ];
-            final String childName = child.getName();
-            
-            if( childName.equals( EL_LABEL ) )
-            {
-                preset.setLabel( child.getValue().trim() );
-            }
-            else if( childName.equals( EL_DESCRIPTION ) )
-            {
-                preset.setDescription( child.getValue().trim() );
-            }
-            else if( childName.equals( ATTR_FACET ) )
-            {
-                final String fid = child.getAttribute( ATTR_ID );
-                
-                if( fid == null )
-                {
-                    reportMissingAttribute( child, ATTR_ID );
-                    return;
-                }
-                
-                final String fver = child.getAttribute( ATTR_VERSION );
-                
-                if( fver == null )
-                {
-                    reportMissingAttribute( child, ATTR_VERSION );
-                    return;
-                }
-                
-                final IProjectFacetVersion fv
-                    = getProjectFacet( fid ).getVersion( fver );
-                
-                preset.addProjectFacet( fv );
-            }
-        }
-        
-        if( preset.getLabel() == null )
-        {
-            preset.setLabel( preset.getId() );
-        }
-        
-        if( preset.getDescription() == null )
-        {
-            preset.setDescription( "" ); //$NON-NLS-1$
-        }
-        
-        this.presets.add( id, preset );
-    }
-    
-    static void reportMissingAttribute( final IConfigurationElement el,
-                                        final String attribute )
-    {
-        final String[] params 
-            = new String[] { el.getContributor().getName(), el.getName(), 
-                             attribute };
-        
-        final String msg = NLS.bind( Resources.missingAttribute, params ); 
-    
-        FacetCorePlugin.log( msg );
-    }
-
-    static void reportMissingElement( final IConfigurationElement el,
-                                      final String element )
-    {
-        final String[] params 
-            = new String[] { el.getContributor().getName(), el.getName(), 
-                             element };
-        
-        final String msg = NLS.bind( Resources.missingElement, params ); 
-    
-        FacetCorePlugin.log( msg );
-    }
-    
-    private void saveUserPresets()
-    {
-        try
-        {
-            final Preferences root = getUserPresetsPreferences();
-            
-            final String[] children = root.childrenNames();
-            
-            for( int i = 0; i < children.length; i++ )
-            {
-                root.node( children[ i ] ).removeNode();
-            }
-            
-            for( Iterator itr = this.presets.iterator(); itr.hasNext(); )
-            {
-                final IPreset preset = (IPreset) itr.next();
-                
-                if( preset.isUserDefined() )
-                {
-                    final Preferences pnode = root.node( preset.getId() );
-                    pnode.put( EL_LABEL, preset.getLabel() );
-                    pnode.put( EL_DESCRIPTION, preset.getDescription() );
-                    
-                    int counter = 1;
-                    
-                    for( Iterator itr2 = preset.getProjectFacets().iterator(); 
-                         itr2.hasNext(); )
-                    {
-                        final IProjectFacetVersion f
-                            = (IProjectFacetVersion) itr2.next();
-                        
-                        final Preferences fnode 
-                            = pnode.node( String.valueOf( counter ) );
-                        
-                        fnode.put( ATTR_ID, f.getProjectFacet().getId() );
-                        fnode.put( ATTR_VERSION, f.getVersionString() );
-                        
-                        counter++;
-                    }
-                }
-            }
-        
-            root.flush();
-        }
-        catch( BackingStoreException e )
-        {
-            FacetCorePlugin.log( e );
-        }
-    }
-    
-    private void readUserPresets()
-    {
-        try
-        {
-            final Preferences root = getUserPresetsPreferences();
-            final String[] pkeys = root.childrenNames();
-            
-            for( int i = 0; i < pkeys.length; i++ )
-            {
-                final Preferences pnode = root.node( pkeys[ i ] );
-                final String label = pnode.get( EL_LABEL, null );
-                
-                if( label == null )
-                {
-                    break;
-                }
-
-                String description = pnode.get( EL_DESCRIPTION, null );
-                
-                if( description == null )
-                {
-                    description = ""; //$NON-NLS-1$
-                }
-                
-                final String[] fkeys = pnode.childrenNames();
-                HashSet facets = new HashSet();
-                
-                for( int j = 0; j < fkeys.length; j++ )
-                {
-                    final Preferences fnode = pnode.node( fkeys[ j ] );
-                    final String id = fnode.get( ATTR_ID, null );
-                    final String version = fnode.get( ATTR_VERSION, null );
-                    
-                    if( id == null || version == null )
-                    {
-                        facets = null;
-                        break;
-                    }
-                    
-                    if( isProjectFacetDefined( id ) )
-                    {
-                        final IProjectFacet f = getProjectFacet( id );
-                        
-                        if( f.hasVersion( version ) )
-                        {
-                            facets.add( f.getVersion( version ) );
-                        }
-                        else
-                        {
-                            facets = null;
-                            break;
-                        }
-                    }
-                    else
-                    {
-                        facets = null;
-                        break;
-                    }
-                }
-
-                if( facets != null )
-                {
-                    definePreset( label, description, facets, false );
-                }
-            }
-        }
-        catch( BackingStoreException e )
-        {
-            FacetCorePlugin.log( e );
-        }
-    }
-    
-    private static Preferences getUserPresetsPreferences()
-    {
-        final InstanceScope scope = new InstanceScope();
-        
-        final IEclipsePreferences pluginRoot 
-            = scope.getNode( FacetCorePlugin.PLUGIN_ID );
-        
-        return pluginRoot.node( "user.presets" ); //$NON-NLS-1$
-    }
-    
-    private static String toString( final Collection collection )
-    {
-        final StringBuffer buf = new StringBuffer();
-        
-        for( Iterator itr = collection.iterator(); itr.hasNext(); )
-        {
-            final Object obj = itr.next();
-            
-            if( buf.length() > 0 )
-            {
-                buf.append( ", " ); //$NON-NLS-1$
-            }
-            
-            if( obj instanceof IProjectFacetVersion )
-            {
-                final IProjectFacetVersion fv = (IProjectFacetVersion) obj;
-                
-                buf.append( fv.getProjectFacet().getId() );
-                buf.append( ' ' );
-                buf.append( fv.getVersionString() );
-            }
-            else
-            {
-                buf.append( obj.toString() );
-            }
-        }
-        
-        return buf.toString();
-    }
-    
-    private final class ResourceChangeListener
-    
-        implements IResourceChangeListener
-        
-    {
-        public void resourceChanged( final IResourceChangeEvent event )
-        {
-            final IResourceDelta delta = event.getDelta();
-            
-            synchronized( ProjectFacetsManagerImpl.this.projects )
-            {
-                for( Iterator itr = ProjectFacetsManagerImpl.this.projects.values().iterator(); 
-                     itr.hasNext(); )
-                {
-                    final FacetedProject fproj = (FacetedProject) itr.next();
-                    
-                    final IResourceDelta subdelta 
-                        = delta.findMember( fproj.f.getFullPath() );
-                    
-                    if( subdelta != null )
-                    {
-                        try
-                        {
-                            fproj.refresh();
-                        }
-                        catch( CoreException e )
-                        {
-                            FacetCorePlugin.log( e );
-                        }
-                    }
-                }
-            }
-        }
-        
-    }
-
-    public static final class Resources
-    
-        extends NLS
-        
-    {
-        public static String missingAttribute;
-        public static String missingOneOfTwoAttributes;
-        public static String missingElement;
-        public static String categoryNotDefined;
-        public static String facetNotDefined;
-        public static String facetVersionNotDefined;
-        public static String actionNotDefined;
-        public static String actionAlreadyDefined;
-        public static String groupNotDefined;
-        public static String presetNotDefined;
-        public static String templateNotDefined;
-        public static String usedInPlugin;
-        public static String usedInConstraint;
-        public static String invalidActionType;
-        public static String invalidEventHandlerType;
-        public static String invalidConflictsConstraint;
-        public static String deprecatedRuntimeChangedAction;
-        public static String tracingActionSorting;
-        public static String tracingFrameworkActivationStarting;
-        public static String tracingFrameworkActivationFinished;
-        public static String unknownProperty;
-        public static String propertyNotApplicable;
-        
-        static
-        {
-            initializeMessages( ProjectFacetsManagerImpl.class.getName(), 
-                                Resources.class );
-        }
-        
-        public static String bind( final String template,
-                                   final Object arg1,
-                                   final Object arg2,
-                                   final Object arg3 )
-        {
-            return NLS.bind( template, new Object[] { arg1, arg2, arg3 } );
-        }
-
-        public static String bind( final String template,
-                                   final Object arg1,
-                                   final Object arg2,
-                                   final Object arg3,
-                                   final Object arg4 )
-        {
-            return NLS.bind( template, new Object[] { arg1, arg2, arg3, arg4 } );
-        }
-    }
-    
-}
diff --git a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/ProjectFacetsManagerImpl.properties b/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/ProjectFacetsManagerImpl.properties
deleted file mode 100644
index a4277af..0000000
--- a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/ProjectFacetsManagerImpl.properties
+++ /dev/null
@@ -1,39 +0,0 @@
-missingAttribute = An extension element <{1}> in plugin {0} is missing a required attribute {2}.
-missingOneOfTwoAttributes = Extension element <{1}> in plugin {0} requires either attribute {2} or attribute {3} to be specified.
-missingElement = An extension element <{1}> in plugin {0} is missing a required child element <{2}>.
-categoryNotDefined = Category {0} has not been defined.
-facetNotDefined = Project facet {0} has not been defined.
-facetVersionNotDefined = Version {1} of project facet {0} has not been defined.
-actionNotDefined = Project facet action {0} has not been defined.
-actionAlreadyDefined = Attempt to redefine project facet action "{0}" in plugin {1}.
-groupNotDefined = Project facet group {0} has not been defined.
-presetNotDefined = Preset {0} has not been defined.
-templateNotDefined = Template {0} has not been defined.
-usedInPlugin = \ It is used in plugin {0}.
-usedInConstraint = \ It is used in the constraint of project facet {0} version {1}.
-invalidActionType = "{0}" is an invalid action type.
-invalidEventHandlerType = "{0}" is an invalid event handler type.
-invalidConflictsConstraint = The conflicts constraint can specify either a "group" attribute or a "facet" attribute and a "version" attribute. The problem was found in plugin {0}.
-
-deprecatedRuntimeChangedAction = \
-The project facet action "runtime-changed" has been deprecated. It is used in \
-plugin {0}. Similar functionality is available via the "RUNTIME_CHANGED" \
-event handler. See extension point org.eclipse.wst.common.project.facet.core.facets \
-for more information. 
-
-tracingActionSorting = \
-Finished sorting faceted project actions.\n\
-\  base = {0}\n\
-\  unsorted = {1}\n\
-\  sorted = {2}\n\
-\  steps = {3} 
-
-tracingFrameworkActivationStarting = \
-Activating Faceted Project Framework...\n\
-{0}
-
-tracingFrameworkActivationFinished = \
-Faceted Project Framework activated successfully in {0} ms.
-
-unknownProperty = "{0}" is not a valid property name.
-propertyNotApplicable = Property "{0}" is not applicable to action type {1}.
diff --git a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/RuntimeChangedEvent.java b/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/RuntimeChangedEvent.java
deleted file mode 100644
index 8f4c52c..0000000
--- a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/RuntimeChangedEvent.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/******************************************************************************
- * Copyright (c) 2005 BEA Systems, Inc.
- * 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:
- *    Konstantin Komissarchik - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.wst.common.project.facet.core.internal;
-
-import org.eclipse.wst.common.project.facet.core.IRuntimeChangedEvent;
-import org.eclipse.wst.common.project.facet.core.runtime.IRuntime;
-
-/**
- * The implementation of the <code>IRuntimeChangedEvent</code> interface.
- * 
- * @author <a href="mailto:kosta@bea.com">Konstantin Komissarchik</a>
- */
-
-public final class RuntimeChangedEvent
-
-    implements IRuntimeChangedEvent
-    
-{
-    private final IRuntime oldRuntime;
-    private final IRuntime newRuntime;
-    
-    public RuntimeChangedEvent( final IRuntime oldRuntime,
-                                final IRuntime newRuntime )
-    {
-        this.oldRuntime = oldRuntime;
-        this.newRuntime = newRuntime;
-    }
-    
-    public IRuntime getOldRuntime()
-    {
-        return this.oldRuntime;
-    }
-
-    public IRuntime getNewRuntime()
-    {
-        return this.newRuntime;
-    }
-
-}
diff --git a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/ValidationProblem.java b/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/ValidationProblem.java
deleted file mode 100644
index 1b5ae79..0000000
--- a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/ValidationProblem.java
+++ /dev/null
@@ -1,188 +0,0 @@
-/******************************************************************************
- * Copyright (c) 2005 BEA Systems, Inc.
- * 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:
- *    Konstantin Komissarchik - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.wst.common.project.facet.core.internal;
-
-import java.text.MessageFormat;
-import java.util.Arrays;
-
-import org.eclipse.core.runtime.Status;
-import org.eclipse.osgi.util.NLS;
-
-/**
- * @author <a href="mailto:kosta@bea.com">Konstantin Komissarchik</a>
- */
-
-public final class ValidationProblem 
-
-    extends Status
-    
-{
-    public static final class Type
-    {
-        public static final Type REQUIRES 
-            = new Type( Resources.requires );
-        
-        public static final Type REQUIRES_ONE_OF_TWO
-            = new Type( Resources.requiresOneOfTwo );
-
-        public static final Type CONFLICTS 
-            = new Type( Resources.oneof );
-        
-        public static final Type COMPLEX 
-            = new Type( Resources.complex );
-        
-        public static final Type INSTALL_NOT_SUPPORTED 
-            = new Type( Resources.installNotSupported );
-        
-        public static final Type UNINSTALL_NOT_SUPPORTED 
-            = new Type( Resources.uninstallNotSupported );
-        
-        public static final Type VERSION_CHANGE_NOT_SUPPORTED 
-            = new Type( Resources.versionChangeNotSupported );
-
-        public static final Type MULTIPLE_ACTIONS_NOT_SUPPORTED 
-            = new Type( Resources.multipleActionsNotSupported );
-
-        public static final Type FACET_ALREADY_INSTALLED 
-            = new Type( Resources.facetAlreadyInstalled );
-
-        public static final Type CANNOT_UNINSTALL 
-            = new Type( Resources.cannotUninstall );
-
-        public static final Type CANNOT_CHANGE_VERSION
-            = new Type( Resources.cannotChangeVersion );
-        
-        public final String msg;
-        
-        private Type( final String msg ) 
-        {
-            this.msg = msg;
-        }
-
-        private String getMessageTemplate()
-        {
-            return this.msg;
-        }
-    }
-    
-    private final Type type;
-    private final Object[] params;
-    
-    public ValidationProblem( final Type type,
-                              final Object[] params )
-    {
-        super( ERROR, FacetCorePlugin.PLUGIN_ID, 0, format( type, params ), 
-               null );
-        
-        this.type = type;
-        this.params = params;
-    }
-    
-    public ValidationProblem( final Type type )
-    {
-        this( type, new Object[ 0 ] );
-    }
-
-    public ValidationProblem( final Type type,
-                              final Object param )
-    {
-        this( type, new Object[] { param } );
-    }
-    
-    public ValidationProblem( final Type type,
-                              final Object param1,
-                              final Object param2 )
-    {
-        this( type, new Object[] { param1, param2 } );
-    }
-
-    public ValidationProblem( final Type type,
-                              final Object param1,
-                              final Object param2,
-                              final Object param3 )
-    {
-        this( type, new Object[] { param1, param2, param3 } );
-    }
-    
-    public Type getType()
-    {
-        return this.type;
-    }
-    
-    public Object[] getParameters()
-    {
-        return this.params;
-    }
-
-    public boolean equals( final Object obj )
-    {
-        if( ! ( obj instanceof ValidationProblem ) )
-        {
-            return false;
-        }
-        else
-        {
-            final ValidationProblem prob = (ValidationProblem) obj;
-            
-            return this.type.equals( prob.type ) &&
-                   Arrays.equals( this.params, prob.params );
-        }
-    }
-    
-    public int hashCode()
-    {
-    	int hash = 0;
-        
-    	for( int i = 0; i < this.params.length; i++ ) 
-        {
-			hash = hash ^ this.params[ i ].hashCode();
-		}
-        
-        return this.type.hashCode() ^ hash;
-    }
-    
-    public String toString()
-    {
-        return getMessage();
-    }
-    
-    private static String format( final Type type,
-                                  final Object[] params )
-    {
-        return MessageFormat.format( type.getMessageTemplate(), params );
-    }
-    
-    private static final class Resources
-    
-        extends NLS
-        
-    {
-        public static String requires;
-        public static String requiresOneOfTwo;
-        public static String oneof;
-        public static String complex;
-        public static String installNotSupported;
-        public static String uninstallNotSupported;
-        public static String versionChangeNotSupported;
-        public static String multipleActionsNotSupported;
-        public static String facetAlreadyInstalled;
-        public static String cannotUninstall;
-        public static String cannotChangeVersion;
-        
-        static
-        {
-            initializeMessages( ValidationProblem.class.getName(), 
-                                Resources.class );
-        }
-    }
-
-}
diff --git a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/ValidationProblem.properties b/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/ValidationProblem.properties
deleted file mode 100644
index fd61d8d..0000000
--- a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/ValidationProblem.properties
+++ /dev/null
@@ -1,11 +0,0 @@
-requires = {0} requires {1}.
-requiresOneOfTwo = {0} requires {1} or {2}.
-oneof = {0} and {1} cannot both be selected.
-complex = Constraints for {0} have not been met.
-installNotSupported = {0} {1} cannot be installed.
-uninstallNotSupported = {0} {1} cannot be uninstalled.
-versionChangeNotSupported = Cannot change version of project facet {0} to {1}.
-multipleActionsNotSupported = Multiple actions on the same project facet are not supported in the same batch. The only exception is an uninstall of a previosly-installed version followed by an install of a new version.
-facetAlreadyInstalled = Cannot install project facet {0} {1}. Some version of this project facet is already installed.
-cannotUninstall = Cannot uninstall project facet {0} {1} because it has not been installed.
-cannotChangeVersion = Cannot change version of project facet {0} to {1} because no version of this project facet is currently installed.
diff --git a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/VersionExpr.java b/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/VersionExpr.java
deleted file mode 100644
index 3e8194a..0000000
--- a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/VersionExpr.java
+++ /dev/null
@@ -1,615 +0,0 @@
-/******************************************************************************
- * Copyright (c) 2005, 2006 BEA Systems, Inc.
- * 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:
- *    Konstantin Komissarchik - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.wst.common.project.facet.core.internal;
-
-import java.util.ArrayList;
-import java.util.Comparator;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.wst.common.project.facet.core.IVersionExpr;
-
-/**
- * @author <a href="mailto:kosta@bea.com">Konstantin Komissarchik</a>
- */
-
-public final class VersionExpr
-
-    implements IVersionExpr
-    
-{
-    private static final int SM1_START = 0;
-    private static final int SM1_PARSING_START_VERSION = 1;
-    private static final int SM1_PARSING_END_VERSION = 2;
-    private static final int SM1_FINISHED_RANGE_INCLUSIVE = 3;
-    private static final int SM1_FINISHED_RANGE_EXCLUSIVE = 4;
-    
-    private static final int SM2_VERSION_START = 0;
-    private static final int SM2_VERSION_CONTINUING = 1;
-    private static final int SM2_ESCAPE = 2;
-    
-    private final Versionable versionable;
-    private final Comparator comparator;
-    private final List subexprs;
-    private final String usedInPlugin;
-    
-    public VersionExpr( final Object versionable,
-                        final String expr,
-                        final String usedInPlugin )
-    
-        throws CoreException
-        
-    {
-        this( (Versionable) versionable, expr, usedInPlugin );
-    }
-    
-    public VersionExpr( final Versionable versionable,
-                        final String expr,
-                        final String usedInPlugin )
-    
-        throws CoreException
-        
-    {
-        this.versionable = versionable;
-        this.comparator = versionable.getVersionComparator();
-        this.subexprs = new ArrayList();
-        this.usedInPlugin = usedInPlugin;
-        
-        int state = SM1_START;
-        Range range = null;
-        boolean usingDeprecatedSyntax = false;
-        
-        for( MutableInteger position = new MutableInteger(); 
-             position.value < expr.length(); position.value++ )
-        {
-            final char ch = expr.charAt( position.value );
-            
-            switch( state )
-            {
-                case SM1_START:
-                {
-                    if( ch == '[' )
-                    {
-                        range = new Range();
-                        range.includesStartVersion = true;
-                        state = SM1_PARSING_START_VERSION;
-                    }
-                    else if( ch == '(' )
-                    {
-                        range = new Range();
-                        range.includesStartVersion = false;
-                        state = SM1_PARSING_START_VERSION;
-                    }
-                    else if( ch == ' ' || ch == ',' )
-                    {
-                        // ignore
-                    }
-                    else
-                    {
-                        final StringBuffer buf = new StringBuffer();
-                        final int exitState = parseVersion( expr, position, buf );
-                        
-                        if( exitState == SM1_START )
-                        {
-                            final String vstr = buf.toString();
-                            final Range r = new Range();
-                            
-                            if( vstr.startsWith( ">=" ) ) //$NON-NLS-1$
-                            {
-                                r.startVersion = parseVersion( vstr.substring( 2 ) );
-                                r.includesStartVersion = true;
-                                usingDeprecatedSyntax = true;
-                            }
-                            else if( vstr.startsWith( ">" ) ) //$NON-NLS-1$
-                            {
-                                r.startVersion = parseVersion( vstr.substring( 1 ) );
-                                r.includesStartVersion = false;
-                                usingDeprecatedSyntax = true;
-                            }
-                            else if( vstr.startsWith( "<=" ) ) //$NON-NLS-1$
-                            {
-                                r.endVersion = parseVersion( vstr.substring( 2 ) );
-                                r.includesEndVersion = true;
-                                usingDeprecatedSyntax = true;
-                            }
-                            else if( vstr.startsWith( "<" ) ) //$NON-NLS-1$
-                            {
-                                r.endVersion = parseVersion( vstr.substring( 1 ) );
-                                r.includesEndVersion = false;
-                                usingDeprecatedSyntax = true;
-                            }
-                            else
-                            {
-                                r.startVersion = parseVersion( vstr );
-                                r.includesStartVersion = true;
-                                r.endVersion = r.startVersion;
-                                r.includesEndVersion = true;
-                            }
-                            
-                            this.subexprs.add( r );
-                        }
-                        else if( exitState == SM1_FINISHED_RANGE_INCLUSIVE ||
-                                 exitState == SM1_FINISHED_RANGE_EXCLUSIVE )
-                        {
-                            range = new Range();
-                            range.endVersion = parseVersion( buf.toString() );
-                            state = exitState;
-                            position.value--;
-                        }
-                        else
-                        {
-                            throw createInvalidVersionExprException( expr );
-                        }
-                    }
-                    
-                    break;
-                }
-                case SM1_PARSING_START_VERSION:
-                {
-                    final StringBuffer buf = new StringBuffer();
-                    final int exitState = parseVersion( expr, position, buf );
-
-                    if( exitState == SM1_START )
-                    {
-                        range.startVersion = parseVersion( buf.toString() );
-                        this.subexprs.add( range );
-                        range = null;
-                        state = exitState;
-                    }
-                    else if( exitState == SM1_PARSING_END_VERSION )
-                    {
-                        range.startVersion = parseVersion( buf.toString() );
-                        state = exitState;
-                    }
-                    else
-                    {
-                        throw createInvalidVersionExprException( expr );
-                    }
-                    
-                    break;
-                }
-                case SM1_PARSING_END_VERSION:
-                {
-                    final StringBuffer buf = new StringBuffer();
-                    final int exitState = parseVersion( expr, position, buf );
-                    
-                    if( exitState == SM1_FINISHED_RANGE_INCLUSIVE ||
-                        exitState == SM1_FINISHED_RANGE_EXCLUSIVE )
-                    {
-                        range.endVersion = parseVersion( buf.toString() );
-                        state = exitState;
-                        position.value--;
-                    }
-                    else
-                    {
-                        throw createInvalidVersionExprException( expr );
-                    }
-                    
-                    break;
-                }
-                case SM1_FINISHED_RANGE_INCLUSIVE:
-                case SM1_FINISHED_RANGE_EXCLUSIVE:
-                {
-                    range.includesEndVersion 
-                        = ( state == SM1_FINISHED_RANGE_INCLUSIVE );
-                    
-                    this.subexprs.add( range );
-                    range = null;
-                    
-                    state = SM1_START;
-                    
-                    break;
-                }
-                default:
-                {
-                    throw new IllegalStateException();
-                }
-            }
-        }
-        
-        // Report the use of deprecated syntax.
-        
-        if( usingDeprecatedSyntax )
-        {
-            final String msg;
-            
-            if( this.usedInPlugin == null )
-            {
-                msg = Resources.deprecatedSyntaxNoPlugin;
-            }
-            else
-            {
-                msg = NLS.bind( Resources.deprecatedSyntax, this.usedInPlugin );
-            }
-            
-            FacetCorePlugin.logWarning( msg, true );
-        }
-    }
-    
-    private int parseVersion( final String str,
-                              final MutableInteger position,
-                              final StringBuffer version )
-    
-        throws CoreException
-        
-    {
-        int localState = SM2_VERSION_START;
-        int exitState = -1;
-        
-        for( ; exitState == -1 && position.value < str.length(); 
-             position.value++ )
-        {
-            final char ch = str.charAt( position.value );
-            
-            switch( localState )
-            {
-                case SM2_VERSION_START:
-                {
-                    if( ch == '[' || ch == '(' || ch == ']' || ch == ')' ||
-                        ch == '-' || ch == ',' )
-                    {
-                        throw createInvalidVersionExprException( str );
-                    }
-                    else if( ch == '\\' )
-                    {
-                        localState = SM2_ESCAPE;
-                    }
-                    else if( ch == ' ' )
-                    {
-                        // ignore
-                    }
-                    else
-                    {
-                        version.append( ch );
-                        localState = SM2_VERSION_CONTINUING;
-                    }
-                    
-                    break;
-                }
-                case SM2_VERSION_CONTINUING:
-                {
-                    if( ch == '[' || ch == '(' )
-                    {
-                        throw createInvalidVersionExprException( str );
-                    }
-                    else if( ch == '\\' )
-                    {
-                        localState = SM2_ESCAPE;
-                    }
-                    else if( ch == ',' )
-                    {
-                        exitState = SM1_START;
-                    }
-                    else if( ch == '-' )
-                    {
-                        exitState = SM1_PARSING_END_VERSION;
-                    }
-                    else if( ch == ']' )
-                    {
-                        exitState = SM1_FINISHED_RANGE_INCLUSIVE;
-                    }
-                    else if( ch == ')' )
-                    {
-                        exitState = SM1_FINISHED_RANGE_EXCLUSIVE;
-                    }
-                    else if( ch == ' ' )
-                    {
-                        // ignore
-                    }
-                    else
-                    {
-                        version.append( ch );
-                    }
-                    
-                    break;
-                }
-                case SM2_ESCAPE:
-                {
-                    version.append( ch );
-                    break;
-                }
-                default:
-                {
-                    throw new IllegalStateException();
-                }
-            }
-        }
-        
-        position.value--;
-        
-        if( exitState != -1 )
-        {
-            return exitState;
-        }
-        else
-        {
-            if( localState == SM2_VERSION_CONTINUING )
-            {
-                // Expected end of input.
-                
-                return SM1_START;
-            }
-            else
-            {
-                // Unexpected end of input.
-                
-                throw createInvalidVersionExprException( str );
-            }
-        }
-    }
-    
-    private String parseVersion( final String str )
-    
-        throws CoreException
-        
-    {
-        if( ! this.versionable.hasVersion( str ) )
-        {
-            final String msg 
-                = this.versionable.createVersionNotFoundErrMsg( str );
-            
-            final IStatus st = FacetCorePlugin.createErrorStatus( msg );
-            
-            throw new CoreException( st );
-        }
-        else
-        {
-            return this.versionable.getVersionInternal( str ).getVersionString();
-        }
-    }
-    
-    public boolean evaluate( final IVersion ver )
-    
-        throws CoreException
-        
-    {
-        return evaluate( ver.getVersionString() );
-    }
-    
-    public boolean evaluate( final String ver )
-    {
-        for( Iterator itr = this.subexprs.iterator(); itr.hasNext(); )
-        {
-            if( ( (Range) itr.next() ).evaluate( ver ) )
-            {
-                return true;
-            }
-        }
-        
-        return false;
-    }
-    
-    public boolean isSingleVersionMatch()
-    {
-        if( this.subexprs.size() == 1 )
-        {
-            final Range range = (Range) this.subexprs.get( 0 );
-            
-            if( range.startVersion == range.endVersion &&
-                range.includesStartVersion == range.includesEndVersion == true )
-            {
-                return true;
-            }
-        }
-        
-        return false;
-    }
-
-    public boolean isSimpleAllowNewer()
-    {
-        if( this.subexprs.size() == 1 )
-        {
-            final Range range = (Range) this.subexprs.get( 0 );
-            
-            if( range.startVersion != null && range.endVersion == null &&
-                range.includesStartVersion  )
-            {
-                return true;
-            }
-        }
-        
-        return false;
-    }
-    
-    public String getFirstVersion()
-    {
-        if( isSingleVersionMatch() || isSimpleAllowNewer() )
-        {
-            final Range range = (Range) this.subexprs.get( 0 );
-            return range.startVersion;
-        }
-        else
-        {
-            throw new IllegalStateException();
-        }
-    }
-    
-    public String toString()
-    {
-        final StringBuffer buf = new StringBuffer();
-        
-        for( Iterator itr = this.subexprs.iterator(); itr.hasNext(); )
-        {
-            if( buf.length() > 0 ) buf.append( ',' );
-            buf.append( itr.next().toString() );
-        }
-        
-        return buf.toString();
-    }
-    
-    public String toDisplayString()
-    {
-        if( this.subexprs.size() == 1 )
-        {
-            final Range r = (Range) this.subexprs.get( 0 );
-            
-            if( r.isSingleVersion() )
-            {
-                return r.startVersion;
-            }
-            else if( r.endVersion == null && r.includesStartVersion )
-            {
-                return NLS.bind( Resources.versionOrNewer, r.startVersion );
-            }
-        }
-        else
-        {
-            boolean onlySingleVersions = true;
-            
-            for( Iterator itr = this.subexprs.iterator(); itr.hasNext(); )
-            {
-                if( ! ( (Range) itr.next() ).isSingleVersion() )
-                {
-                    onlySingleVersions = false;
-                    break;
-                }
-            }
-            
-            if( onlySingleVersions )
-            {
-                final StringBuffer buf = new StringBuffer();
-                
-                for( Iterator itr = this.subexprs.iterator(); itr.hasNext(); )
-                {
-                    final Range r = (Range) itr.next();
-                    
-                    if( buf.length() > 0 )
-                    {
-                        if( itr.hasNext() )
-                        {
-                            buf.append( ", " ); //$NON-NLS-1$
-                        }
-                        else
-                        {
-                            buf.append( " or " ); //$NON-NLS-1$
-                        }
-                    }
-                    
-                    buf.append( r.startVersion );
-                }
-                
-                return buf.toString();
-            }
-        }
-        
-        return toString();
-    }
-    
-    private static CoreException createInvalidVersionExprException( final String str )
-    {
-        final String msg
-            = NLS.bind( Resources.invalidVersionExpr, str );
-    
-        final IStatus st = FacetCorePlugin.createErrorStatus( msg );
-    
-        return new CoreException( st );
-    }
-    
-    private final class Range
-    {
-        public String startVersion = null;
-        public boolean includesStartVersion = false;
-        public String endVersion = null;
-        public boolean includesEndVersion = false;
-        
-        public boolean isSingleVersion()
-        {
-            return this.startVersion.equals( this.endVersion ) &&
-                   this.includesStartVersion == this.includesEndVersion == true;
-        }
-        
-        public boolean evaluate( final String version )
-        {
-            final Comparator comp = VersionExpr.this.comparator;
-        
-            if( this.startVersion != null )
-            {
-                final int res = comp.compare( version, this.startVersion ); 
-                
-                if( ! ( res > 0 || ( res == 0 && this.includesStartVersion ) ) )
-                {
-                    return false;
-                }
-            }
-            
-            if( this.endVersion != null )
-            {
-                final int res = comp.compare( version, this.endVersion );
-                
-                if( ! ( res < 0 || ( res == 0 && this.includesEndVersion ) ) )
-                {
-                    return false;
-                }
-            }
-            
-            return true;
-        }
-        
-        public String toString()
-        {
-            if( this.startVersion.equals( this.endVersion ) &&
-                this.includesStartVersion == this.includesEndVersion == true )
-            {
-                return this.startVersion;
-            }
-            else
-            {
-                final StringBuffer buf = new StringBuffer();
-                
-                if( this.startVersion != null )
-                {
-                    buf.append( this.includesStartVersion ? '[' : '(' );
-                    buf.append( this.startVersion );
-                }
-                
-                if( this.endVersion != null )
-                {
-                    if( buf.length() != 0 )
-                    {
-                        buf.append( '-' );
-                    }
-                    
-                    buf.append( this.endVersion );
-                    buf.append( this.includesEndVersion ? ']' : ')' );
-                }
-                
-                return buf.toString();
-            }
-        }
-    }
-    
-    private static final class MutableInteger
-    {
-        public int value = 0;
-    }
-    
-    private static final class Resources
-    
-        extends NLS
-        
-    {
-        public static String invalidVersionExpr;
-        public static String deprecatedSyntax;
-        public static String deprecatedSyntaxNoPlugin;
-        public static String versionOrNewer;
-        
-        static
-        {
-            initializeMessages( VersionExpr.class.getName(), 
-                                Resources.class );
-        }
-    }
-
-}
diff --git a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/VersionExpr.properties b/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/VersionExpr.properties
deleted file mode 100644
index 978d2fb..0000000
--- a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/VersionExpr.properties
+++ /dev/null
@@ -1,19 +0,0 @@
-invalidVersionExpr = Version expression "{0}" is invalid.
-
-deprecatedSyntax = \
-The ">", ">=", "<", and "<=" notation in version expressions has been \
-deprecated. It used in plugin {0}. Note that the angle brackets are \
-represented via "&lt;" and "&gt;" in the plugin.xml files. The functionality \
-has been replaced with range notation. For instance "[X-Y)" means all \
-versions greater or equals to X and less than Y. Open ranges such as "(X" or \
-"Y]" are also allowed.
-
-deprecatedSyntaxNoPlugin = \
-The ">", ">=", "<", and "<=" notation in version expressions has been \
-deprecated. Note that the angle brackets are \
-represented via "&lt;" and "&gt;" in the plugin.xml files. The functionality \
-has been replaced with range notation. For instance "[X-Y)" means all \
-versions greater or equals to X and less than Y. Open ranges such as "(X" or \
-"Y]" are also allowed.
-
-versionOrNewer = {0} or newer
\ No newline at end of file
diff --git a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/Versionable.java b/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/Versionable.java
deleted file mode 100644
index 6dfc68c..0000000
--- a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/Versionable.java
+++ /dev/null
@@ -1,204 +0,0 @@
-/******************************************************************************
- * Copyright (c) 2005 BEA Systems, Inc.
- * 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:
- *    Konstantin Komissarchik - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.wst.common.project.facet.core.internal;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Set;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.wst.common.project.facet.core.DefaultVersionComparator;
-import org.eclipse.wst.common.project.facet.core.VersionFormatException;
-import org.osgi.framework.Bundle;
-
-/**
- * @author <a href="mailto:kosta@bea.com">Konstantin Komissarchik</a>
- */
-
-public abstract class Versionable
-{
-    private static final Comparator DEFAULT_VERSION_COMPARATOR
-        = new DefaultVersionComparator();
-
-    protected final IndexedSet versions = new IndexedSet();
-    private String versionComparatorClass;
-    private Comparator versionComparator;
-    
-    public abstract String getPluginId();
-    
-    public Set getVersions()
-    {
-        return this.versions.getUnmodifiable();
-    }
-    
-    public Set getVersions( final String expr )
-    
-        throws CoreException
-        
-    {
-        final VersionExpr prepared = new VersionExpr( this, expr, null );
-        final Set result = new HashSet();
-            
-        for( Iterator itr = this.versions.iterator(); itr.hasNext(); )
-        {
-            final IVersion ver = (IVersion) itr.next();
-            
-            if( prepared.evaluate( ver ) )
-            {
-                result.add( ver );
-            }
-        }
-        
-        return result;
-    }
-    
-    public IVersion getVersionInternal( final String version )
-    {
-        return (IVersion) this.versions.get( version );
-    }
-    
-    public boolean hasVersion( final String version )
-    {
-        return this.versions.containsKey( version );
-    }
-
-    public List getSortedVersions( final boolean ascending )
-    
-        throws VersionFormatException, CoreException
-        
-    {
-        final ArrayList list = new ArrayList( this.versions );
-        final IVersionAdapter adapter = getVersionAdapter();
-              
-        Collections.sort( list, getVersionComparator( ascending, adapter ) );
-        
-        return list;
-    }
-    
-    public Comparator getVersionComparator()
-    
-        throws CoreException
-        
-    {
-        return getVersionComparator( true, null );
-    }
-    
-    protected Comparator getVersionComparator( final boolean ascending,
-                                               final IVersionAdapter adapter )
-    
-        throws CoreException
-        
-    {
-        Comparator comp;
-        
-        if( this.versionComparatorClass == null )
-        {
-            comp = DEFAULT_VERSION_COMPARATOR;
-        }
-        else
-        {
-            if( this.versionComparator == null )
-            {
-                final Bundle bundle = Platform.getBundle( getPluginId() );
-                
-                try
-                {
-                    final Class cl 
-                        = bundle.loadClass( this.versionComparatorClass );
-                    
-                    this.versionComparator = (Comparator) cl.newInstance();
-                }
-                catch( Exception e )
-                {
-                    final String msg
-                        = NLS.bind( Resources.failedToCreate, 
-                                    this.versionComparatorClass );
-                    
-                    final IStatus st 
-                        = FacetCorePlugin.createErrorStatus( msg, e );
-                    
-                    throw new CoreException( st );
-                }
-            }
-            
-            comp = this.versionComparator;
-        }
-        
-        if( adapter != null )
-        {
-            final Comparator base = comp;
-            
-            comp = new Comparator()
-            {
-                public int compare( final Object obj1, 
-                                    final Object obj2 ) 
-                {
-                    final String ver1 = adapter.adapt( obj1 );
-                    final String ver2 = adapter.adapt( obj2 );
-                    return base.compare( ver1, ver2 );
-                }
-            };
-        }
-        
-        if( ! ascending )
-        {
-            final Comparator base = comp;
-            
-            comp = new Comparator()
-            {
-                public int compare( final Object obj1,
-                                    final Object obj2 )
-                {
-                    return base.compare( obj1, obj2 ) * -1;
-                }
-            };
-        }
-        
-        return comp;
-    }
-    
-    public void setVersionComparator( final String clname )
-    {
-        this.versionComparatorClass = clname;
-    }
-    
-    public abstract String createVersionNotFoundErrMsg( String verstr );
-    
-    protected abstract IVersionAdapter getVersionAdapter();
-    
-    protected static interface IVersionAdapter
-    {
-        String adapt( Object obj );
-    }
-
-    private static final class Resources
-    
-        extends NLS
-        
-    {
-        public static String failedToCreate;
-        
-        static
-        {
-            initializeMessages( Versionable.class.getName(), 
-                                Resources.class );
-        }
-    }
-
-}
diff --git a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/Versionable.properties b/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/Versionable.properties
deleted file mode 100644
index 94219a0..0000000
--- a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/Versionable.properties
+++ /dev/null
@@ -1 +0,0 @@
-failedToCreate = Failed to instantiate class {0}.
diff --git a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/runtime/IRuntime.java b/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/runtime/IRuntime.java
deleted file mode 100644
index e17f09d..0000000
--- a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/runtime/IRuntime.java
+++ /dev/null
@@ -1,116 +0,0 @@
-/******************************************************************************
- * Copyright (c) 2005 BEA Systems, Inc.
- * 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:
- *    Konstantin Komissarchik - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.wst.common.project.facet.core.runtime;
-
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.wst.common.project.facet.core.IProjectFacet;
-import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion;
-
-/**
- * Represents a configured instance of a runtime. A runtime instance is composed
- * of multiple runtime components.
- * 
- * <p><i>This class is part of an interim API that is still under development 
- * and expected to change significantly before reaching stability. It is being 
- * made available at this early stage to solicit feedback from pioneering 
- * adopters on the understanding that any code that uses this API will almost 
- * certainly be broken (repeatedly) as the API evolves.</i></p>
- * 
- * @author <a href="mailto:kosta@bea.com">Konstantin Komissarchik</a>
- */
-
-public interface IRuntime
-
-    extends IAdaptable
-    
-{
-    /**
-     * Returns the name of this runtime. The runtime name is unique within the
-     * workspace.
-     * 
-     * @return the name of this runtime
-     */
-    
-    String getName();
-    
-    /**
-     * Returns the runtime components that comprise this runtime. Note that the
-     * order is important since for some operations components are consoluted
-     * in order and the first one capable of performing the opeation wins.
-     *  
-     * @return the runtime components that comprise this runtime (element type: 
-     *   {@see IRuntimeComponent})
-     */
-    
-    List getRuntimeComponents();
-    
-    /**
-     * Returns the properties associated with this runtime component. The
-     * contents will vary dependending on how the runtime was created and what
-     * component types/versions it's comprised of.
-     * 
-     * @return the properties associated with this runtime (key type: 
-     *   {@see String}, value type: {@see String})
-     */
-    
-    Map getProperties();
-    
-    /**
-     * Returns the value of the specified property.
-     * 
-     * @param name the property name
-     * @return the property value, or <code>null</code>
-     */
-    
-    String getProperty( String name );
-    
-    /**
-     * Determines whether this runtime supports the specified project facet.
-     * The runtime supports a project facet if any of it's components support
-     * the project facet. The support mappings are specified using the
-     * <code>org.eclipse.wst.common.project.facet.core.runtime</code> extension
-     * point.
-     * 
-     * @param fv the project facet version
-     * @return <code>true</code> if this runtime supports the specified facet,
-     *   <code>false</code> otherwise
-     */
-    
-    boolean supports( IProjectFacetVersion fv );
-    
-    boolean supports( IProjectFacet f );
-    
-    /**
-     * Returns the facets (and the versions) that should be selected by default 
-     * when this runtime is selected. This information is drawn from what's
-     * specified through the <code>org.eclipse.wst.common.project.facet.core.defaultFacets</code>
-     * extension point. The returned list is filtered by removing facets that
-     * would conflict with the specified fixed facets. Note that the returned 
-     * set will always include the fixed facets. If the default version for any 
-     * fixed facet is not explicitly specified through the above extension 
-     * point, the latest version will be used.
-     * 
-     * @param fixed the fixed facets (element type: {@see IProjectFacet})
-     * @return the default facets (element type: {@see IProjectFacetVersion})
-     * @throws CoreException if failed for any reason
-     */
-    
-    Set getDefaultFacets( final Set fixed )
-    
-        throws CoreException;
-    
-}
diff --git a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/runtime/IRuntimeBridge.java b/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/runtime/IRuntimeBridge.java
deleted file mode 100644
index 051173e..0000000
--- a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/runtime/IRuntimeBridge.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/******************************************************************************
- * Copyright (c) 2005 BEA Systems, Inc.
- * 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:
- *    Konstantin Komissarchik - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.wst.common.project.facet.core.runtime;
-
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import org.eclipse.core.runtime.CoreException;
-
-/**
- * The interface implemented by extensions wishing to expose runtimes defined
- * through other means to the project facets framework.
- * 
- * <p><i>This class is part of an interim API that is still under development 
- * and expected to change significantly before reaching stability. It is being 
- * made available at this early stage to solicit feedback from pioneering 
- * adopters on the understanding that any code that uses this API will almost 
- * certainly be broken (repeatedly) as the API evolves.</i></p>
- * 
- * @author <a href="mailto:kosta@bea.com">Konstantin Komissarchik</a>
- */
-
-public interface IRuntimeBridge
-{
-    /**
-     * Returns the set of names for runtimes that this bridge wants to export.
-     * The system will try to accomodate these name choices, but may have to
-     * disambiguate names due to collisions. However, even if the runtime name
-     * is changed, the name that will be passed into the {@see bridge(String)}
-     * call will be the original name provided by this method call. 
-     * 
-     * @return the set of names for runtimes that this bridge wants to export
-     *   (element type: {@see String})
-     * @throws CoreException if failed while bridging
-     */
-    
-    Set getExportedRuntimeNames()
-        
-        throws CoreException;
-    
-    /**
-     * Returns a stub that represents the bridged runtime. The system will
-     * wrap this stub and expose it to the clients through the {@see IRuntime}
-     * interface.
-     * 
-     * @param name the name of the bridged runtime (as returned by the
-     *   {@see getExportedRuntimeNames()}) method
-     * @return a stub that represents the bridged runtime
-     * @throws CoreException if failed while bridging
-     */
-    
-    IStub bridge( String name )
-    
-        throws CoreException;
-    
-    /**
-     * Represents a single bridged runtime. The system will wrap this interface
-     * and expose it to clients as {@see IRuntime}. All relevant calls will be
-     * delegated to this interface.
-     * 
-     * @author <a href="mailto:kosta@bea.com">Konstantin Komissarchik</a>
-     */
-
-    public interface IStub
-    {
-        /**
-         * Returns the runtime components that comprise this runtime. Note that 
-         * the order is important since for some operations components are 
-         * consoluted in order and the first one capable of performing the o
-         * peation wins.
-         *  
-         * @return the runtime components that comprise this runtime (element 
-         *   type: {@see IRuntimeComponent})
-         */
-        
-        List getRuntimeComponents();
-        
-        /**
-         * Returns the properties associated with this runtime component. The
-         * contents will vary dependending on how the runtime was created and 
-         * what component types/versions it's comprised of.
-         * 
-         * @return the properties associated with this runtime (key type: 
-         *   {@see String}, value type: {@see String})
-         */
-        
-        Map getProperties();
-    }
-    
-}
diff --git a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/runtime/IRuntimeComponent.java b/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/runtime/IRuntimeComponent.java
deleted file mode 100644
index 85eb989..0000000
--- a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/runtime/IRuntimeComponent.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/******************************************************************************
- * Copyright (c) 2005 BEA Systems, Inc.
- * 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:
- *    Konstantin Komissarchik - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.wst.common.project.facet.core.runtime;
-
-import java.util.Map;
-
-import org.eclipse.core.runtime.IAdaptable;
-
-/**
- * Represents a configured instance of a runtime component type and version. A
- * runtime insance is composed of multiple runtime components.
- * 
- * <p><i>This class is part of an interim API that is still under development 
- * and expected to change significantly before reaching stability. It is being 
- * made available at this early stage to solicit feedback from pioneering 
- * adopters on the understanding that any code that uses this API will almost 
- * certainly be broken (repeatedly) as the API evolves.</i></p>
- * 
- * @author <a href="mailto:kosta@bea.com">Konstantin Komissarchik</a>
- */
-
-public interface IRuntimeComponent
-
-    extends IAdaptable
-    
-{
-    /**
-     * Returns the runtime component type that this is an instance of.
-     * 
-     * @return the runtime component type that this is an instance of
-     */
-    
-    IRuntimeComponentType getRuntimeComponentType();
-    
-    /**
-     * Returns the runtime component version that this is an instance of.
-     * 
-     * @return the runtime component version that this is an instance of
-     */
-    
-    IRuntimeComponentVersion getRuntimeComponentVersion();
-    
-    /**
-     * Returns the properties associated with this runtime component. The
-     * contents will vary dependending on the component type/version, but 
-     * usually this will at least contain the path to the location on disk where 
-     * the runtime is installed.
-     * 
-     * @return the properties associated with this runtime component (key
-     *   type: {@see String}, value type: {@see String})
-     */
-    
-    Map getProperties();
-    
-    /**
-     * Returns the value of the specified property.
-     * 
-     * @param name the property name
-     * @return the property value, or <code>null</code>
-     */
-    
-    String getProperty( String name );
-    
-}
diff --git a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/runtime/IRuntimeComponentType.java b/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/runtime/IRuntimeComponentType.java
deleted file mode 100644
index 5c24ad9..0000000
--- a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/runtime/IRuntimeComponentType.java
+++ /dev/null
@@ -1,129 +0,0 @@
-/******************************************************************************
- * Copyright (c) 2005 BEA Systems, Inc.
- * 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:
- *    Konstantin Komissarchik - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.wst.common.project.facet.core.runtime;
-
-import java.util.Comparator;
-import java.util.List;
-import java.util.Set;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.wst.common.project.facet.core.VersionFormatException;
-
-/**
- * Represents the type of a runtime component. A runtime instance is composed of
- * multiple runtime components, each of which has a type and a version.
- * 
- * <p><i>This class is part of an interim API that is still under development 
- * and expected to change significantly before reaching stability. It is being 
- * made available at this early stage to solicit feedback from pioneering 
- * adopters on the understanding that any code that uses this API will almost 
- * certainly be broken (repeatedly) as the API evolves.</i></p>
- * 
- * @author <a href="mailto:kosta@bea.com">Konstantin Komissarchik</a>
- */
-
-public interface IRuntimeComponentType
-
-    extends IAdaptable
-    
-{
-    /**
-     * Returns the runtime component type id.
-     * 
-     * @return the runtime component type id
-     */
-    
-    String getId();
-    
-    /**
-     * Returns the plugin id of where this runtime component type is defined.
-     * 
-     * @return the plugin id of where this runtime component type is defined
-     */
-    
-    String getPluginId();
-    
-    /**
-     * Returns all of the versions of this runtime component type.
-     * 
-     * @return all of the versions of this runtime component type (element
-     *   type: {@see IRuntimeComponentVersion})
-     */
-    
-    Set getVersions();
-    
-    Set getVersions( String expr )
-    
-        throws CoreException;
-    
-    /**
-     * Determines whether the specified version of this runtime component type
-     * exists.
-     * 
-     * @param version the version string
-     * @return <code>true</code> if the specified version exists, 
-     *   <code>false</code> otherwise
-     */
-    
-    boolean hasVersion( String version );
-    
-    /**
-     * Returns the {@see IRuntimeComponentVersion} object corresponding to the
-     * provided version string.
-     * 
-     * @param version the version string
-     * @return the {@see IRuntimeComponentVersion} object corresponding to the
-     *   provided version string
-     * @throws IllegalArgumentException if the version does not exist
-     */
-    
-    IRuntimeComponentVersion getVersion( String version );
-    
-    /**
-     * Returns the latest version of this runtime component as specified by the 
-     * version comparator.
-     * 
-     * @return returns the latest version of this runtime component
-     */
-
-    IRuntimeComponentVersion getLatestVersion()
-    
-        throws CoreException;
-    
-    /**
-     * Returns a sorted list containing all of the versions of this runtime
-     * component type. The sort order is determined by the version comparator. 
-     * 
-     * @param ascending whether versions should be sorted in ascending order
-     * @return a sorted list containing all of the versions of this runtime 
-     *   component type (element type: {@see IRuntimeComponentVersion})
-     * @throws VersionFormatException if failed while parsing a version string
-     */
-    
-    List getSortedVersions( boolean ascending )
-    
-        throws CoreException;
-    
-    /**
-     * Returns the version comparator specified for this runtime component type.
-     * If no version comparator is specified, this method will return an 
-     * instance of the {@see DefaultVersionComparator}.
-     * 
-     * @return the version comparator specified for this runtime component type
-     */
-    
-    Comparator getVersionComparator()
-    
-        throws CoreException;
-    
-}
diff --git a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/runtime/IRuntimeComponentVersion.java b/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/runtime/IRuntimeComponentVersion.java
deleted file mode 100644
index f0fced8..0000000
--- a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/runtime/IRuntimeComponentVersion.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/******************************************************************************
- * Copyright (c) 2005 BEA Systems, Inc.
- * 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:
- *    Konstantin Komissarchik - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.wst.common.project.facet.core.runtime;
-
-/**
- * Represents a version of a runtime component. A runtime instance is composed 
- * of multiple runtime components, each of which has a type and a version.
- * 
- * <p><i>This class is part of an interim API that is still under development 
- * and expected to change significantly before reaching stability. It is being 
- * made available at this early stage to solicit feedback from pioneering 
- * adopters on the understanding that any code that uses this API will almost 
- * certainly be broken (repeatedly) as the API evolves.</i></p>
- * 
- * @author <a href="mailto:kosta@bea.com">Konstantin Komissarchik</a>
- */
-
-public interface IRuntimeComponentVersion
-{
-    /**
-     * Returns the runtime component type that this is a version of.
-     * 
-     * @return returns the runtime component type that this is a version of
-     */
-    
-    IRuntimeComponentType getRuntimeComponentType();
-    
-    /**
-     * Returns the version string.
-     * 
-     * @return the version string
-     */
-    
-    String getVersionString();
-    
-}
diff --git a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/runtime/RuntimeManager.java b/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/runtime/RuntimeManager.java
deleted file mode 100644
index 731d61d..0000000
--- a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/runtime/RuntimeManager.java
+++ /dev/null
@@ -1,183 +0,0 @@
-/******************************************************************************
- * Copyright (c) 2005 BEA Systems, Inc.
- * 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:
- *    Konstantin Komissarchik - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.wst.common.project.facet.core.runtime;
-
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import org.eclipse.wst.common.project.facet.core.IListener;
-import org.eclipse.wst.common.project.facet.core.runtime.internal.RuntimeManagerImpl;
-
-/**
- * <p><i>This class is part of an interim API that is still under development 
- * and expected to change significantly before reaching stability. It is being 
- * made available at this early stage to solicit feedback from pioneering 
- * adopters on the understanding that any code that uses this API will almost 
- * certainly be broken (repeatedly) as the API evolves.</i></p>
- * 
- * @author <a href="mailto:kosta@bea.com">Konstantin Komissarchik</a>
- */
-
-public final class RuntimeManager 
-{
-    private RuntimeManager() {}
-    
-    /**
-     * Returns all of the available runtime component types.
-     * 
-     * @return all of the available runtime component types (element type: 
-     *   {@link IRuntimeComponentType})
-     */
-    
-    public static Set getRuntimeComponentTypes()
-    {
-        return RuntimeManagerImpl.getRuntimeComponentTypes();
-    }
-    
-    /**
-     * Determines whether the specified runtime component type exists.
-     * 
-     * @param id the runtime component type id
-     * @return <code>true</code> if the specified runtime component type exists,
-     *   <code>false</code> otherwise
-     */
-    
-    public static boolean isRuntimeComponentTypeDefined( final String id )
-    {
-        return RuntimeManagerImpl.isRuntimeComponentTypeDefined( id );
-    }
-    
-    /**
-     * Returns the {@see IRuntimeComponentType} object corresponding to the
-     * specified runtime component type id.
-     * 
-     * @param id the runtime componenet type id
-     * @return the {@see IRuntimeComponentType} object corresponding to the
-     *   specified runtime componenet type id
-     * @throws IllegalArgumentException if the runtime component type id is not
-     *   recognized
-     */
-    
-    public static IRuntimeComponentType getRuntimeComponentType( final String id )
-    {
-        return RuntimeManagerImpl.getRuntimeComponentType( id );
-    }
-    
-    /**
-     * Returns all of the defined runtimes.
-     * 
-     * @return all of the defined runtimes (element type: {@link IRuntime})
-     */
-    
-    public static Set getRuntimes()
-    {
-        return RuntimeManagerImpl.getRuntimes();
-    }
-    
-    /**
-     * Returns the runtimes that support all of the specified facets.
-     * 
-     * @param facets the facets that need to be supported (element type: 
-     *   {@link IProjectFacetVersion})
-     * @return the runtimes that support all of the specified facets (element 
-     *   type: {@link IRuntime})
-     */
-    
-    public static Set getRuntimes( final Set facets )
-    {
-        return RuntimeManagerImpl.getRuntimes( facets );
-    }
-    
-    
-    /**
-     * Determines whether the specified runtime has been defined.
-     * 
-     * @param name the runtime name
-     * @return <code>true</code> if the specified runtime is defined, 
-     *   <code>false</code> otherwise
-     */
-    
-    public static boolean isRuntimeDefined( final String name )
-    {
-        return RuntimeManagerImpl.isRuntimeDefined( name );
-    }
-    
-    /**
-     * Returns the runtime corresponding to the specified name.
-     * 
-     * @param name the runtime name
-     * @return the runtime corresponding to the specified name
-     * @throws IllegalArgumentException if the runtime name is not recognized
-     */
-    
-    public static IRuntime getRuntime( final String name )
-    {
-        return RuntimeManagerImpl.getRuntime( name );
-    }
-    
-    /**
-     * Defines a new runtime.
-     * 
-     * @param name the runtime name
-     * @param components the list of runtime componenets (element type: 
-     *   {@see IRuntimeComponent})
-     * @param properties the runtime properties (key type: {@see String}, value
-     *   type: {@see String})
-     * @return the new runtime
-     */
-    
-    public static IRuntime defineRuntime( final String name,
-                                          final List components,
-                                          final Map properties )
-    {
-        return RuntimeManagerImpl.defineRuntime( name, components, properties );
-    }
-    
-    /**
-     * Deletes the runtime from the registry.
-     * 
-     * @param runtime the runtime to delete
-     */
-    
-    public static void deleteRuntime( final IRuntime runtime )
-    {
-        RuntimeManagerImpl.deleteRuntime( runtime );
-    }
-    
-    /**
-     * Creates a new runtime componenet. This method is intended to be used in
-     * conjunction with the {@see defineRuntime(String,List,Map)} method.
-     * 
-     * @param rcv the runtime component version
-     * @param properties the runtime component properties (key type:
-     *   {@see String}, value type: {@see String})
-     * @return the new runtime component
-     */
-    
-    public static IRuntimeComponent createRuntimeComponent( final IRuntimeComponentVersion rcv,
-                                                            final Map properties )
-    {
-        return RuntimeManagerImpl.createRuntimeComponent( rcv, properties );
-    }
-    
-    public static void addRuntimeListener( final IListener listener )
-    {
-        RuntimeManagerImpl.addRuntimeListener( listener );
-    }
-
-    public static void removeRuntimeListener( final IListener listener )
-    {
-        RuntimeManagerImpl.removeRuntimeListener( listener );
-    }
-    
-}
diff --git a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/runtime/internal/AbstractRuntime.java b/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/runtime/internal/AbstractRuntime.java
deleted file mode 100644
index e6b0ad6..0000000
--- a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/runtime/internal/AbstractRuntime.java
+++ /dev/null
@@ -1,184 +0,0 @@
-/******************************************************************************
- * Copyright (c) 2005 BEA Systems, Inc.
- * 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:
- *    Konstantin Komissarchik - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.wst.common.project.facet.core.runtime.internal;
-
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Set;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.wst.common.project.facet.core.IProjectFacet;
-import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion;
-import org.eclipse.wst.common.project.facet.core.runtime.IRuntime;
-import org.eclipse.wst.common.project.facet.core.runtime.IRuntimeComponent;
-import org.eclipse.wst.common.project.facet.core.runtime.IRuntimeComponentVersion;
-
-/**
- * @author <a href="mailto:kosta@bea.com">Konstantin Komissarchik</a>
- */
-
-public abstract class AbstractRuntime
-
-    implements IRuntime
-    
-{
-    private String name;
-    
-    /**
-     * This class should not be subclassed outside this package.
-     */
-    
-    AbstractRuntime() {}
-    
-    public final String getName()
-    {
-        return this.name;
-    }
-    
-    final void setName( final String name )
-    {
-        this.name = name;
-    }
-
-    public final String getProperty( final String key )
-    {
-        return (String) getProperties().get( key );
-    }
-    
-    public final Object getAdapter( final Class adapter )
-    {
-        final String t = adapter.getName();
-        Object res = Platform.getAdapterManager().loadAdapter( this, t );
-        
-        if( res == null )
-        {
-            for( Iterator itr = getRuntimeComponents().iterator(); 
-                 itr.hasNext(); )
-            {
-                res = ( (IRuntimeComponent) itr.next() ).getAdapter( adapter );
-                
-                if( res != null )
-                {
-                    return res;
-                }
-            }
-        }
-        
-        return res;
-    }
-    
-    public boolean supports( final IProjectFacet f )
-    {
-        for( Iterator itr = f.getVersions().iterator(); itr.hasNext(); )
-        {
-            if( supports( (IProjectFacetVersion) itr.next() ) )
-            {
-                return true;
-            }
-        }
-        
-        return false;
-    }
-    
-    public Set getDefaultFacets( final Set fixed )
-    
-        throws CoreException
-        
-    {
-        // 1. Get the complete list.
-        
-        final Map facets = new HashMap();
-        
-        for( Iterator itr1 = getRuntimeComponents().iterator(); itr1.hasNext(); )
-        {
-            final IRuntimeComponent rc = (IRuntimeComponent) itr1.next();
-            final IRuntimeComponentVersion rcv = rc.getRuntimeComponentVersion();
-            
-            for( Iterator itr2 = RuntimeManagerImpl.getDefaultFacets( rcv ).iterator();
-                 itr2.hasNext(); )
-            {
-                final IProjectFacetVersion fv = (IProjectFacetVersion) itr2.next();
-                
-                if( ! facets.containsKey( fv.getProjectFacet() ) )
-                {
-                    facets.put( fv.getProjectFacet(), fv );
-                }
-            }
-        }
-        
-        // 2. Remove the facets that conflict with fixed facets.
-        
-        for( Iterator itr = facets.values().iterator(); itr.hasNext(); )
-        {
-            if( ! ( (IProjectFacetVersion) itr.next() ).isValidFor( fixed ) )
-            {
-                itr.remove();
-            }
-        }
-        
-        // 3. Make sure that the result includes all of the fixed facets.
-        
-        Map toadd = null;
-        
-        for( Iterator itr = fixed.iterator(); itr.hasNext(); )
-        {
-            final IProjectFacet f = (IProjectFacet) itr.next();
-            
-            if( ! facets.containsKey( f ) )
-            {
-                if( toadd == null )
-                {
-                    toadd = new HashMap();
-                }
-                
-                toadd.put( f, f.getLatestSupportedVersion( this ) );
-            }
-        }
-        
-        if( toadd != null )
-        {
-            facets.putAll( toadd );
-        }
-        
-        // 4. Return the result.
-        
-        return new HashSet( facets.values() );
-    }
-
-    public final boolean equals( final Object obj )
-    {
-        if( obj instanceof IRuntime )
-        {
-            final IRuntime r = (IRuntime) obj;
-            
-            return getName().equals( r.getName() ) && 
-                   getRuntimeComponents().equals( r.getRuntimeComponents() ) &&
-                   getProperties().equals( r.getProperties() );
-        }
-        
-        return false;
-    }
-    
-    public final int hashCode()
-    {
-        return this.name.hashCode();
-    }
-    
-    public String toString()
-    {
-        return this.name;
-    }
-
-}
diff --git a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/runtime/internal/BridgedRuntime.java b/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/runtime/internal/BridgedRuntime.java
deleted file mode 100644
index 5f23475..0000000
--- a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/runtime/internal/BridgedRuntime.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/******************************************************************************
- * Copyright (c) 2005 BEA Systems, Inc.
- * 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:
- *    Konstantin Komissarchik - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.wst.common.project.facet.core.runtime.internal;
-
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion;
-import org.eclipse.wst.common.project.facet.core.runtime.IRuntimeBridge;
-
-/**
- * @author <a href="mailto:kosta@bea.com">Konstantin Komissarchik</a>
- */
-
-public final class BridgedRuntime
-
-    extends AbstractRuntime
-    
-{
-    private final String bridgeId;
-    private final String nativeRuntimeId;
-    private final IRuntimeBridge.IStub stub;
-    private Set supported;
-    private List composition;
-    
-    BridgedRuntime( final String bridgeId,
-                    final String nativeRuntimeId,
-                    final IRuntimeBridge.IStub stub )
-    {
-        this.bridgeId = bridgeId;
-        this.nativeRuntimeId = nativeRuntimeId;
-        this.stub = stub;
-    }
-    
-    String getBridgeId()
-    {
-        return this.bridgeId;
-    }
-    
-    String getNativeRuntimeId()
-    {
-        return this.nativeRuntimeId;
-    }
-    
-    public List getRuntimeComponents()
-    {
-        return Collections.unmodifiableList( this.stub.getRuntimeComponents() );
-    }
-    
-    public Map getProperties()
-    {
-        return Collections.unmodifiableMap( this.stub.getProperties() );
-    }
-
-    public synchronized boolean supports( final IProjectFacetVersion fv )
-    {
-        if( fv.getPluginId() == null )
-        {
-            return true;
-        }
-        
-        final List comp = this.stub.getRuntimeComponents();
-        
-        if( this.supported == null || ! this.composition.equals( comp ) )
-        {
-            this.supported = RuntimeManagerImpl.getSupportedFacets( comp );
-            this.composition = comp;
-        }
-        
-        return this.supported.contains( fv );
-    }
-
-}
diff --git a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/runtime/internal/Runtime.java b/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/runtime/internal/Runtime.java
deleted file mode 100644
index 952362b..0000000
--- a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/runtime/internal/Runtime.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/******************************************************************************
- * Copyright (c) 2005 BEA Systems, Inc.
- * 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:
- *    Konstantin Komissarchik - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.wst.common.project.facet.core.runtime.internal;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion;
-import org.eclipse.wst.common.project.facet.core.runtime.IRuntimeComponent;
-
-/**
- * @author <a href="mailto:kosta@bea.com">Konstantin Komissarchik</a>
- */
-
-public final class Runtime
-
-    extends AbstractRuntime
-    
-{
-    private final List components = new ArrayList();
-    
-    private final List componentsReadOnly 
-        = Collections.unmodifiableList( this.components );
-    
-    private final Map properties = new HashMap();
-    
-    private final Map propertiesReadOnly
-        = Collections.unmodifiableMap( this.properties );
-    
-    private Set supported = null;
-    
-    /**
-     * This class should not be instantiated outside this package.
-     */
-    
-    Runtime() {}
-    
-    public List getRuntimeComponents()
-    {
-        return this.componentsReadOnly;
-    }
-    
-    void addRuntimeComponent( final IRuntimeComponent component )
-    {
-        this.components.add( component );
-    }
-
-    public Map getProperties()
-    {
-        return this.propertiesReadOnly;
-    }
-
-    void setProperty( final String key,
-                      final String value )
-    {
-        this.properties.put( key, value );
-    }
-
-    public synchronized boolean supports( final IProjectFacetVersion fv )
-    {
-        if( fv.getPluginId() == null )
-        {
-            return true;
-        }
-        
-        if( this.supported == null )
-        {
-            this.supported = RuntimeManagerImpl.getSupportedFacets( this.components );
-        }
-            
-        return this.supported.contains( fv );
-    }
-
-}
diff --git a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/runtime/internal/RuntimeComponent.java b/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/runtime/internal/RuntimeComponent.java
deleted file mode 100644
index 07c8bbb..0000000
--- a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/runtime/internal/RuntimeComponent.java
+++ /dev/null
@@ -1,129 +0,0 @@
-/******************************************************************************
- * Copyright (c) 2005 BEA Systems, Inc.
- * 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:
- *    Konstantin Komissarchik - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.wst.common.project.facet.core.runtime.internal;
-
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IAdapterFactory;
-import org.eclipse.core.runtime.IAdapterManager;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.wst.common.project.facet.core.internal.FacetCorePlugin;
-import org.eclipse.wst.common.project.facet.core.runtime.IRuntimeComponent;
-import org.eclipse.wst.common.project.facet.core.runtime.IRuntimeComponentType;
-import org.eclipse.wst.common.project.facet.core.runtime.IRuntimeComponentVersion;
-
-/**
- * @author <a href="mailto:kosta@bea.com">Konstantin Komissarchik</a>
- */
-
-public final class RuntimeComponent
-
-    implements IRuntimeComponent
-    
-{
-    private RuntimeComponentVersion rcv;
-    
-    private final Map properties = new HashMap();
-    
-    private final Map propertiesReadOnly 
-        = Collections.unmodifiableMap( this.properties );
-    
-    /**
-     * This class should not be instantiated outside this package.
-     */
-
-    RuntimeComponent() {}
-
-    public IRuntimeComponentType getRuntimeComponentType()
-    {
-        return this.rcv.getRuntimeComponentType();
-    }
-
-    public IRuntimeComponentVersion getRuntimeComponentVersion()
-    {
-        return this.rcv;
-    }
-    
-    void setRuntimeComponentVersion( final IRuntimeComponentVersion rcv )
-    {
-        this.rcv = (RuntimeComponentVersion) rcv;
-    }
-
-    public Map getProperties()
-    {
-        return this.propertiesReadOnly;
-    }
-
-    public String getProperty( final String key )
-    {
-        return (String) this.properties.get( key );
-    }
-    
-    void setProperty( final String key,
-                      final String value )
-    {
-        this.properties.put( key, value );
-    }
-
-    public Object getAdapter( final Class type )
-    {
-        final IAdapterManager manager = Platform.getAdapterManager();
-        Object res = manager.loadAdapter( this, type.getName() );
-        
-        if( res == null )
-        {
-            IAdapterFactory factory = null;
-            
-            try
-            {
-                factory = this.rcv.getAdapterFactory( type );
-            }
-            catch( CoreException e )
-            {
-                FacetCorePlugin.log( e );
-            }
-            
-            if( factory != null )
-            {
-                res = factory.getAdapter( this, type );
-            }
-        }
-        
-        return res;
-    }
-
-    public boolean equals( final Object obj )
-    {
-        if( obj instanceof RuntimeComponent )
-        {
-            final RuntimeComponent rc = (RuntimeComponent) obj;
-            
-            return this.rcv == rc.rcv && 
-                   this.properties.equals( rc.properties );
-        }
-        
-        return false;
-    }
-    
-    public int hashCode()
-    {
-        return this.rcv.hashCode();
-    }
-    
-    public String toString()
-    {
-        return this.rcv.toString();
-    }
-}
diff --git a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/runtime/internal/RuntimeComponentType.java b/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/runtime/internal/RuntimeComponentType.java
deleted file mode 100644
index b1d4545..0000000
--- a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/runtime/internal/RuntimeComponentType.java
+++ /dev/null
@@ -1,127 +0,0 @@
-/******************************************************************************
- * Copyright (c) 2005 BEA Systems, Inc.
- * 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:
- *    Konstantin Komissarchik - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.wst.common.project.facet.core.runtime.internal;
-
-import java.util.Collections;
-import java.util.Comparator;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.wst.common.project.facet.core.VersionFormatException;
-import org.eclipse.wst.common.project.facet.core.internal.Versionable;
-import org.eclipse.wst.common.project.facet.core.runtime.IRuntimeComponentType;
-import org.eclipse.wst.common.project.facet.core.runtime.IRuntimeComponentVersion;
-
-/**
- * @author <a href="mailto:kosta@bea.com">Konstantin Komissarchik</a>
- */
-
-public final class RuntimeComponentType
-
-    extends Versionable
-    implements IRuntimeComponentType
-    
-{
-    private static final IVersionAdapter VERSION_ADAPTER = new IVersionAdapter()
-    {
-        public String adapt( final Object obj )
-        {
-            return ( (IRuntimeComponentVersion) obj ).getVersionString();
-        }
-    };
-
-    private String id;
-    private String plugin;
-    
-    public String getId()
-    {
-        return this.id;
-    }
-    
-    void setId( final String id )
-    {
-        this.id = id;
-    }
-    
-    public String getPluginId()
-    {
-        return this.plugin;
-    }
-    
-    void setPluginId( final String plugin )
-    {
-        this.plugin = plugin;
-    }
-    
-    void addVersion( final IRuntimeComponentVersion ver )
-    {
-        this.versions.add( ver.getVersionString(), ver );
-    }
-
-    public IRuntimeComponentVersion getVersion( final String version )
-    {
-        final IRuntimeComponentVersion rcv
-            = (IRuntimeComponentVersion) this.versions.get( version );
-        
-        if( rcv == null )
-        {
-            final String msg
-                = NLS.bind( RuntimeManagerImpl.Resources.runtimeComponentVersionNotDefined,
-                            this.id, version );
-            
-            throw new IllegalArgumentException( msg );
-        }
-        
-        return rcv;
-    }
-
-    public IRuntimeComponentVersion getLatestVersion()
-    
-        throws VersionFormatException, CoreException
-        
-    {
-        if( this.versions.size() > 0 )
-        {
-            final Comparator comp = getVersionComparator( true, VERSION_ADAPTER );
-            final Object max = Collections.max( this.versions, comp );
-            
-            return (IRuntimeComponentVersion) max;
-        }
-        else
-        {
-            return null;
-        }
-    }
-    
-    public Object getAdapter( final Class type )
-    {
-        return Platform.getAdapterManager().loadAdapter( this, type.getName() );
-    }
-
-    protected IVersionAdapter getVersionAdapter()
-    {
-        return VERSION_ADAPTER;
-    }
-    
-    public String createVersionNotFoundErrMsg( final String verstr )
-    {
-        return NLS.bind( RuntimeManagerImpl.Resources.runtimeComponentVersionNotDefined,
-                         this.id, verstr );
-    }
-    
-    public String toString()
-    {
-        return this.id;
-    }
-    
-}
diff --git a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/runtime/internal/RuntimeComponentVersion.java b/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/runtime/internal/RuntimeComponentVersion.java
deleted file mode 100644
index a35c333..0000000
--- a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/runtime/internal/RuntimeComponentVersion.java
+++ /dev/null
@@ -1,129 +0,0 @@
-/******************************************************************************
- * Copyright (c) 2005 BEA Systems, Inc.
- * 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:
- *    Konstantin Komissarchik - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.wst.common.project.facet.core.runtime.internal;
-
-import java.util.HashMap;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IAdapterFactory;
-import org.eclipse.wst.common.project.facet.core.internal.FacetCorePlugin;
-import org.eclipse.wst.common.project.facet.core.internal.IVersion;
-import org.eclipse.wst.common.project.facet.core.internal.Versionable;
-import org.eclipse.wst.common.project.facet.core.runtime.IRuntimeComponentType;
-import org.eclipse.wst.common.project.facet.core.runtime.IRuntimeComponentVersion;
-
-/**
- * @author <a href="mailto:kosta@bea.com">Konstantin Komissarchik</a>
- */
-
-public final class RuntimeComponentVersion
-
-    implements IRuntimeComponentVersion, IVersion
-    
-{
-    private String plugin;
-    private IRuntimeComponentType type;
-    private String version;
-    private final HashMap adapterFactories = new HashMap();
-    
-    public String getPluginId()
-    {
-        return this.plugin;
-    }
-    
-    void setPluginId( final String plugin )
-    {
-        this.plugin = plugin;
-    }
-
-    public IRuntimeComponentType getRuntimeComponentType()
-    {
-        return this.type;
-    }
-    
-    void setRuntimeComponentType( final IRuntimeComponentType type )
-    {
-        this.type = type;
-    }
-
-    public String getVersionString()
-    {
-        return this.version;
-    }
-    
-    void setVersionString( final String version )
-    {
-        this.version = version;
-    }
-    
-    public Versionable getVersionable()
-    {
-        return (Versionable) this.type;
-    }
-
-    public IAdapterFactory getAdapterFactory( final Class type )
-    
-        throws CoreException
-        
-    {
-        synchronized( this.adapterFactories )
-        {
-            Object factory = this.adapterFactories.get( type.getName() );
-            
-            if( factory == null )
-            {
-                return null;
-            }
-            
-            if( factory instanceof PluginAndClass )
-            {
-                final PluginAndClass ref = (PluginAndClass) factory;
-                
-                factory = FacetCorePlugin.instantiate( ref.plugin, ref.clname,
-                                                       IAdapterFactory.class );
-
-                this.adapterFactories.put( type.getName(), factory );
-            }
-            
-            return (IAdapterFactory) factory;
-        }
-    }
-    
-    public String toString()
-    {
-        return this.type.getId() + " " + this.version; //$NON-NLS-1$
-    }
-
-    void addAdapterFactory( final String type,
-                            final String plugin,
-                            final String factory )
-    {
-        synchronized( this.adapterFactories )
-        {
-            this.adapterFactories.put( type, new PluginAndClass( plugin, factory ) );
-        }
-    }
-    
-    private static final class PluginAndClass
-    {
-        public final String plugin;
-        public final String clname;
-        
-        public PluginAndClass( final String plugin,
-                               final String clname )
-        {
-            this.plugin = plugin;
-            this.clname = clname;
-        }
-    }
-    
-}
diff --git a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/runtime/internal/RuntimeManagerImpl.java b/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/runtime/internal/RuntimeManagerImpl.java
deleted file mode 100644
index 0f2c3c9..0000000
--- a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/runtime/internal/RuntimeManagerImpl.java
+++ /dev/null
@@ -1,1132 +0,0 @@
-/******************************************************************************
- * Copyright (c) 2005, 2006 BEA Systems, Inc.
- * 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:
- *    Konstantin Komissarchik - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.wst.common.project.facet.core.runtime.internal;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExtension;
-import org.eclipse.core.runtime.IExtensionPoint;
-import org.eclipse.core.runtime.IExtensionRegistry;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.wst.common.project.facet.core.IListener;
-import org.eclipse.wst.common.project.facet.core.IProjectFacet;
-import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion;
-import org.eclipse.wst.common.project.facet.core.ProjectFacetsManager;
-import org.eclipse.wst.common.project.facet.core.VersionFormatException;
-import org.eclipse.wst.common.project.facet.core.internal.FacetCorePlugin;
-import org.eclipse.wst.common.project.facet.core.internal.IVersion;
-import org.eclipse.wst.common.project.facet.core.internal.IndexedSet;
-import org.eclipse.wst.common.project.facet.core.internal.ProjectFacetsManagerImpl;
-import org.eclipse.wst.common.project.facet.core.internal.VersionExpr;
-import org.eclipse.wst.common.project.facet.core.runtime.IRuntime;
-import org.eclipse.wst.common.project.facet.core.runtime.IRuntimeBridge;
-import org.eclipse.wst.common.project.facet.core.runtime.IRuntimeComponent;
-import org.eclipse.wst.common.project.facet.core.runtime.IRuntimeComponentType;
-import org.eclipse.wst.common.project.facet.core.runtime.IRuntimeComponentVersion;
-
-/**
- * @author <a href="mailto:kosta@bea.com">Konstantin Komissarchik</a>
- */
-
-public final class RuntimeManagerImpl
-{
-    private static final String EXTENSION_ID = "runtimes"; //$NON-NLS-1$
-    private static final String BRIDGES_EXTENSION_ID = "runtimeBridges"; //$NON-NLS-1$
-    private static final String DEFAULT_FACETS_EXTENSION_ID = "defaultFacets"; //$NON-NLS-1$
-
-    private static final String ATTR_CLASS = "class"; //$NON-NLS-1$
-    private static final String ATTR_ID = "id"; //$NON-NLS-1$
-    private static final String ATTR_TYPE = "type"; //$NON-NLS-1$
-    private static final String ATTR_VERSION = "version"; //$NON-NLS-1$
-    private static final String EL_ADAPTER = "adapter"; //$NON-NLS-1$
-    private static final String EL_BRIDGE = "bridge"; //$NON-NLS-1$
-    private static final String EL_DEFAULT_FACETS = "default-facets"; //$NON-NLS-1$
-    private static final String EL_FACET = "facet"; //$NON-NLS-1$
-    private static final String EL_FACTORY = "factory"; //$NON-NLS-1$
-    private static final String EL_RUNTIME_COMPONENT = "runtime-component"; //$NON-NLS-1$
-    private static final String EL_RUNTIME_COMPONENT_TYPE = "runtime-component-type"; //$NON-NLS-1$
-    private static final String EL_RUNTIME_COMPONENT_VERSION = "runtime-component-version"; //$NON-NLS-1$
-    private static final String EL_SUPPORTED = "supported"; //$NON-NLS-1$
-    private static final String EL_VERSION_COMPARATOR = "version-comparator"; //$NON-NLS-1$
-
-    private static final String ANY = "any"; //$NON-NLS-1$
-    
-    private static final IndexedSet runtimeComponentTypes;
-    private static final IndexedSet runtimes;
-    private static final List mappings;
-    private static final Map bridges;
-    private static final List defaultFacets;
-    private static final Set listeners;
-    
-    static
-    {
-        runtimeComponentTypes = new IndexedSet();
-        runtimes = new IndexedSet();
-        mappings = new ArrayList();
-        bridges = new HashMap();
-        defaultFacets = new ArrayList();
-        listeners = new HashSet();
-        
-        readMetadata();
-        readBridgesExtensions();
-        readDefaultFacetsExtensions();
-    }
-    
-    private RuntimeManagerImpl() {}
-    
-    public static Set getRuntimeComponentTypes()
-    {
-        return runtimeComponentTypes.getUnmodifiable();
-    }
-    
-    public static boolean isRuntimeComponentTypeDefined( final String id )
-    {
-        return runtimeComponentTypes.containsKey( id );
-    }
-    
-    public static IRuntimeComponentType getRuntimeComponentType( final String id )
-    {
-        final IRuntimeComponentType rc 
-            = (IRuntimeComponentType) runtimeComponentTypes.get( id );
-        
-        if( rc == null )
-        {
-            final String msg 
-                = NLS.bind( Resources.runtimeComponentTypeNotDefined, id );
-            
-            throw new IllegalArgumentException( msg );
-        }
-        
-        return rc;
-    }
-    
-    public static IRuntimeComponent createRuntimeComponent( final IRuntimeComponentVersion rcv,
-                                                            final Map properties )
-    {
-        final RuntimeComponent rc = new RuntimeComponent();
-        
-        rc.setRuntimeComponentVersion( rcv );
-        
-        if( properties != null )
-        {
-            for( Iterator itr = properties.entrySet().iterator(); 
-                 itr.hasNext(); )
-            {
-                final Map.Entry entry = (Map.Entry) itr.next();
-                
-                rc.setProperty( (String) entry.getKey(), 
-                                (String) entry.getValue() );
-            }
-        }
-        
-        return rc;
-    }
-    
-    public static Set getRuntimes()
-    {
-        synchronized( runtimes )
-        {
-            bridge();
-            return (Set) runtimes.clone();
-        }
-    }
-    
-    public static Set getRuntimes( final Set facets )
-    {
-        synchronized( runtimes )
-        {
-            bridge();
-            
-            final HashSet result = new HashSet();
-            
-            for( Iterator itr1 = runtimes.iterator(); itr1.hasNext(); )
-            {
-                final IRuntime r = (IRuntime) itr1.next();
-                boolean supports = true;
-                
-                for( Iterator itr2 = facets.iterator(); itr2.hasNext(); )
-                {
-                    if( ! r.supports( (IProjectFacetVersion) itr2.next() ) )
-                    {
-                        supports = false;
-                        break;
-                    }
-                }
-                
-                if( supports )
-                {
-                    result.add( r );
-                }
-            }
-            
-            return result;
-        }
-    }
-    
-    public static boolean isRuntimeDefined( final String name )
-    {
-        synchronized( runtimes )
-        {
-            bridge();
-            return runtimes.containsKey( name );
-        }
-    }
-    
-    public static IRuntime getRuntime( final String name )
-    {
-        synchronized( runtimes )
-        {
-            bridge();
-            
-            final IRuntime runtime = (IRuntime) runtimes.get( name );
-            
-            if( runtime == null )
-            {
-                final String msg = NLS.bind( Resources.runtimeNotDefined, name );
-                throw new IllegalArgumentException( msg );
-            }
-            
-            return runtime;
-        }
-    }
-    
-    public static IRuntime defineRuntime( final String name,
-                                          final List components,
-                                          final Map properties )
-    {
-        synchronized( runtimes )
-        {
-            final Runtime r = new Runtime();
-            
-            r.setName( name );
-            
-            for( Iterator itr = components.iterator(); itr.hasNext(); )
-            {
-                r.addRuntimeComponent( (IRuntimeComponent) itr.next() );
-            }
-            
-            if( properties != null )
-            {
-                for( Iterator itr = properties.entrySet().iterator(); 
-                     itr.hasNext(); )
-                {
-                    final Map.Entry entry = (Map.Entry) itr.next();
-                    
-                    r.setProperty( (String) entry.getKey(), 
-                                   (String) entry.getValue() );
-                }
-            }
-            
-            runtimes.add( r.getName(), r );
-            
-            notifyRuntimeListeners();
-            
-            return r;
-        }
-    }
-    
-    public static void deleteRuntime( final IRuntime runtime )
-    {
-        synchronized( runtimes )
-        {
-            if( runtimes.delete( runtime.getName() ) )
-            {
-                notifyRuntimeListeners();
-            }
-        }
-    }
-    
-    public static void addRuntimeListener( final IListener listener )
-    {
-        synchronized( listeners )
-        {
-            listeners.add( listener );
-        }
-    }
-    
-    public static void removeRuntimeListener( final IListener listener )
-    {
-        synchronized( listeners )
-        {
-            listeners.remove( listener );
-        }
-    }
-    
-    private static void notifyRuntimeListeners()
-    {
-        for( Iterator itr = listeners.iterator(); itr.hasNext(); )
-        {
-            try
-            {
-                ( (IListener) itr.next() ).handle();
-            }
-            catch( Exception e )
-            {
-                FacetCorePlugin.log( e );
-            }
-        }
-    }
-    
-    static Set getSupportedFacets( final List composition )
-    {
-        final Set result = new HashSet();
-        
-        for( Iterator itr1 = composition.iterator(); itr1.hasNext(); )
-        {
-            final IRuntimeComponent rc = (IRuntimeComponent) itr1.next();
-            
-            for( Iterator itr2 = mappings.iterator(); itr2.hasNext(); )
-            {
-                final Mapping m = (Mapping) itr2.next();
-                
-                try
-                {
-                    result.addAll( m.getSupportedFacets( rc ) );                    
-                }
-                catch( CoreException e )
-                {
-                    FacetCorePlugin.log( e.getStatus() );
-                }
-                catch( VersionFormatException e )
-                {
-                    FacetCorePlugin.log( e );
-                }
-            }
-        }
-        
-        return result;
-    }
-    
-    static Set getDefaultFacets( final IRuntimeComponentVersion rcv )
-    {
-        final Set result = new HashSet();
-        
-        for( Iterator itr = defaultFacets.iterator(); itr.hasNext(); )
-        {
-            final DefaultFacetsEntry dfe = (DefaultFacetsEntry) itr.next();
-            
-            try
-            {
-                if( dfe.match( rcv ) )
-                {
-                    result.addAll( dfe.facets );
-                }
-            }
-            catch( CoreException e )
-            {
-                FacetCorePlugin.log( e );
-            }
-        }
-        
-        return result;
-    }
-    
-    private static void bridge()
-    {
-        boolean modified = false;
-        
-        for( Iterator itr1 = bridges.entrySet().iterator(); itr1.hasNext(); )
-        {
-            final Map.Entry entry = (Map.Entry) itr1.next();
-            final String brid = (String) entry.getKey();
-            final IRuntimeBridge br = (IRuntimeBridge) entry.getValue();
-            
-            // Find the runtimes belonging to this bridge that are currently
-            // in the system.
-            
-            final HashMap existing = new HashMap();
-            
-            for( Iterator itr2 = runtimes.iterator(); itr2.hasNext(); )
-            {
-                final Object obj = itr2.next();
-                
-                if( obj instanceof BridgedRuntime )
-                {
-                    final BridgedRuntime bridged = (BridgedRuntime) obj;
-                    
-                    if( bridged.getBridgeId().equals( brid ) )
-                    {
-                        existing.put( bridged.getNativeRuntimeId(), bridged );
-                    }
-                }
-            }
-            
-            // Get the new set of exported runtimes.
-            
-            final Set exported;
-            
-            try
-            {
-                exported = br.getExportedRuntimeNames();
-            }
-            catch( CoreException e )
-            {
-                FacetCorePlugin.log( e );
-                
-                for( Iterator itr2 = existing.values().iterator(); 
-                     itr2.hasNext(); )
-                {
-                    runtimes.remove( ( (IRuntime) itr2 ).getName() );
-                    modified = true;
-                }
-                
-                continue;
-            }
-            
-            // Remove the absolete entries.
-            
-            for( Iterator itr2 = existing.values().iterator(); itr2.hasNext(); )
-            {
-                final BridgedRuntime r = (BridgedRuntime) itr2.next();
-                
-                if( ! exported.contains( r.getNativeRuntimeId() ) )
-                {
-                    runtimes.delete( r.getName() );
-                    modified = true;
-                }
-            }
-            
-            // Create the new entries.
-            
-            for( Iterator itr2 = exported.iterator(); itr2.hasNext(); )
-            {
-                final String id = (String) itr2.next();
-                
-                if( ! existing.containsKey( id ) )
-                {
-                    try
-                    {
-                        final IRuntimeBridge.IStub stub = br.bridge( id );
-                        
-                        final BridgedRuntime r 
-                            = new BridgedRuntime( brid, id, stub );
-                        
-                        r.setName( createUniqueRuntimeName( id ) );
-                        
-                        runtimes.add( r.getName(), r );
-                        modified = true;
-                    }
-                    catch( CoreException e )
-                    {
-                        FacetCorePlugin.log( e );
-                    }
-                }
-            }
-            
-            if( modified )
-            {
-                notifyRuntimeListeners();
-            }
-        }
-    }
-    
-    private static String createUniqueRuntimeName( final String suggestion )
-    {
-        String name = suggestion;
-        
-        for( int i = 1; runtimes.contains( name ); i++ )
-        {
-            name = suggestion + " (" + i + ")"; //$NON-NLS-1$ //$NON-NLS-2$
-        }
-        
-        return name;
-    }
-    
-    private static void readMetadata()
-    {
-        final IExtensionRegistry registry = Platform.getExtensionRegistry();
-        
-        final IExtensionPoint point 
-            = registry.getExtensionPoint( FacetCorePlugin.PLUGIN_ID, 
-                                          EXTENSION_ID );
-        
-        if( point == null )
-        {
-            throw new RuntimeException( "Extension point not found!" ); //$NON-NLS-1$
-        }
-        
-        final ArrayList cfgels = new ArrayList();
-        final IExtension[] extensions = point.getExtensions();
-        
-        for( int i = 0; i < extensions.length; i++ )
-        {
-            final IConfigurationElement[] elements 
-                = extensions[ i ].getConfigurationElements();
-            
-            for( int j = 0; j < elements.length; j++ )
-            {
-                cfgels.add( elements[ j ] );
-            }
-        }
-        
-        for( int i = 0, n = cfgels.size(); i < n; i++ )
-        {
-            final IConfigurationElement config
-                = (IConfigurationElement) cfgels.get( i );
-            
-            if( config.getName().equals( EL_RUNTIME_COMPONENT_TYPE ) )
-            {
-                readRuntimeComponentType( config );
-            }
-        }
-
-        for( int i = 0, n = cfgels.size(); i < n; i++ )
-        {
-            final IConfigurationElement config
-                = (IConfigurationElement) cfgels.get( i );
-            
-            if( config.getName().equals( EL_RUNTIME_COMPONENT_VERSION ) )
-            {
-                readRuntimeComponentVersion( config );
-            }
-        }
-
-        for( int i = 0, n = cfgels.size(); i < n; i++ )
-        {
-            final IConfigurationElement config
-                = (IConfigurationElement) cfgels.get( i );
-            
-            if( config.getName().equals( EL_ADAPTER ) )
-            {
-                readAdapter( config );
-            }
-        }
-
-        for( int i = 0, n = cfgels.size(); i < n; i++ )
-        {
-            final IConfigurationElement config
-                = (IConfigurationElement) cfgels.get( i );
-            
-            if( config.getName().equals( EL_SUPPORTED ) )
-            {
-                readMapping( config );
-            }
-        }
-    }
-    
-    private static void readRuntimeComponentType( final IConfigurationElement config )
-    {
-        final String id = config.getAttribute( ATTR_ID );
-
-        if( id == null )
-        {
-            reportMissingAttribute( config, ATTR_ID );
-            return;
-        }
-        
-        final RuntimeComponentType rct = new RuntimeComponentType();
-        rct.setId( id );
-        rct.setPluginId( config.getContributor().getName() );
-
-        final IConfigurationElement[] children = config.getChildren();
-        
-        for( int i = 0; i < children.length; i++ )
-        {
-            final IConfigurationElement child = children[ i ];
-            final String childName = child.getName();
-            
-            if( childName.equals( EL_VERSION_COMPARATOR ) )
-            {
-                final String clname = child.getAttribute( ATTR_CLASS );
-                
-                if( clname == null )
-                {
-                    reportMissingAttribute( child, ATTR_CLASS );
-                    return;
-                }
-                
-                rct.setVersionComparator( clname );
-            }
-        }
-        
-        runtimeComponentTypes.add( id, rct );
-    }
-    
-    private static void readRuntimeComponentVersion( final IConfigurationElement config )
-    {
-        final String type = config.getAttribute( ATTR_TYPE );
-
-        if( type == null )
-        {
-            reportMissingAttribute( config, ATTR_TYPE );
-            return;
-        }
-        
-        final String ver = config.getAttribute( ATTR_VERSION );
-
-        if( ver == null )
-        {
-            reportMissingAttribute( config, ATTR_VERSION );
-            return;
-        }
-        
-        final RuntimeComponentType rct 
-            = (RuntimeComponentType) runtimeComponentTypes.get( type );
-        
-        if( rct == null )
-        {
-            final String msg
-                = NLS.bind( Resources.runtimeComponentTypeNotDefined, type ) +
-                  NLS.bind( Resources.usedInPlugin, config.getContributor().getName() );
-            
-            FacetCorePlugin.log( msg );
-            
-            return;
-        }
-        
-        final RuntimeComponentVersion rcv = new RuntimeComponentVersion();
-        
-        rcv.setRuntimeComponentType( rct );
-        rcv.setVersionString( ver );
-        rcv.setPluginId( config.getContributor().getName() );
-        
-        rct.addVersion( rcv );
-    }
-    
-    private static void readAdapter( final IConfigurationElement config )
-    {
-        IRuntimeComponentType rctype = null;
-        IRuntimeComponentVersion rcversion = null;
-        String factory = null;
-        final List types = new ArrayList();
-        
-        final IConfigurationElement[] children = config.getChildren();
-        
-        for( int i = 0; i < children.length; i++ )
-        {
-            final IConfigurationElement child = children[ i ];
-            final String childName = child.getName();
-            
-            if( childName.equals( EL_RUNTIME_COMPONENT ) )
-            {
-                final String id = child.getAttribute( ATTR_ID );
-
-                if( id == null )
-                {
-                    reportMissingAttribute( child, ATTR_ID );
-                    return;
-                }
-                
-                if( ! isRuntimeComponentTypeDefined( id ) )
-                {
-                    final String msg
-                        = NLS.bind( Resources.runtimeComponentTypeNotDefined, id ) +
-                          NLS.bind( Resources.usedInPlugin, 
-                                    child.getContributor().getName() );
-                    
-                    FacetCorePlugin.log( msg );
-                    
-                    return;
-                }
-                
-                rctype = getRuntimeComponentType( id );
-                
-                final String version = child.getAttribute( ATTR_VERSION );
-                
-                if( version != null )
-                {
-                    if( ! rctype.hasVersion( version ) )
-                    {
-                        String msg
-                            = NLS.bind( Resources.runtimeComponentVersionNotDefined,
-                                        id, version );
-                        
-                        msg += NLS.bind( Resources.usedInPlugin, 
-                                         config.getContributor().getName() );
-                        
-                        FacetCorePlugin.log( msg );
-                        
-                        return;
-                    }
-                    
-                    rcversion = rctype.getVersion( version );
-                }
-            }
-            else if( childName.equals( EL_FACTORY ) )
-            {
-                factory = child.getAttribute( ATTR_CLASS );
-
-                if( factory == null )
-                {
-                    reportMissingAttribute( child, ATTR_CLASS );
-                    return;
-                }
-            }
-            else if( childName.equals( ATTR_TYPE ) )
-            {
-                final String type = child.getAttribute( ATTR_CLASS );
-
-                if( type == null )
-                {
-                    reportMissingAttribute( child, ATTR_CLASS );
-                    return;
-                }
-                else
-                {
-                    types.add( type );
-                }
-            }
-        }
-        
-        final Set versions;
-        
-        if( rcversion == null )
-        {
-            versions = rctype.getVersions();
-        }
-        else
-        {
-            versions = Collections.singleton( rcversion );
-        }
-        
-        final String plugin = config.getContributor().getName();
-        
-        for( Iterator itr1 = versions.iterator(); itr1.hasNext(); )
-        {
-            final RuntimeComponentVersion rcv
-                = (RuntimeComponentVersion) itr1.next();
-            
-            for( Iterator itr2 = types.iterator(); itr2.hasNext(); )
-            {
-                rcv.addAdapterFactory( (String) itr2.next(), plugin, factory );
-            }
-        }
-    }
-    
-    private static void readMapping( final IConfigurationElement config )
-    {
-        final Mapping m = new Mapping();
-        final IConfigurationElement[] children = config.getChildren();
-        
-        for( int i = 0; i < children.length; i++ )
-        {
-            final IConfigurationElement child = children[ i ];
-            final String childName = child.getName();
-            
-            if( childName.equals( EL_FACET ) )
-            {
-                final IProjectFacet f = readProjectFacetRef( child );
-                
-                if( f == null )
-                {
-                    return;
-                }
-                
-                final String v = child.getAttribute( ATTR_VERSION );
-                VersionExpr expr = null;
-                
-                if( v != null )
-                {
-                    try
-                    {
-                        expr = new VersionExpr( f, v, config.getContributor().getName() );
-                    }
-                    catch( CoreException e )
-                    {
-                        FacetCorePlugin.log( e.getStatus() );
-                        return;
-                    }
-                }
-                
-                m.facets.put( f, expr );
-            }
-            else if( childName.equals( EL_RUNTIME_COMPONENT ) )
-            {
-                if( child.getAttribute( ANY ) == null )
-                {
-                    final IRuntimeComponentType rct 
-                        = readRuntimeComponentTypeRef( child );
-                    
-                    if( rct == null )
-                    {
-                        return;
-                    }
-                    
-                    final String v = child.getAttribute( ATTR_VERSION );
-                    VersionExpr expr = null;
-                    
-                    if( v != null )
-                    {
-                        try
-                        {
-                            final String pluginId 
-                                = config.getContributor().getName();
-                            
-                            expr = new VersionExpr( rct, v, pluginId );
-                        }
-                        catch( CoreException e )
-                        {
-                            FacetCorePlugin.log( e.getStatus() );
-                            return;
-                        }
-                    }
-                    
-                    m.runtimeComponents.put( rct, expr );
-                }
-            }
-        }
-        
-        mappings.add( m );
-    }
-    
-    private static void readBridgesExtensions()
-    {
-        final IExtensionRegistry registry = Platform.getExtensionRegistry();
-        
-        final IExtensionPoint point 
-            = registry.getExtensionPoint( FacetCorePlugin.PLUGIN_ID, 
-                                          BRIDGES_EXTENSION_ID );
-        
-        if( point == null )
-        {
-            throw new RuntimeException( "Extension point not found!" ); //$NON-NLS-1$
-        }
-        
-        final ArrayList cfgels = new ArrayList();
-        final IExtension[] extensions = point.getExtensions();
-        
-        for( int i = 0; i < extensions.length; i++ )
-        {
-            final IConfigurationElement[] elements 
-                = extensions[ i ].getConfigurationElements();
-            
-            for( int j = 0; j < elements.length; j++ )
-            {
-                cfgels.add( elements[ j ] );
-            }
-        }
-        
-        for( int i = 0, n = cfgels.size(); i < n; i++ )
-        {
-            final IConfigurationElement config
-                = (IConfigurationElement) cfgels.get( i );
-            
-            if( config.getName().equals( EL_BRIDGE ) )
-            {
-                final String id = config.getAttribute( ATTR_ID );
-
-                if( id == null )
-                {
-                    reportMissingAttribute( config, ATTR_ID );
-                    return;
-                }
-                
-                final String clname = config.getAttribute( ATTR_CLASS );
-
-                if( clname == null )
-                {
-                    reportMissingAttribute( config, ATTR_CLASS );
-                    return;
-                }
-                
-                final String pluginId = config.getContributor().getName();
-                
-                final Object br;
-                
-                try
-                {
-                    br = FacetCorePlugin.instantiate( pluginId, clname,
-                                                      IRuntimeBridge.class );
-                }
-                catch( CoreException e )
-                {
-                    FacetCorePlugin.log( e );
-                    continue;
-                }
-                
-                bridges.put( id, br );
-            }
-        }
-    }
-
-    private static void readDefaultFacetsExtensions()
-    {
-        final IExtensionRegistry registry = Platform.getExtensionRegistry();
-        
-        final IExtensionPoint point 
-            = registry.getExtensionPoint( FacetCorePlugin.PLUGIN_ID, 
-                                          DEFAULT_FACETS_EXTENSION_ID );
-        
-        if( point == null )
-        {
-            throw new RuntimeException( "Extension point not found!" ); //$NON-NLS-1$
-        }
-        
-        final ArrayList cfgels = new ArrayList();
-        final IExtension[] extensions = point.getExtensions();
-        
-        for( int i = 0; i < extensions.length; i++ )
-        {
-            final IConfigurationElement[] elements 
-                = extensions[ i ].getConfigurationElements();
-            
-            for( int j = 0; j < elements.length; j++ )
-            {
-                cfgels.add( elements[ j ] );
-            }
-        }
-        
-        for( int i = 0, n = cfgels.size(); i < n; i++ )
-        {
-            final IConfigurationElement config
-                = (IConfigurationElement) cfgels.get( i );
-            
-            if( config.getName().equals( EL_DEFAULT_FACETS ) )
-            {
-                readDefaultFacets( config );
-            }
-        }
-    }
-    
-    private static void readDefaultFacets( final IConfigurationElement config )
-    {
-        final DefaultFacetsEntry dfe = new DefaultFacetsEntry();
-        final IConfigurationElement[] children = config.getChildren();
-        
-        for( int i = 0; i < children.length; i++ )
-        {
-            final IConfigurationElement child = children[ i ];
-            final String childName = child.getName();
-            
-            if( childName.equals( EL_RUNTIME_COMPONENT ) )
-            {
-                dfe.rct = readRuntimeComponentTypeRef( child );
-                
-                if( dfe.rct == null )
-                {
-                    return;
-                }
-                
-                final String v = child.getAttribute( ATTR_VERSION );
-                
-                if( v != null )
-                {
-                    try
-                    {
-                        final String pluginId 
-                            = config.getContributor().getName();
-                        
-                        dfe.rcvexpr = new VersionExpr( dfe.rct, v, pluginId );
-                    }
-                    catch( CoreException e )
-                    {
-                        FacetCorePlugin.log( e.getStatus() );
-                        return;
-                    }
-                }
-            }
-            else if( childName.equals( EL_FACET ) )
-            {
-                final IProjectFacet f = readProjectFacetRef( child );
-                
-                if( f == null )
-                {
-                    return;
-                }
-                
-                final String ver = child.getAttribute( ATTR_VERSION );
-                
-                if( ver == null )
-                {
-                    reportMissingAttribute( child, ATTR_VERSION );
-                    return;
-                }
-                
-                if( ! f.hasVersion( ver ) )
-                {
-                    String msg
-                        = NLS.bind( ProjectFacetsManagerImpl.Resources.facetVersionNotDefined,
-                                    f.getId(), ver );
-                    
-                    msg += NLS.bind( Resources.usedInPlugin, 
-                                     config.getContributor().getName() );
-                    
-                    FacetCorePlugin.log( msg );
-                    
-                    return;
-                }
-                
-                dfe.facets.add( f.getVersion( ver ) );
-            }
-        }
-        
-        if( dfe.rct == null )
-        {
-            return;
-        }
-        
-        defaultFacets.add( dfe );
-    }
-    
-    private static IRuntimeComponentType readRuntimeComponentTypeRef( final IConfigurationElement config )
-    {
-        final String id = config.getAttribute( ATTR_ID );
-        
-        if( id == null )
-        {
-            reportMissingAttribute( config, ATTR_ID );
-            return null;
-        }
-        
-        if( ! isRuntimeComponentTypeDefined( id ) )
-        {
-            final String msg
-                = NLS.bind( Resources.runtimeComponentTypeNotDefined, id ) +
-                  NLS.bind( Resources.usedInPlugin, 
-                            config.getContributor().getName() );
-            
-            FacetCorePlugin.log( msg );
-            
-            return null;
-        }
-        
-        return getRuntimeComponentType( id );
-    }
-    
-    private static IProjectFacet readProjectFacetRef( final IConfigurationElement config )
-    {
-        final String id = config.getAttribute( ATTR_ID );
-
-        if( id == null )
-        {
-            reportMissingAttribute( config, ATTR_ID );
-            return null;
-        }
-        
-        if( ! ProjectFacetsManager.isProjectFacetDefined( id ) )
-        {
-            ProjectFacetsManagerImpl.reportMissingFacet( id, config.getContributor().getName() );
-            return null;
-        }
-        
-        return ProjectFacetsManager.getProjectFacet( id );
-    }
-    
-    private static void reportMissingAttribute( final IConfigurationElement el,
-                                                final String attribute )
-    {
-        final String[] params 
-            = new String[] { el.getContributor().getName(), el.getName(), attribute };
-        
-        final String msg = NLS.bind( Resources.missingAttribute, params ); 
-    
-        FacetCorePlugin.log( msg );
-    }
-    
-    private static final class Mapping
-    {
-        // IProjectFacet -> VersionMatchExpr
-        public final Map facets = new HashMap();
-        
-        // IRuntimeComponentType -> VersionExpr
-        public final Map runtimeComponents = new HashMap();
-        
-        private Set getSupportedFacets( final IRuntimeComponent rc )
-        
-            throws CoreException
-            
-        {
-            final IRuntimeComponentType rct = rc.getRuntimeComponentType();
-            final IRuntimeComponentVersion rcv = rc.getRuntimeComponentVersion();
-            
-            if( this.runtimeComponents.containsKey( rct ) )
-            {
-                final VersionExpr expr 
-                    = (VersionExpr) this.runtimeComponents.get( rct );
-                
-                if( expr != null && ! expr.evaluate( (IVersion) rcv ) )
-                {
-                    return Collections.EMPTY_SET;
-                }
-            }
-            else if( ! this.runtimeComponents.isEmpty() )
-            {
-                return Collections.EMPTY_SET;
-            }
-            
-            final Set result = new HashSet();
-            
-            for( Iterator itr1 = this.facets.entrySet().iterator(); 
-                 itr1.hasNext(); )
-            {
-                final Map.Entry entry = (Map.Entry) itr1.next();
-                final IProjectFacet f = (IProjectFacet) entry.getKey();
-                final VersionExpr expr = (VersionExpr) entry.getValue();
-                
-                for( Iterator itr2 = f.getVersions().iterator(); 
-                     itr2.hasNext(); )
-                {
-                    final IProjectFacetVersion fv 
-                        = (IProjectFacetVersion) itr2.next();
-                    
-                    if( expr == null || expr.evaluate( (IVersion) fv ) )
-                    {
-                        result.add( fv );
-                    }
-                }
-            }
-            
-            return result;
-        }
-    }
-    
-    private static final class DefaultFacetsEntry
-    {
-        public IRuntimeComponentType rct;
-        public VersionExpr rcvexpr;
-        public final Set facets = new HashSet();
-        
-        public boolean match( final IRuntimeComponentVersion rcv )
-        
-            throws CoreException
-            
-        {
-            if( rcv.getRuntimeComponentType() != this.rct )
-            {
-                return false;
-            }
-            else
-            {
-                return this.rcvexpr.evaluate( (IVersion) rcv );
-            }
-        }
-    }
-
-    public static final class Resources
-    
-        extends NLS
-        
-    {
-        public static String missingAttribute;
-        public static String runtimeComponentTypeNotDefined;
-        public static String runtimeComponentVersionNotDefined;
-        public static String runtimeNotDefined;
-        public static String usedInPlugin;
-        
-        static
-        {
-            initializeMessages( RuntimeManagerImpl.class.getName(), 
-                                Resources.class );
-        }
-    }
-    
-}
\ No newline at end of file
diff --git a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/runtime/internal/RuntimeManagerImpl.properties b/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/runtime/internal/RuntimeManagerImpl.properties
deleted file mode 100644
index 23373d3..0000000
--- a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/runtime/internal/RuntimeManagerImpl.properties
+++ /dev/null
@@ -1,5 +0,0 @@
-missingAttribute = An extension element <{1}> in plugin {0} is missing a required attribute {2}.
-runtimeComponentTypeNotDefined = Runtime component type {0} has not been defined.
-runtimeComponentVersionNotDefined = Version {1} of runtime component type {0} has not been defined.
-runtimeNotDefined = Runtime {0} has not been defined.
-usedInPlugin = \ It is used in plugin {0}.
diff --git a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/runtime/internal/UnknownRuntime.java b/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/runtime/internal/UnknownRuntime.java
deleted file mode 100644
index c5a07bc..0000000
--- a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/runtime/internal/UnknownRuntime.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/******************************************************************************
- * Copyright (c) 2006 BEA Systems, Inc.
- * 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:
- *    Konstantin Komissarchik - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.wst.common.project.facet.core.runtime.internal;
-
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion;
-
-/**
- * Used to represent a runtime that's referenced by a project, but is not
- * defined in the workspace.
- * 
- * @author <a href="mailto:kosta@bea.com">Konstantin Komissarchik</a>
- */
-
-public final class UnknownRuntime
-
-    extends AbstractRuntime
-    
-{
-    public UnknownRuntime( final String name )
-    {
-        setName( name );
-    }
-    
-    public Map getProperties()
-    {
-        return Collections.EMPTY_MAP;
-    }
-
-    public List getRuntimeComponents()
-    {
-        return Collections.EMPTY_LIST;
-    }
-
-    public boolean supports( final IProjectFacetVersion fv )
-    {
-        return true;
-    }
-}
diff --git a/tests/org.eclipse.wst.common.project.facet.core.tests/.classpath b/tests/org.eclipse.wst.common.project.facet.core.tests/.classpath
deleted file mode 100644
index 751c8f2..0000000
--- a/tests/org.eclipse.wst.common.project.facet.core.tests/.classpath
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="src" path="src"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
-	<classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/tests/org.eclipse.wst.common.project.facet.core.tests/.project b/tests/org.eclipse.wst.common.project.facet.core.tests/.project
deleted file mode 100644
index 34d80fc..0000000
--- a/tests/org.eclipse.wst.common.project.facet.core.tests/.project
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.wst.common.project.facet.core.tests</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/tests/org.eclipse.wst.common.project.facet.core.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.wst.common.project.facet.core.tests/META-INF/MANIFEST.MF
deleted file mode 100644
index 32d1602..0000000
--- a/tests/org.eclipse.wst.common.project.facet.core.tests/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,10 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: Facet Core Tests Plug-in
-Bundle-SymbolicName: org.eclipse.wst.common.project.facet.core.tests;singleton:=true
-Bundle-Version: 1.0.0
-Bundle-Localization: plugin
-Require-Bundle: org.junit,
- org.eclipse.wst.common.project.facet.core,
- org.eclipse.core.runtime,
- org.eclipse.core.resources
diff --git a/tests/org.eclipse.wst.common.project.facet.core.tests/build.properties b/tests/org.eclipse.wst.common.project.facet.core.tests/build.properties
deleted file mode 100644
index e9863e2..0000000
--- a/tests/org.eclipse.wst.common.project.facet.core.tests/build.properties
+++ /dev/null
@@ -1,5 +0,0 @@
-source.. = src/
-output.. = bin/
-bin.includes = META-INF/,\
-               .,\
-               plugin.xml
diff --git a/tests/org.eclipse.wst.common.project.facet.core.tests/plugin.xml b/tests/org.eclipse.wst.common.project.facet.core.tests/plugin.xml
deleted file mode 100644
index 710cc2d..0000000
--- a/tests/org.eclipse.wst.common.project.facet.core.tests/plugin.xml
+++ /dev/null
@@ -1,172 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.2"?>
-
-<plugin>
-  
-  <extension point="org.eclipse.wst.common.project.facet.core.facets">
-    
-    <category id="cat1">
-      <label>Category 1</label>
-      <description>This is the category description.</description>
-    </category>
-
-    <project-facet id="facet1">
-      <label>Facet 1</label>
-      <description>This is the description of facet1.</description>
-    </project-facet>
-    
-    <project-facet-version facet="facet1" version="1.0">
-      <action type="install">
-        <delegate class="org.eclipse.wst.common.project.facet.core.tests.support.Facet1InstallDelegate"/>
-      </action>
-      <action type="uninstall">
-        <delegate class="org.eclipse.wst.common.project.facet.core.tests.support.Facet1UninstallDelegate"/>
-      </action>
-      <action type="version-change">
-        <delegate class="org.eclipse.wst.common.project.facet.core.tests.support.Facet1VersionChangeDelegate"/>
-      </action>
-    </project-facet-version>
-    
-    <project-facet-version facet="facet1" version="1.2">
-      <action type="install">
-        <delegate class="org.eclipse.wst.common.project.facet.core.tests.support.Facet1InstallDelegate"/>
-      </action>
-      <action type="uninstall">
-        <delegate class="org.eclipse.wst.common.project.facet.core.tests.support.Facet1UninstallDelegate"/>
-      </action>
-      <action type="version-change">
-        <delegate class="org.eclipse.wst.common.project.facet.core.tests.support.Facet1VersionChangeDelegate"/>
-      </action>
-    </project-facet-version>
-    
-    <project-facet-version facet="facet1" version="1.2.1"/>
-    <project-facet-version facet="facet1" version="1.3"/>
-    <project-facet-version facet="facet1" version="2.0"/>
-
-    <action facet="facet1" version="[1.2.1-2.0]" type="install">
-      <delegate class="org.eclipse.wst.common.project.facet.core.tests.support.Facet1InstallDelegate"/>
-    </action>
-    
-    <action facet="facet1" version="[1.2.1-2.0]" type="uninstall">
-      <delegate class="org.eclipse.wst.common.project.facet.core.tests.support.Facet1UninstallDelegate"/>
-    </action>
-    
-    <action facet="facet1" version="[1.2.1-2.0]" type="version-change">
-      <delegate class="org.eclipse.wst.common.project.facet.core.tests.support.Facet1VersionChangeDelegate"/>
-    </action>
-    
-    <project-facet id="facet2">
-      <version-comparator class="org.eclipse.wst.common.project.facet.core.tests.support.CustomVersionComparator"/>
-      <category>cat1</category>
-    </project-facet>
-    
-    <project-facet-version facet="facet2" version="3.5">
-      <constraint>
-        <requires facet="facet1" version="1.0"/>
-      </constraint>
-    </project-facet-version>
-    
-    <project-facet-version facet="facet2" version="3.5#a">
-      <constraint>
-        <and>
-          <requires facet="facet1" version="[1.2-1.3)"/>
-        </and>
-      </constraint>
-    </project-facet-version>
-    
-    <project-facet-version facet="facet2" version="4.7">
-      <constraint>
-        <or>
-          <requires facet="facet1" version="[1.3"/>
-        </or>
-      </constraint>
-    </project-facet-version>
-    
-    <project-facet-version facet="facet2" version="4.7#b">
-      <constraint>
-        <or>
-          <requires facet="facet1" version="1.3"/>
-          <requires facet="facet1" version="2.0"/>
-        </or>
-      </constraint>
-    </project-facet-version>
-        
-    <project-facet-version facet="facet2" version="4.7#c">
-      <constraint>
-        <and>
-          <or>
-            <requires facet="facet1" version="1.2.1"/>
-            <requires facet="facet1" version="1.3"/>
-            <requires facet="facet1" version="2.0"/>
-          </or>
-          <conflicts facet="facet3a"/>
-          <conflicts facet="facet3b" version="1.0"/>
-          <conflicts group="group1"/>
-        </and>
-      </constraint>
-      <group-member id="group1"/>
-    </project-facet-version>
-    
-    <project-facet id="facet2ext">
-      <category>cat1</category>
-    </project-facet>
-    
-    <project-facet-version facet="facet2ext" version="1.0"/>
-
-    <category id="cat2"/>
-    
-    <project-facet id="facet3a">
-      <category>cat2</category>
-    </project-facet>
-    
-    <project-facet-version facet="facet3a" version="1.0"/>
-    <project-facet-version facet="facet3a" version="2.0"/>
-    
-    <action facet="facet3a" version="[1.0-2.0]" type="install">
-      <delegate class="org.eclipse.wst.common.project.facet.core.tests.support.Facet3aInstallDelegate"/>
-    </action>
-
-    <action facet="facet3a" version="[1.0-2.0]" type="uninstall">
-      <delegate class="org.eclipse.wst.common.project.facet.core.tests.support.Facet3aUninstallDelegate"/>
-    </action>
-    
-    <action facet="facet3a" version="[1.0-2.0]" type="version-change">
-      <delegate class="org.eclipse.wst.common.project.facet.core.tests.support.Facet3aVersionChangeDelegate"/>
-    </action>
-
-    <project-facet id="facet3b">
-      <category>cat2</category>
-    </project-facet>
-    
-    <project-facet-version facet="facet3b" version="1.0"/>
-    <project-facet-version facet="facet3b" version="2.0"/>
-    
-    <project-facet id="facet3c">
-      <category>cat2</category>
-    </project-facet>
-    
-    <project-facet-version facet="facet3c" version="1.0">
-      <group-member id="group1"/>
-    </project-facet-version>
-
-    <project-facet-version facet="facet3c" version="2.0">
-      <group-member id="group1"/>
-    </project-facet-version>
-
-    <preset id="preset1">
-      <label>Preset 1</label>
-      <description>This is the description for the first preset.</description>
-      <facet id="facet1" version="2.0"/>
-      <facet id="facet2" version="3.5#a"/>
-      <facet id="facet2ext" version="1.0"/>
-    </preset>
-
-    <preset id="preset2">
-      <facet id="facet3a" version="1.0"/>
-      <facet id="facet3b" version="1.0"/>
-      <facet id="facet3c" version="1.0"/>
-    </preset>
-    
-  </extension>
-
-</plugin>
diff --git a/tests/org.eclipse.wst.common.project.facet.core.tests/src/org/eclipse/wst/common/project/facet/core/tests/AbstractTests.java b/tests/org.eclipse.wst.common.project.facet.core.tests/src/org/eclipse/wst/common/project/facet/core/tests/AbstractTests.java
deleted file mode 100644
index 7e6bf00..0000000
--- a/tests/org.eclipse.wst.common.project.facet.core.tests/src/org/eclipse/wst/common/project/facet/core/tests/AbstractTests.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package org.eclipse.wst.common.project.facet.core.tests;
-
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Set;
-
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.IWorkspace;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.CoreException;
-
-import junit.framework.TestCase;
-
-public abstract class AbstractTests
-
-    extends TestCase
-    
-{
-    protected static final IWorkspace ws = ResourcesPlugin.getWorkspace();
-    protected final Set resourcesToCleanup = new HashSet();
-    
-    protected AbstractTests( final String name )
-    {
-        super( name );
-    }
-    
-    protected void tearDown()
-        
-        throws CoreException
-        
-    {
-        for( Iterator itr = this.resourcesToCleanup.iterator(); itr.hasNext(); )
-        {
-            final IResource r = (IResource) itr.next();
-            r.delete( true, null );
-        }
-    }
-    
-    protected void addResourceToCleanup( final IResource resource )
-    {
-        this.resourcesToCleanup.add( resource );
-    }
-
-}
diff --git a/tests/org.eclipse.wst.common.project.facet.core.tests/src/org/eclipse/wst/common/project/facet/core/tests/AllTests.java b/tests/org.eclipse.wst.common.project.facet.core.tests/src/org/eclipse/wst/common/project/facet/core/tests/AllTests.java
deleted file mode 100644
index 9421a00..0000000
--- a/tests/org.eclipse.wst.common.project.facet.core.tests/src/org/eclipse/wst/common/project/facet/core/tests/AllTests.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package org.eclipse.wst.common.project.facet.core.tests;
-
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-
-public class AllTests
-
-    extends TestCase
-    
-{
-    public static Test suite()
-    {
-        final TestSuite suite = new TestSuite();
-        
-        suite.setName( "All Faceted Project Framework Tests" );
-        
-        suite.addTest( BasicTests.suite() );
-        suite.addTest( ProjectCreationTests.suite() );
-        suite.addTest( BasicFacetActionTests.suite() );
-        suite.addTest( FacetActionSortTests.suite() );
-        suite.addTest( ProjectChangeReactionTests.suite() );
-        
-        return suite;
-    }
-
-}
diff --git a/tests/org.eclipse.wst.common.project.facet.core.tests/src/org/eclipse/wst/common/project/facet/core/tests/BasicFacetActionTests.java b/tests/org.eclipse.wst.common.project.facet.core.tests/src/org/eclipse/wst/common/project/facet/core/tests/BasicFacetActionTests.java
deleted file mode 100644
index c4a0066..0000000
--- a/tests/org.eclipse.wst.common.project.facet.core.tests/src/org/eclipse/wst/common/project/facet/core/tests/BasicFacetActionTests.java
+++ /dev/null
@@ -1,236 +0,0 @@
-package org.eclipse.wst.common.project.facet.core.tests;
-
-import java.io.IOException;
-import java.util.Collections;
-
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IWorkspace;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.wst.common.project.facet.core.IFacetedProject;
-import org.eclipse.wst.common.project.facet.core.IProjectFacet;
-import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion;
-import org.eclipse.wst.common.project.facet.core.ProjectFacetsManager;
-import org.eclipse.wst.common.project.facet.core.IFacetedProject.Action;
-import org.eclipse.wst.common.project.facet.core.tests.support.TestUtils;
-
-public class BasicFacetActionTests
-
-    extends TestCase
-    
-{
-    private static final String TEST_PROJECT_NAME = "testProject";
-    private static final IWorkspace ws = ResourcesPlugin.getWorkspace();
-    
-    private static final IFile facet1ArtifactFile
-        = ws.getRoot().getProject( TEST_PROJECT_NAME ).getFile( "facet1.txt" );
-    
-    private static IProjectFacet f1;
-    private static IProjectFacetVersion f1v10;
-    private static IProjectFacetVersion f1v12;
-    private static IProjectFacetVersion f1v121;
-    private static IProjectFacetVersion f1v13;
-    private static IProjectFacetVersion f1v20;
-
-    static
-    {
-        try
-        {
-            f1 = ProjectFacetsManager.getProjectFacet( "facet1" );
-            f1v10 = f1.getVersion( "1.0" );
-            f1v12 = f1.getVersion( "1.2" );
-            f1v121 = f1.getVersion( "1.2.1" );
-            f1v13 = f1.getVersion( "1.3" );
-            f1v20 = f1.getVersion( "2.0" );
-        }
-        catch( Exception e )
-        {
-            // Ignore failures. This api is tested explicitly.
-        }
-    }
-    
-    private IFacetedProject fpj;
-    
-    private BasicFacetActionTests( final String name )
-    {
-        super( name );
-    }
-    
-    public static Test suite()
-    {
-        final TestSuite suite = new TestSuite();
-        
-        suite.setName( "Basic Facet Action Tests" );
-
-        suite.addTest( new BasicFacetActionTests( "testFacetInstall1" ) );
-        suite.addTest( new BasicFacetActionTests( "testFacetInstall2" ) );
-        suite.addTest( new BasicFacetActionTests( "testFacetInstall3" ) );
-        suite.addTest( new BasicFacetActionTests( "testFacetUninstall1" ) );
-        suite.addTest( new BasicFacetActionTests( "testFacetUninstall2" ) );
-        suite.addTest( new BasicFacetActionTests( "testFacetUninstall3" ) );
-        suite.addTest( new BasicFacetActionTests( "testFacetVersionChange1" ) );
-        suite.addTest( new BasicFacetActionTests( "testFacetVersionChange2" ) );
-        suite.addTest( new BasicFacetActionTests( "testActionSeries" ) );
-        
-        return suite;
-    }
-    
-    protected void setUp()
-    
-        throws CoreException
-        
-    {
-        assertFalse( ws.getRoot().getProject( TEST_PROJECT_NAME ).exists() );
-        this.fpj = ProjectFacetsManager.create( TEST_PROJECT_NAME, null, null );
-        assertTrue( fpj.getProject().exists() );
-    }
-    
-    protected void tearDown()
-    
-        throws CoreException
-        
-    {
-        this.fpj.getProject().delete( true, null );
-    }
-    
-    public void testFacetInstall1()
-    
-        throws CoreException, IOException
-        
-    {
-        this.fpj.installProjectFacet( f1v10, null, null );
-        TestUtils.assertEquals( facet1ArtifactFile, f1v10.getVersionString() );
-    }
-    
-    public void testFacetInstall2()
-    
-        throws CoreException, IOException
-        
-    {
-        this.fpj.installProjectFacet( f1v121, null, null );
-        TestUtils.assertEquals( facet1ArtifactFile, f1v121.getVersionString() );
-    }
-    
-    public void testFacetInstall3()
-    
-        throws CoreException, IOException
-        
-    {
-        final Action action = new Action( Action.Type.INSTALL, f1v20, null );
-        this.fpj.modify( Collections.singleton( action ), null );
-        TestUtils.assertEquals( facet1ArtifactFile, f1v20.getVersionString() );
-    }
-    
-    public void testFacetUninstall1()
-    
-        throws CoreException, IOException
-        
-    {
-        this.fpj.installProjectFacet( f1v10, null, null );
-        this.fpj.uninstallProjectFacet( f1v10, null, null );
-        assertFalse( facet1ArtifactFile.exists() );
-    }
-
-    public void testFacetUninstall2()
-    
-        throws CoreException, IOException
-        
-    {
-        this.fpj.installProjectFacet( f1v121, null, null );
-        this.fpj.uninstallProjectFacet( f1v121, null, null );
-        assertFalse( facet1ArtifactFile.exists() );
-    }
-
-    public void testFacetUninstall3()
-    
-        throws CoreException, IOException
-        
-    {
-        this.fpj.installProjectFacet( f1v20, null, null );
-        this.fpj.uninstallProjectFacet( f1v20, null, null );
-        assertFalse( facet1ArtifactFile.exists() );
-    }
-    
-    public void testFacetVersionChange1()
-    
-        throws CoreException, IOException
-        
-    {
-        this.fpj.installProjectFacet( f1v10, null, null );
-        final Action action = new Action( Action.Type.VERSION_CHANGE, f1v121, null );
-        this.fpj.modify( Collections.singleton( action ), null );
-        TestUtils.assertEquals( facet1ArtifactFile, f1v121.getVersionString() );
-    }
-
-    public void testFacetVersionChange2()
-    
-        throws CoreException, IOException
-        
-    {
-        this.fpj.installProjectFacet( f1v13, null, null );
-        final Action action = new Action( Action.Type.VERSION_CHANGE, f1v12, null );
-        this.fpj.modify( Collections.singleton( action ), null );
-        TestUtils.assertEquals( facet1ArtifactFile, f1v12.getVersionString() );
-    }
-    
-    public void testActionSeries()
-    
-        throws CoreException, IOException
-    
-    {
-        Action action;
-        
-        action = new Action( Action.Type.INSTALL, f1v10, null );
-        this.fpj.modify( Collections.singleton( action ), null );
-        TestUtils.assertEquals( facet1ArtifactFile, f1v10.getVersionString() );
-        
-        action = new Action( Action.Type.VERSION_CHANGE, f1v12, null );
-        this.fpj.modify( Collections.singleton( action ), null );
-        TestUtils.assertEquals( facet1ArtifactFile, f1v12.getVersionString() );
-
-        action = new Action( Action.Type.VERSION_CHANGE, f1v121, null );
-        this.fpj.modify( Collections.singleton( action ), null );
-        TestUtils.assertEquals( facet1ArtifactFile, f1v121.getVersionString() );
-
-        action = new Action( Action.Type.VERSION_CHANGE, f1v13, null );
-        this.fpj.modify( Collections.singleton( action ), null );
-        TestUtils.assertEquals( facet1ArtifactFile, f1v13.getVersionString() );
-        
-        action = new Action( Action.Type.VERSION_CHANGE, f1v20, null );
-        this.fpj.modify( Collections.singleton( action ), null );
-        TestUtils.assertEquals( facet1ArtifactFile, f1v20.getVersionString() );
-        
-        action = new Action( Action.Type.UNINSTALL, f1v20, null );
-        this.fpj.modify( Collections.singleton( action ), null );
-        assertFalse( facet1ArtifactFile.exists() );
-
-        action = new Action( Action.Type.INSTALL, f1v12, null );
-        this.fpj.modify( Collections.singleton( action ), null );
-        TestUtils.assertEquals( facet1ArtifactFile, f1v12.getVersionString() );
-        
-        action = new Action( Action.Type.VERSION_CHANGE, f1v13, null );
-        this.fpj.modify( Collections.singleton( action ), null );
-        TestUtils.assertEquals( facet1ArtifactFile, f1v13.getVersionString() );
-        
-        action = new Action( Action.Type.VERSION_CHANGE, f1v10, null );
-        this.fpj.modify( Collections.singleton( action ), null );
-        TestUtils.assertEquals( facet1ArtifactFile, f1v10.getVersionString() );
-        
-        action = new Action( Action.Type.VERSION_CHANGE, f1v20, null );
-        this.fpj.modify( Collections.singleton( action ), null );
-        TestUtils.assertEquals( facet1ArtifactFile, f1v20.getVersionString() );
-        
-        action = new Action( Action.Type.VERSION_CHANGE, f1v121, null );
-        this.fpj.modify( Collections.singleton( action ), null );
-        TestUtils.assertEquals( facet1ArtifactFile, f1v121.getVersionString() );
-        
-        action = new Action( Action.Type.UNINSTALL, f1v121, null );
-        this.fpj.modify( Collections.singleton( action ), null );
-        assertFalse( facet1ArtifactFile.exists() );
-    }
-    
-}
diff --git a/tests/org.eclipse.wst.common.project.facet.core.tests/src/org/eclipse/wst/common/project/facet/core/tests/BasicTests.java b/tests/org.eclipse.wst.common.project.facet.core.tests/src/org/eclipse/wst/common/project/facet/core/tests/BasicTests.java
deleted file mode 100644
index 2ea3076..0000000
--- a/tests/org.eclipse.wst.common.project.facet.core.tests/src/org/eclipse/wst/common/project/facet/core/tests/BasicTests.java
+++ /dev/null
@@ -1,715 +0,0 @@
-package org.eclipse.wst.common.project.facet.core.tests;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.wst.common.project.facet.core.ICategory;
-import org.eclipse.wst.common.project.facet.core.IConstraint;
-import org.eclipse.wst.common.project.facet.core.IGroup;
-import org.eclipse.wst.common.project.facet.core.IPreset;
-import org.eclipse.wst.common.project.facet.core.IProjectFacet;
-import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion;
-import org.eclipse.wst.common.project.facet.core.ProjectFacetsManager;
-
-public final class BasicTests
-
-    extends TestCase
-    
-{
-    private static final String PLUGIN_ID 
-        = "org.eclipse.wst.common.project.facet.core.tests";
-    
-    private static IProjectFacet f1;
-    private static IProjectFacetVersion f1v10;
-    private static IProjectFacetVersion f1v12;
-    private static IProjectFacetVersion f1v121;
-    private static IProjectFacetVersion f1v13;
-    private static IProjectFacetVersion f1v20;
-    
-    private static IProjectFacet f2;
-    private static IProjectFacetVersion f2v35;
-    private static IProjectFacetVersion f2v35a;
-    private static IProjectFacetVersion f2v47;
-    private static IProjectFacetVersion f2v47b;
-    private static IProjectFacetVersion f2v47c;
-    
-    private static IProjectFacet f2ext;
-    private static IProjectFacetVersion f2extv10;
-
-    private static IProjectFacet f3a;
-    private static IProjectFacetVersion f3av10;
-    private static IProjectFacetVersion f3av20;
-
-    private static IProjectFacet f3b;
-    private static IProjectFacetVersion f3bv10;
-    private static IProjectFacetVersion f3bv20;
-
-    private static IProjectFacet f3c;
-    private static IProjectFacetVersion f3cv10;
-    private static IProjectFacetVersion f3cv20;
-
-    static
-    {
-        try
-        {
-            f1 = ProjectFacetsManager.getProjectFacet( "facet1" );
-            f1v10 = f1.getVersion( "1.0" );
-            f1v12 = f1.getVersion( "1.2" );
-            f1v121 = f1.getVersion( "1.2.1" );
-            f1v13 = f1.getVersion( "1.3" );
-            f1v20 = f1.getVersion( "2.0" );
-            
-            f2 = ProjectFacetsManager.getProjectFacet( "facet2" );
-            f2v35 = f2.getVersion( "3.5" );
-            f2v35a = f2.getVersion( "3.5#a" );
-            f2v47 = f2.getVersion( "4.7" );
-            f2v47b = f2.getVersion( "4.7#b" );
-            f2v47c = f2.getVersion( "4.7#c" );
-            
-            f2ext = ProjectFacetsManager.getProjectFacet( "facet2ext" );
-            f2extv10 = f2ext.getVersion( "1.0" );
-
-            f3a = ProjectFacetsManager.getProjectFacet( "facet3a" );
-            f3av10 = f3a.getVersion( "1.0" );
-            f3av20 = f3a.getVersion( "2.0" );
-
-            f3b = ProjectFacetsManager.getProjectFacet( "facet3b" );
-            f3bv10 = f3b.getVersion( "1.0" );
-            f3bv20 = f3b.getVersion( "2.0" );
-
-            f3c = ProjectFacetsManager.getProjectFacet( "facet3c" );
-            f3cv10 = f3c.getVersion( "1.0" );
-            f3cv20 = f3c.getVersion( "2.0" );
-        }
-        catch( Exception e )
-        {
-            // Ignore failures. This api is tested explicitly.
-        }
-    }
-    
-    private BasicTests( final String name )
-    {
-        super( name );
-    }
-    
-    public static Test suite()
-    {
-        final TestSuite suite = new TestSuite();
-        
-        suite.setName( "Basic Tests" );
-
-        suite.addTest( new BasicTests( "testProjectFacetExtensionPoint" ) );
-        suite.addTest( new BasicTests( "testProjectFacetVersionExtensionPoint" ) );
-        suite.addTest( new BasicTests( "testCategoryExtensionPoint" ) );
-        suite.addTest( new BasicTests( "testPresetExtensionPoint" ) );
-        suite.addTest( new BasicTests( "testDefaultVersionComparator" ) );
-        suite.addTest( new BasicTests( "testCustomVersionComparator" ) );
-        suite.addTest( new BasicTests( "testVersionExpressions" ) );
-        suite.addTest( new BasicTests( "testConstraints" ) );
-        suite.addTest( new BasicTests( "testConstraintApi" ) );
-        
-        return suite;
-    }
-    
-    public void testProjectFacetExtensionPoint()
-    {
-        assertTrue( ProjectFacetsManager.isProjectFacetDefined( "facet1" ) );
-        final IProjectFacet f1 = ProjectFacetsManager.getProjectFacet( "facet1" );
-        assertTrue( ProjectFacetsManager.getProjectFacets().contains( f1 ) );
-        
-        assertEquals( f1.getId(), "facet1" );
-        assertEquals( f1.getLabel(), "Facet 1" );
-        assertEquals( f1.getDescription(), "This is the description of facet1." );
-        assertEquals( f1.getPluginId(), PLUGIN_ID );
-        
-        assertTrue( ProjectFacetsManager.isProjectFacetDefined( "facet2" ) );
-        final IProjectFacet f2 = ProjectFacetsManager.getProjectFacet( "facet2" );
-        assertTrue( ProjectFacetsManager.getProjectFacets().contains( f2 ) );
-        
-        assertEquals( f2.getId(), "facet2" );
-        assertEquals( f2.getLabel(), "facet2" );
-        assertEquals( f2.getDescription(), "" );
-        assertEquals( f2.getPluginId(), PLUGIN_ID );
-    }
-    
-    public void testProjectFacetVersionExtensionPoint()
-    {
-        assertTrue( f1.hasVersion( "1.0" ) );
-        final IProjectFacetVersion f1v10 = f1.getVersion( "1.0" );
-        assertEquals( f1v10.getVersionString(), "1.0" );
-        assertEquals( f1v10.getProjectFacet(), f1 );
-        assertEquals( f1v10.getPluginId(), PLUGIN_ID );
-
-        assertTrue( f1.hasVersion( "1.2" ) );
-        final IProjectFacetVersion f1v12 = f1.getVersion( "1.2" );
-        assertEquals( f1v12.getVersionString(), "1.2" );
-        assertEquals( f1v12.getProjectFacet(), f1 );
-        assertEquals( f1v12.getPluginId(), PLUGIN_ID );
-
-        assertTrue( f1.hasVersion( "1.2.1" ) );
-        final IProjectFacetVersion f1v121 = f1.getVersion( "1.2.1" );
-        assertEquals( f1v121.getVersionString(), "1.2.1" );
-        assertEquals( f1v121.getProjectFacet(), f1 );
-        assertEquals( f1v121.getPluginId(), PLUGIN_ID );
-
-        assertTrue( f1.hasVersion( "1.3" ) );
-        final IProjectFacetVersion f1v13 = f1.getVersion( "1.3" );
-        assertEquals( f1v13.getVersionString(), "1.3" );
-        assertEquals( f1v13.getProjectFacet(), f1 );
-        assertEquals( f1v13.getPluginId(), PLUGIN_ID );
-
-        assertTrue( f1.hasVersion( "2.0" ) );
-        final IProjectFacetVersion f1v20 = f1.getVersion( "2.0" );
-        assertEquals( f1v20.getVersionString(), "2.0" );
-        assertEquals( f1v20.getProjectFacet(), f1 );
-        assertEquals( f1v20.getPluginId(), PLUGIN_ID );
-        
-        assertEquals( f1.getVersions(),
-                      asSet( f1v10, f1v12, f1v121, f1v13, f1v20 ) );
-
-        assertTrue( f2.hasVersion( "3.5" ) );
-        final IProjectFacetVersion f2v35 = f2.getVersion( "3.5" );
-        assertEquals( f2v35.getVersionString(), "3.5" );
-        assertEquals( f2v35.getProjectFacet(), f2 );
-        assertEquals( f2v35.getPluginId(), PLUGIN_ID );
-
-        assertTrue( f2.hasVersion( "3.5#a" ) );
-        final IProjectFacetVersion f2v35a = f2.getVersion( "3.5#a" );
-        assertEquals( f2v35a.getVersionString(), "3.5#a" );
-        assertEquals( f2v35a.getProjectFacet(), f2 );
-        assertEquals( f2v35a.getPluginId(), PLUGIN_ID );
-        
-        assertTrue( f2.hasVersion( "4.7" ) );
-        final IProjectFacetVersion f2v47 = f2.getVersion( "4.7" );
-        assertEquals( f2v47.getVersionString(), "4.7" );
-        assertEquals( f2v47.getProjectFacet(), f2 );
-        assertEquals( f2v47.getPluginId(), PLUGIN_ID );
-
-        assertTrue( f2.hasVersion( "4.7#b" ) );
-        final IProjectFacetVersion f2v47b = f2.getVersion( "4.7#b" );
-        assertEquals( f2v47b.getVersionString(), "4.7#b" );
-        assertEquals( f2v47b.getProjectFacet(), f2 );
-        assertEquals( f2v47b.getPluginId(), PLUGIN_ID );
-
-        assertTrue( f2.hasVersion( "4.7#c" ) );
-        final IProjectFacetVersion f2v47c = f2.getVersion( "4.7#c" );
-        assertEquals( f2v47c.getVersionString(), "4.7#c" );
-        assertEquals( f2v47c.getProjectFacet(), f2 );
-        assertEquals( f2v47c.getPluginId(), PLUGIN_ID );
-        
-        assertEquals( f2.getVersions(), 
-                      asSet( f2v35, f2v35a, f2v47, f2v47b, f2v47c ) );
-        
-        // Check for version that doesn't exist.
-        
-        assertFalse( f2.hasVersion( "6.9" ) );
-        
-        try
-        {
-            f2.getVersion( "6.9" );
-            fail();
-        }
-        catch( IllegalArgumentException e ) {}
-    }
-    
-    public void testCategoryExtensionPoint()
-    {
-        assertTrue( ProjectFacetsManager.isCategoryDefined( "cat1" ) );
-        final ICategory cat1 = ProjectFacetsManager.getCategory( "cat1" );
-        assertTrue( ProjectFacetsManager.getCategories().contains( cat1 ) );
-        
-        assertEquals( cat1.getId(), "cat1" );
-        assertEquals( cat1.getLabel(), "Category 1" );
-        assertEquals( cat1.getDescription(), "This is the category description." );
-        assertEquals( cat1.getPluginId(), PLUGIN_ID );
-
-        assertEquals( cat1.getProjectFacets(), asSet( f2, f2ext ) );
-        assertEquals( f2.getCategory(), cat1 );
-        assertEquals( f2ext.getCategory(), cat1 );
-        
-        assertTrue( ProjectFacetsManager.isCategoryDefined( "cat2" ) );
-        final ICategory cat2 = ProjectFacetsManager.getCategory( "cat2" );
-        assertTrue( ProjectFacetsManager.getCategories().contains( cat2 ) );
-        
-        assertEquals( cat2.getId(), "cat2" );
-        assertEquals( cat2.getLabel(), "cat2" );
-        assertEquals( cat2.getDescription(), "" );
-        assertEquals( cat2.getPluginId(), PLUGIN_ID );
-        
-        assertEquals( cat2.getProjectFacets(), asSet( f3a, f3b, f3c ) );
-        assertEquals( f3a.getCategory(), cat2 );
-        assertEquals( f3b.getCategory(), cat2 );
-        assertEquals( f3c.getCategory(), cat2 );
-    }
-    
-    public void testPresetExtensionPoint()
-    {
-        assertTrue( ProjectFacetsManager.isPresetDefined( "preset1" ) );
-        final IPreset preset1 = ProjectFacetsManager.getPreset( "preset1" );
-        assertTrue( ProjectFacetsManager.getPresets().contains( preset1 ) );        
-        
-        assertEquals( preset1.getId(), "preset1" );
-        assertEquals( preset1.getLabel(), "Preset 1" );
-        assertEquals( preset1.getDescription(), "This is the description for the first preset." );
-        assertEquals( preset1.getProjectFacets(), asSet( f1v20, f2v35a, f2extv10 ) );
-        assertFalse( preset1.isUserDefined() );
-        
-        assertTrue( ProjectFacetsManager.isPresetDefined( "preset2" ) );
-        final IPreset preset2 = ProjectFacetsManager.getPreset( "preset2" );
-        assertTrue( ProjectFacetsManager.getPresets().contains( preset2 ) );        
-        
-        assertEquals( preset2.getId(), "preset2" );
-        assertEquals( preset2.getLabel(), "preset2" );
-        assertEquals( preset2.getDescription(), "" );
-        assertEquals( preset2.getProjectFacets(), asSet( f3av10, f3bv10, f3cv10 ) );
-        assertFalse( preset2.isUserDefined() );
-    }
-    
-    public void testDefaultVersionComparator()
-    
-        throws CoreException
-        
-    {
-        final Comparator comp = f1.getVersionComparator();
-        
-        assertEquals( comp.getClass().getName(), 
-                      "org.eclipse.wst.common.project.facet.core.DefaultVersionComparator" );
-        
-        assertTrue( comp.compare( "1.0", "1.2" ) < 0 );
-        assertTrue( comp.compare( "1.2", "1.2.1" ) < 0 );
-        assertTrue( comp.compare( "1.2.1", "2.0" ) < 0 );
-        
-        assertTrue( comp.compare( "1.2", "1.0" ) > 0 );
-        assertTrue( comp.compare( "1.2.1", "1.2" ) > 0 );
-        assertTrue( comp.compare( "2.0", "1.2.1" ) > 0 );
-        
-        assertTrue( comp.compare( "1.0", "1.0" ) == 0 );
-        assertTrue( comp.compare( "1.2", "1.2" ) == 0 );
-        assertTrue( comp.compare( "1.2.1", "1.2.1" ) == 0 );
-        assertTrue( comp.compare( "2.0", "2.0" ) == 0 );
-        
-        assertEquals( f1.getLatestVersion(), f1v20 );
-        
-        final List asc = f1.getSortedVersions( true );
-        
-        assertEquals( asc.size(), 5 );
-        assertEquals( asc.get( 0 ), f1v10 );
-        assertEquals( asc.get( 1 ), f1v12 );
-        assertEquals( asc.get( 2 ), f1v121 );
-        assertEquals( asc.get( 3 ), f1v13 );
-        assertEquals( asc.get( 4 ), f1v20 );
-        
-        final List desc = f1.getSortedVersions( false );
-        
-        assertEquals( desc.size(), 5 );
-        assertEquals( desc.get( 0 ), f1v20 );
-        assertEquals( desc.get( 1 ), f1v13 );
-        assertEquals( desc.get( 2 ), f1v121 );
-        assertEquals( desc.get( 3 ), f1v12 );
-        assertEquals( desc.get( 4 ), f1v10 );
-    }
-
-    public void testCustomVersionComparator()
-    
-        throws CoreException
-        
-    {
-        final Comparator comp = f2.getVersionComparator();
-        
-        assertEquals( comp.getClass().getName(), 
-                      "org.eclipse.wst.common.project.facet.core.tests.support.CustomVersionComparator" );
-        
-        assertTrue( comp.compare( "3.5", "4.7" ) < 0 );
-        assertTrue( comp.compare( "3.5", "3.5#a" ) < 0 );
-        assertTrue( comp.compare( "4.7#c", "4.7#b" ) < 0 );
-        
-        assertTrue( comp.compare( "4.7", "3.5" ) > 0 );
-        assertTrue( comp.compare( "3.5#a", "3.5" ) > 0 );
-        assertTrue( comp.compare( "4.7#b", "4.7#c" ) > 0 );
-        
-        assertTrue( comp.compare( "3.5", "3.5" ) == 0 );
-        assertTrue( comp.compare( "3.5#a", "3.5#a" ) == 0 );
-        assertTrue( comp.compare( "4.7", "4.7" ) == 0 );
-        assertTrue( comp.compare( "4.7#b", "4.7#b" ) == 0 );
-        
-        assertEquals( f2.getLatestVersion(), f2v47b );
-        
-        final List asc = f2.getSortedVersions( true );
-        
-        assertEquals( asc.size(), 5 );
-        assertEquals( asc.get( 0 ), f2v35 );
-        assertEquals( asc.get( 1 ), f2v35a );
-        assertEquals( asc.get( 2 ), f2v47 );
-        assertEquals( asc.get( 3 ), f2v47c );
-        assertEquals( asc.get( 4 ), f2v47b );
-        
-        final List desc = f2.getSortedVersions( false );
-        
-        assertEquals( desc.size(), 5 );
-        assertEquals( desc.get( 0 ), f2v47b );
-        assertEquals( desc.get( 1 ), f2v47c );
-        assertEquals( desc.get( 2 ), f2v47 );
-        assertEquals( desc.get( 3 ), f2v35a );
-        assertEquals( desc.get( 4 ), f2v35 );
-    }
-    
-    public void testVersionExpressions()
-    
-        throws CoreException
-        
-    {
-        assertEquals( f1.getVersions( "1.2" ), 
-                      asSet( f1v12 ) );
-        
-        assertEquals( f1.getVersions( "1.2,1.3" ), 
-                      asSet( f1v12, f1v13 ) );
-        
-        assertEquals( f1.getVersions( "1.0,1.2,1.2.1,1.3,2.0" ), 
-                      asSet( f1v10, f1v12, f1v121, f1v13, f1v20 ) );
-        
-        assertEquals( f1.getVersions( "[1.2" ),
-                      asSet( f1v12, f1v121, f1v13, f1v20 ) );
-        
-        assertEquals( f1.getVersions( "(1.2" ),
-                      asSet( f1v121, f1v13, f1v20 ) );
-        
-        assertEquals( f1.getVersions( "1.3]" ),
-                      asSet( f1v10, f1v12, f1v121, f1v13 ) );
-        
-        assertEquals( f1.getVersions( "1.3)" ),
-                      asSet( f1v10, f1v12, f1v121 ) );
-        
-        assertEquals( f1.getVersions( "[1.2-1.3]" ),
-                      asSet( f1v12, f1v121, f1v13 ) );
-        
-        assertEquals( f1.getVersions( "[1.2-1.3)" ),
-                      asSet( f1v12, f1v121 ) );
-        
-        assertEquals( f1.getVersions( "(1.2-1.3]" ),
-                      asSet( f1v121, f1v13 ) );
-        
-        assertEquals( f1.getVersions( "1.0,(1.2-1.3],2.0" ),
-                      asSet( f1v10, f1v121, f1v13, f1v20 ) );
-    }
-    
-    public void testConstraints()
-    {
-        /*
-         * Version: 3.5
-         * 
-         * <requires facet="facet1" version="1.0"/>
-         */ 
-
-        assertFalse( f2v35.getConstraint().check( Collections.EMPTY_SET  ).isOK() );
-        assertTrue( f2v35.getConstraint().check( asSet( f1v10 ) ).isOK() );
-        assertFalse( f2v35.getConstraint().check( asSet( f1v12 ) ).isOK() );
-        assertFalse( f2v35.getConstraint().check( asSet( f1v121 ) ).isOK() );
-        assertFalse( f2v35.getConstraint().check( asSet( f1v13 ) ).isOK() );
-        assertFalse( f2v35.getConstraint().check( asSet( f1v20 ) ).isOK() );
-        
-        /*
-         * Version: 3.5#a
-         * 
-         * <and>
-         *   <requires facet="facet1" version="[1.2-1.3)"/>
-         * </and>
-         */
-        
-        assertFalse( f2v35a.getConstraint().check( Collections.EMPTY_SET  ).isOK() );
-        assertFalse( f2v35a.getConstraint().check( asSet( f1v10 ) ).isOK() );
-        assertTrue( f2v35a.getConstraint().check( asSet( f1v12 ) ).isOK() );
-        assertTrue( f2v35a.getConstraint().check( asSet( f1v121 ) ).isOK() );
-        assertFalse( f2v35a.getConstraint().check( asSet( f1v13 ) ).isOK() );
-        assertFalse( f2v35a.getConstraint().check( asSet( f1v20 ) ).isOK() );
-        
-        /*
-         * Version: 4.7
-         * 
-         * <or>
-         *   <requires facet="facet1" version="[1.3"/>
-         * </or>
-         */
-        
-        assertFalse( f2v47.getConstraint().check( Collections.EMPTY_SET  ).isOK() );
-        assertFalse( f2v47.getConstraint().check( asSet( f1v10 ) ).isOK() );
-        assertFalse( f2v47.getConstraint().check( asSet( f1v12 ) ).isOK() );
-        assertFalse( f2v47.getConstraint().check( asSet( f1v121 ) ).isOK() );
-        assertTrue( f2v47.getConstraint().check( asSet( f1v13 ) ).isOK() );
-        assertTrue( f2v47.getConstraint().check( asSet( f1v20 ) ).isOK() );
-        
-        /*
-         * Version: 4.7#b
-         * 
-         * <or>
-         *   <requires facet="facet1" version="1.3"/>
-         *   <requires facet="facet1" version="2.0"/>
-         * </or>
-         */
-        
-        assertFalse( f2v47b.getConstraint().check( Collections.EMPTY_SET  ).isOK() );
-        assertFalse( f2v47b.getConstraint().check( asSet( f1v10 ) ).isOK() );
-        assertFalse( f2v47b.getConstraint().check( asSet( f1v12 ) ).isOK() );
-        assertFalse( f2v47b.getConstraint().check( asSet( f1v121 ) ).isOK() );
-        assertTrue( f2v47b.getConstraint().check( asSet( f1v13 ) ).isOK() );
-        assertTrue( f2v47b.getConstraint().check( asSet( f1v20 ) ).isOK() );
-        
-        /*
-         * Version: 4.7#c
-         * 
-         * <and>
-         *   <or>
-         *     <requires facet="facet1" version="1.2.1"/>
-         *     <requires facet="facet1" version="1.3"/>
-         *     <requires facet="facet1" version="2.0"/>
-         *   </or>
-         *   <conflicts facet="facet3a"/>
-         *   <conflicts facet="facet3b" version="1.0"/>
-         *   <conflicts group="group1"/>
-         * </and>
-         */
-        
-        assertFalse( f2v47c.getConstraint().check( Collections.EMPTY_SET  ).isOK() );
-        assertFalse( f2v47c.getConstraint().check( asSet( f1v10 ) ).isOK() );
-        assertFalse( f2v47c.getConstraint().check( asSet( f1v12 ) ).isOK() );
-        assertTrue( f2v47c.getConstraint().check( asSet( f1v121 ) ).isOK() );
-        assertTrue( f2v47c.getConstraint().check( asSet( f1v13 ) ).isOK() );
-        assertTrue( f2v47c.getConstraint().check( asSet( f1v20 ) ).isOK() );
-        
-        assertFalse( f2v47c.getConstraint().check( asSet( f1v20, f3av10 ) ).isOK() );
-        assertFalse( f2v47c.getConstraint().check( asSet( f1v20, f3av20 ) ).isOK() );
-        assertFalse( f2v47c.getConstraint().check( asSet( f1v20, f3bv10 ) ).isOK() );
-        assertTrue( f2v47c.getConstraint().check( asSet( f1v20, f3bv20 ) ).isOK() );
-        assertFalse( f2v47c.getConstraint().check( asSet( f1v20, f3cv10 ) ).isOK() );
-        assertFalse( f2v47c.getConstraint().check( asSet( f1v20, f3cv20 ) ).isOK() );
-    }
-    
-    public void testConstraintApi()
-    {
-        assertEquals( IConstraint.Type.AND.name(), "and" );
-        assertTrue( IConstraint.Type.valueOf( "and" ) == IConstraint.Type.AND );
-        assertTrue( IConstraint.Type.valueOf( "aNd" ) == IConstraint.Type.AND );
-        
-        assertEquals( IConstraint.Type.OR.name(), "or" );
-        assertTrue( IConstraint.Type.valueOf( "or" ) == IConstraint.Type.OR );
-        assertTrue( IConstraint.Type.valueOf( "oR" ) == IConstraint.Type.OR );
-        
-        assertEquals( IConstraint.Type.REQUIRES.name(), "requires" );
-        assertTrue( IConstraint.Type.valueOf( "requires" ) == IConstraint.Type.REQUIRES );
-        assertTrue( IConstraint.Type.valueOf( "rEqUiRes" ) == IConstraint.Type.REQUIRES );
-        
-        assertEquals( IConstraint.Type.CONFLICTS.name(), "conflicts" );
-        assertTrue( IConstraint.Type.valueOf( "conflicts" ) == IConstraint.Type.CONFLICTS );
-        assertTrue( IConstraint.Type.valueOf( "cOnFlIcTs" ) == IConstraint.Type.CONFLICTS );
-        
-        /*
-         * <and>
-         *   <or>
-         *     <requires facet="facet1" version="1.2.1"/>
-         *     <requires facet="facet1" version="1.3"/>
-         *     <requires facet="facet1" version="2.0"/>
-         *   </or>
-         *   <conflicts facet="facet3a"/>
-         *   <conflicts facet="facet3b" version="1.0"/>
-         *   <conflicts group="group1"/>
-         * </and>
-         */
-        
-        assertTrue( ProjectFacetsManager.isGroupDefined( "group1" ) );
-        final IGroup g = ProjectFacetsManager.getGroup( "group1" );
-        assertEquals( g.getId(), "group1" );
-        assertEquals( g.getMembers(), asSet( f2v47c, f3cv10, f3cv20 ) );
-        
-        final IConstraint root = f2v47c.getConstraint();
-        checkConstraint( root, IConstraint.Type.AND, null, null, null, null );
-        
-        IConstraint c1, c2;
-        
-        c1 = (IConstraint) root.getOperand( 0 );
-        checkConstraint( c1, IConstraint.Type.OR, null, null, null );
-        
-        c2 = (IConstraint) c1.getOperand( 0 );
-        checkConstraint( c2, IConstraint.Type.REQUIRES, f1, "1.2.1", Boolean.FALSE );
-        
-        c2 = (IConstraint) c1.getOperand( 1 );
-        checkConstraint( c2, IConstraint.Type.REQUIRES, f1, "1.3", Boolean.FALSE );
-        
-        c2 = (IConstraint) c1.getOperand( 2 );
-        checkConstraint( c2, IConstraint.Type.REQUIRES, f1, "2.0", Boolean.FALSE );
-        
-        c1 = (IConstraint) root.getOperand( 1 );
-        checkConstraint( c1, IConstraint.Type.CONFLICTS, f3a );
-        
-        c1 = (IConstraint) root.getOperand( 2 );
-        checkConstraint( c1, IConstraint.Type.CONFLICTS, f3b, "1.0" );
-        
-        c1 = (IConstraint) root.getOperand( 3 );
-        checkConstraint( c1, IConstraint.Type.CONFLICTS, g );
-    }
-    
-    private static void checkConstraint( final IConstraint c,
-                                         final IConstraint.Type expectedType,
-                                         final Object expectedOperand )
-    {
-        checkConstraint( c, expectedType, new Object[] { expectedOperand } );
-    }
-
-    private static void checkConstraint( final IConstraint c,
-                                         final IConstraint.Type expectedType,
-                                         final Object expectedOperand1,
-                                         final Object expectedOperand2 )
-    {
-        checkConstraint( c, expectedType, 
-                         new Object[] { expectedOperand1, expectedOperand2 } );
-    }
-
-    private static void checkConstraint( final IConstraint c,
-                                         final IConstraint.Type expectedType,
-                                         final Object expectedOperand1,
-                                         final Object expectedOperand2,
-                                         final Object expectedOperand3 )
-    {
-        checkConstraint( c, expectedType, 
-                         new Object[] { expectedOperand1, expectedOperand2,
-                                        expectedOperand3 } );
-    }
-
-    private static void checkConstraint( final IConstraint c,
-                                         final IConstraint.Type expectedType,
-                                         final Object expectedOperand1,
-                                         final Object expectedOperand2,
-                                         final Object expectedOperand3,
-                                         final Object expectedOperand4 )
-    {
-        checkConstraint( c, expectedType, 
-                         new Object[] { expectedOperand1, expectedOperand2,
-                                        expectedOperand3, expectedOperand4 } );
-    }
-    
-    private static void checkConstraint( final IConstraint c,
-                                         final IConstraint.Type expectedType,
-                                         final Object[] expectedOperands )
-    {
-        assertEquals( c.getType(), expectedType );
-
-        final int count = c.getOperands().size();
-        assertEquals( count, expectedOperands.length );
-        
-        final List list = new ArrayList();
-        
-        for( int i = 0; i < count; i++ )
-        {
-            final Object operand = c.getOperand( i );
-            final Object expected = expectedOperands[ i ];
-            
-            if( expected != null )
-            {
-                if( ( expected instanceof String ) &&
-                    ! ( operand instanceof String ) )
-                {
-                    assertEquals( operand.toString(), expected );
-                }
-                else
-                {
-                    assertEquals( operand, expected );
-                }
-            }
-            
-            list.add( c.getOperand( i ) );
-        }
-        
-        assertEquals( c.getOperands(), list );
-    }
-    
-    private static Set asSet( final Object obj )
-    {
-        return asSet( new Object[] { obj } );
-    }
-
-    private static Set asSet( final Object obj1,
-                              final Object obj2 )
-    {
-        return asSet( new Object[] { obj1, obj2 } );
-    }
-
-    private static Set asSet( final Object obj1,
-                              final Object obj2,
-                              final Object obj3 )
-    {
-        return asSet( new Object[] { obj1, obj2, obj3 } );
-    }
-
-    private static Set asSet( final Object obj1,
-                              final Object obj2,
-                              final Object obj3,
-                              final Object obj4 )
-    {
-        return asSet( new Object[] { obj1, obj2, obj3, obj4 } );
-    }
-
-    private static Set asSet( final Object obj1,
-                              final Object obj2,
-                              final Object obj3,
-                              final Object obj4,
-                              final Object obj5 )
-    {
-        return asSet( new Object[] { obj1, obj2, obj3, obj4, obj5 } );
-    }
-    
-    private static Set asSet( final Object[] array )
-    {
-        final HashSet set = new HashSet();
-        set.addAll( Arrays.asList( array ) );
-        return set;
-    }
-
-    private static List asList( final Object obj )
-    {
-        return asList( new Object[] { obj } );
-    }
-
-    private static List asList( final Object obj1,
-                                final Object obj2 )
-    {
-        return asList( new Object[] { obj1, obj2 } );
-    }
-
-    private static List asList( final Object obj1,
-                                final Object obj2,
-                                final Object obj3 )
-    {
-        return asList( new Object[] { obj1, obj2, obj3 } );
-    }
-
-    private static List asList( final Object obj1,
-                                final Object obj2,
-                                final Object obj3,
-                                final Object obj4 )
-    {
-        return asList( new Object[] { obj1, obj2, obj3, obj4 } );
-    }
-
-    private static List asList( final Object obj1,
-                                final Object obj2,
-                                final Object obj3,
-                                final Object obj4,
-                                final Object obj5 )
-    {
-        return asList( new Object[] { obj1, obj2, obj3, obj4, obj5 } );
-    }
-    
-    private static List asList( final Object[] array )
-    {
-        return Arrays.asList( array );
-    }
-    
-}
diff --git a/tests/org.eclipse.wst.common.project.facet.core.tests/src/org/eclipse/wst/common/project/facet/core/tests/FacetActionSortTests.java b/tests/org.eclipse.wst.common.project.facet.core.tests/src/org/eclipse/wst/common/project/facet/core/tests/FacetActionSortTests.java
deleted file mode 100644
index 9007273..0000000
--- a/tests/org.eclipse.wst.common.project.facet.core.tests/src/org/eclipse/wst/common/project/facet/core/tests/FacetActionSortTests.java
+++ /dev/null
@@ -1,187 +0,0 @@
-package org.eclipse.wst.common.project.facet.core.tests;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Collections;
-
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.wst.common.project.facet.core.IProjectFacet;
-import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion;
-import org.eclipse.wst.common.project.facet.core.ProjectFacetsManager;
-import org.eclipse.wst.common.project.facet.core.IFacetedProject.Action;
-import org.eclipse.wst.common.project.facet.core.tests.support.TestUtils;
-
-public class FacetActionSortTests
-
-    extends TestCase
-    
-{
-    private static IProjectFacet f1;
-    private static IProjectFacetVersion f1v10;
-    private static IProjectFacetVersion f1v12;
-    private static IProjectFacetVersion f1v121;
-    private static IProjectFacetVersion f1v13;
-    private static IProjectFacetVersion f1v20;
-    
-    private static IProjectFacet f2;
-    private static IProjectFacetVersion f2v35;
-    private static IProjectFacetVersion f2v35a;
-    private static IProjectFacetVersion f2v47;
-    private static IProjectFacetVersion f2v47b;
-    private static IProjectFacetVersion f2v47c;
-    
-    private static IProjectFacet f2ext;
-    private static IProjectFacetVersion f2extv10;
-
-    private static IProjectFacet f3a;
-    private static IProjectFacetVersion f3av10;
-    private static IProjectFacetVersion f3av20;
-
-    private static IProjectFacet f3b;
-    private static IProjectFacetVersion f3bv10;
-    private static IProjectFacetVersion f3bv20;
-
-    private static IProjectFacet f3c;
-    private static IProjectFacetVersion f3cv10;
-    private static IProjectFacetVersion f3cv20;
-
-    static
-    {
-        try
-        {
-            f1 = ProjectFacetsManager.getProjectFacet( "facet1" );
-            f1v10 = f1.getVersion( "1.0" );
-            f1v12 = f1.getVersion( "1.2" );
-            f1v121 = f1.getVersion( "1.2.1" );
-            f1v13 = f1.getVersion( "1.3" );
-            f1v20 = f1.getVersion( "2.0" );
-            
-            f2 = ProjectFacetsManager.getProjectFacet( "facet2" );
-            f2v35 = f2.getVersion( "3.5" );
-            f2v35a = f2.getVersion( "3.5#a" );
-            f2v47 = f2.getVersion( "4.7" );
-            f2v47b = f2.getVersion( "4.7#b" );
-            f2v47c = f2.getVersion( "4.7#c" );
-            
-            f2ext = ProjectFacetsManager.getProjectFacet( "facet2ext" );
-            f2extv10 = f2ext.getVersion( "1.0" );
-
-            f3a = ProjectFacetsManager.getProjectFacet( "facet3a" );
-            f3av10 = f3a.getVersion( "1.0" );
-            f3av20 = f3a.getVersion( "2.0" );
-
-            f3b = ProjectFacetsManager.getProjectFacet( "facet3b" );
-            f3bv10 = f3b.getVersion( "1.0" );
-            f3bv20 = f3b.getVersion( "2.0" );
-
-            f3c = ProjectFacetsManager.getProjectFacet( "facet3c" );
-            f3cv10 = f3c.getVersion( "1.0" );
-            f3cv20 = f3c.getVersion( "2.0" );
-        }
-        catch( Exception e )
-        {
-            // Ignore failures. This api is tested explicitly.
-        }
-    }
-    
-    private FacetActionSortTests( final String name )
-    {
-        super( name );
-    }
-    
-    public static Test suite()
-    {
-        final TestSuite suite = new TestSuite();
-        
-        suite.setName( "Facet Action Sort Tests" );
-
-        suite.addTest( new FacetActionSortTests( "testUninstallComesFirst1" ) );
-        suite.addTest( new FacetActionSortTests( "testUninstallComesFirst2" ) );
-        suite.addTest( new FacetActionSortTests( "testSortStability1" ) );
-        suite.addTest( new FacetActionSortTests( "testSortStability2" ) );
-        
-        return suite;
-    }
-    
-    /**
-     * Tests whether the sort places uninstall actions first. This is the 
-     * control test case. The input already places uninstall first.
-     */
-    
-    public void testUninstallComesFirst1()
-    {
-        final Action a1 = new Action( Action.Type.INSTALL, f1v12, null );
-        final Action a2 = new Action( Action.Type.UNINSTALL, f3av10, null );
-        
-        final ArrayList actions = new ArrayList();
-        
-        actions.add( a2 );
-        actions.add( a1 );
-        
-        ProjectFacetsManager.sort( TestUtils.asSet( f3av10 ), actions );
-        assertEquals( actions, TestUtils.asList( a2, a1 ) );
-    }
-    
-    /**
-     * Tests whether the sort places uninstall actions first. The test case 
-     * places an install action in front of the uninstall action and checks
-     * whether the sort algorithm reverses the order. 
-     */
-    
-    public void testUninstallComesFirst2()
-    {
-        final Action a1 = new Action( Action.Type.INSTALL, f1v12, null );
-        final Action a2 = new Action( Action.Type.UNINSTALL, f3av10, null );
-        
-        final ArrayList actions = new ArrayList();
-        
-        actions.add( a1 );
-        actions.add( a2 );
-        
-        ProjectFacetsManager.sort( TestUtils.asSet( f3av10 ), actions );
-        assertEquals( actions, TestUtils.asList( a2, a1 ) );
-    }
-
-    /**
-     * Tests whether the sort produces "stable" results given unrelated facets.
-     * This is the control test case. The input is already in the correct order. 
-     */
-    
-    public void testSortStability1()
-    {
-        final Action a1 = new Action( Action.Type.INSTALL, f1v12, null );
-        final Action a2 = new Action( Action.Type.INSTALL, f3av10, null );
-        
-        final ArrayList actions = new ArrayList();
-        
-        actions.add( a1 );
-        actions.add( a2 );
-        
-        ProjectFacetsManager.sort( Collections.EMPTY_SET, actions );
-        assertEquals( actions, TestUtils.asList( a1, a2 ) );
-    }
-
-    /**
-     * Tests whether the sort produces "stable" results given unrelated facets.
-     * The input facets are in the reverse order.
-     */
-    
-    public void testSortStability2()
-    {
-        final Action a1 = new Action( Action.Type.INSTALL, f1v12, null );
-        final Action a2 = new Action( Action.Type.INSTALL, f3av10, null );
-        
-        final ArrayList actions = new ArrayList();
-        
-        actions.add( a2 );
-        actions.add( a1 );
-        
-        ProjectFacetsManager.sort( Collections.EMPTY_SET, actions );
-        assertEquals( actions, TestUtils.asList( a1, a2 ) );
-    }
-    
-}
diff --git a/tests/org.eclipse.wst.common.project.facet.core.tests/src/org/eclipse/wst/common/project/facet/core/tests/ProjectChangeReactionTests.java b/tests/org.eclipse.wst.common.project.facet.core.tests/src/org/eclipse/wst/common/project/facet/core/tests/ProjectChangeReactionTests.java
deleted file mode 100644
index cc9606f..0000000
--- a/tests/org.eclipse.wst.common.project.facet.core.tests/src/org/eclipse/wst/common/project/facet/core/tests/ProjectChangeReactionTests.java
+++ /dev/null
@@ -1,161 +0,0 @@
-package org.eclipse.wst.common.project.facet.core.tests;
-
-import java.io.IOException;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.wst.common.project.facet.core.IFacetedProject;
-import org.eclipse.wst.common.project.facet.core.IProjectFacet;
-import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion;
-import org.eclipse.wst.common.project.facet.core.ProjectFacetsManager;
-import org.eclipse.wst.common.project.facet.core.tests.support.TestUtils;
-import org.eclipse.wst.common.project.facet.core.tests.support.TestUtils.ICondition;
-
-public final class ProjectChangeReactionTests
-
-    extends AbstractTests
-    
-{
-    private static final String METADATA_FILE 
-        = ".settings/org.eclipse.wst.common.project.facet.core.xml";
-    
-    private static final String TEST_PROJECT_NAME = "testProject";
-
-    private static IProjectFacet f1;
-    private static IProjectFacetVersion f1v10;
-    private static IProjectFacetVersion f1v12;
-    private static IProjectFacetVersion f1v121;
-    private static IProjectFacetVersion f1v13;
-    private static IProjectFacetVersion f1v20;
-    
-    static
-    {
-        try
-        {
-            f1 = ProjectFacetsManager.getProjectFacet( "facet1" );
-            f1v10 = f1.getVersion( "1.0" );
-            f1v12 = f1.getVersion( "1.2" );
-            f1v121 = f1.getVersion( "1.2.1" );
-            f1v13 = f1.getVersion( "1.3" );
-            f1v20 = f1.getVersion( "2.0" );
-        }
-        catch( Exception e )
-        {
-            // Ignore failures. This api is tested explicitly.
-        }
-    }
-    
-    private IProject pj;
-    private IFacetedProject fpj;
-    private IFile mdfile;
-
-    private ProjectChangeReactionTests( final String name )
-    {
-        super( name );
-    }
-    
-    public static Test suite()
-    {
-        final TestSuite suite = new TestSuite();
-        
-        suite.setName( "Project Change Reaction Tests" );
-
-        suite.addTest( new ProjectChangeReactionTests( "testReactionToProjectDelete" ) );
-        suite.addTest( new ProjectChangeReactionTests( "testReactionToMetadataFileDelete" ) );
-        suite.addTest( new ProjectChangeReactionTests( "testReactionToMetadataFileChange" ) );
-        
-        return suite;
-    }
-    
-    protected void setUp()
-    
-        throws CoreException
-        
-    {
-        assertFalse( ws.getRoot().getProject( TEST_PROJECT_NAME ).exists() );
-        
-        this.fpj = ProjectFacetsManager.create( TEST_PROJECT_NAME, null, null );
-        
-        this.pj = this.fpj.getProject();
-        addResourceToCleanup( this.pj );
-        assertTrue( this.fpj.getProject().exists() );
-        
-        this.fpj.installProjectFacet( f1v12, null, null );
-        assertEquals( this.fpj.getProjectFacets(), TestUtils.asSet( f1v12 ) );
-        
-        this.mdfile = this.pj.getFile( METADATA_FILE );
-    }
-    
-    public void testReactionToProjectDelete()
-    
-        throws CoreException
-        
-    {
-        this.pj.delete( true, null );
-        
-        TestUtils.waitForCondition( createNoFacetsCondition( this.fpj ) );
-        assertNull( ProjectFacetsManager.create( this.pj ) );
-    }
-
-    public void testReactionToMetadataFileDelete()
-    
-        throws CoreException
-        
-    {
-        this.mdfile.delete( true, null );
-
-        TestUtils.waitForCondition( createNoFacetsCondition( this.fpj ) );
-    }
-
-    public void testReactionToMetadataFileChange()
-    
-        throws CoreException, IOException
-        
-    {
-        String contents;
-        
-        contents = TestUtils.readFromFile( this.mdfile );
-        contents = contents.replaceFirst( "1.2", "2.0" );
-        TestUtils.writeToFile( this.mdfile, contents );
-        
-        TestUtils.waitForCondition( createFacetCondition( this.fpj, f1v20 ) );
-        
-        contents = contents.replaceFirst( "2.0", "1.2.1" );
-        TestUtils.writeToFile( this.mdfile, contents );
-        
-        TestUtils.waitForCondition( createFacetCondition( this.fpj, f1v121 ) );
-        
-        contents = contents.replaceFirst( "<installed facet=\"facet1\" version=\"1.2.1\"/>", "" );
-        TestUtils.writeToFile( this.mdfile, contents );
-        
-        TestUtils.waitForCondition( createNoFacetsCondition( this.fpj ) );
-    }
-    
-    private static ICondition createNoFacetsCondition( final IFacetedProject fpj )
-    {
-        return new ICondition()
-        {
-            public boolean check()
-            {
-                return fpj.getProjectFacets().size() == 0;
-            }
-        };
-    }
-    
-    private static ICondition createFacetCondition( final IFacetedProject fpj,
-                                                    final IProjectFacetVersion fv )
-    {
-        return new ICondition()
-        {
-            public boolean check()
-            {
-                return fpj.hasProjectFacet( fv );
-            }
-        };
-    }
-    
-}
diff --git a/tests/org.eclipse.wst.common.project.facet.core.tests/src/org/eclipse/wst/common/project/facet/core/tests/ProjectCreationTests.java b/tests/org.eclipse.wst.common.project.facet.core.tests/src/org/eclipse/wst/common/project/facet/core/tests/ProjectCreationTests.java
deleted file mode 100644
index 94e4788..0000000
--- a/tests/org.eclipse.wst.common.project.facet.core.tests/src/org/eclipse/wst/common/project/facet/core/tests/ProjectCreationTests.java
+++ /dev/null
@@ -1,329 +0,0 @@
-package org.eclipse.wst.common.project.facet.core.tests;
-
-import java.io.IOException;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IProjectDescription;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.wst.common.project.facet.core.IFacetedProject;
-import org.eclipse.wst.common.project.facet.core.ProjectFacetsManager;
-import org.eclipse.wst.common.project.facet.core.tests.support.TestUtils;
-
-public final class ProjectCreationTests
-
-    extends AbstractTests
-    
-{
-    private static final String FACETED_PROJECT_NATURE
-        = "org.eclipse.wst.common.project.facet.core.nature";
-    
-    private ProjectCreationTests( final String name )
-    {
-        super( name );
-    }
-    
-    public static Test suite()
-    {
-        final TestSuite suite = new TestSuite();
-        
-        suite.setName( "Project Creation Tests" );
-
-        suite.addTest( new ProjectCreationTests( "testCreationFromScratch1" ) );
-        suite.addTest( new ProjectCreationTests( "testCreationFromScratch2" ) );
-        suite.addTest( new ProjectCreationTests( "testCreationFromScratch3" ) );
-        suite.addTest( new ProjectCreationTests( "testCreationFromNonFacetedProject1" ) );
-        suite.addTest( new ProjectCreationTests( "testCreationFromNonFacetedProject2" ) );
-        suite.addTest( new ProjectCreationTests( "testCreationFromNonFacetedProject3" ) );
-        suite.addTest( new ProjectCreationTests( "testCreationFromNonFacetedProject4" ) );
-        suite.addTest( new ProjectCreationTests( "testWrapperCreation1" ) );
-        suite.addTest( new ProjectCreationTests( "testWrapperCreation2" ) );
-        suite.addTest( new ProjectCreationTests( "testWrapperCreation3" ) );
-        
-        return suite;
-    }
-
-    /**
-     * Tests {@see ProjectFacetsManager.create(String,IPath,IProgressMonitor)}
-     * method. In this scenario, there is no project with the same name.
-     * 
-     * @throws CoreException
-     * @throws IOException
-     */
-    
-    public void testCreationFromScratch1()
-    
-        throws CoreException, IOException
-        
-    {
-        final IFacetedProject fproj 
-            = ProjectFacetsManager.create( "abc", null, null );
-        
-        final IProject proj = fproj.getProject();
-        
-        assertNotNull( proj );
-        assertTrue( proj.exists() );
-        
-        this.resourcesToCleanup.add( proj );
-        
-        TestUtils.assertFileContains( proj.getFile( ".project" ), FACETED_PROJECT_NATURE );
-        
-        assertEquals( fproj.getFixedProjectFacets().size(), 0 );
-        assertEquals( fproj.getProjectFacets().size(), 0 );
-        assertEquals( fproj.getTargetedRuntimes().size(), 0 );
-        assertNull( fproj.getPrimaryRuntime() );
-    }
-    
-    /**
-     * Tests {@see ProjectFacetsManager.create(String,IPath,IProgressMonitor)}
-     * method. In this scenario, there is a faceted project with the same name.
-     * 
-     * @throws CoreException
-     * @throws IOException
-     */
-
-    public void testCreationFromScratch2()
-    
-        throws CoreException, IOException
-    
-    {
-        final IFacetedProject fproj 
-            = ProjectFacetsManager.create( "abc", null, null );
-        
-        this.resourcesToCleanup.add( fproj.getProject() );
-        
-        try
-        {
-            ProjectFacetsManager.create( "abc", null, null );
-            fail();
-        }
-        catch( CoreException e )
-        {
-            // expected
-        }
-    }
-
-    /**
-     * Tests {@see ProjectFacetsManager.create(String,IPath,IProgressMonitor)}
-     * method. In this scenario, there is a non-faceted project with the same
-     * name.
-     * 
-     * @throws CoreException
-     * @throws IOException
-     */
-    
-    public void testCreationFromScratch3()
-    
-        throws CoreException, IOException
-    
-    {
-        final IProject project = ws.getRoot().getProject( "abc" );
-        final IProjectDescription desc = ws.newProjectDescription( "abc" );
-
-        desc.setLocation( null );
-                
-        project.create( desc, null );
-        project.open( IResource.BACKGROUND_REFRESH, null );
-        
-        this.resourcesToCleanup.add( project );
-        
-        try
-        {
-            ProjectFacetsManager.create( "abc", null, null );
-            fail();
-        }
-        catch( CoreException e )
-        {
-            // expected
-        }
-    }
-    
-    /**
-     * Tests {@see ProjectFacetsManager.create(IProject,boolean,IProgressMonitor)}
-     * method. In this scenario project is not faceted and convertIfNecessary
-     * is set to true.
-     * 
-     * @throws CoreException
-     * @throws IOException
-     */
-    
-    public void testCreationFromNonFacetedProject1()
-    
-        throws CoreException, IOException
-    
-    {
-        final IProject project = ws.getRoot().getProject( "abc" );
-        final IProjectDescription desc = ws.newProjectDescription( "abc" );
-    
-        desc.setLocation( null );
-                
-        project.create( desc, null );
-        project.open( IResource.BACKGROUND_REFRESH, null );
-        
-        this.resourcesToCleanup.add( project );
-        
-        final IFacetedProject fproj
-            = ProjectFacetsManager.create( project, true, null );
-        
-        assertEquals( fproj.getFixedProjectFacets().size(), 0 );
-        assertEquals( fproj.getProjectFacets().size(), 0 );
-        assertEquals( fproj.getTargetedRuntimes().size(), 0 );
-        assertNull( fproj.getPrimaryRuntime() );
-    }
-
-    /**
-     * Tests {@see ProjectFacetsManager.create(IProject,boolean,IProgressMonitor)}
-     * method. In this scenario project is faceted and convertIfNecessary
-     * is set to true.
-     * 
-     * @throws CoreException
-     * @throws IOException
-     */
-    
-    public void testCreationFromNonFacetedProject2()
-    
-        throws CoreException, IOException
-    
-    {
-        final IFacetedProject prior 
-            = ProjectFacetsManager.create( "abc", null, null );
-        
-        final IProject project = prior.getProject();
-        
-        this.resourcesToCleanup.add( project );
-        
-        final IFacetedProject fproj
-            = ProjectFacetsManager.create( project, true, null );
-        
-        assertEquals( fproj.getFixedProjectFacets().size(), 0 );
-        assertEquals( fproj.getProjectFacets().size(), 0 );
-        assertEquals( fproj.getTargetedRuntimes().size(), 0 );
-        assertNull( fproj.getPrimaryRuntime() );
-    }
-    
-    /**
-     * Tests {@see ProjectFacetsManager.create(IProject,boolean,IProgressMonitor)}
-     * method. In this scenario project is faceted and convertIfNecessary
-     * is set to false.
-     * 
-     * @throws CoreException
-     * @throws IOException
-     */
-    
-    public void testCreationFromNonFacetedProject3()
-    
-        throws CoreException, IOException
-    
-    {
-        final IFacetedProject prior 
-            = ProjectFacetsManager.create( "abc", null, null );
-        
-        final IProject project = prior.getProject();
-        
-        this.resourcesToCleanup.add( project );
-        
-        final IFacetedProject fproj
-            = ProjectFacetsManager.create( project, false, null );
-        
-        assertEquals( fproj.getFixedProjectFacets().size(), 0 );
-        assertEquals( fproj.getProjectFacets().size(), 0 );
-        assertEquals( fproj.getTargetedRuntimes().size(), 0 );
-        assertNull( fproj.getPrimaryRuntime() );
-    }
-    
-    /**
-     * Tests {@see ProjectFacetsManager.create(IProject,boolean,IProgressMonitor)}
-     * method. In this scenario project is not faceted and convertIfNecessary
-     * is set to false.
-     * 
-     * @throws CoreException
-     * @throws IOException
-     */
-    
-    public void testCreationFromNonFacetedProject4()
-    
-        throws CoreException, IOException
-    
-    {
-        final IProject project = ws.getRoot().getProject( "abc" );
-        final IProjectDescription desc = ws.newProjectDescription( "abc" );
-    
-        desc.setLocation( null );
-                
-        project.create( desc, null );
-        project.open( IResource.BACKGROUND_REFRESH, null );
-        
-        this.resourcesToCleanup.add( project );
-        
-        assertNull( ProjectFacetsManager.create( project, false, null ) );
-    }
-    
-    /**
-     * Tests {@see ProjectFacetsManager.create(IProject)} method. This scenario
-     * validates that the wrapper cache is working and the same instance is
-     * returned when the create method is called multiple times.
-     * 
-     * @throws CoreException
-     */
-    
-    public void testWrapperCreation1()
-    
-        throws CoreException
-        
-    {
-        final IFacetedProject fproj 
-            = ProjectFacetsManager.create( "abc", null, null );
-        
-        final IProject proj = fproj.getProject();
-        this.resourcesToCleanup.add( proj );
-        
-        assertTrue( fproj == ProjectFacetsManager.create( proj ) );
-        assertTrue( fproj == ProjectFacetsManager.create( proj ) );
-        assertTrue( fproj == ProjectFacetsManager.create( proj ) );
-        assertTrue( fproj == ProjectFacetsManager.create( proj ) );
-        assertTrue( fproj == ProjectFacetsManager.create( proj ) );
-    }
-
-    /**
-     * Tests {@see ProjectFacetsManager.create(IProject)} method. In this
-     * scenario, the input project does not exist.
-     * 
-     * @throws CoreException
-     */
-    
-    public void testWrapperCreation2()
-    
-        throws CoreException
-        
-    {
-        final IProject proj = ws.getRoot().getProject( "abc" );
-        assertNull( ProjectFacetsManager.create( proj ) );
-    }
-
-    /**
-     * Tests {@see ProjectFacetsManager.create(IProject)} method. In this
-     * scenario, the input project is closed.
-     * 
-     * @throws CoreException
-     */
-    
-    public void testWrapperCreation3()
-    
-        throws CoreException
-        
-    {
-        final IFacetedProject fproj 
-            = ProjectFacetsManager.create( "abc", null, null );
-        
-        final IProject proj = fproj.getProject();
-        this.resourcesToCleanup.add( proj );
-        
-        proj.close( null );
-        
-        assertNull( ProjectFacetsManager.create( proj ) );
-    }
-    
-}
diff --git a/tests/org.eclipse.wst.common.project.facet.core.tests/src/org/eclipse/wst/common/project/facet/core/tests/support/CustomVersionComparator.java b/tests/org.eclipse.wst.common.project.facet.core.tests/src/org/eclipse/wst/common/project/facet/core/tests/support/CustomVersionComparator.java
deleted file mode 100644
index 470ce14..0000000
--- a/tests/org.eclipse.wst.common.project.facet.core.tests/src/org/eclipse/wst/common/project/facet/core/tests/support/CustomVersionComparator.java
+++ /dev/null
@@ -1,63 +0,0 @@
-package org.eclipse.wst.common.project.facet.core.tests.support;
-
-import org.eclipse.wst.common.project.facet.core.DefaultVersionComparator;
-import org.eclipse.wst.common.project.facet.core.VersionFormatException;
-
-public final class CustomVersionComparator
-
-    extends DefaultVersionComparator
-    
-{
-    protected String getSeparators()
-    {
-        return ".#";
-    }
-    
-    protected Comparable parse( final String version,
-                                final String segment,
-                                final int position )
-    
-        throws VersionFormatException
-        
-    {
-        if( position == 2 )
-        {
-            return new Inverter( segment );
-        }
-        else
-        {
-            return super.parse( version, segment, position );
-        }
-    }
-    
-    public static class Inverter
-    
-        implements Comparable
-        
-    {
-        private final Comparable base;
-        
-        public Inverter( final Comparable base )
-        {
-            this.base = base;
-        }
-        
-        public boolean equals( final Object obj )
-        {
-            if( ! ( obj instanceof Inverter ) )
-            {
-                return false;
-            }
-            else
-            {
-                return this.base.equals( ( (Inverter) obj ).base );
-            }
-        }
-        
-        public int compareTo( final Object obj )
-        {
-            return -1 * this.base.compareTo( ( (Inverter) obj ).base );
-        }
-    }
-
-}
diff --git a/tests/org.eclipse.wst.common.project.facet.core.tests/src/org/eclipse/wst/common/project/facet/core/tests/support/Facet1InstallDelegate.java b/tests/org.eclipse.wst.common.project.facet.core.tests/src/org/eclipse/wst/common/project/facet/core/tests/support/Facet1InstallDelegate.java
deleted file mode 100644
index 4590e3e..0000000
--- a/tests/org.eclipse.wst.common.project.facet.core.tests/src/org/eclipse/wst/common/project/facet/core/tests/support/Facet1InstallDelegate.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package org.eclipse.wst.common.project.facet.core.tests.support;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.wst.common.project.facet.core.IDelegate;
-import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion;
-
-public final class Facet1InstallDelegate
-
-    implements IDelegate
-    
-{
-    public void execute( final IProject project, 
-                         final IProjectFacetVersion fv, 
-                         final Object config, 
-                         final IProgressMonitor monitor ) 
-    
-        throws CoreException
-        
-    {
-        final IFile file = project.getFile( "facet1.txt" );
-        TestUtils.writeToFile( file, fv.getVersionString() );
-    }
-    
-}
diff --git a/tests/org.eclipse.wst.common.project.facet.core.tests/src/org/eclipse/wst/common/project/facet/core/tests/support/Facet1UninstallDelegate.java b/tests/org.eclipse.wst.common.project.facet.core.tests/src/org/eclipse/wst/common/project/facet/core/tests/support/Facet1UninstallDelegate.java
deleted file mode 100644
index baaafec..0000000
--- a/tests/org.eclipse.wst.common.project.facet.core.tests/src/org/eclipse/wst/common/project/facet/core/tests/support/Facet1UninstallDelegate.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package org.eclipse.wst.common.project.facet.core.tests.support;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.wst.common.project.facet.core.IDelegate;
-import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion;
-
-public final class Facet1UninstallDelegate
-
-    implements IDelegate
-    
-{
-    public void execute( final IProject project, 
-                         final IProjectFacetVersion fv, 
-                         final Object config, 
-                         final IProgressMonitor monitor ) 
-    
-        throws CoreException
-        
-    {
-        final IFile file = project.getFile( "facet1.txt" );
-        file.delete( true, null );
-    }
-    
-}
diff --git a/tests/org.eclipse.wst.common.project.facet.core.tests/src/org/eclipse/wst/common/project/facet/core/tests/support/Facet1VersionChangeDelegate.java b/tests/org.eclipse.wst.common.project.facet.core.tests/src/org/eclipse/wst/common/project/facet/core/tests/support/Facet1VersionChangeDelegate.java
deleted file mode 100644
index 48650c5..0000000
--- a/tests/org.eclipse.wst.common.project.facet.core.tests/src/org/eclipse/wst/common/project/facet/core/tests/support/Facet1VersionChangeDelegate.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package org.eclipse.wst.common.project.facet.core.tests.support;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.wst.common.project.facet.core.IDelegate;
-import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion;
-
-public final class Facet1VersionChangeDelegate
-
-    implements IDelegate
-    
-{
-    public void execute( final IProject project, 
-                         final IProjectFacetVersion fv, 
-                         final Object config, 
-                         final IProgressMonitor monitor ) 
-    
-        throws CoreException
-        
-    {
-        final IFile file = project.getFile( "facet1.txt" );
-        TestUtils.writeToFile( file, fv.getVersionString() );
-    }
-    
-}
diff --git a/tests/org.eclipse.wst.common.project.facet.core.tests/src/org/eclipse/wst/common/project/facet/core/tests/support/Facet3aInstallDelegate.java b/tests/org.eclipse.wst.common.project.facet.core.tests/src/org/eclipse/wst/common/project/facet/core/tests/support/Facet3aInstallDelegate.java
deleted file mode 100644
index ece8270..0000000
--- a/tests/org.eclipse.wst.common.project.facet.core.tests/src/org/eclipse/wst/common/project/facet/core/tests/support/Facet3aInstallDelegate.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package org.eclipse.wst.common.project.facet.core.tests.support;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.wst.common.project.facet.core.IDelegate;
-import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion;
-
-public final class Facet3aInstallDelegate
-
-    implements IDelegate
-    
-{
-    public void execute( final IProject project, 
-                         final IProjectFacetVersion fv, 
-                         final Object config, 
-                         final IProgressMonitor monitor ) 
-    
-        throws CoreException
-        
-    {
-        final IFile file = project.getFile( "facet3a.txt" );
-        TestUtils.writeToFile( file, fv.getVersionString() );
-    }
-    
-}
diff --git a/tests/org.eclipse.wst.common.project.facet.core.tests/src/org/eclipse/wst/common/project/facet/core/tests/support/Facet3aUninstallDelegate.java b/tests/org.eclipse.wst.common.project.facet.core.tests/src/org/eclipse/wst/common/project/facet/core/tests/support/Facet3aUninstallDelegate.java
deleted file mode 100644
index eca1812..0000000
--- a/tests/org.eclipse.wst.common.project.facet.core.tests/src/org/eclipse/wst/common/project/facet/core/tests/support/Facet3aUninstallDelegate.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package org.eclipse.wst.common.project.facet.core.tests.support;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.wst.common.project.facet.core.IDelegate;
-import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion;
-
-public final class Facet3aUninstallDelegate
-
-    implements IDelegate
-    
-{
-    public void execute( final IProject project, 
-                         final IProjectFacetVersion fv, 
-                         final Object config, 
-                         final IProgressMonitor monitor ) 
-    
-        throws CoreException
-        
-    {
-        final IFile file = project.getFile( "facet3a.txt" );
-        file.delete( true, null );
-    }
-    
-}
diff --git a/tests/org.eclipse.wst.common.project.facet.core.tests/src/org/eclipse/wst/common/project/facet/core/tests/support/Facet3aVersionChangeDelegate.java b/tests/org.eclipse.wst.common.project.facet.core.tests/src/org/eclipse/wst/common/project/facet/core/tests/support/Facet3aVersionChangeDelegate.java
deleted file mode 100644
index 060a839..0000000
--- a/tests/org.eclipse.wst.common.project.facet.core.tests/src/org/eclipse/wst/common/project/facet/core/tests/support/Facet3aVersionChangeDelegate.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package org.eclipse.wst.common.project.facet.core.tests.support;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.wst.common.project.facet.core.IDelegate;
-import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion;
-
-public final class Facet3aVersionChangeDelegate
-
-    implements IDelegate
-    
-{
-    public void execute( final IProject project, 
-                         final IProjectFacetVersion fv, 
-                         final Object config, 
-                         final IProgressMonitor monitor ) 
-    
-        throws CoreException
-        
-    {
-        final IFile file = project.getFile( "facet3a.txt" );
-        TestUtils.writeToFile( file, fv.getVersionString() );
-    }
-    
-}
diff --git a/tests/org.eclipse.wst.common.project.facet.core.tests/src/org/eclipse/wst/common/project/facet/core/tests/support/TestUtils.java b/tests/org.eclipse.wst.common.project.facet.core.tests/src/org/eclipse/wst/common/project/facet/core/tests/support/TestUtils.java
deleted file mode 100644
index ae35782..0000000
--- a/tests/org.eclipse.wst.common.project.facet.core.tests/src/org/eclipse/wst/common/project/facet/core/tests/support/TestUtils.java
+++ /dev/null
@@ -1,203 +0,0 @@
-package org.eclipse.wst.common.project.facet.core.tests.support;
-
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.io.Reader;
-import java.io.UnsupportedEncodingException;
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-import junit.framework.TestCase;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.runtime.CoreException;
-
-public class TestUtils
-{
-    public static void writeToFile( final IFile file,
-                                    final String contents )
-    
-        throws CoreException
-        
-    {
-        try
-        {
-            final byte[] bytes = contents.getBytes( "UTF-8" );
-            
-            if( file.exists() )
-            {
-                file.setContents( new ByteArrayInputStream( bytes ),
-                                  false, false, null );
-            }
-            else
-            {
-                file.create( new ByteArrayInputStream( bytes ), false, null );
-            }
-        }
-        catch( UnsupportedEncodingException e )
-        {
-            throw new RuntimeException( e );
-        }
-    }
-    
-    public static String readFromFile( final IFile file )
-    
-        throws CoreException, IOException
-        
-    {
-        TestCase.assertTrue( file.exists() );
-        
-        final StringBuffer buf = new StringBuffer();
-        final Reader r = new InputStreamReader( file.getContents() );
-        
-        try
-        {
-            char[] chars = new char[ 1024 ];
-            
-            for( int count; ( count = r.read( chars ) ) != -1; )
-            {
-                buf.append( chars, 0, count );
-            }
-        }
-        finally
-        {
-            try
-            {
-                r.close();
-            }
-            catch( IOException e ) {}
-        }
-        
-        return buf.toString();
-    }
-    
-    
-    public static void assertEquals( final IFile file,
-                                     final String expectedContents )
-    
-        throws CoreException, IOException
-        
-    {
-        TestCase.assertEquals( readFromFile( file ), expectedContents );
-    }
-    
-    public static void assertFileContains( final IFile file,
-                                           final String str )
-    
-        throws CoreException, IOException
-        
-    {
-        TestCase.assertTrue( readFromFile( file ).indexOf( str ) != -1 );
-    }
-    
-    public static void waitForCondition( final ICondition condition )
-    {
-        waitForCondition( condition, 10 );
-    }
-    
-    public static void waitForCondition( final ICondition condition,
-                                         final int seconds )
-    {
-        for( int i = 0; i < seconds && ! condition.check(); i++ )
-        {
-            try
-            {
-                Thread.sleep( 1000 );
-            }
-            catch( InterruptedException e ) {}
-        }
-        
-        TestCase.assertTrue( condition.check() );
-    }
-    
-    public static interface ICondition
-    {
-        boolean check();
-    }
-    
-    public static Set asSet( final Object obj )
-    {
-        return asSet( new Object[] { obj } );
-    }
-
-    public static Set asSet( final Object obj1,
-                             final Object obj2 )
-    {
-        return asSet( new Object[] { obj1, obj2 } );
-    }
-
-    public static Set asSet( final Object obj1,
-                             final Object obj2,
-                             final Object obj3 )
-    {
-        return asSet( new Object[] { obj1, obj2, obj3 } );
-    }
-
-    public static Set asSet( final Object obj1,
-                             final Object obj2,
-                             final Object obj3,
-                             final Object obj4 )
-    {
-        return asSet( new Object[] { obj1, obj2, obj3, obj4 } );
-    }
-
-    public static Set asSet( final Object obj1,
-                             final Object obj2,
-                             final Object obj3,
-                             final Object obj4,
-                             final Object obj5 )
-    {
-        return asSet( new Object[] { obj1, obj2, obj3, obj4, obj5 } );
-    }
-    
-    public static Set asSet( final Object[] array )
-    {
-        final HashSet set = new HashSet();
-        set.addAll( Arrays.asList( array ) );
-        return set;
-    }
-
-    public static List asList( final Object obj )
-    {
-        return asList( new Object[] { obj } );
-    }
-
-    public static List asList( final Object obj1,
-                               final Object obj2 )
-    {
-        return asList( new Object[] { obj1, obj2 } );
-    }
-
-    public static List asList( final Object obj1,
-                               final Object obj2,
-                               final Object obj3 )
-    {
-        return asList( new Object[] { obj1, obj2, obj3 } );
-    }
-
-    public static List asList( final Object obj1,
-                               final Object obj2,
-                               final Object obj3,
-                               final Object obj4 )
-    {
-        return asList( new Object[] { obj1, obj2, obj3, obj4 } );
-    }
-
-    public static List asList( final Object obj1,
-                               final Object obj2,
-                               final Object obj3,
-                               final Object obj4,
-                               final Object obj5 )
-    {
-        return asList( new Object[] { obj1, obj2, obj3, obj4, obj5 } );
-    }
-    
-    public static List asList( final Object[] array )
-    {
-        return Arrays.asList( array );
-    }
-
-}
diff --git a/tests/org.eclipse.wst.common.project.facet.core.tests/test.xml b/tests/org.eclipse.wst.common.project.facet.core.tests/test.xml
deleted file mode 100644
index f1b343d..0000000
--- a/tests/org.eclipse.wst.common.project.facet.core.tests/test.xml
+++ /dev/null
@@ -1,52 +0,0 @@
-<?xml version="1.0"?>
-
-<project name="testsuite" default="run" basedir=".">
-
-  <echo message="basedir ${basedir}" />
-  <echo message="eclipse place ${eclipse-home}" />
-  
-  <property name="plugin-name" value="org.eclipse.wst.common.project.facet.core.tests"/>
-  <property name="library-file" value="${eclipse-home}/plugins/org.eclipse.test_3.1.0/library.xml"/>
-
-  <!-- This target holds all initialization code that needs to be done for -->
-  <!-- all tests that are to be run. Initialization for individual tests -->
-  <!-- should be done within the body of the suite target. -->
-  
-  <target name="init">
-    <tstamp/>
-    <delete>
-      <fileset dir="${eclipse-home}" includes="${plugin-name}*.xml"/>
-    </delete>
-  </target>
-
-  <!-- This target defines the tests that need to be run. -->
-  
-  <target name="suite">
-    <property name="wst-folder" value="${eclipse-home}/wst_folder"/>
-    <delete dir="${wst-folder}" quiet="true"/>
-    <ant target="core-test" antfile="${library-file}" dir="${eclipse-home}">
-      <property name="data-dir" value="${wst-folder}"/>
-      <property name="plugin-name" value="${plugin-name}"/>
-      <property name="classname" value="org.eclipse.wst.common.project.facet.core.tests.AllTests" />
-      <property name="plugin-path" value="${eclipse-home}/plugins/${plugin-name}"/>
-    </ant>
-  </target>
-
-  <!-- This target holds code to cleanup the testing environment after -->
-  <!-- after all of the tests have been run. You can use this target to -->
-  <!-- delete temporary files that have been created. -->
-  
-  <target name="cleanup">
-  </target>
-
-  <!-- This target runs the test suite. Any actions that need to happen -->
-  <!-- after all the tests have been run should go here. -->
-  
-  <target name="run" depends="init,suite,cleanup">
-    <ant target="collect" antfile="${library-file}" dir="${eclipse-home}">
-      <property name="includes" value="${plugin-name}*.xml"/>
-      <property name="output-file" value="${plugin-name}.xml"/>
-    </ant>
-  </target>
-  
-</project>
\ No newline at end of file