[250208] Integrate JSF facet with library provider framework
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/plugin.xml b/jsf/plugins/org.eclipse.jst.jsf.core/plugin.xml
index 1147025..c72b6e1 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/plugin.xml
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/plugin.xml
@@ -63,8 +63,8 @@
     </action>  
       
     <action id="jst.jsf.v11.uninstall" facet="jst.jsf" type="UNINSTALL" version="1.1" >
-	 	<delegate
-        class="org.eclipse.jst.jsf.core.internal.project.facet.JSFFacetUninstallDelegate"/>
+        <config-factory class="org.eclipse.jst.jsf.core.internal.project.facet.JSFFacetUninstallConfig$Factory"/>
+	 	<delegate class="org.eclipse.jst.jsf.core.internal.project.facet.JSFFacetUninstallDelegate"/>
  	</action>
 	
  	<action id="jst.jsf.v12.install" facet="jst.jsf" type="INSTALL" version="[1.2">
@@ -73,8 +73,8 @@
     </action>  
       
     <action id="jst.jsf.v12.uninstall" facet="jst.jsf" version="[1.2" type="UNINSTALL">
-	 	<delegate
-        class="org.eclipse.jst.jsf.core.internal.project.facet.JSFFacetUninstallDelegate"/>
+        <config-factory class="org.eclipse.jst.jsf.core.internal.project.facet.JSFFacetUninstallConfig$Factory"/>
+	 	<delegate class="org.eclipse.jst.jsf.core.internal.project.facet.JSFFacetUninstallDelegate"/>
  	</action>  
 	      	
   </extension> 
@@ -372,4 +372,38 @@
      </customViewMapper>
   </extension>
   
+  <!--
+    *****************************
+    * JSF User Library Provider *
+    *****************************
+  -->
+  
+  <extension point="org.eclipse.jst.common.project.facet.core.libraryProviders">
+    <provider id="jsf-user-library-provider" extends="wtp-user-library-provider">
+      <enablement>
+        <with variable="requestingProjectFacet">
+          <test property="org.eclipse.wst.common.project.facet.core.projectFacet" value="jst.jsf" forcePluginActivation="true"/>
+        </with>
+      </enablement>
+    </provider>
+  </extension>
+  
+  <!--
+    ******************************
+    * JSF Legacy Library Support *
+    ******************************
+  -->
+  
+  <extension point="org.eclipse.jst.common.project.facet.core.libraryProviders">
+    <provider id="legacy-jsf-library-provider" extends="legacy-library-provider" hidden="true">
+      <action type="UNINSTALL">
+        <operation class="org.eclipse.jst.jsf.core.internal.project.facet.LegacyJSFLibraryProviderUninstallOperation"/>
+      </action>
+    </provider>
+  </extension>
+
+  <extension point="org.eclipse.jst.common.project.facet.core.legacyLibraryProviderDetectors">
+    <detector class="org.eclipse.jst.jsf.core.internal.project.facet.LegacyJSFLibraryProviderDetector"/>
+  </extension>
+  
 </plugin>
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/schema/pluginProvidedJsfLibraries.exsd b/jsf/plugins/org.eclipse.jst.jsf.core/schema/pluginProvidedJsfLibraries.exsd
index 802062f..030929d 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/schema/pluginProvidedJsfLibraries.exsd
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/schema/pluginProvidedJsfLibraries.exsd
@@ -1,18 +1,25 @@
 <?xml version='1.0' encoding='UTF-8'?>
 <!-- Schema file written by PDE -->
-<schema targetNamespace="org.eclipse.jst.jsf.core">
+<schema targetNamespace="extension" xmlns="http://www.w3.org/2001/XMLSchema">
 <annotation>
-      <appInfo>
-         <meta.schema plugin="org.eclipse.jst.jsf.core" id="pluginProvidedJsfLibraries" name="JSF Libraries"/>
-      </appInfo>
+      <appinfo>
+         <meta.schema plugin="extension" id="pluginProvidedJsfLibraries" name="JSF Libraries"/>
+      </appinfo>
       <documentation>
          This extension point allows clients to create named sets of jars for use with JavaServer Faces Applications.
 
 &lt;p&gt;&lt;b&gt;This extension point is provisional and subject to change&lt;/b&gt;&lt;/p&gt;
+
+&lt;b&gt;Deprecated&lt;/b&gt; Use org.eclipse.jst.common.project.facet.libraryProviders ext-pt
       </documentation>
    </annotation>
 
    <element name="extension">
+      <annotation>
+         <appinfo>
+            <meta.element deprecated="true" replacement="org.eclipse.jst.common.project.facet.libraryProviders" />
+         </appinfo>
+      </annotation>
       <complexType>
          <sequence>
             <element ref="jsfLibrary" minOccurs="0" maxOccurs="unbounded"/>
@@ -22,6 +29,9 @@
                <documentation>
                   
                </documentation>
+               <appinfo>
+                  <meta.attribute deprecated="true"/>
+               </appinfo>
             </annotation>
          </attribute>
          <attribute name="id" type="string" use="required">
@@ -29,6 +39,9 @@
                <documentation>
                   
                </documentation>
+               <appinfo>
+                  <meta.attribute deprecated="true"/>
+               </appinfo>
             </annotation>
          </attribute>
          <attribute name="name" type="string">
@@ -36,9 +49,9 @@
                <documentation>
                   
                </documentation>
-               <appInfo>
-                  <meta.attribute translatable="true"/>
-               </appInfo>
+               <appinfo>
+                  <meta.attribute translatable="true" deprecated="true"/>
+               </appinfo>
             </annotation>
          </attribute>
       </complexType>
@@ -46,9 +59,9 @@
 
    <element name="jsfLibrary">
       <annotation>
-         <appInfo>
-            <meta.element labelAttribute="name"/>
-         </appInfo>
+         <appinfo>
+            <meta.element labelAttribute="name" deprecated="true"/>
+         </appinfo>
          <documentation>
             A named collection of jars that will be added to the classpath as a classpath container to a project that references it.
          </documentation>
@@ -59,6 +72,9 @@
                <documentation>
                   A unique, non-translatable, name for the library.  The plugin developer is responsible for ensuring uniqueness within the plugin.  This name, in combination with the plugin id, is used to identify the classpath container reference.
                </documentation>
+               <appinfo>
+                  <meta.attribute deprecated="true"/>
+               </appinfo>
             </annotation>
          </attribute>
          <attribute name="label" type="string">
@@ -66,9 +82,9 @@
                <documentation>
                   Translatable string for displaying the library name.
                </documentation>
-               <appInfo>
-                  <meta.attribute translatable="true"/>
-               </appInfo>
+               <appinfo>
+                  <meta.attribute translatable="true" deprecated="true"/>
+               </appinfo>
             </annotation>
          </attribute>
          <attribute name="isImplementation" type="boolean" use="required">
@@ -76,6 +92,9 @@
                <documentation>
                   Flag indicating that this libary is declared to be a JSF implementation and not just a JSF component library.
                </documentation>
+               <appinfo>
+                  <meta.attribute deprecated="true"/>
+               </appinfo>
             </annotation>
          </attribute>
          <attribute name="maxVersionSupported">
@@ -83,6 +102,9 @@
                <documentation>
                   Used to declare which JSF specification this library will support.
                </documentation>
+               <appinfo>
+                  <meta.attribute deprecated="true"/>
+               </appinfo>
             </annotation>
             <simpleType>
                <restriction base="string">
@@ -100,27 +122,27 @@
                <documentation>
                   class that must extend org.eclipse.jst.jsf.core.jsflibraryregistry.JSFLibraryArchiveFilesDelegate to supply a collection of IPaths to jars in the library
                </documentation>
-               <appInfo>
-                  <meta.attribute kind="java" basedOn="org.eclipse.jst.jsf.core.jsflibraryregistry.PluginProvidedJSFLibraryArchiveFilesDelegate"/>
-               </appInfo>
+               <appinfo>
+                  <meta.attribute kind="java" basedOn="org.eclipse.jst.jsf.core.jsflibraryregistry.PluginProvidedJSFLibraryArchiveFilesDelegate" deprecated="true"/>
+               </appinfo>
             </annotation>
          </attribute>
       </complexType>
    </element>
 
    <annotation>
-      <appInfo>
+      <appinfo>
          <meta.section type="since"/>
-      </appInfo>
+      </appinfo>
       <documentation>
          2.0
       </documentation>
    </annotation>
 
    <annotation>
-      <appInfo>
+      <appinfo>
          <meta.section type="examples"/>
-      </appInfo>
+      </appinfo>
       <documentation>
          The following is an example of usage of pluginProvidedJsfLibraries extension point:
 
@@ -140,27 +162,29 @@
    </annotation>
 
    <annotation>
-      <appInfo>
+      <appinfo>
          <meta.section type="apiInfo"/>
-      </appInfo>
+      </appinfo>
       <documentation>
-         Value of the attribute class must be a fully qualified name of a Java class that extends the abstract class &lt;code&gt;org.eclipse.jst.jsf.core.jsflibraryregistry.PluginProvidedJSFLibraryJarFilesDelegate&lt;/code&gt; and has a public 0-arg constructor.
+         This extension point is deprecated.
+
+Value of the attribute class must be a fully qualified name of a Java class that extends the abstract class &lt;code&gt;org.eclipse.jst.jsf.core.jsflibraryregistry.PluginProvidedJSFLibraryJarFilesDelegate&lt;/code&gt; and has a public 0-arg constructor.
       </documentation>
    </annotation>
 
    <annotation>
-      <appInfo>
+      <appinfo>
          <meta.section type="implementation"/>
-      </appInfo>
+      </appinfo>
       <documentation>
          none
       </documentation>
    </annotation>
 
    <annotation>
-      <appInfo>
+      <appinfo>
          <meta.section type="copyright"/>
-      </appInfo>
+      </appinfo>
       <documentation>
          Copyright (c) 2007 Oracle Corporation.
 All rights reserved. This program and the accompanying materials
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/Messages.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/Messages.java
index cc3689c..872fa96 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/Messages.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/Messages.java
@@ -24,11 +24,6 @@
 	/**
 	 * see messages.properties
 	 */
-	public static String JSFFacetInstallDataModelProvider_ClientImplValidationMsg;
-
-	/**
-	 * see messages.properties
-	 */
 	public static String JSFFacetInstallDataModelProvider_DupeJarValidation;
 
 	/**
@@ -100,10 +95,6 @@
     /**
      * see messages.properties
      */
-	public static String JSFFacetInstallDataModelProvider_ValidateJSFImpl;
-    /**
-     * see messages.properties
-     */
 	public static String JSFFacetInstallDataModelProvider_ValidateConfigFileEmpty;
     /**
      * see messages.properties
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryconfig/JSFLibraryConfigDialogSettingData.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryconfig/JSFLibraryConfigDialogSettingData.java
index 90a04c8..2b7f263 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryconfig/JSFLibraryConfigDialogSettingData.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryconfig/JSFLibraryConfigDialogSettingData.java
@@ -13,89 +13,46 @@
 import java.util.ArrayList;
 import java.util.List;
 
-import org.eclipse.jst.jsf.core.internal.project.facet.IJSFFacetInstallDataModelProperties;
-import org.eclipse.jst.jsf.core.internal.project.facet.IJSFFacetInstallDataModelProperties.IMPLEMENTATION_TYPE;
-
 /**
  * To construct implementation library and component libraries from sticky values 
  * in DialogSettings as saved libraries.  
  * 
  * @author Justin Chen - Oracle
+ * @deprecated
  */
-public class JSFLibraryConfigDialogSettingData implements JSFLibraryConfiglModelSource {
+public class JSFLibraryConfigDialogSettingData {
 	/**
 	 * Delimintor for parsing a persistent property string.
 	 */
 	final protected static String SEPARATOR =":";	//$NON-NLS-1$
 
+    /**
+     * Parsing delimnitor for elements in a tuple.
+     */
+    final protected static String SPTR_TUPLE = ":"; //$NON-NLS-1$
+    /**
+     * Parsing delimintor for tuples in a persistent property string.
+     */
+    final protected static String EO_TUPLE = ";";   //$NON-NLS-1$
+    
 	final private JSFLibraryRegistryUtil jsfLibReg;
-	final private boolean dftImplLibDeployFlag;
 	private String[] savedCompLibs;
-	private JSFLibraryInternalReference selJSFLibImpl;	// lazy initialized	
 	private List selJSFLibComp;							// lazy initialized
-
-	private IMPLEMENTATION_TYPE implType;
 	
 	
 	/**
 	 * Constructor where implementation type was chosen to be USER_SPECIFIED.  Created for backwards compatibilty when server supplied was not an option.
-	 * @param implLibDeployFlag
 	 * @param compLibs
 	 */
-	public JSFLibraryConfigDialogSettingData(boolean implLibDeployFlag, String[] compLibs) {
-		this(IMPLEMENTATION_TYPE.USER_SPECIFIED, implLibDeployFlag, compLibs);		
-	}
-	
-	/**
-	 * Constructor
-	 * @param implType {@link IMPLEMENTATION_TYPE}
-	 * @param implLibDeployFlag String  valid options are "true" or "false"
-	 * @param compLibs String[]  saved component library settings in string array
-	 * 
-	public JSFLibraryConfigDialogSettingData(String implLibDeployFlag, String[] compLibs) {
+	public JSFLibraryConfigDialogSettingData( String[] compLibs) {
 		this.jsfLibReg = JSFLibraryRegistryUtil.getInstance();
-		this.dftImplLibDeployFlag = implLibDeployFlag;
 		this.savedCompLibs = compLibs;
 		
 		// Verify and log a message if a saved component library no longer exists. 
 		verifySavedLibAvailability();
-	}
-	*/
-	public JSFLibraryConfigDialogSettingData(IMPLEMENTATION_TYPE implType, boolean implLibDeployFlag, String[] compLibs) {
-		
-		this.jsfLibReg = JSFLibraryRegistryUtil.getInstance();
-		this.dftImplLibDeployFlag = implLibDeployFlag;
-		this.savedCompLibs = compLibs;
-		this.implType = implType;
-		
-		// Verify and log a message if a saved component library no longer exists. 
-		verifySavedLibAvailability();
 	}	
 	
 	/**
-	 * There is no saved JSFImplLibrary per se if initializing from DialogSettings 
-	 * since default implementation library is always selected and only the 
-	 * deployment flag is saved.  
-	 * 
-	 * A null is returned when there is no default 
-	 * implementation library in registry.
-	 *     
-	 * @return selJSFLibImpl JSFLibraryInternalReference return default implementation library with updated deployment flag 
-	 */
-	public JSFLibraryInternalReference getJSFImplementationLibrary() {
-		if (selJSFLibImpl == null) {
-			// To instanciate a JSFLibraryReferenceUserSpecified object from default impl lib as the saved library.  
-			JSFLibraryInternalReference dftImplLib = jsfLibReg.getDefaultJSFImplementationLibrary(); 		
-			if (dftImplLib != null) {
-				selJSFLibImpl = new JSFLibraryInternalReference(dftImplLib.getLibrary(), 
-						true,	// selected 
-						dftImplLibDeployFlag);
-			}
-		}
-		return selJSFLibImpl;
-	}
-	
-	/**
 	 * Return the list of saved component libraries and their deployment settings.
 	 * 
 	 * @return selJSFLibComp List 
@@ -161,11 +118,4 @@
 		
 
  	}
-	
- 	/**
- 	 * @return {@link IMPLEMENTATION_TYPE}
- 	 */
- 	public IJSFFacetInstallDataModelProperties.IMPLEMENTATION_TYPE getImplementationType(){
- 		return implType;
- 	}
 }
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryconfig/JSFLibraryConfigModel.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryconfig/JSFLibraryConfigModel.java
index 6321353..3d1e7e6 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryconfig/JSFLibraryConfigModel.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryconfig/JSFLibraryConfigModel.java
@@ -13,9 +13,7 @@
 import java.util.Iterator;
 import java.util.List;
 
-import org.eclipse.core.resources.IProject;
 import org.eclipse.jst.jsf.core.internal.Messages;
-import org.eclipse.jst.jsf.core.internal.project.facet.IJSFFacetInstallDataModelProperties.IMPLEMENTATION_TYPE;
 
 /**
  * Model for the custom control <b>JSFLibraryConfigControl</b>.
@@ -23,60 +21,23 @@
  * selected implementation and component libraries when selections are changed.
  * 
  * @author Justin Chen - Oracle
+ * @deprecated
  */
 public class JSFLibraryConfigModel {
-	final private JSFLibraryConfiglModelSource data;
+	final private JSFLibraryConfigDialogSettingData data;
 	final private JSFLibraryRegistryUtil jsfLibReg;
-	private List colJSFImplLib;
 	private List colJSFCompLib;	
 	
 	/**
 	 * Private constructor.  
 	 * @param data
 	 */
-	private JSFLibraryConfigModel(JSFLibraryConfiglModelSource data) {
+	private JSFLibraryConfigModel(JSFLibraryConfigDialogSettingData data) {
 		this.data = data;
 		this.jsfLibReg = JSFLibraryRegistryUtil.getInstance();
 	}
 		
 	/**
-	 * @return IMPLEMENTATION_TYPE
-	 */
-	public IMPLEMENTATION_TYPE getImplementationType() {
-		return data.getImplementationType();
-	}
-	/**
-	 * Return JSF implementation libraries.
-	 * 
-	 * This list is initialized from JSF library registry and updated with persistent configuration data.  
-	 * 
-	 * @return List
-	 * see also org.eclipse.jst.jsf.ui.properties.IJSFLibraryDecoratorProvider#getProjectJSFImplementationLibraries()
-	 */
-	public List getJSFImplementationLibraries() {
-		if (colJSFImplLib == null) {
-			/* To initialze an implementation library list from registry 
-			 * and then update the list with saved implementation library.
-			 */
-			colJSFImplLib = jsfLibReg.getJSFImplementationLibraries();	
-//			colJSFImplLib.add(JSFLibraryRegistryUtil.getInstance().getServerSuppliedJSFLibrary());
-			JSFLibraryInternalReference targetLib = data.getJSFImplementationLibrary();
-			if (targetLib == null) {
-				// no saved implementation, get default implementation library
-				targetLib = jsfLibReg.getDefaultJSFImplementationLibrary();
-			}
-			if (targetLib != null) {
-				JSFLibraryInternalReference srcLib = jsfLibReg.getJSFLibraryReferencebyID(targetLib.getID());				
-				if (srcLib != null) {
-					srcLib.setSelected(true);
-					srcLib.setToBeDeployed(targetLib.isCheckedToBeDeployed());				
-				}
-			}
-		} 
-		return colJSFImplLib;
-	}
-
-	/**
 	 * Return JSF component libraries.
 	 * 
 	 * This list is initialized from JSF library registry and updated with persistent 
@@ -107,24 +68,6 @@
 	}
 
 	/**
-	 * Return the selected JSF implementation library currently.
-	 * A null is returned if none is selected.
-	 * 
-	 * @return JSFLibraryInternalReference 
-	 */
-	public JSFLibraryInternalReference getCurrentJSFImplementationLibrarySelection() {
-		Iterator it = getJSFImplementationLibraries().iterator();
-		JSFLibraryInternalReference crtItem = null;
-		while (it.hasNext()) {
-			crtItem = (JSFLibraryInternalReference) it.next();
-			if (crtItem.isSelected()) {
-				return crtItem;
-			}
-		}		
-		return null;
-	}
-	
-	/**
 	 * Return the selected JSF component libraries currently.
 	 * An empty list is returned when no component libraries are selected.
 	 * 
@@ -145,16 +88,6 @@
 	}	
 	
 	/**
-	 * Returned a saved implementation library which was persisted as 
-	 * DialogSettings or as project properties.
-	 * 
-	 * @return JSFLibraryInternalReference
-	 */
-	public JSFLibraryInternalReference getSavedJSFImplementationLibrary() {
-		return data.getJSFImplementationLibrary();
-	}
-
-	/**
 	 * Returned saved component libraries which were persisted as 
 	 * DialogSettings or project persistent properties.
 	 *  
@@ -165,30 +98,6 @@
 	}
 	
 	/**
-	 * Update the selected JSF implementation library.
-	 * 
-	 * Note: The library parameter won't be not added into the collection 
-	 * if it does not exist already. 
-	 * 
-	 * @param library JSFLibraryInternalReference
-	 */
-	public void setCurrentJSFImplementationLibrarySelection(final JSFLibraryInternalReference library) {
-		if (library != null) {			
-			Iterator it = getJSFImplementationLibraries().iterator();
-			JSFLibraryInternalReference crtjsflib = null;
-			while (it.hasNext()) {
-				crtjsflib = (JSFLibraryInternalReference) it.next();
-				if (crtjsflib.getID().equals(library.getID())) {
-					crtjsflib.setSelected(true);
-					crtjsflib.setToBeDeployed(library.isCheckedToBeDeployed());
-				} else {
-					crtjsflib.setSelected(false);
-				}
-			}				
-		}
-	}
-
-	/**
 	 * Update the JSF library component libraries selection.
 	 * 
 	 * @param libraries List
@@ -216,20 +125,6 @@
 	}
 		
 	/**
-	 * To save current configuration of implementation and component libraries 
-	 * as project properties.
-	 * 
-	 * @param project IProject
-	 */
-	public void saveData(final IProject project) {
-		// Instantiate one to make sure it is for a project.
-		JSFLibraryConfigProjectData data_ = new JSFLibraryConfigProjectData(project);
-		List implLibs = new ArrayList();
-		implLibs.add(getCurrentJSFImplementationLibrarySelection());
-		data_.saveData(implLibs, getCurrentJSFComponentLibrarySelection(), getImplementationType());
-	}	
-	
-	/**
 	 * Set selection state to given state to each libray in the collection.
 	 * 
 	 * @param libs List
@@ -255,7 +150,7 @@
 		 * @param source JSFLibraryConfiglModelSource 
 		 * @return JSFLibraryConfigModel 
 		 */
-		public static JSFLibraryConfigModel createInstance(final JSFLibraryConfiglModelSource source) {
+		public static JSFLibraryConfigModel createInstance(final JSFLibraryConfigDialogSettingData source) {
 			if (source == null) {
 				throw new NullPointerException(Messages.JSFLibraryConfigModel_Null_Data_Source);
 			}
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryconfig/JSFLibraryConfigProjectData.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryconfig/JSFLibraryConfigProjectData.java
deleted file mode 100644
index 70d36dc..0000000
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryconfig/JSFLibraryConfigProjectData.java
+++ /dev/null
@@ -1,305 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 Oracle Corporation.
- * 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: Oracle
- *******************************************************************************/
-package org.eclipse.jst.jsf.core.internal.jsflibraryconfig;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.QualifiedName;
-import org.eclipse.jst.jsf.core.internal.JSFCorePlugin;
-import org.eclipse.jst.jsf.core.internal.Messages;
-import org.eclipse.jst.jsf.core.internal.project.facet.JSFUtils;
-import org.eclipse.jst.jsf.core.internal.project.facet.IJSFFacetInstallDataModelProperties.IMPLEMENTATION_TYPE;
-import org.eclipse.osgi.util.NLS;
-
-/**
- * To construct implementation library and component libraries 
- * from persistent project properties as saved libraries.  
- * 
- * @author Justin Chen - Oracle
- */
-public class JSFLibraryConfigProjectData implements JSFLibraryConfiglModelSource {
-	final static String QUALIFIEDNAME = "org.eclipse.jst.jsf.core.internal.jsflibraryconfig.JSFLibraryConfigProjectData"; 
-	/**
-	 * Parsing delimnitor for elements in a tuple.
-	 */
-	final protected static String SPTR_TUPLE = ":"; //$NON-NLS-1$
-	/**
-	 * Parsing delimintor for tuples in a persistent property string.
-	 */
-	final protected static String EO_TUPLE = ";"; 	//$NON-NLS-1$
-	
-	final private IProject project;
-	final private JSFLibraryRegistryUtil jsfLibReg;
-	private JSFLibraryInternalReference selJSFLibImpl;	
-	private List selJSFLibComp;
-
-	/**
-	 * Constructor
-	 * @param project
-	 */
-	public JSFLibraryConfigProjectData(IProject project) {
-		this.project = project;
-		this.jsfLibReg = JSFLibraryRegistryUtil.getInstance();
-		
-		/* logging message when object is instantiated instead of at method call to 
-		 * reduce log entries.
-		 */ 
-		if (!isProjectFirstCreated()) {
-			verifySavedLibAvailability();
-		}		
-	}
-	 	
-	public IMPLEMENTATION_TYPE getImplementationType() {
-		try {
-			String type = ((IResource)project).getPersistentProperty(new QualifiedName(QUALIFIEDNAME, 
-					JSFUtils.PP_JSF_IMPLEMENTATION_TYPE));
-			return IMPLEMENTATION_TYPE.getValue(type);
-		} catch (CoreException e) {//
-		}
-		return IMPLEMENTATION_TYPE.UNKNOWN;
-	}	
-	
-	/**
-	 * Return the previously selected JSF implementation library from project persistent properties.
-	 * Return null if none exists.
-	 * 
-	 * @return selJSFLibImpl JSFLibraryDecorator
-	 */
- 	public JSFLibraryInternalReference getJSFImplementationLibrary() {
-		try {
-			if (!isProjectFirstCreated() && 
-					selJSFLibImpl == null ) {
-					String strImplLibs = ((IResource)project).getPersistentProperty(new QualifiedName(QUALIFIEDNAME, 
-							JSFUtils.PP_JSF_IMPLEMENTATION_LIBRARIES));
-					selJSFLibImpl = getJSFImplLibfromPersistentProperties(getTuples(strImplLibs));
-			}
-		} catch (CoreException e) {
-			JSFCorePlugin.log(e, "Exception occured while returning reference to the JSF implementation library");
-		}
-		return selJSFLibImpl; 
-	}
-	
-	/**
-	 * Return the selected JSF component libraries from project persistent properties.
-	 * An empty List is returned if no JSF component libraries were saved or 
-	 * if the project is newly created.
-	 * 
-	 * @return selJSFLibComp List
-	 */
-	public List getJSFComponentLibraries() {	
-		try {
-			if (!isProjectFirstCreated()) {
-				if ( selJSFLibComp == null ) {
-					selJSFLibComp = new ArrayList();
-					
-					String strCompLibs = ((IResource)project).getPersistentProperty(new QualifiedName(QUALIFIEDNAME, JSFUtils.PP_JSF_COMPONENT_LIBRARIES));
-					List savedList = getTuples(strCompLibs);
-					
-					Iterator it = savedList.iterator();
-					Tuple crtTuple = null;
-					JSFLibraryInternalReference srcItem = null;
-					while (it.hasNext()) {
-						crtTuple = (Tuple) it.next();
-						
-						srcItem = jsfLibReg.getJSFLibraryReferencebyID(crtTuple.getID());
-						if (srcItem != null) {
-							selJSFLibComp.add( new JSFLibraryInternalReference(srcItem.getLibrary(), 
-													true, 
-													crtTuple.needDeploy()) );
-						} /*else {
-							// already logged a message for a missing library
-						}*/
-					}
-				}		
-			} else {
-				selJSFLibComp = new ArrayList(0);  
-			}
-		} catch (CoreException e) {
-			JSFCorePlugin.log(e, "Exception occured while returning references to the JSF component libraries.");
-		}
-		return selJSFLibComp;
-	}
-	
-	/**
-	 * To save configuration data as a project persistent properties.
-	 * 
-	 * @param implementation
-	 * @param component
-	 */
-	void saveData(final List implementation, final List component, final IMPLEMENTATION_TYPE implType) {
-		try {
-			((IResource)project).setPersistentProperty(new QualifiedName(QUALIFIEDNAME, JSFUtils.PP_JSF_IMPLEMENTATION_LIBRARIES), generatePersistString(implementation));
-			((IResource)project).setPersistentProperty(new QualifiedName(QUALIFIEDNAME, JSFUtils.PP_JSF_COMPONENT_LIBRARIES), generatePersistString(component));
-			((IResource)project).setPersistentProperty(new QualifiedName(QUALIFIEDNAME, JSFUtils.PP_JSF_IMPLEMENTATION_TYPE), IMPLEMENTATION_TYPE.getStringValue(implType));
-			
-			/* Flush the selection so that they can be reconstructed from 
-			 * persistent properties when getSavedJSFImplLib and getSavedJSFCompLibs 
-			 * called next time.
-			 */
-			selJSFLibImpl = null;
-			selJSFLibComp = null;
-			
-		} catch (CoreException e) {
-			JSFCorePlugin.log(e, "Exception occured while persisting the JSF Library preferences");
-		}
-	}
-	
-	/**
-	 * Check if a project is just created by inspecting persistent properties    
-	 * if there is any.  ?
-	 */
- 	private boolean isProjectFirstCreated() {
- 		boolean isNew = false;
- 		try {
-			((IResource)project).getPersistentProperty(new QualifiedName(QUALIFIEDNAME, 
-														JSFUtils.PP_JSF_IMPLEMENTATION_LIBRARIES));
-		} catch (CoreException e) {
-			isNew = true;
-		}
-		return isNew;
- 	}
-	
- 	private void verifySavedLibAvailability() {
- 		try {
-			String strImplLibs = ((IResource)project).getPersistentProperty(new QualifiedName(QUALIFIEDNAME, JSFUtils.PP_JSF_IMPLEMENTATION_LIBRARIES));
-	 		String strCompLibs = ((IResource)project).getPersistentProperty(new QualifiedName(QUALIFIEDNAME, JSFUtils.PP_JSF_COMPONENT_LIBRARIES));
-	 		
-	 		logMissingLib(getTuples(strImplLibs), true);
-	 		logMissingLib(getTuples(strCompLibs), false);
-	 		
-		} catch (CoreException e) {
-			JSFCorePlugin.log(e, "Exception occured while verifying saved JSF Library preferences");
-		}		
- 	} 	
- 	
- 	private void logMissingLib(final List jsfLibTuples, final boolean isVerifyImpl) {
-		if (jsfLibReg != null) {
-			Iterator itTuple = jsfLibTuples.iterator();
-			while(itTuple.hasNext()) {
-				Tuple tuple = (Tuple)itTuple.next();			
-				JSFLibraryInternalReference jsfLib = jsfLibReg.getJSFLibraryReferencebyID(tuple.getID());				
-				/* Information logged when saved JSF lib is removed from registry.
-				 * One log entry is created for each missing library.
-				 */
-				if (jsfLib == null) {
-					String prjName = project.getName();
-					String msg = (isVerifyImpl) ?
-							Messages.JSFLibraryConfigPersistData_SAVED_IMPLLIB_NOT_FOUND : 
-							Messages.JSFLibraryConfigPersistData_SAVED_COMPLIB_NOT_FOUND;
-					JSFCorePlugin.log(IStatus.INFO, NLS.bind(msg, prjName));
-				}
-			}
-		} 		
- 	}	
-	
-	private JSFLibraryInternalReference getJSFImplLibfromPersistentProperties(final List jsfLibTuples) {
-		if (jsfLibReg != null) {			
-			Tuple tuple = null;
-			JSFLibraryInternalReference lib = null;
-			Iterator itTuple = jsfLibTuples.iterator();			
-			while(itTuple.hasNext()) {
-				tuple = (Tuple) itTuple.next();			
-				lib = jsfLibReg.getJSFLibraryReferencebyID(tuple.id);				
-				if (lib != null) {
-					return new JSFLibraryInternalReference(lib.getLibrary(), 
-							tuple.selected, 
-							tuple.deploy);
-				} /*else {
-					// already logged a message for a missing library
-				}*/
-			}
-		}
-		return null;
-	}
-		
-	private String generatePersistString(List list) {
-		JSFLibraryInternalReference jsfLibItem;
-		StringBuffer sb = new StringBuffer();
-		for (int i = 0; i < list.size(); i++) {
-			jsfLibItem = (JSFLibraryInternalReference)list.get(i);
-			sb = sb.append(jsfLibItem.generatePersistString());
-			sb.append(JSFLibraryConfigProjectData.EO_TUPLE);
-		}
-		return sb.toString();		
-	}	
-	
-	private List getTuples(String strJSFLibs) {
-		List list = new ArrayList();
-		
-		if (strJSFLibs != null) {
-			String patternStr = JSFLibraryConfigProjectData.EO_TUPLE;
-			String[] fields = strJSFLibs.split(patternStr);
-			if (strJSFLibs.length() > 0) {
-				Tuple tuple;
-				for (int i = 0; i < fields.length; i++) {
-					tuple = new Tuple(fields[i]);
-					list.add(tuple);
-				}
-			}			
-		}
-		return list;
-	}
-	
-	/**
-	 * Inner class for parsing project persistent properties. 
-	 * 
-	 * To Do: Take out selected attribute since it is not needed.
-	 *        Add the library name as an attribute.
-	 *        Provide code path to migrate earlier project.
-	 *        
-	 * NOTE: this class should no longer be used except to support
-	 * legacy (pre-2.0M6 library registries)
-	 */
-	static class Tuple {
-		final private String id;
-		final private boolean selected;
-		final private boolean deploy;
-		
-		Tuple(String id, boolean selected, boolean deploy) {
-			this.id = id;
-			this.selected = selected;
-			this.deploy = deploy;
-		}
-		// parse tuple = ID:selected:deploy
-		Tuple(String tuple) {
-			String[] fields = tuple.split(JSFLibraryConfigProjectData.SPTR_TUPLE);
-			
-			if (fields.length >= 3)
-			{
-    			this.id = fields[0];
-    			this.selected = Boolean.valueOf(fields[1]).booleanValue();
-    			this.deploy = Boolean.valueOf(fields[2]).booleanValue();
-			}
-			else
-			{
-			    throw new IllegalStateException("Library registry is corrupt");
-			}
-		}
-		
-		String getID() {
-			return id;
-		}
-		
-		boolean isSelected() {
-			return selected;
-		}
-		
-		boolean needDeploy() {
-			return deploy;
-		}		
-	}
-	
-}
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryconfig/JSFLibraryConfiglModelSource.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryconfig/JSFLibraryConfiglModelSource.java
deleted file mode 100644
index 5575835..0000000
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryconfig/JSFLibraryConfiglModelSource.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 Oracle Corporation.
- * 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:
- *    Justin Chen
- *******************************************************************************/
-package org.eclipse.jst.jsf.core.internal.jsflibraryconfig;
-
-import java.util.List;
-
-import org.eclipse.jst.jsf.core.internal.project.facet.IJSFFacetInstallDataModelProperties.IMPLEMENTATION_TYPE;
-
-/**
- * Interface for data source to instanciate a <b>JSFLibraryConfigModel</b> object. 
- * 
- * @author Justin Chen - Oracle
- */
-public interface JSFLibraryConfiglModelSource {
- 	/**
-	 * Return a saved JSF implementation library.  
-	 * Depends on the model source, it could be sticky values from DialogSettings or 
-	 * project property values.  
-	 * 
-	 * A null could be returned when creating first web project in a new workspace.
-	 * 
- 	 * @return JSFLibraryInternalReference
- 	 */
- 	public JSFLibraryInternalReference getJSFImplementationLibrary();
- 	
- 	/**
-	 * Return a list of saved JSF component libraries.
-	 * Otheriwse, return an empty list.
-	 *  
- 	 * @return List
- 	 */
- 	public List getJSFComponentLibraries(); 
- 	
- 	/**
-	 * Return type of implementation
-	 *  
- 	 * @return {@link IMPLEMENTATION_TYPE}
- 	 */
- 	public IMPLEMENTATION_TYPE getImplementationType(); 	
-}
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryconfig/JSFLibraryInternalReference.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryconfig/JSFLibraryInternalReference.java
index aca5bf5..8c8481b 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryconfig/JSFLibraryInternalReference.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryconfig/JSFLibraryInternalReference.java
@@ -17,6 +17,7 @@
  * to a JSF library when it is referenced by a project.  
  * 
  * @author Justin Chen - Oracle
+ * @deprecated
  */
 public class JSFLibraryInternalReference {
 	final private JSFLibrary jsfLib;
@@ -89,8 +90,8 @@
 	 * @return String
 	 */
 	protected String generatePersistString() {
-		return (getID() + JSFLibraryConfigProjectData.SPTR_TUPLE + 
-				String.valueOf(isSelected()) + JSFLibraryConfigProjectData.SPTR_TUPLE + 
+		return (getID() + JSFLibraryConfigDialogSettingData.SPTR_TUPLE + 
+				String.valueOf(isSelected()) + JSFLibraryConfigDialogSettingData.SPTR_TUPLE + 
 				String.valueOf(isCheckedToBeDeployed())); 
 	}
 
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryconfig/JSFLibraryRegistryUtil.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryconfig/JSFLibraryRegistryUtil.java
index 131e6d3..c1a7221 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryconfig/JSFLibraryRegistryUtil.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryconfig/JSFLibraryRegistryUtil.java
@@ -18,10 +18,8 @@
 import java.util.List;
 import java.util.Map;
 
-import org.eclipse.core.resources.IProject;
 import org.eclipse.core.resources.IWorkspaceRoot;
 import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IExtension;
 import org.eclipse.core.runtime.IExtensionPoint;
 import org.eclipse.core.runtime.IPath;
@@ -30,7 +28,6 @@
 import org.eclipse.core.runtime.InvalidRegistryObjectException;
 import org.eclipse.core.runtime.Path;
 import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.QualifiedName;
 import org.eclipse.emf.common.util.EList;
 import org.eclipse.emf.common.util.URI;
 import org.eclipse.emf.ecore.EPackage;
@@ -53,7 +50,6 @@
 import org.eclipse.jst.jsf.core.internal.jsflibraryregistry.util.JSFLibraryRegistryResourceFactoryImpl;
 import org.eclipse.jst.jsf.core.internal.jsflibraryregistry.util.JSFLibraryRegistryResourceImpl;
 import org.eclipse.jst.jsf.core.internal.jsflibraryregistry.util.JSFLibraryRegistryUpgradeUtil;
-import org.eclipse.jst.jsf.core.internal.project.facet.JSFUtils;
 import org.eclipse.jst.jsf.core.jsflibraryconfiguration.JSFLibraryConfigurationHelper;
 import org.eclipse.jst.jsf.core.jsflibraryregistry.PluginProvidedJSFLibraryCreationHelper;
 import org.eclipse.jst.jsf.core.jsflibraryregistry.internal.PluginProvidedJSFLibraryCreationHelper2;
@@ -68,6 +64,7 @@
  * The lists are updated when there are changes in JSF library registry.
  * 
  * @author Justin Chen, etc. - Oracle
+ * @deprecated
  */
 @SuppressWarnings("deprecation")
 public class JSFLibraryRegistryUtil {
@@ -413,58 +410,6 @@
 	}
 	
 	/**
-	 * @param iproject
-	 * @return true if iproject has persistent properties indicating that it may still
-	 * be using V1 JSF Library references
-	 */
-	public static boolean doesProjectHaveV1JSFLibraries(IProject iproject)
-	{
-	   if (iproject == null || !iproject.isAccessible())
-	   {
-	       return false; // won't be able to get reading on a null or closed project
-	   }
-	   
-       try
-        {
-            Object compLib = iproject.getPersistentProperty(new QualifiedName(JSFLibraryConfigProjectData.QUALIFIEDNAME, JSFUtils.PP_JSF_COMPONENT_LIBRARIES));
-            Object implLib = iproject.getPersistentProperty(new QualifiedName(JSFLibraryConfigProjectData.QUALIFIEDNAME, JSFUtils.PP_JSF_IMPLEMENTATION_LIBRARIES));
-            
-            if (compLib != null || implLib != null)
-            {
-                return true;
-            }
-        }
-        catch(CoreException ce)
-        {
-            JSFCorePlugin.log(ce, "Error checking age of project");
-        }
-        // by default, fall through to false
-        return false;
-	}
-	
-	/**
-	 * Removes the persistent property from JSF projects tagged with
-	 * V1 JSF libraries.
-	 * @param projects
-	 */
-	public static void removeV1JSFLibraryProperty(List<IProject> projects)
-	{
-	    for (final Iterator<IProject> it = projects.iterator(); it.hasNext();)
-	    {
-	        IProject project = it.next();
-            try {
-                if (project.isAccessible())
-                {
-                    project.setPersistentProperty(new QualifiedName(JSFLibraryConfigProjectData.QUALIFIEDNAME, JSFUtils.PP_JSF_COMPONENT_LIBRARIES), null);
-                    project.setPersistentProperty(new QualifiedName(JSFLibraryConfigProjectData.QUALIFIEDNAME, JSFUtils.PP_JSF_IMPLEMENTATION_LIBRARIES), null);
-                }
-            } catch (CoreException e) {
-                JSFCorePlugin.log(e, "Error removing JSF library persistent property");
-            }
-	    }
-	}
-	
-	/**
 	 * Loads the JSFLibraryRegistry EMF object from plugin-specfic workspace
 	 * settings location.
 	 */
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryregistry/ArchiveFile.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryregistry/ArchiveFile.java
index 01941ea..6c20a95 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryregistry/ArchiveFile.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryregistry/ArchiveFile.java
@@ -30,6 +30,7 @@
  * @see org.eclipse.jst.jsf.core.internal.jsflibraryregistry.JSFLibraryRegistryPackage#getArchiveFile()
  * @model
  * @generated
+ * @deprecated
  */
 public interface ArchiveFile extends EObject{
 	/**
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryregistry/JSFLibrary.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryregistry/JSFLibrary.java
index a50d990..3de91af 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryregistry/JSFLibrary.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryregistry/JSFLibrary.java
@@ -33,6 +33,7 @@
  * @see org.eclipse.jst.jsf.core.internal.jsflibraryregistry.JSFLibraryRegistryPackage#getJSFLibrary()
  * @model
  * @generated
+ * @deprecated
  */
 public interface JSFLibrary extends EObject{
 	/**
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryregistry/JSFLibraryRegistry.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryregistry/JSFLibraryRegistry.java
index 73b7057..6ba3bb6 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryregistry/JSFLibraryRegistry.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryregistry/JSFLibraryRegistry.java
@@ -31,6 +31,7 @@
  * @see org.eclipse.jst.jsf.core.internal.jsflibraryregistry.JSFLibraryRegistryPackage#getJSFLibraryRegistry()
  * @model
  * @generated
+ * @deprecated
  */
 public interface JSFLibraryRegistry extends EObject{
 	/**
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryregistry/JSFLibraryRegistryFactory.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryregistry/JSFLibraryRegistryFactory.java
index 77560bd..d1ffab1 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryregistry/JSFLibraryRegistryFactory.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryregistry/JSFLibraryRegistryFactory.java
@@ -19,6 +19,7 @@
  * <!-- end-user-doc -->
  * @see org.eclipse.jst.jsf.core.internal.jsflibraryregistry.JSFLibraryRegistryPackage
  * @generated
+ * @deprecated
  */
 public interface JSFLibraryRegistryFactory extends EFactory{
 	/**
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryregistry/JSFLibraryRegistryPackage.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryregistry/JSFLibraryRegistryPackage.java
index 07ba32e..0b00b70 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryregistry/JSFLibraryRegistryPackage.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryregistry/JSFLibraryRegistryPackage.java
@@ -30,6 +30,7 @@
  * @see org.eclipse.jst.jsf.core.internal.jsflibraryregistry.JSFLibraryRegistryFactory
  * @model kind="package"
  * @generated
+ * @deprecated
  */
 @SuppressWarnings("hiding")
 public interface JSFLibraryRegistryPackage extends EPackage{
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryregistry/JSFVersion.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryregistry/JSFVersion.java
index ad9f7f6..c2fdda9 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryregistry/JSFVersion.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryregistry/JSFVersion.java
@@ -24,6 +24,7 @@
  * @see org.eclipse.jst.jsf.core.internal.jsflibraryregistry.JSFLibraryRegistryPackage#getJSFVersion()
  * @model
  * @generated
+ * @deprecated
  */
 public final class JSFVersion extends AbstractEnumerator {
 	/**
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryregistry/PluginProvidedJSFLibrary.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryregistry/PluginProvidedJSFLibrary.java
index 89722da..471a6dc 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryregistry/PluginProvidedJSFLibrary.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryregistry/PluginProvidedJSFLibrary.java
@@ -27,6 +27,7 @@
  * @see org.eclipse.jst.jsf.core.internal.jsflibraryregistry.JSFLibraryRegistryPackage#getPluginProvidedJSFLibrary()
  * @model
  * @generated
+ * @deprecated
  */
 public interface PluginProvidedJSFLibrary extends JSFLibrary{
 	/**
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryregistry/adapter/MaintainDefaultImplementationAdapter.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryregistry/adapter/MaintainDefaultImplementationAdapter.java
index f1c76ad..eb3ff11 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryregistry/adapter/MaintainDefaultImplementationAdapter.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryregistry/adapter/MaintainDefaultImplementationAdapter.java
@@ -24,6 +24,7 @@
  * changing of a JSFLibrary instance's implementation property.
  * 
  * @author Ian Trimble - Oracle
+ * @deprecated
  */
 public class MaintainDefaultImplementationAdapter extends AdapterImpl {
 
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryregistry/impl/ArchiveFileImpl.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryregistry/impl/ArchiveFileImpl.java
index 6242abe..14d7939 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryregistry/impl/ArchiveFileImpl.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryregistry/impl/ArchiveFileImpl.java
@@ -58,6 +58,7 @@
  * </p>
  *
  * @generated
+ * @deprecated
  */
 public class ArchiveFileImpl extends EObjectImpl implements ArchiveFile {
 	/**
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryregistry/impl/JSFLibraryImpl.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryregistry/impl/JSFLibraryImpl.java
index 2187da7..6240b5f 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryregistry/impl/JSFLibraryImpl.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryregistry/impl/JSFLibraryImpl.java
@@ -46,6 +46,7 @@
  * </p>
  *
  * @generated
+ * @deprecated
  */
 public class JSFLibraryImpl extends EObjectImpl implements JSFLibrary {
 	/**
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryregistry/impl/JSFLibraryRegistryFactoryImpl.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryregistry/impl/JSFLibraryRegistryFactoryImpl.java
index 0b4846a..0f48f29 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryregistry/impl/JSFLibraryRegistryFactoryImpl.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryregistry/impl/JSFLibraryRegistryFactoryImpl.java
@@ -29,6 +29,7 @@
  * An implementation of the model <b>Factory</b>.
  * <!-- end-user-doc -->
  * @generated
+ * @deprecated
  */
 public class JSFLibraryRegistryFactoryImpl extends EFactoryImpl implements JSFLibraryRegistryFactory {
 	/**
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryregistry/impl/JSFLibraryRegistryImpl.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryregistry/impl/JSFLibraryRegistryImpl.java
index 6d2964f..d180e93 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryregistry/impl/JSFLibraryRegistryImpl.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryregistry/impl/JSFLibraryRegistryImpl.java
@@ -42,6 +42,7 @@
  * </p>
  *
  * @generated
+ * @deprecated
  */
 public class JSFLibraryRegistryImpl extends EObjectImpl implements JSFLibraryRegistry {
 	/**
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryregistry/impl/JSFLibraryRegistryPackageImpl.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryregistry/impl/JSFLibraryRegistryPackageImpl.java
index 0532ca9..6602ace 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryregistry/impl/JSFLibraryRegistryPackageImpl.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryregistry/impl/JSFLibraryRegistryPackageImpl.java
@@ -31,6 +31,7 @@
  * An implementation of the model <b>Package</b>.
  * <!-- end-user-doc -->
  * @generated
+ * @deprecated
  */
 public class JSFLibraryRegistryPackageImpl extends EPackageImpl implements JSFLibraryRegistryPackage {
 	/**
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryregistry/impl/PluginProvidedJSFLibraryImpl.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryregistry/impl/PluginProvidedJSFLibraryImpl.java
index a7b1e37..76a3c4a 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryregistry/impl/PluginProvidedJSFLibraryImpl.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryregistry/impl/PluginProvidedJSFLibraryImpl.java
@@ -34,6 +34,7 @@
  * </p>
  *
  * @generated
+ * @deprecated
  */
 public class PluginProvidedJSFLibraryImpl extends JSFLibraryImpl implements PluginProvidedJSFLibrary {
 	/**
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryregistry/util/JSFLibraryRegistryAdapterFactory.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryregistry/util/JSFLibraryRegistryAdapterFactory.java
index 9972980..65caeb3 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryregistry/util/JSFLibraryRegistryAdapterFactory.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryregistry/util/JSFLibraryRegistryAdapterFactory.java
@@ -28,6 +28,7 @@
  * <!-- end-user-doc -->
  * @see org.eclipse.jst.jsf.core.internal.jsflibraryregistry.JSFLibraryRegistryPackage
  * @generated
+ * @deprecated
  */
 public class JSFLibraryRegistryAdapterFactory extends AdapterFactoryImpl {
 	/**
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryregistry/util/JSFLibraryRegistryResourceFactoryImpl.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryregistry/util/JSFLibraryRegistryResourceFactoryImpl.java
index c865f2b..8236da2 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryregistry/util/JSFLibraryRegistryResourceFactoryImpl.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryregistry/util/JSFLibraryRegistryResourceFactoryImpl.java
@@ -20,6 +20,7 @@
  * <!-- end-user-doc -->
  * @see org.eclipse.jst.jsf.core.internal.jsflibraryregistry.util.JSFLibraryRegistryResourceImpl
  * @generated
+ * @deprecated
  */
 public class JSFLibraryRegistryResourceFactoryImpl extends ResourceFactoryImpl {
 	/**
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryregistry/util/JSFLibraryRegistryResourceImpl.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryregistry/util/JSFLibraryRegistryResourceImpl.java
index 1bff4c3..c1804bc 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryregistry/util/JSFLibraryRegistryResourceImpl.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryregistry/util/JSFLibraryRegistryResourceImpl.java
@@ -19,6 +19,7 @@
  * <!-- end-user-doc -->
  * @see org.eclipse.jst.jsf.core.internal.jsflibraryregistry.util.JSFLibraryRegistryResourceFactoryImpl
  * @generated
+ * @deprecated
  */
 public class JSFLibraryRegistryResourceImpl extends XMLResourceImpl {
 	/**
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryregistry/util/JSFLibraryRegistrySwitch.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryregistry/util/JSFLibraryRegistrySwitch.java
index b8ccb5f..a9063a8 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryregistry/util/JSFLibraryRegistrySwitch.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryregistry/util/JSFLibraryRegistrySwitch.java
@@ -33,6 +33,7 @@
  * <!-- end-user-doc -->
  * @see org.eclipse.jst.jsf.core.internal.jsflibraryregistry.JSFLibraryRegistryPackage
  * @generated
+ * @deprecated
  */
 public class JSFLibraryRegistrySwitch {
 	/**
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryregistry/util/JSFLibraryRegistryUpgradeUtil.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryregistry/util/JSFLibraryRegistryUpgradeUtil.java
index f086212..1a74ab2 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryregistry/util/JSFLibraryRegistryUpgradeUtil.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryregistry/util/JSFLibraryRegistryUpgradeUtil.java
@@ -26,6 +26,7 @@
 
 /**
  * Utility for checking for, and upgrading the JSF Library Registry when the EMF model changes.
+ * @deprecated
  */
 public class JSFLibraryRegistryUpgradeUtil {	
 	static String v1Tov2UpgradeURL = "http://www.eclipse.org/JSFxxxxxxxxxxxxxxxxxxxxxx";
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryregistry/util/JSFLibraryRegistryXMLProcessor.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryregistry/util/JSFLibraryRegistryXMLProcessor.java
index 5607893..db7a4db 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryregistry/util/JSFLibraryRegistryXMLProcessor.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryregistry/util/JSFLibraryRegistryXMLProcessor.java
@@ -2,7 +2,7 @@
  * <copyright>
  * </copyright>
  *
- * $Id: JSFLibraryRegistryXMLProcessor.java,v 1.2 2007/04/04 18:50:17 cbateman Exp $
+ * $Id: JSFLibraryRegistryXMLProcessor.java,v 1.3 2008/11/04 01:28:34 gkessler Exp $
  */
 package org.eclipse.jst.jsf.core.internal.jsflibraryregistry.util;
 
@@ -17,6 +17,7 @@
  * <!-- begin-user-doc -->
  * <!-- end-user-doc -->
  * @generated
+ * @deprecated
  */
 public class JSFLibraryRegistryXMLProcessor extends XMLProcessor {
 	/**
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryregistry/util/MigrateV1toV2Operation.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryregistry/util/MigrateV1toV2Operation.java
index 7ea6339..1d021a8 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryregistry/util/MigrateV1toV2Operation.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryregistry/util/MigrateV1toV2Operation.java
@@ -26,6 +26,9 @@
 import org.eclipse.jst.jsf.core.internal.Messages;
 import org.eclipse.jst.jsf.core.internal.jsflibraryconfig.JSFLibraryRegistryUtil;
 
+/**
+ * @deprecated
+ */
 class MigrateV1toV2Operation extends VersionUpgradeOperation {
 
 	private final URI		_v1Registry;
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryregistry/util/UpgradeOperation.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryregistry/util/UpgradeOperation.java
index 130a358..e90d415 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryregistry/util/UpgradeOperation.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryregistry/util/UpgradeOperation.java
@@ -26,7 +26,7 @@
  * Encapsulates a chain of one or more version steps into a full upgrade.
  * 
  * @author cbateman
- *
+ * @deprecated
  */
 public class UpgradeOperation extends AbstractOperation {
 
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryregistry/util/UpgradeStatus.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryregistry/util/UpgradeStatus.java
index 4a75a1d..3dc3227 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryregistry/util/UpgradeStatus.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryregistry/util/UpgradeStatus.java
@@ -18,7 +18,7 @@
 
 /**
  * Communicates the status of the JSF Library Registry
- *
+ * @deprecated
  */
 public class UpgradeStatus extends Status
 {
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryregistry/util/VersionUpgradeOperation.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryregistry/util/VersionUpgradeOperation.java
index bd8f1c2..bf9928c 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryregistry/util/VersionUpgradeOperation.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryregistry/util/VersionUpgradeOperation.java
@@ -24,7 +24,7 @@
  * API rules
  * 
  * @author cbateman
- *
+ * @deprecated
  */
 public abstract class VersionUpgradeOperation extends AbstractOperation 
 {
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/messages.properties b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/messages.properties
index 86d55d0..3fde93b 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/messages.properties
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/messages.properties
@@ -22,11 +22,9 @@
 JSFLibraryConfigPersistData_SAVED_COMPLIB_NOT_FOUND=Saved JSF component library in {0} is unavailable in JSF Library Registry
 JSFLibraryClasspathContainer_NON_IMPL_LIBRARY=[JSF Library]
 JSFLibrariesContainerInitializer_missing_library=[missing JSF Library]
-JSFFacetInstallDataModelProvider_ValidateJSFImpl=A JSF implementation library has not been chosen
 JSFFacetInstallDataModelProvider_DupeJarValidation=Duplicated jar on classpath: {0}
 JSFFacetInstallDataModelProvider_ValidateConfigFilePath=The configuration file path is not valid
 JSFFacetInstallDataModelProvider_ValidateConfigFileEmpty=Specify a valid name and location for JSF configuration file
-JSFFacetInstallDataModelProvider_ClientImplValidationMsg=JSF Implementation library must be specified.
 JSFFacetInstallDataModelProvider_ValidateConfigFileRelative1=Configuration file must be specified relative to the project''s {0} folder
 JSFFacetInstallDataModelProvider_ValidateConfigFileRelative2=Configuration file must be located in the project''s {0} folder
 JSFFacetInstallDataModelProvider_INITIAL_VALIDATION_IMPL_TYPE=Select an implementation library.   If a server supplied library is chosen , the chosen server adapter must be capable of providing the JSF Implementation jars, or the application will not validate or compile.
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/project/facet/IJSFFacetInstallDataModelProperties.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/project/facet/IJSFFacetInstallDataModelProperties.java
index 8667868..3f5004f 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/project/facet/IJSFFacetInstallDataModelProperties.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/project/facet/IJSFFacetInstallDataModelProperties.java
@@ -23,21 +23,6 @@
     /**
      * TODO:
      */
-	public static final String IMPLEMENTATION_TYPE_PROPERTY_NAME = "IJSFFacetInstallDataModelProperties.IMPLEMENTATION_TYPE_PROPERTY_NAME"; //$NON-NLS-1$
-	
-    /**
-     * TODO:
-     */
-    public static final String IMPLEMENTATION = "IJSFFacetInstallDataModelProperties.IMPLEMENTATION"; //$NON-NLS-1$
-
-    /**
-     * TODO:
-     */
-    public static final String DEPLOY_IMPLEMENTATION = "IJSFFacetInstallDataModelProperties.DEPLOY_IMPLEMENTATION"; //$NON-NLS-1$
-
-    /**
-     * TODO:
-     */
     public static final String CONFIG_PATH = "IJSFFacetInstallDataModelProperties.CONFIG_PATH"; //$NON-NLS-1$
 
     /**
@@ -63,69 +48,11 @@
     /**
      * TODO:
      */
-    public static final String DEFAULT_IMPLEMENTATION_LIBRARY = "IJSFFacetInstallDataModelProperties.DEFAULT_IMPLEMENTATION_LIBRARY"; //$NON-NLS-1$
-
-    /**
-     * TODO:
-     */
-    public static final String IMPLEMENTATION_LIBRARIES = "IJSFFacetInstallDataModelProperties.IMPLEMENTATION_LIBRARIES"; //$NON-NLS-1$
+    public static final String LIBRARY_PROVIDER_DELEGATE = "IJSFFacetInstallDataModelProperties.LIBRARY_PROVIDER_DELEGATE"; //$NON-NLS-1$    
 
     /**
      * TODO:
      */
     public static final String COMPONENT_LIBRARIES = "IJSFFacetInstallDataModelProperties.COMPONENT_LIBRARIES"; //$NON-NLS-1$	 
     
-    /**
-     * Enumeration of implementation types
-     */
-    public enum IMPLEMENTATION_TYPE {
-    	
-    	/**
-    	 * Unknown
-    	 */
-    	UNKNOWN,
-    	/**
-    	 * Server supplied
-    	 */
-    	SERVER_SUPPLIED,
-    	/**
-    	 * Not supplied by the server.  The user is specifiying.
-    	 */
-    	USER_SPECIFIED,
-    	
-    	/**
-    	 * Not supplied by the server.  The user is specifiying.  Same as USER_SPECIFIED.
-    	 * @deprecated use USER_SPECIFIED
-    	 */
-    	CLIENT_SUPPLIED;
-    	
-    	/**
-    	 * @param type
-    	 * @return String value
-    	 */
-    	public static String getStringValue(final IMPLEMENTATION_TYPE type){
-    		if (type == null)
-    			return "UNKNOWN"; //$NON-NLS-1$
-    		if (type ==  SERVER_SUPPLIED)
-    			return "SERVER_SUPPLIED";//$NON-NLS-1$
-    		if (type == USER_SPECIFIED || type ==CLIENT_SUPPLIED )
-    			return "USER_SPECIFIED";//$NON-NLS-1$
-    		return "UNKNOWN"; //$NON-NLS-1$
-    	}
-    	
-    	/**
-    	 * @param type
-    	 * @return IMPLEMENTATION_TYPE
-    	 */
-    	public static IMPLEMENTATION_TYPE getValue(final String type){
-    		if (type == null)
-    			return UNKNOWN;
-    		if (type.equals("SERVER_SUPPLIED"))//$NON-NLS-1$
-    			return SERVER_SUPPLIED;
-    		if (type.equals("USER_SPECIFIED") || type.equals("CLIENT_SUPPLIED"))//$NON-NLS-1$// $NON-NLS-2$
-    			return USER_SPECIFIED;
-    		return UNKNOWN; 
-    	}
-    	
-    }
 }
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/project/facet/JSFFacetInstallDataModelProvider.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/project/facet/JSFFacetInstallDataModelProvider.java
index 3227c38..cc5b580 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/project/facet/JSFFacetInstallDataModelProvider.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/project/facet/JSFFacetInstallDataModelProvider.java
@@ -10,10 +10,8 @@
  *******************************************************************************/ 
 package org.eclipse.jst.jsf.core.internal.project.facet;
 
-import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.Iterator;
-import java.util.List;
 import java.util.Set;
 
 import org.eclipse.core.resources.IProject;
@@ -26,12 +24,13 @@
 import org.eclipse.jdt.core.IJavaProject;
 import org.eclipse.jdt.core.JavaCore;
 import org.eclipse.jdt.core.JavaModelException;
+import org.eclipse.jst.common.project.facet.core.libprov.IPropertyChangeListener;
+import org.eclipse.jst.common.project.facet.core.libprov.LibraryInstallDelegate;
 import org.eclipse.jst.j2ee.project.facet.IJ2EEModuleFacetInstallDataModelProperties;
 import org.eclipse.jst.jsf.core.IJSFCoreConstants;
 import org.eclipse.jst.jsf.core.internal.JSFCorePlugin;
 import org.eclipse.jst.jsf.core.internal.Messages;
 import org.eclipse.jst.jsf.core.internal.jsflibraryconfig.JSFLibraryInternalReference;
-import org.eclipse.jst.jsf.core.internal.jsflibraryconfig.JSFLibraryRegistryUtil;
 import org.eclipse.jst.jsf.core.internal.jsflibraryregistry.ArchiveFile;
 import org.eclipse.jst.jsf.core.internal.jsflibraryregistry.JSFLibrary;
 import org.eclipse.osgi.util.NLS;
@@ -40,6 +39,7 @@
 import org.eclipse.wst.common.componentcore.datamodel.properties.IFacetDataModelProperties;
 import org.eclipse.wst.common.frameworks.datamodel.IDataModel;
 import org.eclipse.wst.common.project.facet.core.IFacetedProjectWorkingCopy;
+import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion;
 import org.eclipse.wst.common.project.facet.core.IFacetedProject.Action;
 
 /**
@@ -51,37 +51,54 @@
 		FacetInstallDataModelProvider implements
 		IJSFFacetInstallDataModelProperties {
 
+    private LibraryInstallDelegate libraryInstallDelegate = null;
+    
+    private void initLibraryInstallDelegate()
+    {
+        final IFacetedProjectWorkingCopy fpjwc = (IFacetedProjectWorkingCopy) getProperty( FACETED_PROJECT_WORKING_COPY );
+        final IProjectFacetVersion fv = (IProjectFacetVersion) getProperty( FACET_VERSION );
+        
+        if( this.libraryInstallDelegate == null && fpjwc != null && fv != null )
+        {
+            this.libraryInstallDelegate = new LibraryInstallDelegate( fpjwc, fv );
+            
+            this.libraryInstallDelegate.addListener
+            ( 
+                new IPropertyChangeListener()
+                {
+                    public void propertyChanged( final String property,
+                                                 final Object oldValue,
+                                                 final Object newValue )
+                    {
+                        final IDataModel dm = getDataModel();
+    
+                        if( dm != null )
+                        {
+                            dm.notifyPropertyChange( LIBRARY_PROVIDER_DELEGATE, IDataModel.VALUE_CHG );
+                        }
+                    }
+                }
+            );
+        }
+    }
+    
 	private String 	errorMessage;
 	
 	public Set getPropertyNames() {
 		Set names = super.getPropertyNames();
-		names.add(IMPLEMENTATION_TYPE_PROPERTY_NAME);
-		names.add(IMPLEMENTATION);
-		names.add(DEPLOY_IMPLEMENTATION);
 		names.add(CONFIG_PATH);
 		names.add(SERVLET_NAME);
 		names.add(SERVLET_CLASSNAME);
 		names.add(SERVLET_URL_PATTERNS);
 		names.add(WEBCONTENT_DIR);
-		
-		names.add(IMPLEMENTATION_LIBRARIES);
+		names.add(LIBRARY_PROVIDER_DELEGATE);
 		names.add(COMPONENT_LIBRARIES);
-		names.add(DEFAULT_IMPLEMENTATION_LIBRARY);
 		
 		return names;
 	}
 
 	public Object getDefaultProperty(String propertyName) {
-		if (propertyName.equals(IMPLEMENTATION_TYPE_PROPERTY_NAME)){
-			return IMPLEMENTATION_TYPE.UNKNOWN;
-		}
-		else if (propertyName.equals(IMPLEMENTATION)) {
-			if (JSFLibraryRegistryUtil.getInstance().getJSFLibraryRegistry() == null)
-				return null;
-			return getDefaultImplementationLibrary();//JSFCorePlugin.getDefault().getJSFLibraryRegistry().getDefaultImplementation();
-		} else if (propertyName.equals(DEPLOY_IMPLEMENTATION)) {
-			return Boolean.TRUE;
-		} else if (propertyName.equals(CONFIG_PATH)) {
+		if (propertyName.equals(CONFIG_PATH)) {
 			return JSFUtils.JSF_DEFAULT_CONFIG_PATH; 
 		} else if (propertyName.equals(SERVLET_NAME)) {
 			return JSFUtils.JSF_DEFAULT_SERVLET_NAME;
@@ -93,37 +110,36 @@
 			return IJSFCoreConstants.JSF_CORE_FACET_ID;
 		} else if (propertyName.equals(WEBCONTENT_DIR)){
 			return "WebContent";  //not sure I need this //$NON-NLS-1$
+        } else if (propertyName.equals(LIBRARY_PROVIDER_DELEGATE)) {
+            return this.libraryInstallDelegate;
 		} else if (propertyName.equals(COMPONENT_LIBRARIES)) {
 			return new JSFLibraryInternalReference[0];
-		} else if (propertyName.equals(IMPLEMENTATION_LIBRARIES)) {
-			return getDefaultJSFImplementationLibraries();
-		} else if (propertyName.equals(DEFAULT_IMPLEMENTATION_LIBRARY)) {
-			return getDefaultImplementationLibrary();
 		}
 		return super.getDefaultProperty(propertyName);
 	}
 	
-	public IStatus validate(String name) {
+	@Override
+    public boolean propertySet( final String propertyName,
+                                final Object propertyValue )
+    {
+	    if( propertyName.equals( FACETED_PROJECT_WORKING_COPY ) || propertyName.equals( FACET_VERSION ) )
+	    {
+	        initLibraryInstallDelegate();
+	    }
+
+        return super.propertySet( propertyName, propertyValue );
+    }
+
+    public IStatus validate(String name) {
 		errorMessage = null;
-		if (name.equals(IMPLEMENTATION_TYPE_PROPERTY_NAME)) {
-			if (getProperty(IMPLEMENTATION_TYPE_PROPERTY_NAME) == IMPLEMENTATION_TYPE.UNKNOWN) {
-				return createErrorStatus(Messages.JSFFacetInstallDataModelProvider_INITIAL_VALIDATION_IMPL_TYPE);
-			}
-		}
-		else if (name.equals(IMPLEMENTATION)) {
-			if (getProperty(IMPLEMENTATION_TYPE_PROPERTY_NAME) == IMPLEMENTATION_TYPE.USER_SPECIFIED) {
-				JSFLibraryInternalReference lib = (JSFLibraryInternalReference)getProperty(IMPLEMENTATION);
-				IStatus status = validateImpl(lib.getLibrary());
-				if (!OK_STATUS.equals(status))
-					return status;
-					
-	            return validateClasspath();
-			}
-		} else if (name.equals(CONFIG_PATH)) {
+		if (name.equals(CONFIG_PATH)) {
 			return validateConfigLocation(getStringProperty(CONFIG_PATH));
 		} else if (name.equals(SERVLET_NAME)) {			
 			return validateServletName(getStringProperty(SERVLET_NAME));
 		}
+		else if (name.equals(LIBRARY_PROVIDER_DELEGATE)) {
+		    return ((LibraryInstallDelegate) getProperty(LIBRARY_PROVIDER_DELEGATE)).validate();
+		}
 		else if (name.equals(COMPONENT_LIBRARIES)) {
 			return validateClasspath();
 		}
@@ -143,16 +159,6 @@
 		return OK_STATUS;
 	}
 
-	private IStatus validateImpl(JSFLibrary impl) {
-		if (impl == null) {
-			errorMessage = Messages.JSFFacetInstallDataModelProvider_ValidateJSFImpl; 
-		}
-		if (errorMessage != null) {
-			return createErrorStatus(errorMessage);
-		}
-		return OK_STATUS;
-	}
-	
 	private IStatus validateConfigLocation(String text) {
 		if (text == null || text.trim().equals("")) { //$NON-NLS-1$
 			errorMessage = Messages.JSFFacetInstallDataModelProvider_ValidateConfigFileEmpty;
@@ -220,19 +226,6 @@
 		
 		IStatus status = null;
 		
-		JSFLibraryInternalReference ref = null;
-		if (getProperty(IMPLEMENTATION_TYPE_PROPERTY_NAME) == IMPLEMENTATION_TYPE.USER_SPECIFIED) {
-			ref = ((JSFLibraryInternalReference)getProperty(IJSFFacetInstallDataModelProperties.IMPLEMENTATION));
-			if (ref != null){
-				status = checkForDupeArchiveFiles(jars, ((JSFLibraryInternalReference)getProperty(IJSFFacetInstallDataModelProperties.IMPLEMENTATION)).getLibrary());
-				if (!OK_STATUS.equals(status)){
-					return status;
-				}
-			} else {
-				return createErrorStatus(Messages.JSFFacetInstallDataModelProvider_ClientImplValidationMsg);
-			}
-		}
-
 		JSFLibraryInternalReference[] compLibs = (JSFLibraryInternalReference[]) getProperty(IJSFFacetInstallDataModelProperties.COMPONENT_LIBRARIES);
 		if (compLibs != null){
 			for (int i=0;i<compLibs.length;i++){
@@ -350,24 +343,4 @@
 		return null;
 	}
 
-	private List getDefaultJSFImplementationLibraries() {
-		List list = new ArrayList();
-		if (JSFLibraryRegistryUtil.getInstance().getJSFLibraryRegistry() != null) {
-			JSFLibrary jsfLib = JSFLibraryRegistryUtil.getInstance().getJSFLibraryRegistry().getDefaultImplementation();
-			if (jsfLib != null){
-				JSFLibraryInternalReference prjJSFLib = new JSFLibraryInternalReference(jsfLib, true, true);
-				list.add(prjJSFLib);
-			}
-		}
-		return list;
-	}	
-	
-	private JSFLibraryInternalReference getDefaultImplementationLibrary() {		
-		if (JSFLibraryRegistryUtil.getInstance().getJSFLibraryRegistry() != null) {
-			JSFLibrary jsfLib = JSFLibraryRegistryUtil.getInstance().getJSFLibraryRegistry().getDefaultImplementation();
-			return new JSFLibraryInternalReference(jsfLib, true, true);	
-		}
-		return null;	
-	}	
-	
 }
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/project/facet/JSFFacetInstallDelegate.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/project/facet/JSFFacetInstallDelegate.java
index b96e96f..39594e8 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/project/facet/JSFFacetInstallDelegate.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/project/facet/JSFFacetInstallDelegate.java
@@ -20,16 +20,9 @@
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.NullProgressMonitor;
 import org.eclipse.core.runtime.Path;
-import org.eclipse.jdt.core.IClasspathAttribute;
-import org.eclipse.jdt.core.IClasspathEntry;
-import org.eclipse.jdt.core.IJavaProject;
-import org.eclipse.jdt.core.JavaCore;
-import org.eclipse.jdt.core.JavaModelException;
-import org.eclipse.jst.common.project.facet.core.ClasspathHelper;
-import org.eclipse.jst.j2ee.classpathdep.ClasspathDependencyUtil;
-import org.eclipse.jst.j2ee.classpathdep.IClasspathDependencyConstants;
+import org.eclipse.jst.common.project.facet.core.libprov.LibraryInstallDelegate;
 import org.eclipse.jst.j2ee.internal.J2EEVersionConstants;
 import org.eclipse.jst.j2ee.model.IModelProvider;
 import org.eclipse.jst.j2ee.model.ModelProviderManager;
@@ -38,9 +31,6 @@
 import org.eclipse.jst.jsf.core.IJSFCoreConstants;
 import org.eclipse.jst.jsf.core.internal.JSFCorePlugin;
 import org.eclipse.jst.jsf.core.internal.Messages;
-import org.eclipse.jst.jsf.core.internal.jsflibraryconfig.JSFLibraryInternalReference;
-import org.eclipse.jst.jsf.core.internal.jsflibraryconfig.JSFLibraryRegistryUtil;
-import org.eclipse.jst.jsf.core.jsflibraryconfiguration.JSFLibraryConfigurationHelper;
 import org.eclipse.osgi.util.NLS;
 import org.eclipse.wst.common.componentcore.ComponentCore;
 import org.eclipse.wst.common.frameworks.datamodel.IDataModel;
@@ -93,10 +83,13 @@
 				}
 			}
 			
-			// Create JSF Libs as classpath containers and set WTP dependencies
-			// as required
-			createClasspathEntries(project, fv, config, monitor);
-
+//			// Create JSF Libs as classpath containers and set WTP dependencies
+//			// as required
+//			createClasspathEntries(project, fv, config, monitor);
+			
+			//Configure libraries
+			( (LibraryInstallDelegate) config.getProperty( IJSFFacetInstallDataModelProperties.LIBRARY_PROVIDER_DELEGATE ) ).execute( new NullProgressMonitor() );
+			
 			// Create config file
 			createConfigFile(project, fv, config, monitor);
 
@@ -114,84 +107,64 @@
 		}
 	}
 
-	/**
-	 * Adds the JSF Library references specified in the wizard to the project as
-	 * classpath containers. Marks the containers as J2EE module dependencies as
-	 * required
-	 * 
-	 * @param project
-	 * @param config
-	 * @param monitor
-	 */
-	private void createClasspathEntries(final IProject project, final IProjectFacetVersion fv, final IDataModel config, final IProgressMonitor monitor) {
-		IJavaProject javaProject = JavaCore.create(project);	
-		List cpEntries = new ArrayList();
-		try {
-			for (int i=0;i<javaProject.getRawClasspath().length;i++){
-				cpEntries.add(javaProject.getRawClasspath()[i]);
-			}
-		} catch (JavaModelException e) {
-			JSFCorePlugin.log(e, "Unable to read classpath"); //$NON-NLS-1$
-		}
-		
-		IPath path, cp = null;
-		IClasspathEntry entry = null;
-		JSFLibraryInternalReference libref = null;
-		
-		//Implementation
-		if (config.getProperty(IJSFFacetInstallDataModelProperties.IMPLEMENTATION_TYPE_PROPERTY_NAME) 
-				== IJSFFacetInstallDataModelProperties.IMPLEMENTATION_TYPE.USER_SPECIFIED){
-			cp = new Path(JSFLibraryConfigurationHelper.JSF_LIBRARY_CP_CONTAINER_ID);		
-			libref = (JSFLibraryInternalReference)config.getProperty(IJSFFacetInstallDataModelProperties.IMPLEMENTATION);
-			path = cp.append(new Path(libref.getID()));
-			entry = getNewCPEntry(path, libref);		
-			cpEntries.add(entry);
-		} 
+//	/**
+//	 * Adds the JSF Library references specified in the wizard to the project as
+//	 * classpath containers. Marks the containers as J2EE module dependencies as
+//	 * required
+//	 * 
+//	 * @param project
+//	 * @param config
+//	 * @param monitor
+//	 */
+//	private void createClasspathEntries(final IProject project, final IProjectFacetVersion fv, final IDataModel config, final IProgressMonitor monitor) throws CoreException {
+//		IJavaProject javaProject = JavaCore.create(project);	
+//		List cpEntries = new ArrayList();
+//		try {
+//			for (int i=0;i<javaProject.getRawClasspath().length;i++){
+//				cpEntries.add(javaProject.getRawClasspath()[i]);
+//			}
+//		} catch (JavaModelException e) {
+//			JSFCorePlugin.log(e, "Unable to read classpath"); //$NON-NLS-1$
+//		}
+//		
+//		IPath path, cp = null;
+//		IClasspathEntry entry = null;
+//		JSFLibraryInternalReference libref = null;
+//		
+//		JSFLibraryInternalReference[] compLibs = (JSFLibraryInternalReference[])config.getProperty(IJSFFacetInstallDataModelProperties.COMPONENT_LIBRARIES);
+//		for (int i=0;i<compLibs.length;i++){
+//			libref = compLibs[i];		
+//			cp = new Path(JSFLibraryConfigurationHelper.JSF_LIBRARY_CP_CONTAINER_ID);		
+//			path = cp.append(new Path(libref.getID()));
+//			entry = getNewCPEntry(path, libref);
+//			if (entry != null)
+//				cpEntries.add(entry);
+//		}	
+//
+//		JSFLibraryRegistryUtil.setRawClasspath(javaProject, cpEntries, monitor);
+//		
+//		( (LibraryInstallDelegate) config.getProperty( IJSFFacetInstallDataModelProperties.LIBRARY_PROVIDER_DELEGATE ) ).execute( new NullProgressMonitor() );
+//	}
 
-		JSFLibraryInternalReference[] compLibs = (JSFLibraryInternalReference[])config.getProperty(IJSFFacetInstallDataModelProperties.COMPONENT_LIBRARIES);
-		for (int i=0;i<compLibs.length;i++){
-			libref = compLibs[i];		
-			cp = new Path(JSFLibraryConfigurationHelper.JSF_LIBRARY_CP_CONTAINER_ID);		
-			path = cp.append(new Path(libref.getID()));
-			entry = getNewCPEntry(path, libref);
-			if (entry != null)
-				cpEntries.add(entry);
-		}	
-
-		JSFLibraryRegistryUtil.setRawClasspath(javaProject, cpEntries, monitor);
-	
-		//allow for the raw classpath to be set from JSF Libs before setting the server supplied impl libs from the server, if available
-		if (config.getProperty(IJSFFacetInstallDataModelProperties.IMPLEMENTATION_TYPE_PROPERTY_NAME) 
-				== IJSFFacetInstallDataModelProperties.IMPLEMENTATION_TYPE.SERVER_SUPPLIED) {
-			try {
-				ClasspathHelper.removeClasspathEntries(project, fv);
-				ClasspathHelper.addClasspathEntries(project, fv);
-			} catch (CoreException e) {
-				JSFCorePlugin.log(IStatus.ERROR, "Unable to add server supplied implementation to the classpath.", e);//$NON-NLS-1$
-			}
-		}
-		
-	}
-
-	/**
-	 * @param path
-	 * @param lib
-	 * @return creates new IClasspathEntry with WTP dependency attribute set, if required
-	 */
-	private IClasspathEntry getNewCPEntry(final IPath path, final JSFLibraryInternalReference lib) {
-		
-		IClasspathEntry entry = null;
-		if (lib.isCheckedToBeDeployed()){
-			IClasspathAttribute depAttrib = JavaCore.newClasspathAttribute(IClasspathDependencyConstants.CLASSPATH_COMPONENT_DEPENDENCY,
-					 ClasspathDependencyUtil.getDefaultRuntimePath(true).toString());
-			entry = JavaCore.newContainerEntry(path,null, new IClasspathAttribute[]{depAttrib}, true);
-		}
-		else {
-			entry = JavaCore.newContainerEntry(path);
-		}
-		
-		return entry;
-	}		
+//	/**
+//	 * @param path
+//	 * @param lib
+//	 * @return creates new IClasspathEntry with WTP dependency attribute set, if required
+//	 */
+//	private IClasspathEntry getNewCPEntry(final IPath path, final JSFLibraryInternalReference lib) {
+//		
+//		IClasspathEntry entry = null;
+//		if (lib.isCheckedToBeDeployed()){
+//			IClasspathAttribute depAttrib = JavaCore.newClasspathAttribute(IClasspathDependencyConstants.CLASSPATH_COMPONENT_DEPENDENCY,
+//					 ClasspathDependencyUtil.getDefaultRuntimePath(true).toString());
+//			entry = JavaCore.newContainerEntry(path,null, new IClasspathAttribute[]{depAttrib}, true);
+//		}
+//		else {
+//			entry = JavaCore.newContainerEntry(path);
+//		}
+//		
+//		return entry;
+//	}		
 
 	/**
 	 * @param config
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/project/facet/JSFFacetUninstallConfig.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/project/facet/JSFFacetUninstallConfig.java
new file mode 100644
index 0000000..f0d06d2
--- /dev/null
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/project/facet/JSFFacetUninstallConfig.java
@@ -0,0 +1,57 @@
+package org.eclipse.jst.jsf.core.internal.project.facet;
+
+import org.eclipse.jst.common.project.facet.core.libprov.LibraryUninstallDelegate;
+import org.eclipse.wst.common.project.facet.core.ActionConfig;
+import org.eclipse.wst.common.project.facet.core.IActionConfigFactory;
+import org.eclipse.wst.common.project.facet.core.IFacetedProjectWorkingCopy;
+import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion;
+
+public class JSFFacetUninstallConfig
+
+    extends ActionConfig
+    
+{
+    private LibraryUninstallDelegate librariesUninstallDelegate = null;
+    
+    public LibraryUninstallDelegate getLibrariesUninstallDelegate()
+    {
+        return this.librariesUninstallDelegate;
+    }
+
+    @Override
+    public void setFacetedProjectWorkingCopy( final IFacetedProjectWorkingCopy fpjwc )
+    {
+        super.setFacetedProjectWorkingCopy( fpjwc );
+        init();
+    }
+
+    @Override
+    public void setProjectFacetVersion( final IProjectFacetVersion fv )
+    {
+        super.setProjectFacetVersion( fv );
+        init();
+    }
+    
+    private void init()
+    {
+        final IFacetedProjectWorkingCopy fpjwc = getFacetedProjectWorkingCopy();
+        final IProjectFacetVersion fv = getProjectFacetVersion();
+        
+        if( this.librariesUninstallDelegate == null && fpjwc != null && fv != null )
+        {
+            this.librariesUninstallDelegate = new LibraryUninstallDelegate( fpjwc, fv );
+        }
+    }
+    
+    public static final class Factory
+        
+        implements IActionConfigFactory
+        
+    {
+        public Object create()
+        {
+            return new JSFFacetUninstallConfig();
+        }
+    }
+    
+}
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/project/facet/JSFFacetUninstallDelegate.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/project/facet/JSFFacetUninstallDelegate.java
index 892f8f3..2e0db7d 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/project/facet/JSFFacetUninstallDelegate.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/project/facet/JSFFacetUninstallDelegate.java
@@ -10,29 +10,19 @@
  *******************************************************************************/ 
 package org.eclipse.jst.jsf.core.internal.project.facet;
 
-import java.util.ArrayList;
 import java.util.Iterator;
-import java.util.List;
 
 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.core.runtime.Path;
-import org.eclipse.jdt.core.IClasspathEntry;
-import org.eclipse.jdt.core.IJavaProject;
-import org.eclipse.jdt.core.JavaCore;
-import org.eclipse.jdt.core.JavaModelException;
-import org.eclipse.jst.common.project.facet.core.ClasspathHelper;
 import org.eclipse.jst.j2ee.model.IModelProvider;
 import org.eclipse.jst.j2ee.model.ModelProviderManager;
 import org.eclipse.jst.javaee.core.ParamValue;
 import org.eclipse.jst.javaee.web.Servlet;
 import org.eclipse.jst.javaee.web.WebApp;
-import org.eclipse.jst.jsf.core.internal.JSFCorePlugin;
 import org.eclipse.jst.jsf.core.internal.Messages;
-import org.eclipse.jst.jsf.core.jsflibraryconfiguration.JSFLibraryConfigurationHelper;
 import org.eclipse.osgi.util.NLS;
 import org.eclipse.wst.common.project.facet.core.IDelegate;
 import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion;
@@ -68,10 +58,7 @@
 				}
 				
 				// Remove JSF Libraries
-				removeJSFLibraries(project, fv, monitor);
-				
-				//Remove Runtime contributed JSF classpath entries
-				removeRuntimeContributedJSFClasspathEntries(project, fv, monitor);
+				( (JSFFacetUninstallConfig) config ).getLibrariesUninstallDelegate().execute( null );
 				
 				// remove servlet stuff from web.xml
 				uninstallJSFReferencesFromWebApp(project, monitor);
@@ -87,45 +74,6 @@
 			}
 		}
 	}
-
-	/**
-	 * Removes JSF Lib CP Containers from project
-	 * @param project
-	 * @param monitor
-	 */
-	private void removeJSFLibraries(final IProject project, final IProjectFacetVersion fv, final IProgressMonitor monitor) {
-		 final IJavaProject jproj = JavaCore.create(project);
-		 List keptEntries = new ArrayList();
-		 try {
-			IClasspathEntry[] entries = jproj.getRawClasspath();
-			  keptEntries = new ArrayList();
-			 for (int i=0;i<entries.length;i++){
-				 IClasspathEntry entry = entries[i];
-				 if ( !(JSFLibraryConfigurationHelper.isJSFLibraryContainer(entry)))
-					 keptEntries.add(entry);
-			 }
-		} catch (JavaModelException e) {
-			JSFCorePlugin.log(e, "Cannot get classpath entries to remove JSF Libraries for: "+project.getName()); //$NON-NLS-1$
-		}
-		 
-		 if (keptEntries.size() > 0){
-			 try {
-				jproj.setRawClasspath((IClasspathEntry[])keptEntries.toArray(new IClasspathEntry[0]), monitor);
-			} catch (JavaModelException e) {
-				JSFCorePlugin.log(e, "Exception occured while removing JSF Libraries during JSF Facet uninstall"); //$NON-NLS-1$
-			}
-		 }	
-		
-
-	}
-	
-	private void removeRuntimeContributedJSFClasspathEntries(final IProject project, final IProjectFacetVersion fv, final IProgressMonitor monitor) {
-		try {
-			ClasspathHelper.removeClasspathEntries(project, fv);				
-		} catch (CoreException e) {
-			JSFCorePlugin.log(IStatus.ERROR, "Unable to remove server supplied implementation from the classpath.", e);//$NON-NLS-1$
-		}
-	}
 	
 	private void uninstallJSFReferencesFromWebApp(final IProject project,
 			final IProgressMonitor monitor) {
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/project/facet/LegacyJSFLibraryProviderDetector.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/project/facet/LegacyJSFLibraryProviderDetector.java
new file mode 100644
index 0000000..e86a3a6
--- /dev/null
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/project/facet/LegacyJSFLibraryProviderDetector.java
@@ -0,0 +1,89 @@
+/******************************************************************************
+ * Copyright (c) 2008 Oracle
+ * 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 implementation and ongoing maintenance
+ ******************************************************************************/
+
+package org.eclipse.jst.jsf.core.internal.project.facet;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.jdt.core.IClasspathEntry;
+import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.jdt.core.JavaCore;
+import org.eclipse.jst.common.project.facet.core.libprov.ILibraryProvider;
+import org.eclipse.jst.common.project.facet.core.libprov.LegacyLibraryProviderDetector;
+import org.eclipse.jst.common.project.facet.core.libprov.LibraryProviderFramework;
+import org.eclipse.jst.jsf.core.internal.JSFCorePlugin;
+import org.eclipse.jst.jsf.core.internal.jsflibraryconfig.JSFLibraryRegistryUtil;
+import org.eclipse.jst.jsf.core.internal.jsflibraryregistry.JSFLibrary;
+import org.eclipse.jst.jsf.core.jsflibraryconfiguration.JSFLibraryConfigurationHelper;
+import org.eclipse.wst.common.project.facet.core.IProjectFacet;
+
+/**
+ * @author <a href="mailto:konstantin.komissarchik@oracle.com">Konstantin Komissarchik</a>
+ */
+
+public final class LegacyJSFLibraryProviderDetector
+
+    extends LegacyLibraryProviderDetector
+    
+{
+    private static final String LEGACY_JSF_LIBRARY_PROVIDER_ID 
+        = "legacy-jsf-library-provider"; //$NON-NLS-1$
+
+    @Override
+    public ILibraryProvider detect( final IProject project,
+                                    final IProjectFacet facet )
+    {
+        try
+        {
+            final IJavaProject jproj = JavaCore.create( project );
+            
+            for( IClasspathEntry cpe : jproj.getRawClasspath() )
+            {
+                if( detect( cpe ) )
+                {
+                    return LibraryProviderFramework.getProvider( LEGACY_JSF_LIBRARY_PROVIDER_ID );
+                }
+            }
+        }
+        catch( Exception e )
+        {
+            JSFCorePlugin.log( e, e.getMessage() );
+        }
+
+        return null;
+    }
+    
+    public static boolean detect( final IClasspathEntry cpe )
+    {
+        if( cpe.getEntryKind() == IClasspathEntry.CPE_CONTAINER )
+        {
+            final IPath path = cpe.getPath();
+            
+            if( isJSFLibraryContainer( path ) ) 
+            {
+                String libId = path.lastSegment();
+                JSFLibrary ref = JSFLibraryRegistryUtil.getInstance().getJSFLibraryRegistry().getJSFLibraryByID(libId);
+                
+                if( ref != null && ref.isImplementation() )
+                {
+                    return true;
+                }
+            }
+        }
+        
+        return false;
+    }
+    
+    private static boolean isJSFLibraryContainer(IPath path) {
+        return path != null && path.segmentCount() == 2 && JSFLibraryConfigurationHelper.JSF_LIBRARY_CP_CONTAINER_ID.equals(path.segment(0));
+    }
+    
+}
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/project/facet/LegacyJSFLibraryProviderUninstallOperation.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/project/facet/LegacyJSFLibraryProviderUninstallOperation.java
new file mode 100644
index 0000000..1d1eddc
--- /dev/null
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/project/facet/LegacyJSFLibraryProviderUninstallOperation.java
@@ -0,0 +1,68 @@
+/******************************************************************************
+ * Copyright (c) 2008 Oracle
+ * 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 implementation and ongoing maintenance
+ ******************************************************************************/
+
+package org.eclipse.jst.jsf.core.internal.project.facet;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.jdt.core.IClasspathEntry;
+import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.jdt.core.JavaCore;
+import org.eclipse.jst.common.project.facet.core.libprov.LibraryProviderOperation;
+import org.eclipse.jst.common.project.facet.core.libprov.LibraryProviderOperationConfig;
+
+/**
+ * @author <a href="mailto:konstantin.komissarchik@oracle.com">Konstantin Komissarchik</a>
+ */
+
+public final class LegacyJSFLibraryProviderUninstallOperation
+
+    extends LibraryProviderOperation
+    
+{
+    public void execute( final LibraryProviderOperationConfig config,
+                         final IProgressMonitor monitor )
+    
+        throws CoreException
+        
+    {
+        monitor.beginTask( "", 1 );
+        
+        try
+        {
+            final IProject project = config.getFacetedProject().getProject();
+            final IJavaProject jproj = JavaCore.create( project );
+            final List<IClasspathEntry> newcp = new ArrayList<IClasspathEntry>();
+            
+            for( IClasspathEntry cpe : jproj.getRawClasspath() )
+            {
+                if( ! LegacyJSFLibraryProviderDetector.detect( cpe ) )
+                {
+                    newcp.add( cpe );
+                }
+            }
+            
+            final IClasspathEntry[] array = newcp.toArray( new IClasspathEntry[ newcp.size() ] );
+            jproj.setRawClasspath( array, null );
+            
+            monitor.worked( 1 );
+        }
+        finally
+        {
+            monitor.done();
+        }
+    }
+    
+}
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/jsflibraryconfiguration/JSFLibraryConfigurationHelper.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/jsflibraryconfiguration/JSFLibraryConfigurationHelper.java
index dc851a9..4e73b2b 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/jsflibraryconfiguration/JSFLibraryConfigurationHelper.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/jsflibraryconfiguration/JSFLibraryConfigurationHelper.java
@@ -27,6 +27,7 @@
  * 
  * <p><b>Provisional API - subject to change</b></p>
  * @since WTP JSF 1.0
+ * @deprecated
  */
 public final class JSFLibraryConfigurationHelper {
 	/**
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/jsflibraryconfiguration/JSFLibraryReference.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/jsflibraryconfiguration/JSFLibraryReference.java
index 9c77f03..17fe475 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/jsflibraryconfiguration/JSFLibraryReference.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/jsflibraryconfiguration/JSFLibraryReference.java
@@ -18,6 +18,7 @@
  * Represents a reference to a JSF Library on a project
  * 
  * <p><b>Provisional API - subject to change</b></p>
+ * @deprecated
  */
 public abstract interface JSFLibraryReference {
 	/**
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/jsflibraryconfiguration/JSFLibraryReferencePluginProvided.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/jsflibraryconfiguration/JSFLibraryReferencePluginProvided.java
index c12f3c2..efa98e0 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/jsflibraryconfiguration/JSFLibraryReferencePluginProvided.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/jsflibraryconfiguration/JSFLibraryReferencePluginProvided.java
@@ -14,6 +14,8 @@
  * A reference to a plugin-defined JSF Library
  *
  * <p><b>Provisional API - subject to change</b></p>
+ * 
+ * @deprecated
  */
 @SuppressWarnings("deprecation")
 public interface JSFLibraryReferencePluginProvided extends JSFLibraryReferenceUserSpecified, JSFLibraryReferenceUserDefined {
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/jsflibraryconfiguration/JSFLibraryReferenceServerSupplied.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/jsflibraryconfiguration/JSFLibraryReferenceServerSupplied.java
index b03ece3..5ae119f 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/jsflibraryconfiguration/JSFLibraryReferenceServerSupplied.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/jsflibraryconfiguration/JSFLibraryReferenceServerSupplied.java
@@ -15,6 +15,8 @@
  * server
  * 
  * <p><b>Provisional API - subject to change</b></p>
+ * 
+ * @deprecated
  */
 public interface JSFLibraryReferenceServerSupplied extends
 		JSFLibraryReference {
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/jsflibraryconfiguration/JSFLibraryReferenceUserSpecified.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/jsflibraryconfiguration/JSFLibraryReferenceUserSpecified.java
index c0ba3a8..a65cbab 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/jsflibraryconfiguration/JSFLibraryReferenceUserSpecified.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/jsflibraryconfiguration/JSFLibraryReferenceUserSpecified.java
@@ -15,6 +15,8 @@
  * Represents an reference to a user specified JSF Library
  * 
  * <p><b>Provisional API - subject to change</b></p>
+ * 
+ * @deprecated
  */
 public interface JSFLibraryReferenceUserSpecified extends JSFLibraryReference {
 	//
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/jsflibraryconfiguration/JSFVersion.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/jsflibraryconfiguration/JSFVersion.java
index b4e14d4..244f00c 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/jsflibraryconfiguration/JSFVersion.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/jsflibraryconfiguration/JSFVersion.java
@@ -14,6 +14,8 @@
  * Enumeration of JavaServer Faces Versions
  *
  * <p><b>Provisional API - subject to change</b></p>
+ * 
+ * @deprecated
  */
 public enum JSFVersion {
 	
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/jsflibraryconfiguration/internal/AbstractJSFLibraryReferenceImpl.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/jsflibraryconfiguration/internal/AbstractJSFLibraryReferenceImpl.java
index ad6d8fe..c6d5cf9 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/jsflibraryconfiguration/internal/AbstractJSFLibraryReferenceImpl.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/jsflibraryconfiguration/internal/AbstractJSFLibraryReferenceImpl.java
@@ -29,7 +29,7 @@
 import org.eclipse.jst.jsf.core.jsflibraryconfiguration.JSFVersion;
 /**
  * @author gekessle
- *
+ * @deprecated
  */
 public abstract class AbstractJSFLibraryReferenceImpl implements JSFLibraryReference {
 	
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/jsflibraryconfiguration/internal/JSFLibraryReferenceFacadeFactory.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/jsflibraryconfiguration/internal/JSFLibraryReferenceFacadeFactory.java
index cb15c67..5205610 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/jsflibraryconfiguration/internal/JSFLibraryReferenceFacadeFactory.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/jsflibraryconfiguration/internal/JSFLibraryReferenceFacadeFactory.java
@@ -21,6 +21,7 @@
 
 /**
  * Factory for producing facade objects for references to the internal EMF JSF Library classes
+ * @deprecated
  */
 public class JSFLibraryReferenceFacadeFactory {
 	/**
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/jsflibraryconfiguration/internal/JSFLibraryReferencePluginProvidedImpl.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/jsflibraryconfiguration/internal/JSFLibraryReferencePluginProvidedImpl.java
index bb847ae..bde1b6b 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/jsflibraryconfiguration/internal/JSFLibraryReferencePluginProvidedImpl.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/jsflibraryconfiguration/internal/JSFLibraryReferencePluginProvidedImpl.java
@@ -15,7 +15,7 @@
 import org.eclipse.jst.jsf.core.jsflibraryconfiguration.JSFLibraryReferencePluginProvided;
 
 /**
- *
+ * @deprecated
  */
 public class JSFLibraryReferencePluginProvidedImpl extends AbstractJSFLibraryReferenceImpl implements JSFLibraryReferencePluginProvided {
 
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/jsflibraryconfiguration/internal/JSFLibraryReferenceServerSuppliedImpl.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/jsflibraryconfiguration/internal/JSFLibraryReferenceServerSuppliedImpl.java
index 6ab76ef..b85543a 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/jsflibraryconfiguration/internal/JSFLibraryReferenceServerSuppliedImpl.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/jsflibraryconfiguration/internal/JSFLibraryReferenceServerSuppliedImpl.java
@@ -16,7 +16,7 @@
 
 /**
  * @author gekessle
- *
+ * @deprecated
  */
 public class JSFLibraryReferenceServerSuppliedImpl 
 	extends AbstractJSFLibraryReferenceImpl 
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/jsflibraryconfiguration/internal/JSFLibraryReferenceUserSpecifiedImpl.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/jsflibraryconfiguration/internal/JSFLibraryReferenceUserSpecifiedImpl.java
index 833ed20..4652277 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/jsflibraryconfiguration/internal/JSFLibraryReferenceUserSpecifiedImpl.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/jsflibraryconfiguration/internal/JSFLibraryReferenceUserSpecifiedImpl.java
@@ -16,7 +16,7 @@
 
 /**
  * Implementation of a reference to a user specified JSF Library  
- *
+ * @deprecated
  */
 @SuppressWarnings("deprecation")
 public class JSFLibraryReferenceUserSpecifiedImpl extends AbstractJSFLibraryReferenceImpl implements JSFLibraryReferenceUserSpecified, JSFLibraryReferenceUserDefined{
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/jsflibraryregistry/PluginProvidedJSFLibraryArchiveFilesDelegate.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/jsflibraryregistry/PluginProvidedJSFLibraryArchiveFilesDelegate.java
index e260f69..a298df4 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/jsflibraryregistry/PluginProvidedJSFLibraryArchiveFilesDelegate.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/jsflibraryregistry/PluginProvidedJSFLibraryArchiveFilesDelegate.java
@@ -26,6 +26,7 @@
  *
  * <p><b>Provisional API - subject to change</b></p>
  * 
+ * @deprecated
  */
 public abstract class PluginProvidedJSFLibraryArchiveFilesDelegate {
 	private PluginProvidedJSFLibraryCreationHelper2 helper;
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/jsflibraryregistry/internal/PluginProvidedJSFLibraryCreationHelper2.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/jsflibraryregistry/internal/PluginProvidedJSFLibraryCreationHelper2.java
index 7c280ea..723f0cd 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/jsflibraryregistry/internal/PluginProvidedJSFLibraryCreationHelper2.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/jsflibraryregistry/internal/PluginProvidedJSFLibraryCreationHelper2.java
@@ -28,6 +28,7 @@
  * <br>
  * 
  * @author Gerry Kessler - Oracle
+ * @deprecated
  */
 public final class PluginProvidedJSFLibraryCreationHelper2 {
 	private PluginProvidedJSFLibrary newLib;
diff --git a/jsf/plugins/org.eclipse.jst.jsf.ui/META-INF/MANIFEST.MF b/jsf/plugins/org.eclipse.jst.jsf.ui/META-INF/MANIFEST.MF
index 7faef7e..139be70 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.ui/META-INF/MANIFEST.MF
+++ b/jsf/plugins/org.eclipse.jst.jsf.ui/META-INF/MANIFEST.MF
@@ -27,7 +27,9 @@
  org.eclipse.jst.jsp.core;bundle-version="[1.1.0,2.0.0)",
  org.eclipse.wst.validation;bundle-version="[1.1.0,2.0.0)",
  org.eclipse.jst.jsf.common.ui;bundle-version="[1.0.1,2.0.0)",
- org.eclipse.ui.ide;bundle-version="[3.4.0,4.0.0)"
+ org.eclipse.ui.ide;bundle-version="[3.4.0,4.0.0)",
+ org.eclipse.jst.common.project.facet.ui;bundle-version="[1.3.1,2.0.0)",
+ org.eclipse.jst.common.project.facet.core;bundle-version="[1.3.100,2.0.0)"
 Bundle-ActivationPolicy: lazy
 Export-Package: org.eclipse.jst.jsf.ui.internal;x-friends:="org.eclipse.jst.jsf.ui.tests",
  org.eclipse.jst.jsf.ui.internal.classpath;x-friends:="org.eclipse.jst.jsf.ui.tests",
diff --git a/jsf/plugins/org.eclipse.jst.jsf.ui/plugin.properties b/jsf/plugins/org.eclipse.jst.jsf.ui/plugin.properties
index 9de0b95..3775520 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.ui/plugin.properties
+++ b/jsf/plugins/org.eclipse.jst.jsf.ui/plugin.properties
@@ -15,12 +15,9 @@
 jsf.library.reference=JSF Library References
 jsf.library.wizard.name=JSF Library
 
-preferencepage.jsflibraries.name=Libraries
 preferencepage.jsfvalidation.name=Validation
 preferencepage.jsf.name=JavaServer Faces Tools
 
-classpathContainerPage.name.0 = JSF Libraries
-
 jsf.ui.views.category.name=JavaServer Faces
 
 jsf.ui.views.componentview.name=JSF Component Tree
@@ -42,4 +39,6 @@
 NewJSFPage_xhtml_xmlsyntax_description=JSP with xhtml markup, xml style syntax and default view setup
 
 NewELExpression=New JSF EL Expression
-NewELExpression_description=Create a new attribute value with #{}
\ No newline at end of file
+NewELExpression_description=Create a new attribute value with #{}
+
+jsf.library.property.page = Java Server Faces
diff --git a/jsf/plugins/org.eclipse.jst.jsf.ui/plugin.xml b/jsf/plugins/org.eclipse.jst.jsf.ui/plugin.xml
index b1306b3..ff6fa97 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.ui/plugin.xml
+++ b/jsf/plugins/org.eclipse.jst.jsf.ui/plugin.xml
@@ -6,11 +6,6 @@
         point="org.eclipse.ui.preferencePages">
      <page
            category="org.eclipse.jst.jsf.ui.JSFRootPage"
-           class="org.eclipse.jst.jsf.ui.internal.classpath.JSFLibrariesPreferencePage"
-           id="org.eclipse.jst.jsf.ui.jsfLibraryPage"
-           name="%preferencepage.jsflibraries.name"/>
-     <page
-           category="org.eclipse.jst.jsf.ui.JSFRootPage"
            class="org.eclipse.jst.jsf.ui.internal.validation.JSFValidationPreferencePage"
            id="org.eclipse.jst.jsf.ui.JSFValidationPage"
            name="%preferencepage.jsfvalidation.name"/>
@@ -33,6 +28,25 @@
            name="%View_Preference_Root">
      </page>
   </extension>
+  
+  <extension point="org.eclipse.ui.propertyPages">
+    <page
+          adaptable="true"
+          category="org.eclipse.wst.common.project.facet.ui.FacetsPropertyPage"
+          class="org.eclipse.jst.jsf.ui.internal.project.facet.JSFLibraryPropertyPage"
+          id="org.eclipse.jst.jsf.ui.internal.project.facet.JSFLibraryPropertyPage"
+          name="%jsf.library.property.page"
+          objectClass="org.eclipse.core.resources.IProject">
+      <enabledWhen>
+        <adapt type="org.eclipse.core.resources.IProject">
+          <test 
+            forcePluginActivation="true"
+            property="org.eclipse.wst.common.project.facet.core.projectFacet"
+            value="jst.jsf"/>
+        </adapt>
+      </enabledWhen>          
+    </page>
+  </extension>
 
   <extension 
         point="org.eclipse.wst.common.project.facet.ui.wizardPages">
@@ -78,14 +92,6 @@
 		</validator>
 	</extension>
     <extension
-          point="org.eclipse.jdt.ui.classpathContainerPage">
-       <classpathContainerPage
-             class="org.eclipse.jst.jsf.ui.internal.classpath.JSFLibraryContainerWizardPage"
-             id="org.eclipse.jst.jsf.core.internal.jsflibrarycontainer"
-             name="%classpathContainerPage.name.0">
-       </classpathContainerPage>
-    </extension>
-    <extension
           point="org.eclipse.ui.workbench.texteditor.hyperlinkDetectors">
        <hyperlinkDetector
              class="org.eclipse.jst.jsf.ui.internal.jspeditor.ELHyperlinkDetector"
diff --git a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/Messages.java b/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/Messages.java
index 15592d6..1fd9d71 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/Messages.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/Messages.java
@@ -25,11 +25,14 @@
         NLS.initializeMessages(BUNDLE_NAME, Messages.class);
     }
 
+    /**
+     * see messages.properties
+     */
+    public static String JSFFacetInstallPage_JSFImplementationLibrariesFrame;
 	/**
 	 * see messages.properties
 	 */
-	public static String JSFFacetInstallPage_JSFLibraryLabel0;
-
+	public static String JSFFacetInstallPage_JSFComponentLibrariesFrame;
     /**
      * see messages.properties
      */
@@ -157,18 +160,6 @@
     /**
      * see messages.properties
      */
-	public static String JSFLibraryConfigControl_ComponentLibrary;
-    /**
-     * see messages.properties
-     */
-	public static String JSFLibraryConfigControl_DeployButtonLabel;
-    /**
-     * see messages.properties
-     */
-	public static String JSFLibraryConfigControl_DeployJAR;
-    /**
-     * see messages.properties
-     */
 	public static String JSFLibraryConfigControl_ImplementationLibrary;
     /**
      * see messages.properties
@@ -177,18 +168,14 @@
     /**
      * see messages.properties
      */
-	public static String JSFLibraryConfigControl_NewImplButtonTooltip;
-    /**
-     * see messages.properties
-     */
-	public static String JSFLibraryConfigControl_NewImplementationLibrary;
-    /**
-     * see messages.properties
-     */
 	public static String JSFLibraryConfigControl_NullProject;
     /**
      * see messages.properties
      */
+	public static String JSFLibraryConfigControl_DeployJAR;
+    /**
+     * see messages.properties
+     */
 	public static String JSFLibraryConfigControl_Remove;
     /**
      * see messages.properties
@@ -197,14 +184,6 @@
     /**
      * see messages.properties
      */
-	public static String JSFLibraryConfigControl_ServerSuppliedButtonLabel;
-    /**
-     * see messages.properties
-     */
-	public static String JSFLibraryConfigControl_ServerSuppliedButtonTooltip;
-    /**
-     * see messages.properties
-     */
 	public static String JSFLibraryConfigControl_TH_Deploy;
     /**
      * see messages.properties
@@ -254,14 +233,6 @@
 	public static String JSFLibraryContainerWizardPage_SelectOneImpl;
     /**
      * see messages.properties
-     */    
-	public static String JSFLibraryContainerWizardPage_V1Registry_Warning_DialogTitle;
-    /**
-     * see messages.properties
-     */
-	public static String JSFLibraryContainerWizardPage_V1Registry_Warning_DialogText;
-    /**
-     * see messages.properties
      */
     public static String JSFLibraryContainerWizardPage_EditLibrary_DescriptionText;
     /**
@@ -279,14 +250,6 @@
     /**
      * see messages.properties
      */
-	public static String JSFLibraryWizard_IMPLS_ONLY_DESC;
-    /**
-     * see messages.properties
-     */
-	public static String JSFLibraryWizard_CreateImplementation;
-    /**
-     * see messages.properties
-     */
 	public static String JSFLibraryWizard_CreateJSFLibrary;
     /**
      * see messages.properties
@@ -307,14 +270,6 @@
     /**
      * see messages.properties
      */
-    public static String JSFLibraryWizard_V1JSFLibrary_DialogMessage;
-    /**
-     * see messages.properties
-     */
-    public static String JSFLibraryWizard_V1JSFLibrary_DialogTitle;
-    /**
-     * see messages.properties
-     */
 	public static String JSFLibraryWizard_VersionSupported;
     /**
      * see messages.properties
@@ -323,10 +278,6 @@
     /**
      * see messages.properties
      */
-	public static String JSFLibraryWizard_IsJSFImplementation;
-    /**
-     * see messages.properties
-     */
 	public static String JSFLibraryWizard_DeployJars;
     /**
      * see messages.properties
@@ -376,4 +327,5 @@
      * see messages.properties
      */
     public static String JSFPreferences_RootPage_Description;
+    
 }
diff --git a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/classpath/JSFLibrariesPreferencePage.java b/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/classpath/JSFLibrariesPreferencePage.java
deleted file mode 100644
index db72352..0000000
--- a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/classpath/JSFLibrariesPreferencePage.java
+++ /dev/null
@@ -1,404 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 Oracle Corporation.
- * 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:
- *    Gerry Kessler - initial API and implementation
- *******************************************************************************/ 
-package org.eclipse.jst.jsf.ui.internal.classpath;
-
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.preference.PreferencePage;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.viewers.DoubleClickEvent;
-import org.eclipse.jface.viewers.IDoubleClickListener;
-import org.eclipse.jface.viewers.ILabelProvider;
-import org.eclipse.jface.viewers.ILabelProviderListener;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.ITreeContentProvider;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.jface.viewers.TreeViewer;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.jface.viewers.ViewerComparator;
-import org.eclipse.jface.window.Window;
-import org.eclipse.jface.wizard.WizardDialog;
-import org.eclipse.jst.jsf.core.internal.jsflibraryconfig.JSFLibraryRegistryUtil;
-import org.eclipse.jst.jsf.core.internal.jsflibraryregistry.ArchiveFile;
-import org.eclipse.jst.jsf.core.internal.jsflibraryregistry.JSFLibrary;
-import org.eclipse.jst.jsf.core.internal.jsflibraryregistry.PluginProvidedJSFLibrary;
-import org.eclipse.jst.jsf.ui.internal.JSFUiPlugin;
-import org.eclipse.jst.jsf.ui.internal.Messages;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.TreeItem;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchPreferencePage;
-import org.eclipse.ui.IWorkbenchWizard;
-
-/**
- * Provides a preference page for JSF Libraries.
- * 
- * @author Gerry Kessler - Oracle
- */
-public class JSFLibrariesPreferencePage extends PreferencePage implements IWorkbenchPreferencePage
-{
-	private IWorkbench wb;
-
-	private TreeViewer tv;
-	private TreeViewerAdapter tvAdapter;
-	private TreeLabelProvider tvLabelProvider;
-	
-	private Composite btnComp;
-
-	private Button btnNew;
-	private Button btnEdit;
-	private Button btnDelete;
-	private Button btnMakeDefaultImpl;
-	
-	protected Control createContents(Composite parent) {
-		Composite c = new Composite(parent, SWT.NONE);
-		c.setLayout(new GridLayout(2, false)); 
-		c.setLayoutData(new GridData(GridData.FILL_BOTH));				
-		
-		Label lblLibs = new Label(c, SWT.NONE);
-		lblLibs.setText(Messages.JSFLibrariesPreferencePage_DefinedJSFLibraries);
-		GridData gd1 = new GridData();
-		gd1.horizontalSpan = 2;
-		lblLibs.setLayoutData(gd1);
-		
-		tv = new TreeViewer(c, SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL);
-		tvAdapter = new TreeViewerAdapter();
-		tvLabelProvider = new TreeLabelProvider();
-		tv.setContentProvider(tvAdapter);
-		tv.setLabelProvider(tvLabelProvider);
-		tv.addSelectionChangedListener(tvAdapter);
-		tv.addDoubleClickListener(tvAdapter);
-		tv.setComparator(tvAdapter);
-		tv.getTree().setLayoutData(new GridData(GridData.FILL_BOTH));
-		tv.setInput(getJSFLibraries());
-		
-		createButtons(c);
-		
-		return c;
-	}
-
-	private void createButtons(Composite c){		
-		btnComp = new Composite(c, SWT.NONE);
-		GridLayout gl1 = new GridLayout(1, false);
-		gl1.marginHeight = 0;
-		gl1.marginWidth = 0;
-		btnComp.setLayout(gl1);
-		btnComp.setLayoutData(new GridData(GridData.END | GridData.VERTICAL_ALIGN_FILL));
-		
-		btnNew = new Button(btnComp, SWT.NONE);
-		btnNew.setText(Messages.JSFLibrariesPreferencePage_New);
-		btnNew.setLayoutData(new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_BEGINNING));
-		btnNew.addSelectionListener(new SelectionAdapter(){
-			public void widgetSelected(SelectionEvent e) {
-				openJSFLibraryEditDialog(null);
-			}
-		});
-		
-		btnEdit = new Button(btnComp, SWT.NONE);
-		btnEdit.setText(Messages.JSFLibrariesPreferencePage_Edit);
-		btnEdit.setLayoutData(new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_BEGINNING));
-		btnEdit.setEnabled(false);
-		btnEdit.addSelectionListener(new SelectionAdapter(){
-			public void widgetSelected(SelectionEvent e) {
-				TreeItem[] element = tv.getTree().getSelection();
-				if (element != null){
-					openJSFLibraryEditDialog(element[0]);
-				}
-
-			}
-		});
-		
-		btnDelete = new Button(btnComp, SWT.NONE);
-		btnDelete.setText(Messages.JSFLibrariesPreferencePage_Remove);
-		btnDelete.setLayoutData(new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_BEGINNING));
-		btnDelete.setEnabled(false);
-		btnDelete.addSelectionListener(new SelectionAdapter(){
-			public void widgetSelected(SelectionEvent e) {
-				boolean modified = false;
-				if (tv.getSelection() instanceof StructuredSelection){
-					StructuredSelection objs = (StructuredSelection)tv.getSelection();
-					if (objs != null){
-						Iterator it = objs.iterator();
-						while (it.hasNext()){
-							JSFLibrary lib = (JSFLibrary)it.next();
-							if (lib instanceof PluginProvidedJSFLibrary)
-								MessageDialog.openInformation(
-										getShell(),
-										Messages.JSFLibrariesPreferencePage_CannotRemovePluginProvidedTitle,
-										Messages.JSFLibrariesPreferencePage_CannotRemovePluginProvidedMessage);
-	
-							else {
-								JSFLibraryRegistryUtil.getInstance().getJSFLibraryRegistry().removeJSFLibrary(lib);
-								modified = true;
-							}
-						}
-						if (modified){
-							JSFLibraryRegistryUtil.getInstance().saveJSFLibraryRegistry();
-							tv.refresh();
-						}
-					}
-				}
-			}
-		});
-		
-		btnMakeDefaultImpl = new Button(btnComp, SWT.NONE);
-		btnMakeDefaultImpl.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.VERTICAL_ALIGN_END));
-		btnMakeDefaultImpl.setText(Messages.JSFLibrariesPreferencePage_MakeDefault);
-		btnMakeDefaultImpl.setVisible(false);
-		btnMakeDefaultImpl.addSelectionListener(new SelectionAdapter() {
-			public void widgetSelected(SelectionEvent e) {
-				if (tv.getSelection() instanceof StructuredSelection){
-					StructuredSelection objs = (StructuredSelection)tv.getSelection();
-					if (objs != null){
-						if (objs.getFirstElement() instanceof JSFLibrary){
-							 JSFLibrary lib = (JSFLibrary)objs.getFirstElement();
-							 JSFLibraryRegistryUtil.getInstance().getJSFLibraryRegistry().setDefaultImplementation(lib);							 							
-						 }
-						 JSFLibraryRegistryUtil.getInstance().saveJSFLibraryRegistry();
-						 tv.refresh();
-					}
-				}
-			}
-		});
-		
-	}
-	private Object getJSFLibraries() {
-		return JSFLibraryRegistryUtil.getInstance().getJSFLibraryRegistry().getAllJSFLibraries();
-	}
-
-	public void init(IWorkbench workbench) {
-		wb = workbench;
-		setDescription(Messages.JSFLibrariesPreferencePage_Description);
-		noDefaultAndApplyButton();
-	}
-	
-	/**
-	 * Getter created only for JUnit tests.  Should not be used otherwise.
-	 * @return the TreeViewer of JSF Libraries
-	 */
-	public Viewer getLibraryViewer(){
-		return tv;
-	}
-	
-	private class TreeViewerAdapter extends ViewerComparator implements ITreeContentProvider, ISelectionChangedListener, IDoubleClickListener {
-		private final Object[] NO_ELEMENTS= new Object[0];
-
-		// ------- ITreeContentProvider Interface ------------
-
-		public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
-			// will never happen
-		}
-
-		public void dispose() {
-            // do nothing
-		}
-
-		public Object[] getElements(Object obj) {
-			return ((List)getJSFLibraries()).toArray();
-		}
-		
-		public Object[] getChildren(Object element) {
-			if (element instanceof JSFLibrary) {
-				return ((JSFLibrary)element).getArchiveFiles().toArray();
-			}
-			return NO_ELEMENTS;
-		}
-
-		public Object getParent(Object element) {
-//			if (elements instanceof JSFLibrary) {
-//				return tvAdapter.getParent(tv.getTree().class, element);
-//			}
-			return null;//fParentElement;
-		}
-
-		public boolean hasChildren(Object element) {
-			if (element instanceof JSFLibrary) {
-				return true;
-			}
-			return false;
-		}		
-
-		// ------- ISelectionChangedListener Interface ------------
-
-		public void selectionChanged(SelectionChangedEvent event) {
-			doListSelected(event);
-		}
-		
-		/* (non-Javadoc)
-		 * @see org.eclipse.jface.viewers.IDoubleClickListener#doubleClick(org.eclipse.jface.viewers.DoubleClickEvent)
-		 */
-		public void doubleClick(DoubleClickEvent event) {
-			doDoubleClick(event);
-		}		
-		
-		public int compare(Viewer viewer, Object e1, Object e2) {
-			if (e1 instanceof JSFLibrary && e2 instanceof JSFLibrary){
-				JSFLibrary lib1 = (JSFLibrary)e1;
-				JSFLibrary lib2 = (JSFLibrary)e2;
-				
-				return getComparator().compare(lib1.getLabel(), lib2.getLabel());
-			}
-			return super.compare(viewer, e1, e2);
-		}
-		
-		
-	}
-
-	/**
-	 * Respond to a list selection event
-	 * 
-	 * @param event
-	 */
-	protected void doListSelected(SelectionChangedEvent event) {
-		updateButtonState();
-	}
-
-	/**
-	 * Respond to a double click event by opening the edit dialog
-	 * @param event
-	 */
-	protected void doDoubleClick(DoubleClickEvent event) {
-		openJSFLibraryEditDialog(tv.getTree().getSelection()[0]);
-	}
-	
-	private void updateButtonState() {
-		btnEdit.setEnabled(tv.getTree().getSelectionCount() == 1);	
-		if (tv.getTree().getSelectionCount() == 1 && tv.getTree().getSelection()[0].getData() instanceof JSFLibrary){	
-			btnDelete.setEnabled(true);
-			btnMakeDefaultImpl.setVisible(false);
-			JSFLibrary lib = (JSFLibrary)tv.getTree().getSelection()[0].getData();
-			btnMakeDefaultImpl.setVisible(lib.isImplementation());
-		} else {
-			btnDelete.setEnabled(false);
-			btnMakeDefaultImpl.setVisible(false);
-		}
-	}
-	
-	private void openJSFLibraryEditDialog(Object element) {
-		if (isPluginProvidedJSFLibrary(element)){
-			MessageDialog.openInformation(
-					getShell(),
-					Messages.JSFLibrariesPreferencePage_CannotModifyPluginProvidedTitle,
-					Messages.JSFLibrariesPreferencePage_CannotModifyPluginProvidedMessage);
-			return;
-		}
-		IWorkbenchWizard wizard = new JSFLibraryWizard();
-		wizard.init(wb, getStructuredElement(element));
-		WizardDialog dialog = new WizardDialog(wb.getActiveWorkbenchWindow().getShell(), wizard);
-		int ret = dialog.open();
-		if (ret == Window.OK){
-			tv.refresh();
-		}
-	}
-	
-	private IStructuredSelection getStructuredElement(Object element) {
-		if (element instanceof TreeItem){
-			Object item = ((TreeItem)element).getData();
-			if (item instanceof ArchiveFile){
-				JSFLibrary parent = ((ArchiveFile)item).getJSFLibrary();
-				return new StructuredSelection(parent);
-			} else if (item instanceof JSFLibrary) {
-				return new StructuredSelection(item);
-			}
-		}
-		return null;
-	}
-
-	private boolean isPluginProvidedJSFLibrary(Object treeElement){
-		if (treeElement instanceof TreeItem){
-			Object item = ((TreeItem)treeElement).getData();
-			if (item instanceof PluginProvidedJSFLibrary){
-				return true;
-			} else if (item instanceof ArchiveFile) {
-				return (((ArchiveFile)item).getJSFLibrary() instanceof PluginProvidedJSFLibrary);
-			}
-		}
-		return false;
-	}
-
-	private static class TreeLabelProvider implements ILabelProvider {
-		private final Image libImg;
-		private final Image jarImg;
-
-		TreeLabelProvider(){
-			ImageDescriptor jarImgDesc = JSFUiPlugin.getImageDescriptor("obj16/jar_obj.gif"); //$NON-NLS-1$
-			jarImg = jarImgDesc.createImage();
-			ImageDescriptor libImgDesc = JSFUiPlugin.getImageDescriptor("obj16/library_obj.gif"); //$NON-NLS-1$
-			libImg = libImgDesc.createImage();
-		}
-		
-		public Image getImage(Object element) {
-			if (element instanceof JSFLibrary)
-            {
-				return libImg;
-            }
-			return jarImg;
-		}
-
-		public String getText(Object element) {
-			StringBuffer labelBuf = new StringBuffer();
-			if (element instanceof JSFLibrary) {
-				JSFLibrary lib = (JSFLibrary)element;
-				labelBuf.append(lib.getLabel());
-				if (lib.isImplementation()) {
-					if (lib == JSFLibraryRegistryUtil.getInstance().getJSFLibraryRegistry().getDefaultImplementation()) {
-						labelBuf.append(Messages.JSFLibrariesPreferencePage_DEFAULT_IMPL_DESC);
-					} else {
-						labelBuf.append(Messages.JSFLibrariesPreferencePage_IMPL_DESC);
-					}
-				}
-			}
-			if (element instanceof ArchiveFile) {
-				ArchiveFile jar = (ArchiveFile)element;
-				labelBuf.append(jar.getName());
-				if (!jar.exists())
-					labelBuf.append(Messages.JSFLibrariesPreferencePage_MISSING_DESC);
-				labelBuf.append(" - ").append(((ArchiveFile)element).getSourceLocation()); //$NON-NLS-1$
-			}
-			return labelBuf.toString();
-		}
-
-		public void addListener(ILabelProviderListener listener) {
-            // no listeners supported
-		}
-
-		public void dispose() {
-			if (libImg != null){
-				libImg.dispose();
-			}			
-			if (jarImg != null){
-				jarImg.dispose();
-			}		
-		}
-
-		public boolean isLabelProperty(Object element, String property) {
-			return false;
-		}
-
-		public void removeListener(ILabelProviderListener listener) {
-            // no listeners supported
-		}
-	}
-
-}
diff --git a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/classpath/JSFLibraryContainerWizardPage.java b/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/classpath/JSFLibraryContainerWizardPage.java
index 950a405..c8468c2 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/classpath/JSFLibraryContainerWizardPage.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/classpath/JSFLibraryContainerWizardPage.java
@@ -12,7 +12,6 @@
 
 import java.util.ArrayList;
 import java.util.Collection;
-import java.util.Collections;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
@@ -71,6 +70,7 @@
  * Provides a classpath container wizard page for JSF Libraries.
  * 
  * @author Gerry Kessler - Oracle
+ * @deprecated
  */
 public class JSFLibraryContainerWizardPage extends WizardPage implements
 		IClasspathContainerPage, IClasspathContainerPageExtension, IClasspathContainerPageExtension2{
@@ -85,7 +85,6 @@
 	private Map _currentLibs;
 	private JSFLibrary currentLib;
 	
-	private boolean   _projectHaveV1JSFLibraries; // = false;
 	private IProject  _iproject;
 
 	/**
@@ -107,33 +106,13 @@
 
         _iproject = project.getProject();
         this.isJSFProject = JSFAppConfigUtils.isValidJSFProject(_iproject);
-        if (this.isJSFProject)
-		{
-			_projectHaveV1JSFLibraries = 
-			    JSFLibraryRegistryUtil.doesProjectHaveV1JSFLibraries(_iproject);
-		}
 	}
 
 	/* (non-Javadoc)
 	 * @see org.eclipse.jdt.ui.wizards.IClasspathContainerPage#finish()
 	 */
 	public boolean finish() {
-	    boolean finish = true;
-	    if (_projectHaveV1JSFLibraries)
-	    {
-	        // if the user doesn't want to confirm, back off on the change
-	        // and let them decide if they want to hit cancel
-	        finish = WarningMessageDialog.
-	            openConfirm(getShell()
-	                        , Messages.JSFLibraryContainerWizardPage_V1Registry_Warning_DialogTitle
-	                        , Messages.JSFLibraryContainerWizardPage_V1Registry_Warning_DialogText);
-	        
-	        if (finish)
-	        {
-	            JSFLibraryRegistryUtil.removeV1JSFLibraryProperty(Collections.singletonList(_iproject));
-	        }
-	    }
-		return finish;
+		return true;
 	}
 
 	/* (non-Javadoc)
diff --git a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/classpath/JSFLibraryEditControl.java b/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/classpath/JSFLibraryEditControl.java
index c781571..5b456c2 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/classpath/JSFLibraryEditControl.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/classpath/JSFLibraryEditControl.java
@@ -53,6 +53,7 @@
 
 /**
  * Common control for adding JSF library instances
+ * @deprecated
  */
 public class JSFLibraryEditControl extends Composite implements ModifyListener, SelectionListener 
 {
@@ -61,7 +62,6 @@
 	private CCombo cboVersions;
 	private Label lblVersions;
 	private Button chkDeploy;
-	private Button chkImpl;
 	private Composite btnBar;
 	private Button btnAdd;
 	private Button btnRemove;
@@ -139,13 +139,6 @@
 
 		createButtons(jarsComp);
 
-		chkImpl = new Button(this, SWT.CHECK);
-		chkImpl.setText(Messages.JSFLibraryWizard_IsJSFImplementation);
-		GridData gd3 = new GridData();
-		gd3.horizontalSpan = 2;
-		chkImpl.setLayoutData(gd3);
-		chkImpl.addSelectionListener(this);
-
 		chkDeploy = new Button(this, SWT.CHECK);
 		chkDeploy.setText(Messages.JSFLibraryWizard_DeployJars);
 		GridData gd4 = new GridData();
@@ -164,7 +157,6 @@
 				cboVersions.setText(workingCopyLibrary.getJSFVersion().getName());
 			}
 			chkDeploy.setSelection(workingCopyLibrary.isDeployed());
-			chkImpl.setSelection(workingCopyLibrary.isImplementation());
 		}
 		jars.setInput(workingCopyLibrary);
 
@@ -459,13 +451,6 @@
 
 
 	/**
-	 * @return the value of the user input for the isJSFImplementation checkbox
-	 */
-	public boolean getIsImplementation() {
-		return chkImpl.getSelection();
-	}
-
-	/**
 	 * @return the jsf version selected in the version dropping
 	 */
 	public JSFVersion getJSFVersion() {
@@ -477,23 +462,4 @@
 		return JSFVersion.UNKNOWN_LITERAL;
 	}
 
-	/**
-	 * @param implsOnly
-	 */
-	public void setImplOnly(boolean implsOnly) {
-		if (implsOnly){
-			chkImpl.setSelection(true);
-			chkImpl.setEnabled(false);
-		}
-	}
-	
-	/**
-	 * @param nonImplsOnly
-	 */
-	public void setNonImplOnly(boolean nonImplsOnly) {
-		if (nonImplsOnly){
-			chkImpl.setSelection(false);
-			chkImpl.setEnabled(false);
-		}
-	}
 }
diff --git a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/classpath/JSFLibraryValidationEvent.java b/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/classpath/JSFLibraryValidationEvent.java
index a869d0a..71855c5 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/classpath/JSFLibraryValidationEvent.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/classpath/JSFLibraryValidationEvent.java
@@ -14,7 +14,7 @@
 
 /**
  * Validation event used by JSFLibraryControl to notify containers of updates
- *
+ * @deprecated
  */
 public class JSFLibraryValidationEvent {
 	private String msg;
diff --git a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/classpath/JSFLibraryValidationListener.java b/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/classpath/JSFLibraryValidationListener.java
index dbd6b01..8dd1a4f 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/classpath/JSFLibraryValidationListener.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/classpath/JSFLibraryValidationListener.java
@@ -12,7 +12,7 @@
 
 /**
  * Listeners of  {@link JSFLibraryValidationEvent}s should implement
- *
+ * @deprecated
  */
 public interface JSFLibraryValidationListener {
 	/**
diff --git a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/classpath/JSFLibraryWizard.java b/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/classpath/JSFLibraryWizard.java
index bf771b1..81d0e2e 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/classpath/JSFLibraryWizard.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/classpath/JSFLibraryWizard.java
@@ -10,17 +10,8 @@
  *******************************************************************************/ 
 package org.eclipse.jst.jsf.ui.internal.classpath;
 
-import java.text.MessageFormat;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.ResourcesPlugin;
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.jdt.core.JavaModelException;
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.dialogs.MessageDialogWithToggle;
 import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.jface.wizard.Wizard;
 import org.eclipse.jface.wizard.WizardPage;
@@ -42,18 +33,10 @@
  * If the selection passed in init is not null then the item will be edit mode.
  * 
  * @author Gerry Kessler - Oracle
+ * @deprecated
  */
 public class JSFLibraryWizard extends Wizard implements INewWizard {
 
-	/**
-	 * Implementation libaries to be included
-	 */
-	public final static int IMPLS = 1;
-	/**
-	 * Non-Implementation libaries to be included
-	 */
-	public final static int NONIMPLS = 2;
-	
 	private JSFLibraryEditControl jsfLibraryEditControl;
 	
 	private boolean isNew = false;
@@ -64,55 +47,11 @@
 
 	private JSFLibraryWizardPage page;
 
-	private boolean _impls;	
-	private boolean _nonimpls;
-	
-    private List<IProject>        _projectsWithV1JSFLibraries = new ArrayList<IProject>();
-	
-	/**
-	 * Constructor
-	 * see IMPLS
-	 * see NONIMPLS
-	 * @param libTypes 
-	 */
-	public JSFLibraryWizard(int libTypes) {
-		super();
-		if ((libTypes & IMPLS) == IMPLS)
-			_impls = true;
-
-		if ((libTypes & NONIMPLS) == NONIMPLS)
-			_nonimpls = true;
-	}
-
-	
-	/**
-	 * Constructor.   List will include all JSF Libraries.
-	 */
-	public JSFLibraryWizard() {
-		super();
-		_impls = true;
-		_nonimpls = true;
-	}
-
-	private boolean isImplsOnly(){
-		if (_impls && ! _nonimpls)
-			return true;
-		return false;		
-	}
-	
-	private boolean isNonImplsOnly(){
-		if (_nonimpls && ! _impls)
-			return true;
-		return false;		
-	}
-	
 	/* (non-Javadoc)
 	 * @see org.eclipse.ui.IWorkbenchWizard#init(org.eclipse.ui.IWorkbench, org.eclipse.jface.viewers.IStructuredSelection)
 	 */
 	public void init(IWorkbench workbench, IStructuredSelection selection) 
 	{
-	    initV1LibrariesList();
-	    
 		if (selection != null
 				&& selection.getFirstElement() instanceof JSFLibrary) {
 			curLibrary = (JSFLibrary) selection.getFirstElement();
@@ -121,29 +60,9 @@
 			isNew = true;
 			workingCopyLibrary = JSFLibraryRegistryFactory.eINSTANCE.createJSFLibrary();
 		}
-		if (isImplsOnly()) {
-			setWindowTitle(Messages.JSFLibraryWizard_CreateImplementation);
-		} else {
-			setWindowTitle(isNew ? Messages.JSFLibraryWizard_CreateJSFLibrary : Messages.JSFLibraryWizard_EditJSFLibrary);
-		}
+		setWindowTitle(isNew ? Messages.JSFLibraryWizard_CreateJSFLibrary : Messages.JSFLibraryWizard_EditJSFLibrary);
 	}
 
-	private void initV1LibrariesList()
-	{
-        final IProject[] projects = ResourcesPlugin.getWorkspace().getRoot().getProjects();
-        
-        // loop through the workspace and look for projects that are still using the V1 way
-        // of doing JSF libraries
-        for (int i = 0; i < projects.length; i++)
-        {
-            final IProject project = projects[i];
-            if (JSFLibraryRegistryUtil.doesProjectHaveV1JSFLibraries(project))
-            {
-                _projectsWithV1JSFLibraries.add(project);
-            }
-        }
-    }
-
 	/**
 	 * Updates the JSF Library instance with the values from the working copy and 
 	 * persists the registry.
@@ -154,50 +73,12 @@
 	 */
 	public boolean performFinish() 
 	{
-	    // on init, if we detected any projects with old library
-	    // refs, we need to warn the user
-	    if (!isNew &&  // can ignore new libraries, since old projects can't possibly have dependencies on them
-	            _projectsWithV1JSFLibraries.size() > 0)
-	    {
-	        String  projectNames = ""; //$NON-NLS-1$
-	        for (Iterator<IProject> it = _projectsWithV1JSFLibraries.iterator(); it.hasNext();)
-	        {
-	            IProject project = it.next();
-	            projectNames += project.getName() + ","; //$NON-NLS-1$
-	        }
-	        // trim trailing comma
-	        if (projectNames.length() > 0)
-	        {
-	            projectNames = projectNames.substring(0, projectNames.length()-1);
-	        }
-	        
-	        final String messageText = MessageFormat.format(Messages.JSFLibraryWizard_V1JSFLibrary_DialogMessage,
-	                                        new Object[] {projectNames});
-	        MessageDialogWithToggle dialog = 
-	            WarningMessageDialogWithToggle.openOkCancelConfirm
-	                (getShell(), Messages.JSFLibraryWizard_V1JSFLibrary_DialogTitle, messageText, Messages.JSFLibraryWizard_JSFLibraryWizard_DontShowThisAgain_CheckBoxLabel, false, null, null);
-	        if (dialog.getReturnCode() != IDialogConstants.OK_ID)
-	        {
-	            // abort if the user doesn't really want to commit this change
-	            return false;
-	        }
-
-	        // if user accepted and asked not be warned again, clear the 
-	        // the project properties.
-	        if (dialog.getToggleState())
-            {
-	            JSFLibraryRegistryUtil.removeV1JSFLibraryProperty(_projectsWithV1JSFLibraries);
-            }
-	    }
-	    
 		final String name = jsfLibraryEditControl.getJSFLibraryName();
 		final boolean isDeployed = jsfLibraryEditControl.getIsDeployed();
-		final boolean isImplementation = jsfLibraryEditControl.getIsImplementation();
 		final JSFVersion version = jsfLibraryEditControl.getJSFVersion();
 		
 		workingCopyLibrary.setName(name);
 		workingCopyLibrary.setDeployed(isDeployed);
-		workingCopyLibrary.setImplementation(isImplementation);
 		workingCopyLibrary.setJSFVersion(version);
 		
 		final String originalID = curLibrary != null ? curLibrary.getID() :workingCopyLibrary.getID();
@@ -240,9 +121,7 @@
 		 */
 		protected JSFLibraryWizardPage(String pageName) {
 			super(pageName);
-			setDescription(isImplsOnly() 
-			        ? Messages.JSFLibraryWizard_IMPLS_ONLY_DESC
-			        : Messages.JSFLibraryWizard_DESCRIPTION);
+			setDescription(Messages.JSFLibraryWizard_DESCRIPTION);
 			setTitle(Messages.JSFLibraryWizard_JSFLibrary);
 		}
 
@@ -263,8 +142,6 @@
 			initializeDialogUnits(parent);
 
 			jsfLibraryEditControl = new JSFLibraryEditControl(workingCopyLibrary, parent);
-			jsfLibraryEditControl.setImplOnly(isImplsOnly());
-			jsfLibraryEditControl.setNonImplOnly(isNonImplsOnly());
 			jsfLibraryEditControl.setLayout(new GridLayout(2, false));
 			jsfLibraryEditControl.setLayoutData(new GridData(GridData.FILL_BOTH));
 
diff --git a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/classpath/WarningMessageDialog.java b/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/classpath/WarningMessageDialog.java
index ad3b136..ff08f6b 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/classpath/WarningMessageDialog.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/classpath/WarningMessageDialog.java
@@ -28,7 +28,7 @@
  * Customized warning dialog for JSF Library Upgrade warnings.
  * 
  * @author cbateman
- *
+ * @deprecated
  */
 class WarningMessageDialog extends MessageDialog 
 {
diff --git a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/classpath/WarningMessageDialogWithToggle.java b/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/classpath/WarningMessageDialogWithToggle.java
index 834889d..f86700b 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/classpath/WarningMessageDialogWithToggle.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/classpath/WarningMessageDialogWithToggle.java
@@ -29,7 +29,7 @@
  * Customized warning dialog for JSF Library Upgrade warnings.
  * 
  * @author cbateman
- *
+ * @deprecated
  */
 class WarningMessageDialogWithToggle extends MessageDialogWithToggle 
 {
diff --git a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/jsflibraryconfig/IJSFImplLibraryCreationListener.java b/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/jsflibraryconfig/IJSFImplLibraryCreationListener.java
index 85fc288..d579d52 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/jsflibraryconfig/IJSFImplLibraryCreationListener.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/jsflibraryconfig/IJSFImplLibraryCreationListener.java
@@ -14,7 +14,7 @@
  * Listener interface when a new JSF implementation library is created.
  * 
  * @author Justin Chen - Oracle
- *
+ * @deprecated
  */
 public interface IJSFImplLibraryCreationListener extends java.util.EventListener {
 	/**
diff --git a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/jsflibraryconfig/JSFImplLibraryCreationEvent.java b/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/jsflibraryconfig/JSFImplLibraryCreationEvent.java
index df3b0f1..524e459 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/jsflibraryconfig/JSFImplLibraryCreationEvent.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/jsflibraryconfig/JSFImplLibraryCreationEvent.java
@@ -16,7 +16,7 @@
  * JSF Implementation library creation event.
  * 
  * @author Justin Chen - Oracle
- *
+ * @deprecated
  */
 public class JSFImplLibraryCreationEvent extends EventObject {
 
diff --git a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/jsflibraryconfig/JSFLibraryConfigControl.java b/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/jsflibraryconfig/JSFLibraryConfigControl.java
index 2bae57c..b3bd767 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/jsflibraryconfig/JSFLibraryConfigControl.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/jsflibraryconfig/JSFLibraryConfigControl.java
@@ -25,7 +25,6 @@
 import org.eclipse.jface.util.SafeRunnable;
 import org.eclipse.jface.viewers.CheckStateChangedEvent;
 import org.eclipse.jface.viewers.CheckboxTableViewer;
-import org.eclipse.jface.viewers.ComboViewer;
 import org.eclipse.jface.viewers.DoubleClickEvent;
 import org.eclipse.jface.viewers.ICheckStateListener;
 import org.eclipse.jface.viewers.IDoubleClickListener;
@@ -44,30 +43,24 @@
 import org.eclipse.jface.viewers.ViewerSorter;
 import org.eclipse.jface.window.Window;
 import org.eclipse.jface.wizard.WizardDialog;
+import org.eclipse.jst.jsf.core.internal.jsflibraryconfig.JSFLibraryConfigDialogSettingData;
 import org.eclipse.jst.jsf.core.internal.jsflibraryconfig.JSFLibraryConfigModel;
-import org.eclipse.jst.jsf.core.internal.jsflibraryconfig.JSFLibraryConfiglModelSource;
 import org.eclipse.jst.jsf.core.internal.jsflibraryconfig.JSFLibraryInternalReference;
 import org.eclipse.jst.jsf.core.internal.jsflibraryconfig.JSFLibraryRegistryUtil;
 import org.eclipse.jst.jsf.core.internal.jsflibraryregistry.ArchiveFile;
 import org.eclipse.jst.jsf.core.internal.jsflibraryregistry.JSFLibrary;
-import org.eclipse.jst.jsf.core.internal.jsflibraryregistry.JSFLibraryRegistry;
 import org.eclipse.jst.jsf.core.internal.project.facet.IJSFFacetInstallDataModelProperties;
-import org.eclipse.jst.jsf.core.internal.project.facet.IJSFFacetInstallDataModelProperties.IMPLEMENTATION_TYPE;
 import org.eclipse.jst.jsf.ui.internal.JSFUiPlugin;
 import org.eclipse.jst.jsf.ui.internal.Messages;
 import org.eclipse.jst.jsf.ui.internal.classpath.JSFLibraryWizard;
 import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.MouseAdapter;
-import org.eclipse.swt.events.MouseEvent;
 import org.eclipse.swt.events.SelectionAdapter;
 import org.eclipse.swt.events.SelectionEvent;
 import org.eclipse.swt.graphics.Image;
 import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Combo;
 import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Label;
 import org.eclipse.swt.widgets.Table;
 import org.eclipse.swt.widgets.TableColumn;
 import org.eclipse.swt.widgets.TableItem;
@@ -80,6 +73,7 @@
  * A custom control used in wizard and property pages.
  * 
  * @author Justin Chen
+ * @deprecated
  */
 public class JSFLibraryConfigControl extends Composite { 
 
@@ -88,15 +82,10 @@
 
 	private JSFLibraryConfigModel workingCopyModel = null;
 	
-	private Button btnServerSupplied;
-	private Button btnUserSupplied;
-	private ComboViewer cvImplLib;
 	private CheckboxTableViewer ctvSelCompLib;
-	private Button btnDeployJars;
 	private TreeViewer tvCompLib;
 	private TreeViewerAdapter tvAdapter;
 	private TreeLabelProvider tvLabelProvider;
-	private Combo comboImplLib;
 	private Button btnAddAll;
 	private Button btnRemoveAll;
 	
@@ -171,7 +160,7 @@
 	 * 
 	 * @param source
 	 */
-	public void loadControlValuesFromModel(JSFLibraryConfiglModelSource source) {
+	public void loadControlValuesFromModel(JSFLibraryConfigDialogSettingData source) {
 		if (source != null) {
 			// never read persistentModel = source;
 			workingCopyModel = JSFLibraryConfigModel.JSFLibraryConfigModelFactory.createInstance(source);
@@ -191,16 +180,6 @@
 	}
 	
 	/**
-	 * Return current selected JSF Implementation Library.
-	 * Otherwise, return null.
-	 *  
-	 * @return JSFLibraryInternalReference
-	 */
-	public JSFLibraryInternalReference getSelectedJSFLibImplementation() {
-		return workingCopyModel.getCurrentJSFImplementationLibrarySelection();
-	}
-	 
-	/**
 	 * Return a list of selected JSF Component Libraries.
 	 * Otherwise, return an empty list.
 	 * 
@@ -219,29 +198,6 @@
 	}
 	
 	private void initializeControlValues() {
-		loadJSFImplList();
-		
-		btnDeployJars.setSelection(false);
-		JSFLibraryInternalReference savedImplLib = workingCopyModel.getSavedJSFImplementationLibrary();
-		if ( savedImplLib != null ) {
-			/*
-			 * Get the input for the control to set selection.
-			 */
-			JSFLibraryInternalReference selected = JSFLibraryRegistryUtil.getInstance().getJSFLibraryReferencebyID(savedImplLib.getID());
-			if (selected != null) {
-				btnDeployJars.setSelection(selected.isCheckedToBeDeployed());			
-				cvImplLib.setSelection(new StructuredSelection(selected), true);
-			}
-		} else {
-			JSFLibraryInternalReference dftJSFImplLib = JSFLibraryRegistryUtil.getInstance().getDefaultJSFImplementationLibrary();
-			if (dftJSFImplLib != null) {			
-				btnDeployJars.setSelection(dftJSFImplLib.isCheckedToBeDeployed());	
-				cvImplLib.setSelection(new StructuredSelection(dftJSFImplLib), true);				
-			}
-			else 
-				btnDeployJars.setEnabled(false);
-		}
-		
 		loadJSFCompList();
 
 		JSFLibraryInternalReference savedCompLib = null; 
@@ -258,228 +214,26 @@
 
 		setCompListModelProperty();
 		
-		initializeImplementationType();
-		
 		redraw();
 	}
 	
-	private void initializeImplementationType() {
-		IMPLEMENTATION_TYPE implType = workingCopyModel.getImplementationType();
-		if (implType == IMPLEMENTATION_TYPE.SERVER_SUPPLIED) {
-			btnServerSupplied.setSelection(true);
-			btnUserSupplied.setSelection(false);
-			enableUserSupplied(false);
-		} else if (implType == IMPLEMENTATION_TYPE.USER_SPECIFIED) {
-			btnServerSupplied.setSelection(false);
-			btnUserSupplied.setSelection(true);
-			enableUserSupplied(true);
-		} else {
-			enableUserSupplied(false);
-		}	
-		model.setProperty(IJSFFacetInstallDataModelProperties.IMPLEMENTATION_TYPE_PROPERTY_NAME, implType);
-	}
-	private void loadJSFImplList() {
-		cvImplLib.setInput(workingCopyModel.getJSFImplementationLibraries());
-	}
-	
 	private void loadJSFCompList() {
 		tvCompLib.setInput(workingCopyModel.getJSFComponentLibraries());
 		ctvSelCompLib.setInput(workingCopyModel.getJSFComponentLibraries());		
 	}
 	
-	private JSFLibraryInternalReference getCurrentSelectedJSFImplLib() {
-		JSFLibraryInternalReference selJSFImpl = null;
-		StructuredSelection objs = (StructuredSelection)cvImplLib.getSelection();
-		if (objs != null){
-			if (objs.getFirstElement() instanceof JSFLibraryInternalReference){
-				selJSFImpl = (JSFLibraryInternalReference)objs.getFirstElement();
-			}
-		}
-		return selJSFImpl;		
-	}
-
-	private void createImplLibControls(Composite parent) {
-		final Composite cmpImpls = new Composite(parent, SWT.NONE);
-		final GridLayout gridLayoutImpls = new GridLayout();
-		gridLayoutImpls.numColumns = 4;
-		gridLayoutImpls.marginLeft = 0;
-		gridLayoutImpls.marginTop = 0;
-		gridLayoutImpls.marginBottom = 0;
-		
-		cmpImpls.setLayout(gridLayoutImpls);
-		GridData gdCmpImpls = new GridData();
-		gdCmpImpls.horizontalAlignment = SWT.FILL;
-		gdCmpImpls.grabExcessHorizontalSpace = true;
-		cmpImpls.setLayoutData(gdCmpImpls);
-
-		btnServerSupplied = new Button(cmpImpls, SWT.RADIO);
-		btnServerSupplied.setToolTipText(Messages.JSFLibraryConfigControl_ServerSuppliedButtonTooltip);
-		GridData gdSS = new GridData();
-		gdSS.horizontalAlignment = SWT.BEGINNING;
-		btnServerSupplied.setLayoutData(gdSS);
-		
-		btnServerSupplied.addSelectionListener(new SelectionAdapter(){
-			public void widgetSelected(SelectionEvent e) {
-				setServerSuppliedLibrarySelection(e);
-			}			
-		});
-		
-		Label lblServerSupplied = new Label(cmpImpls, SWT.NONE);
-		lblServerSupplied.setText(Messages.JSFLibraryConfigControl_ServerSuppliedButtonLabel);
-		GridData lblSS = new GridData();
-		lblSS.grabExcessHorizontalSpace = true;
-		lblServerSupplied.setLayoutData(lblSS);
-		lblServerSupplied.addMouseListener(new MouseAdapter(){
-			public void mouseUp(MouseEvent e) {
-				btnServerSupplied.setSelection(true);
-				setServerSuppliedLibrarySelection(e);				
-			}			
-		});
-		
-		
-		Label lblSpacer1 = new Label(cmpImpls, SWT.NONE);
-		GridData gdSpc1 = new GridData();
-		gdSpc1.horizontalAlignment = SWT.END;
-		gdSpc1.horizontalSpan = 2;
-		lblSpacer1.setLayoutData(gdSpc1);
-		
-		btnUserSupplied = new Button(cmpImpls, SWT.RADIO);
-		btnUserSupplied.setLayoutData(new GridData());
-		btnUserSupplied.addSelectionListener(new SelectionAdapter(){
-			public void widgetSelected(SelectionEvent e) {
-				setUserSuppliedLibrarySelection(e);
-			}			
-		});
-		
-		this.addOkClickedListener(new IJSFImplLibraryCreationListener() {
-			public void okClicked(JSFImplLibraryCreationEvent event) {				
-				if (! btnUserSupplied.getSelection()  && event.isLibraryCreated()) {
-					btnServerSupplied.setSelection(false);
-					setUserSuppliedLibrarySelection(event);
-				}				
-			}			
-		});
-			
-		cvImplLib = new ComboViewer(cmpImpls, SWT.READ_ONLY);
-		cvImplLib.setLabelProvider(new ImplLibCVListLabelProvider());
-		cvImplLib.setContentProvider(new ImplLibCVContentProvider());
-		comboImplLib = cvImplLib.getCombo();
-		GridData gd_cvImplLib = new GridData();
-		gd_cvImplLib.horizontalAlignment = SWT.FILL;
-		gd_cvImplLib.grabExcessHorizontalSpace = true;
-		comboImplLib.setLayoutData(gd_cvImplLib);
-		cvImplLib.addSelectionChangedListener(
-			new ISelectionChangedListener() {
-				public void selectionChanged(SelectionChangedEvent event) {
-					StructuredSelection ss = (StructuredSelection) event.getSelection();
-					JSFLibraryInternalReference crtSelImplLib = (JSFLibraryInternalReference) ss.getFirstElement();
-					if (crtSelImplLib != null)
-					{
-					    btnDeployJars.setEnabled(true);
-	                    crtSelImplLib.setToBeDeployed(btnDeployJars.getSelection());
-					}
-					workingCopyModel.setCurrentJSFImplementationLibrarySelection(crtSelImplLib);
-					model.setProperty(IJSFFacetInstallDataModelProperties.IMPLEMENTATION, crtSelImplLib);
-					fireChangedEvent(event);
-				}
-			}
-		);
-			
-		btnDeployJars = new Button(cmpImpls, SWT.CHECK);
-		GridData gdDeploy = new GridData();
-		btnDeployJars.setLayoutData(gdDeploy);
-		btnDeployJars.setText(Messages.JSFLibraryConfigControl_DeployButtonLabel);
-		btnDeployJars.setToolTipText(Messages.JSFLibraryConfigControl_DeployJAR);
-		btnDeployJars.addSelectionListener(new SelectionAdapter() {
-			public void widgetSelected(SelectionEvent e) {
-				if (! _initing){
-					JSFLibraryInternalReference jsflib = getCurrentSelectedJSFImplLib();
-					if (jsflib != null)
-						jsflib.setToBeDeployed(btnDeployJars.getSelection());
-					workingCopyModel.setCurrentJSFImplementationLibrarySelection(jsflib);//why r we doing this here???
-	//				model.setProperty(IJSFFacetInstallDataModelProperties.DEPLOY_IMPLEMENTATION, btnDeployJars.getSelection());
-					fireChangedEvent(e);
-				}
-			}
-		}
-		);
-		
-		final Button btnNewImpl = new Button(cmpImpls, SWT.NONE); //compTest,
-		GridData gdNew = new GridData();
-		gdNew.horizontalAlignment = SWT.END;
-		btnNewImpl.setLayoutData(gdNew);
-		btnNewImpl.setText(Messages.JSFLibraryConfigControl_NewImplementationLibrary);	
-		btnNewImpl.setToolTipText(Messages.JSFLibraryConfigControl_NewImplButtonTooltip);
-		btnNewImpl.addSelectionListener(new SelectionAdapter() {
-			public void widgetSelected(SelectionEvent e) {
-				JSFLibraryWizard wizard = new JSFLibraryWizard(JSFLibraryWizard.IMPLS);
-				IWorkbench wb = PlatformUI.getWorkbench();
-				wizard.init(wb, null);
-				WizardDialog dialog = new WizardDialog(wb
-						.getActiveWorkbenchWindow().getShell(), wizard);
-				int ret = dialog.open();
-				if (ret == Window.OK) {	
-					JSFLibraryInternalReference lib = new JSFLibraryInternalReference(wizard.getJSFLibrary(), true, true);
-					JSFLibraryRegistryUtil.getInstance().addJSFLibrary(lib);
-					workingCopyModel.getJSFImplementationLibraries().add(lib);
-					workingCopyModel.setCurrentJSFImplementationLibrarySelection(lib);
-					
-					loadJSFImplList();
-					btnDeployJars.setSelection(true);
-					cvImplLib.setSelection(new StructuredSelection(lib), true);
-					
-				}
-				// notify listeners that a JSF implementation is created.
-				JSFImplLibraryCreationEvent event = new JSFImplLibraryCreationEvent(this, (ret == Window.OK));
-				int size = newJSFLibCreatedListeners.size();
-				for (int i = 0; i < size; i++) {
-					IJSFImplLibraryCreationListener listener = 
-						(IJSFImplLibraryCreationListener) newJSFLibCreatedListeners.elementAt(i);
-					listener.okClicked(event);
-				}
-			}
-		});		
-	}
-	
-	private void setServerSuppliedLibrarySelection(final EventObject e) {
-		btnUserSupplied.setSelection(false);
-		model.setProperty(IJSFFacetInstallDataModelProperties.IMPLEMENTATION_TYPE_PROPERTY_NAME, IJSFFacetInstallDataModelProperties.IMPLEMENTATION_TYPE.SERVER_SUPPLIED);
-		enableUserSupplied(false);
-		fireChangedEvent(e);
-		
-	}
-	
-	private void setUserSuppliedLibrarySelection(final EventObject e) {
-		btnUserSupplied.setSelection(true);
-		model.setProperty(IJSFFacetInstallDataModelProperties.IMPLEMENTATION_TYPE_PROPERTY_NAME, IJSFFacetInstallDataModelProperties.IMPLEMENTATION_TYPE.USER_SPECIFIED);
-		enableUserSupplied(true);	
-		fireChangedEvent(e);
-	}
-	
-	private void enableUserSupplied(boolean enabled) {
-		cvImplLib.getCombo().setEnabled(enabled);
-		btnDeployJars.setEnabled(enabled);		
-	}
-	
 	private void createCompLibControls(Composite parent) {
 		final Composite cmpCompLibs = new Composite(parent, SWT.NONE);
 		final GridLayout gridLayoutCompLibs = new GridLayout();
 		gridLayoutCompLibs.numColumns = 4;
-		gridLayoutCompLibs.marginLeft = 0;
-		gridLayoutCompLibs.marginRight = 0;
 		gridLayoutCompLibs.marginWidth = 0;
+        gridLayoutCompLibs.marginHeight = 0;
 		cmpCompLibs.setLayout(gridLayoutCompLibs);
 		GridData gdComp = new GridData();
 		gdComp.horizontalAlignment = SWT.FILL;
 		gdComp.grabExcessHorizontalSpace = true;
 		cmpCompLibs.setLayoutData(gdComp);
 		
-		
-		final Label lblCompLib = new Label(cmpCompLibs, SWT.NONE);
-		final GridData gd_lbl_complib = new GridData(GridData.FILL, GridData.CENTER, false, false, 4, 1);
-		lblCompLib.setLayoutData(gd_lbl_complib);
-		lblCompLib.setText(Messages.JSFLibraryConfigControl_ComponentLibrary);
-				
 		tvCompLib = new TreeViewer(cmpCompLibs, SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL);
 		tvAdapter = new TreeViewerAdapter();
 		tvLabelProvider = new TreeLabelProvider();
@@ -505,7 +259,7 @@
 		composite_Single.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
 		final GridLayout gl_Single = new GridLayout();
 		gl_Single.marginHeight = 4;
-		composite_Single.setLayout(gl_Single);
+		composite_Single.setLayout(new GridLayout());
 		
 		final Button btnAdd = new Button(composite_Single, SWT.NONE);
 		btnAdd.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
@@ -542,7 +296,7 @@
 		btnNewCompLib.setText(Messages.JSFLibraryConfigControl_NewComponentLibrary);		
 		btnNewCompLib.addSelectionListener(new SelectionAdapter() {
 			public void widgetSelected(SelectionEvent e) {
-				JSFLibraryWizard wizard = new JSFLibraryWizard(JSFLibraryWizard.NONIMPLS);				
+				JSFLibraryWizard wizard = new JSFLibraryWizard();				
 				IWorkbench wb = PlatformUI.getWorkbench();
 				wizard.init(wb, null);
 				WizardDialog dialog = new WizardDialog(wb
@@ -668,23 +422,9 @@
 		gridLayout.marginTop = 0;
 		this.setLayout(gridLayout);
 		
-		createImplLibControls(this);
-		createSeparator(this);
 		createCompLibControls(this);
-		
-
-
-
 	}
 
-	private void createSeparator(Composite parent) {
-		final Label lblSeparator = new Label(parent, SWT.SEPARATOR | SWT.HORIZONTAL );
-		GridData gd_lbl_spacer = new GridData();
-		gd_lbl_spacer.horizontalAlignment = SWT.FILL;
-		lblSeparator.setLayoutData(gd_lbl_spacer);
-		lblSeparator.setAlignment(SWT.CENTER);
-	}
-	
 	/*
 	 * Event handling helper methods
 	 */	
@@ -767,10 +507,6 @@
 	 */
 	public void setSynchHelper(DataModelSynchHelper synchHelper) {	
 		model = synchHelper.getDataModel();
-		synchHelper.synchCombo(cvImplLib.getCombo(), IJSFFacetInstallDataModelProperties.IMPLEMENTATION_LIBRARIES, null);
-		synchHelper.synchCheckbox(btnDeployJars, IJSFFacetInstallDataModelProperties.DEPLOY_IMPLEMENTATION, null);
-		//not using synch helper for IMPLEMENTATION_TYPE
-//		synchHelper.synchCheckBoxTableViewer(ctvSelCompLib, IJSFFacetInstallDataModelProperties.COMPONENT_LIBRARIES, new Control[]{hiddenList});
 	}
 
 	/**
@@ -812,24 +548,6 @@
 			}
 		}
 	}
-	private static class ImplLibCVContentProvider implements IStructuredContentProvider {
-		private List jsfImplLibs = new ArrayList(0);
-		
-		public Object[] getElements(Object inputElement) {
-			return jsfImplLibs.toArray();
-		}
-		public void dispose() {
-            // do nothing
-		}
-		public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
-			if (newInput == null) {
-				jsfImplLibs = Collections.EMPTY_LIST;
-			} else {
-				jsfImplLibs = (List)newInput;
-			}
-		}
-	}
-	
 	// Label Provider
 	private static class SelectedCompLibCTVLabelProvider extends LabelProvider implements ITableLabelProvider {
 		public String getColumnText(Object element, int columnIndex) {
@@ -849,31 +567,6 @@
 			return null;
 		}
 	}
-	private static class ImplLibCVListLabelProvider extends LabelProvider {
-		private JSFLibrary defaultImpl = null;
-		
-		public String getText(Object element) {
-			if (element instanceof JSFLibraryInternalReference){
-				StringBuffer labelBuf = new StringBuffer(((JSFLibraryInternalReference)element).getLabel());
-				JSFLibrary lib = ((JSFLibraryInternalReference)element).getLibrary();
-				if (getDefaultImpl()!= null && lib != null && lib.getID().equals(getDefaultImpl().getID()))
-					labelBuf.append(" ").append(JSFLibraryRegistry.DEFAULT_IMPL_LABEL); //$NON-NLS-1$
-				return labelBuf.toString() ;
-			}
-			return null;
-		}
-		private JSFLibrary getDefaultImpl() {
-			if (defaultImpl == null){
-				JSFLibraryRegistry jsflibreg = JSFLibraryRegistryUtil.getInstance().getJSFLibraryRegistry();
-				defaultImpl = jsflibreg.getDefaultImplementation();
-			}
-			return defaultImpl;
-		}
-		public Image getImage(Object element) {
-			return null;
-		}
-	}
-	
 	// Sorter
 	private static class SelectedCompLibCTVSorter extends ViewerSorter {
 		public int compare(Viewer viewer, Object e1, Object e2) {
diff --git a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/jsflibraryconfig/JSFLibraryConfigControlChangeEvent.java b/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/jsflibraryconfig/JSFLibraryConfigControlChangeEvent.java
index 1611218..3ebbb69 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/jsflibraryconfig/JSFLibraryConfigControlChangeEvent.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/jsflibraryconfig/JSFLibraryConfigControlChangeEvent.java
@@ -14,7 +14,7 @@
 
 /**
  * Event that something has changed in the JSFLibraryConfigControl
- *
+ * @deprecated
  */
 public class JSFLibraryConfigControlChangeEvent {
 	private EventObject event;
diff --git a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/jsflibraryconfig/JSFLibraryConfigControlChangeListener.java b/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/jsflibraryconfig/JSFLibraryConfigControlChangeListener.java
index 945f9ef..6cf386a 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/jsflibraryconfig/JSFLibraryConfigControlChangeListener.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/jsflibraryconfig/JSFLibraryConfigControlChangeListener.java
@@ -13,7 +13,7 @@
 
 /**
  * Interface to be implemented to listen to changes in the JSFLibraryConfigControl object
- *
+ * @deprecated
  */
 public interface JSFLibraryConfigControlChangeListener {
 	/**
diff --git a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/messages.properties b/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/messages.properties
index e43aca1..ba5b6e2 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/messages.properties
+++ b/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/messages.properties
@@ -19,7 +19,8 @@
 JSFFacetInstallPage_JSFServletNameLabel=JSF &Servlet Name:
 JSFFacetInstallPage_JSFServletClassNameLabel=JSF Servlet C&lassname:
 JSFFacetInstallPage_JSFURLMappingLabel=&URL Mapping Patterns:
-JSFFacetInstallPage_JSFLibraryLabel0=JSF Libraries:
+JSFFacetInstallPage_JSFImplementationLibrariesFrame=JSF Implementation Library
+JSFFacetInstallPage_JSFComponentLibrariesFrame=Component Libraries
 JSFFacetInstallPage_PatternDialogTitle=Specify URL Pattern
 JSFFacetInstallPage_PatternDialogDesc=URL Pattern
 JSFFacetInstallPage_Remove=&Remove
@@ -48,11 +49,7 @@
 JSFLibraryContainerWizardPage_WarningNoJSFFacet=JavaServer Face Libraries can only be configured for Dynamic Web projects with the JSF facet installed.
 JSFLibraryContainerWizardPage_JSFLibraries=JSF Libraries:
 JSFLibraryContainerWizardPage_Add=Add...
-JSFLibraryContainerWizardPage_V1Registry_Warning_DialogTitle=Backward compatibility issue
 JSFLibraryWizard_JSFLibraryWizard_DontShowThisAgain_CheckBoxLabel=Do not show this message again (affects all listed projects)
-JSFLibraryContainerWizardPage_V1Registry_Warning_DialogText=This project is currently configured for use with an obsolete version of JSF libraries. \
-Changing JSF library settings on this project may break backward compatibility with older versions of JSF tools.\
-\n\nSee http://wiki.eclipse.org/index.php/JSF_Library_Migration for more information.
 JSFLibraryContainerWizardPage_EditLibrary_DescriptionText=Select JSF Library for this reference to use.  Choose 'Edit...' to modify contents of the selected library.
 JSFLibraryContainerWizardPage_Edit=Edit...
 JSFLibraryContainerWizardPage_ImplAlreadyPresent=An implementation has already been chosen.  Please remove before adding different one
@@ -60,15 +57,12 @@
 JSFLibraryContainerWizardPage_SelectOneImpl=Choose only one implementation
 
 JSFLibraryWizard_DESCRIPTION=Create a library of jars that make up a JSF component library.
-JSFLibraryWizard_IMPLS_ONLY_DESC=Create a library of jars that make up a JSF implementation library.
-JSFLibraryWizard_CreateImplementation=Create JSF Implementation Library
 JSFLibraryWizard_CreateJSFLibrary=Create JSF Library
 JSFLibraryWizard_EditJSFLibrary=Edit JSF Library
 JSFLibraryWizard_JSFLibrary=JSF Library
 JSFLibraryWizard_LibraryName=Library &Name:
 JSFLibraryWizard_VersionSupported=&Version Supported:
 JSFLibraryWizard_LibraryJars=Library &Jars
-JSFLibraryWizard_IsJSFImplementation=Is JSF &Implementation
 JSFLibraryWizard_DeployJars=&Deploy Jars
 JSFLibraryWizard_Add=&Add...
 JSFLibraryWizard_Remove=&Remove
@@ -76,21 +70,9 @@
 JSFLibraryWizard_ValidateNoJars=The library must contain at least one jar.
 JSFLibraryWizard_ValidateNoLibraryName=A library name must be supplied.
 JSFLibraryWizard_ValidateExistingLibraryName=A library or implementation by this name already exists.
-JSFLibraryWizard_V1JSFLibrary_DialogMessage=The projects listed below contain JSF library references that are\
-obsolete and may not be automatically updated by this change. To fix this issue, you need to update these\
-these projects.\
-\n\nSee http://wiki.eclipse.org/index.php/JSF_Library_Migration for more information. \n\nProjects: {0}
-JSFLibraryWizard_V1JSFLibrary_DialogTitle=Backward compatibility issue
-
 JSFLibraryConfigControl_ImplementationLibrary=Implementation Library
 JSFLibraryPropertyPage_No_JSF_Facet_Installed=JSF Facet not installed.
-JSFLibraryConfigControl_NewImplementationLibrary=New...
-JSFLibraryConfigControl_ServerSuppliedButtonTooltip=Chosen server adapter must supply the JSF Implementation jars.
-JSFLibraryConfigControl_ServerSuppliedButtonLabel=Server Supplied JSF Implementation
-JSFLibraryConfigControl_NewImplButtonTooltip=Create new user supplied implementation library
 JSFLibraryConfigControl_DeployJAR=Deploy jars to WEB-INF/lib
-JSFLibraryConfigControl_ComponentLibrary=Component Libraries
-JSFLibraryConfigControl_DeployButtonLabel=Deploy
 JSFLibraryConfigControl_Add=\ \ >  
 JSFLibraryConfigControl_Remove=\ \ <  
 JSFLibraryConfigControl_AddAll=\ \ >>  
diff --git a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/project/facet/JSFFacetInstallPage.java b/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/project/facet/JSFFacetInstallPage.java
index 4874def..ed68632 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/project/facet/JSFFacetInstallPage.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/project/facet/JSFFacetInstallPage.java
@@ -10,7 +10,6 @@
  *******************************************************************************/
 package org.eclipse.jst.jsf.ui.internal.project.facet;
 
-import java.util.ArrayList;
 import java.util.Iterator;
 
 import org.eclipse.core.runtime.CoreException;
@@ -19,20 +18,13 @@
 import org.eclipse.jface.dialogs.IDialogSettings;
 import org.eclipse.jface.dialogs.IInputValidator;
 import org.eclipse.jface.dialogs.InputDialog;
-import org.eclipse.jface.preference.IPreferenceStore;
 import org.eclipse.jface.window.Window;
+import org.eclipse.jst.common.project.facet.core.libprov.LibraryInstallDelegate;
+import org.eclipse.jst.common.project.facet.ui.libprov.LibraryProviderFrameworkUi;
 import org.eclipse.jst.j2ee.project.facet.IJ2EEModuleFacetInstallDataModelProperties;
-import org.eclipse.jst.jsf.core.internal.jsflibraryconfig.JSFLibraryConfigDialogSettingData;
-import org.eclipse.jst.jsf.core.internal.jsflibraryconfig.JSFLibraryConfiglModelSource;
-import org.eclipse.jst.jsf.core.internal.jsflibraryconfig.JSFLibraryInternalReference;
 import org.eclipse.jst.jsf.core.internal.project.facet.IJSFFacetInstallDataModelProperties;
 import org.eclipse.jst.jsf.ui.internal.JSFUiPlugin;
 import org.eclipse.jst.jsf.ui.internal.Messages;
-import org.eclipse.jst.jsf.ui.internal.jsflibraryconfig.IJSFImplLibraryCreationListener;
-import org.eclipse.jst.jsf.ui.internal.jsflibraryconfig.JSFImplLibraryCreationEvent;
-import org.eclipse.jst.jsf.ui.internal.jsflibraryconfig.JSFLibraryConfigControl;
-import org.eclipse.jst.jsf.ui.internal.jsflibraryconfig.JSFLibraryConfigControlChangeEvent;
-import org.eclipse.jst.jsf.ui.internal.jsflibraryconfig.JSFLibraryConfigControlChangeListener;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.SelectionAdapter;
 import org.eclipse.swt.events.SelectionEvent;
@@ -40,6 +32,7 @@
 import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.widgets.Button;
 import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
 import org.eclipse.swt.widgets.Label;
 import org.eclipse.swt.widgets.List;
 import org.eclipse.swt.widgets.Text;
@@ -61,7 +54,6 @@
 public class JSFFacetInstallPage extends DataModelWizardPage implements
 		IJSFFacetInstallDataModelProperties, IFacetWizardPage {
 	// UI
-	private Label lblJSFImpl;
 	private Label lblJSFConfig;
 	private Text txtJSFConfig;
 	private Label lblJSFServletName;
@@ -82,19 +74,7 @@
 	private static final String SETTINGS_SERVLET_CLASSNAME = "servletClassname"; //$NON-NLS-1$
 	private static final String SETTINGS_URL_MAPPINGS = "urlMappings"; //$NON-NLS-1$
 	private static final String SETTINGS_URL_PATTERN = "pattern"; //$NON-NLS-1$
-	private static final String SETTINGS_DEPLOY_IMPL = "deployImplementation"; //$NON-NLS-1$
-	private static final String SETTINGS_IMPL_TYPE = "deployImplType";//$NON-NLS-1$
-	private static final String SETTINGS_COMPLIB = "selectedComponent"; //$NON-NLS-1$
-	private static final String SETTINGS_COMPLIB_SELECT_DEPLOY = "selectdeploycomplib"; //$NON-NLS-1$
-
-	private static final String SEPARATOR = ":"; //$NON-NLS-1$
 	
-	//Part of temporary fix for https://bugs.eclipse.org/bugs/show_bug.cgi?id=190304
-	private static final String DEFAULT_TO_CLIENT = "initialDefaultToClientSupplied";
-	private static final String DEFAULT_TO_SERVER = "initialDefaultToServerSupplied";
-
-
-	private JSFLibraryConfigControl jsfLibCfgComp = null;
 	// private String projectName = null;
 	private Composite composite = null;
 
@@ -128,37 +108,26 @@
 		jsfCompositeLayout.marginRight = 0;
 		jsfCompositeLayout.marginLeft = 0;
 		composite.setLayout(jsfCompositeLayout);
-
-		lblJSFImpl = new Label(composite, SWT.None);
-		GridData gdLbl = new GridData();
-		gdLbl.verticalIndent = 5;
-		gdLbl.verticalAlignment = SWT.BEGINNING;
-		lblJSFImpl.setLayoutData(gdLbl);
-		lblJSFImpl.setText(Messages.JSFFacetInstallPage_JSFLibraryLabel0);
 		
-		jsfLibCfgComp = new JSFLibraryConfigControl(composite, SWT.NONE);
-		jsfLibCfgComp
-				.addOkClickedListener(new IJSFImplLibraryCreationListener() {
-					public void okClicked(JSFImplLibraryCreationEvent event) {
-						if (event.isLibraryCreated()) {
-							validatePage();
-						}
-					}
-				});
+		final LibraryInstallDelegate librariesInstallDelegate
+		    = (LibraryInstallDelegate) getDataModel().getProperty( LIBRARY_PROVIDER_DELEGATE );
 		
-		jsfLibCfgComp.addChangeListener( new JSFLibraryConfigControlChangeListener(){
+		final Control librariesComposite
+		    = LibraryProviderFrameworkUi.createInstallLibraryPanel( composite, librariesInstallDelegate,
+		                                                            Messages.JSFFacetInstallPage_JSFImplementationLibrariesFrame );
+		
+		GridData gd = new GridData( GridData.FILL_HORIZONTAL );
+		gd.horizontalSpan = 3;
+		
+		librariesComposite.setLayoutData( gd );
+		
+		final Label spacer = new Label( composite, SWT.NONE );
+		spacer.setText( "" );
 
-			public void changed(JSFLibraryConfigControlChangeEvent e) {
-				validatePage();				
-			}
-			
-		});
-		GridData gd_comp = new GridData();
-		gd_comp.horizontalSpan = 2;
-		gd_comp.grabExcessHorizontalSpace = true;
-		gd_comp.grabExcessVerticalSpace = true;
-		gd_comp.horizontalAlignment = SWT.FILL;
-		jsfLibCfgComp.setLayoutData(gd_comp);
+        gd = new GridData( GridData.FILL_HORIZONTAL );
+        gd.horizontalSpan = 3;
+        
+		spacer.setLayoutData( gd );
 
 		lblJSFConfig = new Label(composite, SWT.NONE);
 		lblJSFConfig.setText(Messages.JSFFacetInstallPage_JSFConfigLabel);
@@ -293,34 +262,7 @@
 	}
 
 	private void initJSFCfgCtrlValues(IDialogSettings root) {
-		IMPLEMENTATION_TYPE implType = IMPLEMENTATION_TYPE.UNKNOWN;
-		String deployImpl = null;
-		
-		if (root != null) {
-			implType = IMPLEMENTATION_TYPE.getValue(root.get(SETTINGS_IMPL_TYPE));
-			deployImpl = root.get(SETTINGS_DEPLOY_IMPL);
-			
-		}
-				
-		//Part of temporary fix for https://bugs.eclipse.org/bugs/show_bug.cgi?id=190304
-		if (implType == IMPLEMENTATION_TYPE.UNKNOWN) {			
-			// if the impl type is still unknown, check if the product provided a default
-			IPreferenceStore prefs = JSFUiPlugin.getDefault().getPreferenceStore();
-			if(prefs.getBoolean(DEFAULT_TO_CLIENT)) {			
-				implType = IMPLEMENTATION_TYPE.USER_SPECIFIED;
-			}
-			else if(prefs.getBoolean(DEFAULT_TO_SERVER)) {	
-				implType = IMPLEMENTATION_TYPE.SERVER_SUPPLIED;
-			}
-		}
-
-		if (deployImpl == null || deployImpl.equals("")) { //$NON-NLS-1$
-			deployImpl = ((Boolean) model
-					.getDefaultProperty(IJSFFacetInstallDataModelProperties.DEPLOY_IMPLEMENTATION))
-					.toString();
-		}
-
-		IDialogSettings complibs = null;
+		/*IDialogSettings complibs = null;
 		if (root != null) {
 			complibs = root.getSection(SETTINGS_COMPLIB);
 		}
@@ -330,9 +272,8 @@
 			selection = complibs.getArray(SETTINGS_COMPLIB_SELECT_DEPLOY);
 		}
 
-		JSFLibraryConfiglModelSource source = new JSFLibraryConfigDialogSettingData(implType,
-				Boolean.valueOf(deployImpl).booleanValue(), selection);
-		jsfLibCfgComp.loadControlValuesFromModel(source);
+		JSFLibraryConfigDialogSettingData source = new JSFLibraryConfigDialogSettingData(selection);
+		jsfLibCfgComp.loadControlValuesFromModel(source);*/
 	}
 
 	
@@ -340,30 +281,12 @@
 		DialogSettings root = new DialogSettings(SETTINGS_ROOT);
 		dialogSettings.addSection(root);
 
-		root.put(SETTINGS_IMPL_TYPE, getJSFImplType());
-		root.put(SETTINGS_DEPLOY_IMPL, String.valueOf(getDeployJSFImpl()));
 		root.put(SETTINGS_CONFIG, getJSFConfig());
 		root.put(SETTINGS_SERVLET, getJSFServletName());
 		root.put(SETTINGS_SERVLET_CLASSNAME, getJSFServletClassname());
 		DialogSettings mappings = new DialogSettings(SETTINGS_URL_MAPPINGS);
 		root.addSection(mappings);
 		mappings.put(SETTINGS_URL_PATTERN, getJSFPatterns());
-
-		DialogSettings complibs = new DialogSettings(SETTINGS_COMPLIB);
-		root.addSection(complibs);
-		complibs.put(SETTINGS_COMPLIB_SELECT_DEPLOY, getCompLibSelections());
-	}
-
-	private String getJSFImplType() {
-		return IMPLEMENTATION_TYPE.getStringValue((IMPLEMENTATION_TYPE)model.getProperty(IMPLEMENTATION_TYPE_PROPERTY_NAME));
-	}
-
-	private boolean getDeployJSFImpl() {
-		if (jsfLibCfgComp.getSelectedJSFLibImplementation() == null) {
-			return false;
-		}
-		return jsfLibCfgComp.getSelectedJSFLibImplementation()
-				.isCheckedToBeDeployed();
 	}
 
 	private String getJSFConfig() {
@@ -382,26 +305,6 @@
 		return lstJSFServletURLPatterns.getItems();
 	}
 
-	private String[] getCompLibSelections() {
-		/*
-		 * Iterate thru the selected component libraries and return selected
-		 * component libraries and their deployment flags in a string array.
-		 */
-		JSFLibraryInternalReference complib = null;
-		String str = null;
-		ArrayList al = new ArrayList();
-
-		java.util.List list = jsfLibCfgComp.getSelectedJSFLibComponents();
-		Iterator it = list.iterator();
-		while (it.hasNext()) {
-			complib = (JSFLibraryInternalReference) it.next();
-			str = complib.getID() + SEPARATOR + complib.isCheckedToBeDeployed();
-			al.add(str);
-		}
-
-		return (String[]) al.toArray(new String[al.size()]);
-	}
-
 	/*
 	 * (non-Javadoc)
 	 * 
@@ -424,39 +327,13 @@
 	public void transferStateToConfig() {
 		saveSettings(); // convenient place for this. don't want to save if user
 						// cancelled.
-		// do nothing else now. being handled by synchHelper
-		// config.setProperty(IJSFFacetInstallDataModelProperties.IMPLEMENTATION,
-		// getJSFImpl());
-//		model
-//				.setStringProperty(
-//						IJSFFacetInstallDataModelProperties.CONFIG_PATH,
-//						getJSFConfig());
-//		model.setStringProperty(
-//				IJSFFacetInstallDataModelProperties.SERVLET_NAME,
-//				getJSFServletName());
-		// config.setProperty(IJSFFacetInstallDataModelProperties.SERVLET_URL_PATTERNS,
-		// getJSFPatterns());
-
-//		java.util.List implLibs = new ArrayList();
-//		implLibs.add(jsfLibCfgComp.getSelectedJSFLibImplementation());
-//		java.util.List compLibs = jsfLibCfgComp.getSelectedJSFLibComponents();
-//		model.setProperty(
-//				IJSFFacetInstallDataModelProperties.IMPLEMENTATION_LIBRARIES,
-//				implLibs);
-//		model.setProperty(
-//				IJSFFacetInstallDataModelProperties.COMPONENT_LIBRARIES,
-//				compLibs);
 	}
 
 	private void addModificationListeners() {
-		 jsfLibCfgComp.setSynchHelper(synchHelper);		 
 		 synchHelper.synchText(txtJSFConfig, CONFIG_PATH, null);
 		 synchHelper.synchText(txtJSFServletName, SERVLET_NAME, null);
 		 synchHelper.synchText(txtJSFServletClassName, SERVLET_CLASSNAME, null);
 		 synchHelper.synchList(lstJSFServletURLPatterns, SERVLET_URL_PATTERNS, null);
-		 
-		// synchHelper.synchCheckbox(chkDeployImpl, DEPLOY_IMPLEMENTATION,
-		// null);
 	}
 
 	private String isValidPattern(String value) {
@@ -514,8 +391,7 @@
 	 * @see org.eclipse.wst.common.frameworks.internal.datamodel.ui.DataModelWizardPage#getValidationPropertyNames()
 	 */
 	protected String[] getValidationPropertyNames() {
-		return new String[] { IMPLEMENTATION_TYPE_PROPERTY_NAME, IMPLEMENTATION, DEPLOY_IMPLEMENTATION,
-				CONFIG_PATH, SERVLET_NAME, SERVLET_CLASSNAME, COMPONENT_LIBRARIES };
+		return new String[] { CONFIG_PATH, SERVLET_NAME, SERVLET_CLASSNAME, COMPONENT_LIBRARIES, LIBRARY_PROVIDER_DELEGATE };
 	}
 
 	/* (non-Javadoc)
@@ -570,7 +446,7 @@
 		if (webAppDataModel != null)
 			webAppDataModel.removeListener(this);
 		
-		jsfLibCfgComp.dispose();
+		//jsfLibCfgComp.dispose();
 		super.dispose();
 	}
 
@@ -579,26 +455,7 @@
 	 */
 	protected void restoreDefaultSettings() {
 		initializeValues();
-
-		checkToCompletePage(jsfLibCfgComp);
 	}
-
-	/*
-	 * To force a JSF facet install page configuration to be performed    
-	 * when the JSF facet is selected but no JSF implementation library exists.
-	 */
-	private void checkToCompletePage(Composite control) {
-		boolean enableFinish = false;
-		IMPLEMENTATION_TYPE implType = (IMPLEMENTATION_TYPE)model.getProperty(IMPLEMENTATION_TYPE_PROPERTY_NAME);
-		if (implType == IMPLEMENTATION_TYPE.SERVER_SUPPLIED)
-			enableFinish = true;
-		else if (implType == IMPLEMENTATION_TYPE.USER_SPECIFIED && 
-				control != null && control instanceof JSFLibraryConfigControl) {
-			enableFinish = (((JSFLibraryConfigControl)control).getSelectedJSFLibImplementation() != null);
-		} //else must be unknown type and requires user interaction
-		setPageComplete(enableFinish);
-	}
-
 	/* (non-Javadoc)
 	 * @see org.eclipse.wst.common.frameworks.internal.datamodel.ui.DataModelWizardPage#showValidationErrorsOnEnter()
 	 */
diff --git a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/project/facet/JSFLibraryPropertyPage.java b/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/project/facet/JSFLibraryPropertyPage.java
new file mode 100644
index 0000000..149bfe6
--- /dev/null
+++ b/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/project/facet/JSFLibraryPropertyPage.java
@@ -0,0 +1,22 @@
+package org.eclipse.jst.jsf.ui.internal.project.facet;
+
+import org.eclipse.jst.common.project.facet.ui.libprov.FacetLibraryPropertyPage;
+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;
+
+public final class JSFLibraryPropertyPage
+
+    extends FacetLibraryPropertyPage
+    
+{
+    @Override
+    public IProjectFacetVersion getProjectFacetVersion()
+    {
+        final IProjectFacet jsfFacet = ProjectFacetsManager.getProjectFacet( "jst.jsf" );
+        final IFacetedProject fproj = getFacetedProject();
+        return fproj.getInstalledVersion( jsfFacet );
+    }
+    
+}