Fix for https://bugs.eclipse.org/bugs/show_bug.cgi?id=199295.
diff --git a/jsf/tests/org.eclipse.jst.pagedesigner.tests/.settings/org.eclipse.jdt.core.prefs b/jsf/tests/org.eclipse.jst.pagedesigner.tests/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..c773d54
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.pagedesigner.tests/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,56 @@
+#Fri Aug 17 10:42:14 PDT 2007
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore
+org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
+org.eclipse.jdt.core.compiler.problem.nullReference=ignore
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=ignore
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
diff --git a/jsf/tests/org.eclipse.jst.pagedesigner.tests/META-INF/MANIFEST.MF b/jsf/tests/org.eclipse.jst.pagedesigner.tests/META-INF/MANIFEST.MF
index 5f2d435..d7f94e5 100644
--- a/jsf/tests/org.eclipse.jst.pagedesigner.tests/META-INF/MANIFEST.MF
+++ b/jsf/tests/org.eclipse.jst.pagedesigner.tests/META-INF/MANIFEST.MF
@@ -1,7 +1,7 @@
 Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
 Bundle-Name: %Bundle-Name.0
-Bundle-SymbolicName: org.eclipse.jst.pagedesigner.tests
+Bundle-SymbolicName: org.eclipse.jst.pagedesigner.tests;singleton:=true
 Bundle-Version: 1.0.0.qualifier
 Bundle-Vendor: %Bundle-Vendor.0
 Bundle-RequiredExecutionEnvironment: J2SE-1.5
@@ -20,7 +20,8 @@
  org.eclipse.wst.xml.core;bundle-version="[1.1.0,1.2.0)",
  org.eclipse.jface.text;bundle-version="[3.2.0,4.0.0)",
  org.eclipse.jst.pagedesigner;bundle-version="[1.0.0,1.1.0)",
- org.eclipse.emf.common;bundle-version="[2.2.0,2.4.0)"
+ org.eclipse.emf.common;bundle-version="[2.2.0,2.4.0)",
+ org.eclipse.gef;bundle-version="[3.2.0,4.0.0)"
 Export-Package: org.eclipse.jst.pagedesigner.tests;x-internal:=true
 Bundle-ClassPath: pagedesignertests.jar
 Bundle-Activator: org.eclipse.jst.pagedesigner.tests.PageDesignerTestsPlugin
diff --git a/jsf/tests/org.eclipse.jst.pagedesigner.tests/build.properties b/jsf/tests/org.eclipse.jst.pagedesigner.tests/build.properties
index bb32779..415f0d8 100644
--- a/jsf/tests/org.eclipse.jst.pagedesigner.tests/build.properties
+++ b/jsf/tests/org.eclipse.jst.pagedesigner.tests/build.properties
@@ -13,7 +13,8 @@
                plugin.properties,\
                about.html,\
                testdata/,\
-               test.xml
+               test.xml,\
+               plugin.xml
 source.pagedesignertests.jar = src/
 output.pagedesignertests.jar = bin/
 jars.compile.order = pagedesignertests.jar
diff --git a/jsf/tests/org.eclipse.jst.pagedesigner.tests/metadata/test-metadata.xml b/jsf/tests/org.eclipse.jst.pagedesigner.tests/metadata/test-metadata.xml
new file mode 100644
index 0000000..82b132e
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.pagedesigner.tests/metadata/test-metadata.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<md:metadatamodel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" 
+    xmlns:md="http://org.eclipse.jst.jsf.common.metadata/metadata.ecore"
+    xmlns:pi="http://org.eclipse.jsf.pagedesigner/paletteInfos.ecore"
+    id="org.eclipse.jst.pagedesigner.tests.tagCreatorFactory1"
+    type="tagFile">
+    
+    <trait id="is-jsf-component-library">
+        <value>true</value>
+    </trait>
+
+    <entity id="tagWithMetadata" type="tag">
+        <trait id="tag-create">
+            <value xsi:type="pi:TagCreationInfo">
+                <attribute id="requiredAttr1" value="foobar"/>
+                <attribute id="notRequiredAttr1" value="someOtherFooBar"/>
+                <template><![CDATA[
+                    <outputText value="CommandLink"
+                    _uri_="http://java.sun.com/jsf/html" />
+                ]]></template>
+            </value>
+            
+        </trait>
+    </entity>
+    
+    <entity id="tagWithRequiredAttr2" type="tag">
+        <trait id="tag-create">
+            <value xsi:type="pi:TagCreationInfo">
+                <attribute id="requiredAttr1" value="foobar"/>
+            </value>
+        </trait>
+    </entity>
+</md:metadatamodel>
\ No newline at end of file
diff --git a/jsf/tests/org.eclipse.jst.pagedesigner.tests/plugin.xml b/jsf/tests/org.eclipse.jst.pagedesigner.tests/plugin.xml
new file mode 100644
index 0000000..ce4218e
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.pagedesigner.tests/plugin.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.2"?>
+<plugin>
+   <extension
+         point="org.eclipse.jst.jsf.common.standardMetaDataFiles">
+      <standardMetaDataFile
+            location="/metadata/test-metadata.xml"
+            uri="org.eclipse.jst.pagedesigner.tests.tagCreatorFactory1">
+      </standardMetaDataFile>
+   </extension>
+   <extension
+         point="org.eclipse.jst.pagedesigner.pageDesignerExtension">
+      <elementEditFactory
+            class="org.eclipse.jst.pagedesigner.tests.tagcreatorPlugin.TestCreationFactory"></elementEditFactory>
+   </extension>
+
+</plugin>
diff --git a/jsf/tests/org.eclipse.jst.pagedesigner.tests/src/org/eclipse/jst/pagedesigner/tests/AllTests.java b/jsf/tests/org.eclipse.jst.pagedesigner.tests/src/org/eclipse/jst/pagedesigner/tests/AllTests.java
index ac9d9d7..e8f0165 100644
--- a/jsf/tests/org.eclipse.jst.pagedesigner.tests/src/org/eclipse/jst/pagedesigner/tests/AllTests.java
+++ b/jsf/tests/org.eclipse.jst.pagedesigner.tests/src/org/eclipse/jst/pagedesigner/tests/AllTests.java
@@ -13,6 +13,18 @@
 import junit.framework.Test;
 import junit.framework.TestSuite;
 
+import org.eclipse.jst.jsf.core.JSFVersion;
+import org.eclipse.jst.jsf.core.tests.util.JSFCoreUtilHelper;
+import org.eclipse.jst.pagedesigner.tests.tagcreator.TestDefaultTagCreatorForJSFCore;
+import org.eclipse.jst.pagedesigner.tests.tagcreator.TestDefaultTagCreatorForJSFHTML;
+import org.eclipse.jst.pagedesigner.tests.tagcreator.TestDefaultTagCreatorHTML;
+import org.eclipse.jst.pagedesigner.tests.tagcreator.TestDefaultTagCreatorJSP;
+import org.eclipse.jst.pagedesigner.tests.tagcreator.TestItemCreationToolForJSFCore;
+import org.eclipse.jst.pagedesigner.tests.tagcreator.TestItemCreationToolForJSFHTML;
+import org.eclipse.jst.pagedesigner.tests.tagcreator.TestItemCreationToolHTML;
+import org.eclipse.jst.pagedesigner.tests.tagcreator.TestItemCreationToolJSP;
+import org.eclipse.jst.pagedesigner.tests.tagcreator.TestTagCreationFactory;
+
 /**
  * All tests suite for Web Page Editor.
  * 
@@ -28,19 +40,31 @@
 		//$JUnit-BEGIN$
 		
 		//tests requiring jsfRuntimeJarsDirectoryV1.1
-		addTestRequiringJSFRuntime(suite, Test_DTManager.class, "1.1");
-		addTestRequiringJSFRuntime(suite, Test_TransformOperations.class, "1.1");
+		addTestRequiringJSFRuntime(suite, Test_DTManager.class, JSFVersion.V1_1);
+		addTestRequiringJSFRuntime(suite, Test_TransformOperations.class, JSFVersion.V1_1);
+		addTestRequiringJSFRuntime(suite, TestDefaultTagCreatorForJSFCore.class, JSFVersion.V1_1);
+        addTestRequiringJSFRuntime(suite, TestDefaultTagCreatorForJSFHTML.class, JSFVersion.V1_1);
+        addTestRequiringJSFRuntime(suite, TestDefaultTagCreatorHTML.class, JSFVersion.V1_1);
+        addTestRequiringJSFRuntime(suite, TestDefaultTagCreatorJSP.class, JSFVersion.V1_1);
 
+        // TODO: could merge the item creation and default tag creators into a common testsuite
+        addTestRequiringJSFRuntime(suite, TestItemCreationToolForJSFCore.class, JSFVersion.V1_1);
+        addTestRequiringJSFRuntime(suite, TestItemCreationToolForJSFHTML.class, JSFVersion.V1_1);
+        addTestRequiringJSFRuntime(suite, TestItemCreationToolHTML.class, JSFVersion.V1_1);
+        addTestRequiringJSFRuntime(suite, TestItemCreationToolJSP.class, JSFVersion.V1_1);
+
+        
+        addTestRequiringJSFRuntime(suite, TestTagCreationFactory.class, JSFVersion.V1_1);
+        
 		//$JUnit-END$
 		return suite;
 	}
 
-	private static void addTestRequiringJSFRuntime(TestSuite suite, Class testClass, String jsfVersion) {
-		if (Utils.isJSFRuntimeJarsDirectoryValid(jsfVersion)) {
+	private static void addTestRequiringJSFRuntime(TestSuite suite, Class<?> testClass, JSFVersion jsfVersion) {
+		if (JSFCoreUtilHelper.isJSFRuntimeJarsDirectoryValid(jsfVersion)) {
 			suite.addTestSuite(testClass);
 		} else {
-			System.err.println(Utils.getTestRequiresJSFRuntimeMessage(testClass, jsfVersion));
+			System.err.println(JSFCoreUtilHelper.getTestRequiresJSFRuntimeMessage(testClass, jsfVersion));
 		}
 	}
-
 }
diff --git a/jsf/tests/org.eclipse.jst.pagedesigner.tests/src/org/eclipse/jst/pagedesigner/tests/Test_DTManager.java b/jsf/tests/org.eclipse.jst.pagedesigner.tests/src/org/eclipse/jst/pagedesigner/tests/Test_DTManager.java
index c14f180..b20f021 100644
--- a/jsf/tests/org.eclipse.jst.pagedesigner.tests/src/org/eclipse/jst/pagedesigner/tests/Test_DTManager.java
+++ b/jsf/tests/org.eclipse.jst.pagedesigner.tests/src/org/eclipse/jst/pagedesigner/tests/Test_DTManager.java
@@ -22,6 +22,8 @@
 import org.eclipse.jst.jsf.context.structureddocument.IStructuredDocumentContext;
 import org.eclipse.jst.jsf.context.structureddocument.IStructuredDocumentContextFactory;
 import org.eclipse.jst.jsf.core.IJSFCoreConstants;
+import org.eclipse.jst.jsf.core.JSFVersion;
+import org.eclipse.jst.jsf.core.tests.util.JSFCoreUtilHelper;
 import org.eclipse.jst.jsf.core.tests.util.JSFFacetedTestEnvironment;
 import org.eclipse.jst.jsf.test.util.JSFTestUtil;
 import org.eclipse.jst.jsf.test.util.WebProjectTestEnvironment;
@@ -70,7 +72,7 @@
         		"/testdata/Test_DTManager.jsp.data",
         		"/Test_DTManager.jsp");
 
-        assertTrue(Utils.addJSFRuntimeJarsToClasspath("1.1", jsfFacetedTestEnv));
+        assertTrue(JSFCoreUtilHelper.addJSFRuntimeJarsToClasspath(JSFVersion.V1_1, jsfFacetedTestEnv));
 	}
 
 	/**
@@ -183,10 +185,10 @@
 
             //test IDTInfo instance
             TagConvertInfo tcInfo = dtInfo.getTagConvertInfo();
-            List operations = tcInfo.getOperations();
+            List<?> operations = tcInfo.getOperations();
             assertNotNull(operations);
             assertEquals(4, operations.size());
-            List tdInfos = dtInfo.getTagDecorateInfos();
+            List<?> tdInfos = dtInfo.getTagDecorateInfos();
             assertEquals(2, tdInfos.size());
             TagDecorateInfo tdInfoDesign = dtInfo.getTagDecorateInfo("vpd-decorate-design");
             assertNotNull(tdInfoDesign);
diff --git a/jsf/tests/org.eclipse.jst.pagedesigner.tests/src/org/eclipse/jst/pagedesigner/tests/Test_TransformOperations.java b/jsf/tests/org.eclipse.jst.pagedesigner.tests/src/org/eclipse/jst/pagedesigner/tests/Test_TransformOperations.java
index aecb6fa..4eaa113 100644
--- a/jsf/tests/org.eclipse.jst.pagedesigner.tests/src/org/eclipse/jst/pagedesigner/tests/Test_TransformOperations.java
+++ b/jsf/tests/org.eclipse.jst.pagedesigner.tests/src/org/eclipse/jst/pagedesigner/tests/Test_TransformOperations.java
@@ -22,6 +22,8 @@
 import org.eclipse.jst.jsf.context.structureddocument.IStructuredDocumentContext;
 import org.eclipse.jst.jsf.context.structureddocument.IStructuredDocumentContextFactory;
 import org.eclipse.jst.jsf.core.IJSFCoreConstants;
+import org.eclipse.jst.jsf.core.JSFVersion;
+import org.eclipse.jst.jsf.core.tests.util.JSFCoreUtilHelper;
 import org.eclipse.jst.jsf.core.tests.util.JSFFacetedTestEnvironment;
 import org.eclipse.jst.jsf.test.util.JSFTestUtil;
 import org.eclipse.jst.jsf.test.util.WebProjectTestEnvironment;
@@ -69,7 +71,7 @@
         		"/testdata/Test_TransformOperations.jsp.data",
         		"/Test_TransformOperations.jsp");
 
-        assertTrue(Utils.addJSFRuntimeJarsToClasspath("1.1", jsfFacetedTestEnv));
+        assertTrue(JSFCoreUtilHelper.addJSFRuntimeJarsToClasspath(JSFVersion.V1_1, jsfFacetedTestEnv));
 	}
 
 	/**
@@ -283,7 +285,7 @@
             tagConverter.convertRefresh(null);
 
             //test tag converter to ensure correct child element was copied to child node list
-            List childNodes = tagConverter.getChildModeList();
+            List<?> childNodes = tagConverter.getChildModeList();
             assertTrue(childNodes.size() > 1);
             Node secondChildNode = (Node)childNodes.get(1);
             assertTrue(secondChildNode instanceof Element);
diff --git a/jsf/tests/org.eclipse.jst.pagedesigner.tests/src/org/eclipse/jst/pagedesigner/tests/Utils.java b/jsf/tests/org.eclipse.jst.pagedesigner.tests/src/org/eclipse/jst/pagedesigner/tests/Utils.java
index 2992786..40656f0 100644
--- a/jsf/tests/org.eclipse.jst.pagedesigner.tests/src/org/eclipse/jst/pagedesigner/tests/Utils.java
+++ b/jsf/tests/org.eclipse.jst.pagedesigner.tests/src/org/eclipse/jst/pagedesigner/tests/Utils.java
@@ -10,71 +10,13 @@
  *******************************************************************************/
 package org.eclipse.jst.pagedesigner.tests;
 
-import java.io.File;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.jst.jsf.core.internal.jsflibraryconfig.JSFLibraryRegistryUtil;
-import org.eclipse.jst.jsf.core.internal.jsflibraryregistry.JSFLibrary;
-import org.eclipse.jst.jsf.core.internal.jsflibraryregistry.JSFLibraryRegistry;
-import org.eclipse.jst.jsf.core.tests.util.JSFCoreUtilHelper;
-import org.eclipse.jst.jsf.core.tests.util.JSFFacetedTestEnvironment;
-import org.eclipse.jst.jsf.test.util.JSFTestUtil;
 
 /**
  * Web Page Editor test utilities.
  * 
  * @author Ian Trimble - Oracle
  */
-public class Utils {
-
-	public static String[] getJSFRuntimeJarNames(String jsfVersion) {
-		String[] jarNames = null;
-		String dirName = JSFTestUtil.getJSFRuntimeJarsDirectory(jsfVersion);
-		if (dirName != null) {
-			File dir = new File(dirName);
-			if (dir.exists() && dir.isDirectory()) {
-				File[] jars = dir.listFiles();
-				if (jars != null && jars.length > 0) {
-					jarNames = new String[jars.length];
-					for (int i = 0; i < jars.length; i++) {
-						jarNames[i] = jars[i].getAbsolutePath();
-					}
-				}
-			}
-		}
-		return jarNames;
-	}
-
-	public static boolean isJSFRuntimeJarsDirectoryValid(String jsfVersion) {
-		return getJSFRuntimeJarNames(jsfVersion) != null;
-	}
-
-	public static boolean addJSFRuntimeJarsToClasspath(String jsfVersion, JSFFacetedTestEnvironment jsfFacetedTestEnv) throws CoreException {
-		boolean success = false;
-		String[] jarNames = getJSFRuntimeJarNames(jsfVersion);
-		if (jarNames != null) {
-			JSFLibraryRegistry jsfLibRegistry = JSFLibraryRegistryUtil.getInstance().getJSFLibraryRegistry();
-			String libIDandName = "_internalJSFRuntimeLibraryV" + jsfVersion + "_";
-			JSFLibrary jsfImpl = JSFCoreUtilHelper.constructJSFLib(libIDandName, libIDandName, "", jarNames, true);
-			jsfLibRegistry.addJSFLibrary(jsfImpl);
-			jsfFacetedTestEnv.addJSFLibraryReference(jsfImpl, true);
-			success = true;
-		}
-		return success;
-	}
-
-	public static String getTestRequiresJSFRuntimeMessage(Class testClass, String jsfVersion) {
-		StringBuffer sb = new StringBuffer();
-		sb.append("Unable to run test suite \"");
-		sb.append(testClass.getName());
-		sb.append("\"; JSF runtime (v");
-		sb.append(jsfVersion);
-		sb.append(") is required but not present.\nSystem property or environment variable \"jsfRuntimeJarsDirectoryV");
-		sb.append(jsfVersion);
-		sb.append("\" must be set to point to a directory containing JSF runtime (v");
-		sb.append(jsfVersion);
-		sb.append(") JARs.");
-		return sb.toString();
-	}
-
+public class Utils 
+{
+    // prior logic moved to JSFCoreUtilHelper
 }
diff --git a/jsf/tests/org.eclipse.jst.pagedesigner.tests/src/org/eclipse/jst/pagedesigner/tests/tagcreator/TestDefaultTagCreatorForJSFCore.java b/jsf/tests/org.eclipse.jst.pagedesigner.tests/src/org/eclipse/jst/pagedesigner/tests/tagcreator/TestDefaultTagCreatorForJSFCore.java
new file mode 100644
index 0000000..7ad5fab
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.pagedesigner.tests/src/org/eclipse/jst/pagedesigner/tests/tagcreator/TestDefaultTagCreatorForJSFCore.java
@@ -0,0 +1,156 @@
+package org.eclipse.jst.pagedesigner.tests.tagcreator;
+
+import org.eclipse.jst.jsf.core.internal.tld.IJSFConstants;
+import org.eclipse.jst.pagedesigner.tests.tagcreator.base.BaseTagCreatorTestCase;
+
+public class TestDefaultTagCreatorForJSFCore extends BaseTagCreatorTestCase 
+{
+    public TestDefaultTagCreatorForJSFCore()
+    {
+        super("f", "jsf");
+    }
+
+    @Override
+    protected void setUp() throws Exception 
+    {
+        super.setUp();
+    }
+
+    @Override
+    protected void tearDown() throws Exception 
+    {
+        super.tearDown();
+    }
+
+    public void testCreateActionListener() throws Exception
+    {
+        doCreateTest(IJSFConstants.TAG_IDENTIFIER_ACTIONLISTENER, "jsp", "jsp", 358);
+    }
+    
+    public void testCreateAttribute() throws Exception
+    {
+        doCreateTest(IJSFConstants.TAG_IDENTIFIER_ATTRIBUTE, "jsp", "jsp", 358);
+    }
+
+    public void testCreateConvertDateTime() throws Exception
+    {
+        doCreateTest(IJSFConstants.TAG_IDENTIFIER_CONVERTDATETIME, "jsp", "jsp", 358);
+    }
+    public void testCreateConvertNumber() throws Exception
+    {
+        doCreateTest(IJSFConstants.TAG_IDENTIFIER_CONVERTNUMBER, "jsp", "jsp", 358);
+    }
+
+    /**
+     * @throws Exception
+     */
+    public void testCreateConverter() throws Exception
+    {
+        doCreateTest(IJSFConstants.TAG_IDENTIFIER_CONVERTER, "jsp", "jsp", 358);
+    }
+
+    /**
+     * @throws Exception
+     */
+    public void testCreateFacet() throws Exception
+    {
+        doCreateTest(IJSFConstants.TAG_IDENTIFIER_FACET, "jsp", "jsp", 358);
+    }
+
+    /**
+     * @throws Exception
+     */
+    public void testCreateLoadBundle() throws Exception
+    {
+        doCreateTest(IJSFConstants.TAG_IDENTIFIER_LOADBUNDLE, "jsp", "jsp", 358);
+    }
+
+    /**
+     * @throws Exception
+     */
+    public void testCreateParam() throws Exception
+    {
+        doCreateTest(IJSFConstants.TAG_IDENTIFIER_PARAM, "jsp", "jsp", 358);
+    }
+
+    /**
+     * @throws Exception
+     */
+    public void testCreateSelectItem() throws Exception
+    {
+        doCreateTest(IJSFConstants.TAG_IDENTIFIER_SELECTITEM, "jsp", "jsp", 358);
+    }
+
+    /**
+     * @throws Exception
+     */
+    public void testCreateSelectItems() throws Exception
+    {
+        doCreateTest(IJSFConstants.TAG_IDENTIFIER_SELECTITEMS, "jsp", "jsp", 358);
+    }
+
+    /**
+     * @throws Exception
+     */
+    public void testCreateSubview() throws Exception
+    {
+        doCreateTest(IJSFConstants.TAG_IDENTIFIER_SUBVIEW, "jsp", "jsp", 358);
+    }
+
+    /**
+     * @throws Exception
+     */
+    public void testCreateValidateDoubleRange() throws Exception
+    {
+        doCreateTest(IJSFConstants.TAG_IDENTIFIER_VALIDATEDOUBLERANGE, "jsp", "jsp", 358);
+    }
+
+    /**
+     * @throws Exception
+     */
+    public void testCreateValidateLength() throws Exception
+    {
+        doCreateTest(IJSFConstants.TAG_IDENTIFIER_VALIDATELENGTH, "jsp", "jsp", 358);
+    }
+    
+    /**
+     * @throws Exception
+     */
+    public void testCreateValidateLongRange() throws Exception
+    {
+        doCreateTest(IJSFConstants.TAG_IDENTIFIER_VALIDATELONGRANGE, "jsp", "jsp", 358);
+    }
+
+    /**
+     * @throws Exception
+     */
+    public void testCreateValidator() throws Exception
+    {
+        doCreateTest(IJSFConstants.TAG_IDENTIFIER_VALIDATOR, "jsp", "jsp", 358);
+    }
+    
+    /**
+     * @throws Exception
+     */
+    public void testCreateValueChangeListener() throws Exception
+    {
+        doCreateTest(IJSFConstants.TAG_IDENTIFIER_VALUECHANGELISTENER, "jsp", "jsp", 358);
+    }
+
+    /**
+     * @throws Exception
+     */
+    public void testCreateVerbatim() throws Exception
+    {
+        doCreateTest(IJSFConstants.TAG_IDENTIFIER_VERBATIM, "jsp", "jsp", 358);
+    }
+
+    /**
+     * @throws Exception
+     */
+    public void testCreateView() throws Exception
+    {
+        doCreateTest(IJSFConstants.TAG_IDENTIFIER_VIEW, "jsp", "jsp", 358);
+    }
+
+}
diff --git a/jsf/tests/org.eclipse.jst.pagedesigner.tests/src/org/eclipse/jst/pagedesigner/tests/tagcreator/TestDefaultTagCreatorForJSFHTML.java b/jsf/tests/org.eclipse.jst.pagedesigner.tests/src/org/eclipse/jst/pagedesigner/tests/tagcreator/TestDefaultTagCreatorForJSFHTML.java
new file mode 100644
index 0000000..c8e27a3
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.pagedesigner.tests/src/org/eclipse/jst/pagedesigner/tests/tagcreator/TestDefaultTagCreatorForJSFHTML.java
@@ -0,0 +1,142 @@
+package org.eclipse.jst.pagedesigner.tests.tagcreator;
+
+import org.eclipse.jst.jsf.core.internal.tld.IJSFConstants;
+import org.eclipse.jst.pagedesigner.tests.tagcreator.base.BaseTagCreatorTestCase;
+
+public class TestDefaultTagCreatorForJSFHTML extends BaseTagCreatorTestCase
+{
+    public TestDefaultTagCreatorForJSFHTML()
+    {
+        super("h", "jsf");
+    }
+
+    @Override
+    protected void setUp() throws Exception 
+    {
+        super.setUp();
+    }
+
+    @Override
+    protected void tearDown() throws Exception 
+    {
+        super.tearDown();
+    }
+
+    public void testCreateButton() throws Exception
+    {
+        doCreateTest(IJSFConstants.TAG_IDENTIFIER_COMMANDBUTTON, "jsp", "jsp", 358);
+        doCreateTest(IJSFConstants.TAG_IDENTIFIER_COMMANDBUTTON, "jspx", "jspx", 495);
+        doCreateTest(IJSFConstants.TAG_IDENTIFIER_COMMANDBUTTON, "xhtml", "xhtml", 350);
+    }
+
+    public void testCreateCommandLink() throws Exception
+    {
+        doCreateTest(IJSFConstants.TAG_IDENTIFIER_COMMANDLINK, "jsp", "jsp", 358);
+    }
+
+    public void testCreatePanelGrid() throws Exception
+    {
+        doCreateTest(IJSFConstants.TAG_IDENTIFIER_PANEL_GRID, "jsp", "jsp", 358);
+    }
+    
+    public void testCreateDataTable() throws Exception
+    {
+        doCreateTest(IJSFConstants.TAG_IDENTIFIER_DATA_TABLE, "jsp", "jsp", 358);
+    }
+    
+    public void testCreateForm() throws Exception
+    {
+        doCreateTest(IJSFConstants.TAG_IDENTIFIER_FORM, "jsp", "jsp", 358);
+    }
+    
+    public void testCreateGraphicImage() throws  Exception
+    {
+        doCreateTest(IJSFConstants.TAG_IDENTIFIER_GRAPHICIMAGE, "jsp", "jsp", 358);
+    }
+    
+    public void testCreateInputHidden() throws Exception
+    {
+        doCreateTest(IJSFConstants.TAG_IDENTIFIER_INPUTHIDDEN, "jsp", "jsp", 358);
+    }
+    
+    public void testCreateMessage() throws Exception
+    {
+        doCreateTest(IJSFConstants.TAG_IDENTIFIER_MESSAGE, "jsp", "jsp", 358);
+    }
+    
+    public void testCreateMessages() throws Exception
+    {
+        doCreateTest(IJSFConstants.TAG_IDENTIFIER_MESSAGES, "jsp", "jsp", 358);
+    }
+    
+    public void testCreateOutputFormat() throws Exception
+    {
+        doCreateTest(IJSFConstants.TAG_IDENTIFIER_OUTPUTFORMAT, "jsp", "jsp", 358);
+    }
+    
+    public void testCreateOutputLabel() throws Exception
+    {
+        doCreateTest(IJSFConstants.TAG_IDENTIFIER_OUTPUTLABEL, "jsp", "jsp", 358);
+    }
+    
+    public void testCreateOutputText() throws Exception
+    {
+        doCreateTest(IJSFConstants.TAG_IDENTIFIER_OUTPUTTEXT, "jsp", "jsp", 358);
+    }
+
+    public void testCreatePanelGroup() throws Exception
+    {
+        doCreateTest(IJSFConstants.TAG_IDENTIFIER_PANEL_GROUP, "jsp", "jsp", 358);
+    }
+
+    public void testCreateInputSecret() throws Exception
+    {
+        doCreateTest(IJSFConstants.TAG_IDENTIFIER_INPUTSECRET, "jsp", "jsp", 358);
+    }
+    
+    public void testCreateSelectBooleanCheckbox() throws Exception
+    {
+        doCreateTest(IJSFConstants.TAG_IDENTIFIER_SELECTBOOLEANCHECKBOX, "jsp", "jsp", 358);
+    }
+
+    public void testCreateSelectManyCheckbox() throws Exception
+    {
+        doCreateTest(IJSFConstants.TAG_IDENTIFIER_SELECTMANYCHECKBOX, "jsp", "jsp", 358);
+    }
+    
+    public void testCreateSelectManyListbox() throws Exception
+    {
+        doCreateTest(IJSFConstants.TAG_IDENTIFIER_SELECTMANYLISTBOX, "jsp", "jsp", 358);
+    }
+
+    public void testCreateSelectManyMenu() throws Exception
+    {
+        doCreateTest(IJSFConstants.TAG_IDENTIFIER_SELECTMANYMENU, "jsp", "jsp", 358);
+    }
+
+    public void testCreateSelectOneListbox() throws Exception
+    {
+        doCreateTest(IJSFConstants.TAG_IDENTIFIER_SELECTONELISTBOX, "jsp", "jsp", 358);
+    }
+
+    public void testCreateSelectOneMenu() throws Exception
+    {
+        doCreateTest(IJSFConstants.TAG_IDENTIFIER_SELECTONEMENU, "jsp", "jsp", 358);
+    }
+
+    public void testCreateSelectOneRadio() throws Exception
+    {
+        doCreateTest(IJSFConstants.TAG_IDENTIFIER_SELECTONERADIO, "jsp", "jsp", 358);
+    }
+
+    public void testCreateInputText() throws Exception
+    {
+        doCreateTest(IJSFConstants.TAG_IDENTIFIER_INPUTTEXT, "jsp", "jsp", 358);
+    }
+
+    public void testCreateInputTextArea() throws Exception
+    {
+        doCreateTest(IJSFConstants.TAG_IDENTIFIER_INPUTTEXTAREA, "jsp", "jsp", 358);
+    }
+
+}
\ No newline at end of file
diff --git a/jsf/tests/org.eclipse.jst.pagedesigner.tests/src/org/eclipse/jst/pagedesigner/tests/tagcreator/TestDefaultTagCreatorHTML.java b/jsf/tests/org.eclipse.jst.pagedesigner.tests/src/org/eclipse/jst/pagedesigner/tests/tagcreator/TestDefaultTagCreatorHTML.java
new file mode 100644
index 0000000..c83b753
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.pagedesigner.tests/src/org/eclipse/jst/pagedesigner/tests/tagcreator/TestDefaultTagCreatorHTML.java
@@ -0,0 +1,36 @@
+package org.eclipse.jst.pagedesigner.tests.tagcreator;
+
+import org.eclipse.jst.jsf.core.internal.tld.TagIdentifierFactory;
+import org.eclipse.jst.pagedesigner.tests.tagcreator.base.BaseTagCreatorTestCase;
+import org.eclipse.wst.xml.core.internal.provisional.contentmodel.CMDocType;
+
+/**
+ * Some basic tests to cover HTML tags
+ * @author cbateman
+ *
+ */
+public class TestDefaultTagCreatorHTML extends BaseTagCreatorTestCase
+{
+    public TestDefaultTagCreatorHTML()
+    {
+        super("", "html");
+    }
+
+    @Override
+    protected void setUp() throws Exception 
+    {
+        super.setUp();
+    }
+
+    @Override
+    protected void tearDown() throws Exception 
+    {
+        super.tearDown();
+    }
+
+    public void testCreateButton() throws Exception
+    {
+        doCreateTest(TagIdentifierFactory.createJSPTagWrapper(CMDocType.HTML_DOC_TYPE, "INPUT.BUTTON"), "html", "html", 358);
+        doCreateTest(TagIdentifierFactory.createJSPTagWrapper(CMDocType.HTML_DOC_TYPE, "INPUT.BUTTON"), "xhtml", "xhtml", 350);
+    }
+}
diff --git a/jsf/tests/org.eclipse.jst.pagedesigner.tests/src/org/eclipse/jst/pagedesigner/tests/tagcreator/TestDefaultTagCreatorJSP.java b/jsf/tests/org.eclipse.jst.pagedesigner.tests/src/org/eclipse/jst/pagedesigner/tests/tagcreator/TestDefaultTagCreatorJSP.java
new file mode 100644
index 0000000..05eb97d
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.pagedesigner.tests/src/org/eclipse/jst/pagedesigner/tests/tagcreator/TestDefaultTagCreatorJSP.java
@@ -0,0 +1,30 @@
+package org.eclipse.jst.pagedesigner.tests.tagcreator;
+
+import org.eclipse.jst.jsf.core.internal.tld.TagIdentifierFactory;
+import org.eclipse.jst.pagedesigner.tests.tagcreator.base.BaseTagCreatorTestCase;
+
+public class TestDefaultTagCreatorJSP extends BaseTagCreatorTestCase 
+{
+    public TestDefaultTagCreatorJSP()
+    {
+        super("jsp", "jsp");
+    }
+
+    @Override
+    protected void setUp() throws Exception 
+    {
+        super.setUp();
+    }
+
+    @Override
+    protected void tearDown() throws Exception 
+    {
+        super.tearDown();
+    }
+
+    public void testIncludeDirective() throws Exception
+    {
+        doCreateTest(TagIdentifierFactory.createJSPTagWrapper("jsp11", "jsp:directive.include"), "jsp", "jsp", 349);
+        doCreateTest(TagIdentifierFactory.createJSPTagWrapper("jsp11", "jsp:directive.include"), "jspx", "jspx", 492);
+    }
+}
diff --git a/jsf/tests/org.eclipse.jst.pagedesigner.tests/src/org/eclipse/jst/pagedesigner/tests/tagcreator/TestItemCreationToolForJSFCore.java b/jsf/tests/org.eclipse.jst.pagedesigner.tests/src/org/eclipse/jst/pagedesigner/tests/tagcreator/TestItemCreationToolForJSFCore.java
new file mode 100644
index 0000000..21fe4e2
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.pagedesigner.tests/src/org/eclipse/jst/pagedesigner/tests/tagcreator/TestItemCreationToolForJSFCore.java
@@ -0,0 +1,156 @@
+package org.eclipse.jst.pagedesigner.tests.tagcreator;
+
+import org.eclipse.jst.jsf.core.internal.tld.IJSFConstants;
+import org.eclipse.jst.pagedesigner.tests.tagcreator.base.BaseItemCreationToolTestCase;
+
+public class TestItemCreationToolForJSFCore extends BaseItemCreationToolTestCase 
+{
+    public TestItemCreationToolForJSFCore()
+    {
+        super("jsf");
+    }
+
+    @Override
+    protected void setUp() throws Exception 
+    {
+        super.setUp();
+    }
+
+    @Override
+    protected void tearDown() throws Exception 
+    {
+        super.tearDown();
+    }
+
+    public void testCreateActionListener() throws Exception
+    {
+        doCreateTest(IJSFConstants.TAG_IDENTIFIER_ACTIONLISTENER, "jsp", "jsp", 358);
+    }
+    
+    public void testCreateAttribute() throws Exception
+    {
+        doCreateTest(IJSFConstants.TAG_IDENTIFIER_ATTRIBUTE, "jsp", "jsp", 358);
+    }
+
+    public void testCreateConvertDateTime() throws Exception
+    {
+        doCreateTest(IJSFConstants.TAG_IDENTIFIER_CONVERTDATETIME, "jsp", "jsp", 358);
+    }
+    public void testCreateConvertNumber() throws Exception
+    {
+        doCreateTest(IJSFConstants.TAG_IDENTIFIER_CONVERTNUMBER, "jsp", "jsp", 358);
+    }
+
+    /**
+     * @throws Exception
+     */
+    public void testCreateConverter() throws Exception
+    {
+        doCreateTest(IJSFConstants.TAG_IDENTIFIER_CONVERTER, "jsp", "jsp", 358);
+    }
+
+    /**
+     * @throws Exception
+     */
+    public void testCreateFacet() throws Exception
+    {
+        doCreateTest(IJSFConstants.TAG_IDENTIFIER_FACET, "jsp", "jsp", 358);
+    }
+
+    /**
+     * @throws Exception
+     */
+    public void testCreateLoadBundle() throws Exception
+    {
+        doCreateTest(IJSFConstants.TAG_IDENTIFIER_LOADBUNDLE, "jsp", "jsp", 358);
+    }
+
+    /**
+     * @throws Exception
+     */
+    public void testCreateParam() throws Exception
+    {
+        doCreateTest(IJSFConstants.TAG_IDENTIFIER_PARAM, "jsp", "jsp", 358);
+    }
+
+    /**
+     * @throws Exception
+     */
+    public void testCreateSelectItem() throws Exception
+    {
+        doCreateTest(IJSFConstants.TAG_IDENTIFIER_SELECTITEM, "jsp", "jsp", 358);
+    }
+
+    /**
+     * @throws Exception
+     */
+    public void testCreateSelectItems() throws Exception
+    {
+        doCreateTest(IJSFConstants.TAG_IDENTIFIER_SELECTITEMS, "jsp", "jsp", 358);
+    }
+
+    /**
+     * @throws Exception
+     */
+    public void testCreateSubview() throws Exception
+    {
+        doCreateTest(IJSFConstants.TAG_IDENTIFIER_SUBVIEW, "jsp", "jsp", 358);
+    }
+
+    /**
+     * @throws Exception
+     */
+    public void testCreateValidateDoubleRange() throws Exception
+    {
+        doCreateTest(IJSFConstants.TAG_IDENTIFIER_VALIDATEDOUBLERANGE, "jsp", "jsp", 358);
+    }
+
+    /**
+     * @throws Exception
+     */
+    public void testCreateValidateLength() throws Exception
+    {
+        doCreateTest(IJSFConstants.TAG_IDENTIFIER_VALIDATELENGTH, "jsp", "jsp", 358);
+    }
+    
+    /**
+     * @throws Exception
+     */
+    public void testCreateValidateLongRange() throws Exception
+    {
+        doCreateTest(IJSFConstants.TAG_IDENTIFIER_VALIDATELONGRANGE, "jsp", "jsp", 358);
+    }
+
+    /**
+     * @throws Exception
+     */
+    public void testCreateValidator() throws Exception
+    {
+        doCreateTest(IJSFConstants.TAG_IDENTIFIER_VALIDATOR, "jsp", "jsp", 358);
+    }
+    
+    /**
+     * @throws Exception
+     */
+    public void testCreateValueChangeListener() throws Exception
+    {
+        doCreateTest(IJSFConstants.TAG_IDENTIFIER_VALUECHANGELISTENER, "jsp", "jsp", 358);
+    }
+
+    /**
+     * @throws Exception
+     */
+    public void testCreateVerbatim() throws Exception
+    {
+        doCreateTest(IJSFConstants.TAG_IDENTIFIER_VERBATIM, "jsp", "jsp", 358);
+    }
+
+    /**
+     * @throws Exception
+     */
+    public void testCreateView() throws Exception
+    {
+        doCreateTest(IJSFConstants.TAG_IDENTIFIER_VIEW, "jsp", "jsp", 358);
+    }
+
+}
diff --git a/jsf/tests/org.eclipse.jst.pagedesigner.tests/src/org/eclipse/jst/pagedesigner/tests/tagcreator/TestItemCreationToolForJSFHTML.java b/jsf/tests/org.eclipse.jst.pagedesigner.tests/src/org/eclipse/jst/pagedesigner/tests/tagcreator/TestItemCreationToolForJSFHTML.java
new file mode 100644
index 0000000..a197a92
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.pagedesigner.tests/src/org/eclipse/jst/pagedesigner/tests/tagcreator/TestItemCreationToolForJSFHTML.java
@@ -0,0 +1,142 @@
+package org.eclipse.jst.pagedesigner.tests.tagcreator;
+
+import org.eclipse.jst.jsf.core.internal.tld.IJSFConstants;
+import org.eclipse.jst.pagedesigner.tests.tagcreator.base.BaseItemCreationToolTestCase;
+
+public class TestItemCreationToolForJSFHTML extends BaseItemCreationToolTestCase
+{
+    public TestItemCreationToolForJSFHTML()
+    {
+        super("jsf");
+    }
+
+    @Override
+    protected void setUp() throws Exception 
+    {
+        super.setUp();
+    }
+
+    @Override
+    protected void tearDown() throws Exception 
+    {
+        super.tearDown();
+    }
+
+    public void testCreateButton() throws Exception
+    {
+        doCreateTest(IJSFConstants.TAG_IDENTIFIER_COMMANDBUTTON, "jsp", "jsp", 358);
+        doCreateTest(IJSFConstants.TAG_IDENTIFIER_COMMANDBUTTON, "jspx", "jspx", 495);
+        doCreateTest(IJSFConstants.TAG_IDENTIFIER_COMMANDBUTTON, "xhtml", "xhtml", 350);
+    }
+
+    public void testCreateCommandLink() throws Exception
+    {
+        doCreateTest(IJSFConstants.TAG_IDENTIFIER_COMMANDLINK, "jsp", "jsp", 358);
+    }
+
+    public void testCreatePanelGrid() throws Exception
+    {
+        doCreateTest(IJSFConstants.TAG_IDENTIFIER_PANEL_GRID, "jsp", "jsp", 358);
+    }
+    
+    public void testCreateDataTable() throws Exception
+    {
+        doCreateTest(IJSFConstants.TAG_IDENTIFIER_DATA_TABLE, "jsp", "jsp", 358);
+    }
+    
+    public void testCreateForm() throws Exception
+    {
+        doCreateTest(IJSFConstants.TAG_IDENTIFIER_FORM, "jsp", "jsp", 358);
+    }
+    
+    public void testCreateGraphicImage() throws  Exception
+    {
+        doCreateTest(IJSFConstants.TAG_IDENTIFIER_GRAPHICIMAGE, "jsp", "jsp", 358);
+    }
+    
+    public void testCreateInputHidden() throws Exception
+    {
+        doCreateTest(IJSFConstants.TAG_IDENTIFIER_INPUTHIDDEN, "jsp", "jsp", 358);
+    }
+    
+    public void testCreateMessage() throws Exception
+    {
+        doCreateTest(IJSFConstants.TAG_IDENTIFIER_MESSAGE, "jsp", "jsp", 358);
+    }
+    
+    public void testCreateMessages() throws Exception
+    {
+        doCreateTest(IJSFConstants.TAG_IDENTIFIER_MESSAGES, "jsp", "jsp", 358);
+    }
+    
+    public void testCreateOutputFormat() throws Exception
+    {
+        doCreateTest(IJSFConstants.TAG_IDENTIFIER_OUTPUTFORMAT, "jsp", "jsp", 358);
+    }
+    
+    public void testCreateOutputLabel() throws Exception
+    {
+        doCreateTest(IJSFConstants.TAG_IDENTIFIER_OUTPUTLABEL, "jsp", "jsp", 358);
+    }
+    
+    public void testCreateOutputText() throws Exception
+    {
+        doCreateTest(IJSFConstants.TAG_IDENTIFIER_OUTPUTTEXT, "jsp", "jsp", 358);
+    }
+
+    public void testCreatePanelGroup() throws Exception
+    {
+        doCreateTest(IJSFConstants.TAG_IDENTIFIER_PANEL_GROUP, "jsp", "jsp", 358);
+    }
+
+    public void testCreateInputSecret() throws Exception
+    {
+        doCreateTest(IJSFConstants.TAG_IDENTIFIER_INPUTSECRET, "jsp", "jsp", 358);
+    }
+    
+    public void testCreateSelectBooleanCheckbox() throws Exception
+    {
+        doCreateTest(IJSFConstants.TAG_IDENTIFIER_SELECTBOOLEANCHECKBOX, "jsp", "jsp", 358);
+    }
+
+    public void testCreateSelectManyCheckbox() throws Exception
+    {
+        doCreateTest(IJSFConstants.TAG_IDENTIFIER_SELECTMANYCHECKBOX, "jsp", "jsp", 358);
+    }
+    
+    public void testCreateSelectManyListbox() throws Exception
+    {
+        doCreateTest(IJSFConstants.TAG_IDENTIFIER_SELECTMANYLISTBOX, "jsp", "jsp", 358);
+    }
+
+    public void testCreateSelectManyMenu() throws Exception
+    {
+        doCreateTest(IJSFConstants.TAG_IDENTIFIER_SELECTMANYMENU, "jsp", "jsp", 358);
+    }
+
+    public void testCreateSelectOneListbox() throws Exception
+    {
+        doCreateTest(IJSFConstants.TAG_IDENTIFIER_SELECTONELISTBOX, "jsp", "jsp", 358);
+    }
+
+    public void testCreateSelectOneMenu() throws Exception
+    {
+        doCreateTest(IJSFConstants.TAG_IDENTIFIER_SELECTONEMENU, "jsp", "jsp", 358);
+    }
+
+    public void testCreateSelectOneRadio() throws Exception
+    {
+        doCreateTest(IJSFConstants.TAG_IDENTIFIER_SELECTONERADIO, "jsp", "jsp", 358);
+    }
+
+    public void testCreateInputText() throws Exception
+    {
+        doCreateTest(IJSFConstants.TAG_IDENTIFIER_INPUTTEXT, "jsp", "jsp", 358);
+    }
+
+    public void testCreateInputTextArea() throws Exception
+    {
+        doCreateTest(IJSFConstants.TAG_IDENTIFIER_INPUTTEXTAREA, "jsp", "jsp", 358);
+    }
+
+}
\ No newline at end of file
diff --git a/jsf/tests/org.eclipse.jst.pagedesigner.tests/src/org/eclipse/jst/pagedesigner/tests/tagcreator/TestItemCreationToolHTML.java b/jsf/tests/org.eclipse.jst.pagedesigner.tests/src/org/eclipse/jst/pagedesigner/tests/tagcreator/TestItemCreationToolHTML.java
new file mode 100644
index 0000000..65b3b3f
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.pagedesigner.tests/src/org/eclipse/jst/pagedesigner/tests/tagcreator/TestItemCreationToolHTML.java
@@ -0,0 +1,36 @@
+package org.eclipse.jst.pagedesigner.tests.tagcreator;
+
+import org.eclipse.jst.jsf.core.internal.tld.TagIdentifierFactory;
+import org.eclipse.jst.pagedesigner.tests.tagcreator.base.BaseItemCreationToolTestCase;
+import org.eclipse.wst.xml.core.internal.provisional.contentmodel.CMDocType;
+
+/**
+ * Some basic tests to cover HTML tags
+ * @author cbateman
+ *
+ */
+public class TestItemCreationToolHTML extends BaseItemCreationToolTestCase
+{
+    public TestItemCreationToolHTML()
+    {
+        super("html");
+    }
+
+    @Override
+    protected void setUp() throws Exception 
+    {
+        super.setUp();
+    }
+
+    @Override
+    protected void tearDown() throws Exception 
+    {
+        super.tearDown();
+    }
+
+    public void testCreateButton() throws Exception
+    {
+        doCreateTest(TagIdentifierFactory.createJSPTagWrapper(CMDocType.HTML_DOC_TYPE, "INPUT.BUTTON"), "html", "html", 358);
+        doCreateTest(TagIdentifierFactory.createJSPTagWrapper(CMDocType.HTML_DOC_TYPE, "INPUT.BUTTON"), "xhtml", "xhtml", 350);
+    }
+}
diff --git a/jsf/tests/org.eclipse.jst.pagedesigner.tests/src/org/eclipse/jst/pagedesigner/tests/tagcreator/TestItemCreationToolJSP.java b/jsf/tests/org.eclipse.jst.pagedesigner.tests/src/org/eclipse/jst/pagedesigner/tests/tagcreator/TestItemCreationToolJSP.java
new file mode 100644
index 0000000..c477c53
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.pagedesigner.tests/src/org/eclipse/jst/pagedesigner/tests/tagcreator/TestItemCreationToolJSP.java
@@ -0,0 +1,30 @@
+package org.eclipse.jst.pagedesigner.tests.tagcreator;
+
+import org.eclipse.jst.jsf.core.internal.tld.TagIdentifierFactory;
+import org.eclipse.jst.pagedesigner.tests.tagcreator.base.BaseItemCreationToolTestCase;
+
+public class TestItemCreationToolJSP extends BaseItemCreationToolTestCase 
+{
+    public TestItemCreationToolJSP()
+    {
+        super("jsp");
+    }
+
+    @Override
+    protected void setUp() throws Exception 
+    {
+        super.setUp();
+    }
+
+    @Override
+    protected void tearDown() throws Exception 
+    {
+        super.tearDown();
+    }
+
+    public void testIncludeDirective() throws Exception
+    {
+        doCreateTest(TagIdentifierFactory.createJSPTagWrapper("jsp11", "jsp:directive.include"), "jsp", "jsp", 349);
+        doCreateTest(TagIdentifierFactory.createJSPTagWrapper("jsp11", "jsp:directive.include"), "jspx", "jspx", 492);
+    }
+}
diff --git a/jsf/tests/org.eclipse.jst.pagedesigner.tests/src/org/eclipse/jst/pagedesigner/tests/tagcreator/TestTagCreationFactory.java b/jsf/tests/org.eclipse.jst.pagedesigner.tests/src/org/eclipse/jst/pagedesigner/tests/tagcreator/TestTagCreationFactory.java
new file mode 100644
index 0000000..53597d5
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.pagedesigner.tests/src/org/eclipse/jst/pagedesigner/tests/tagcreator/TestTagCreationFactory.java
@@ -0,0 +1,245 @@
+package org.eclipse.jst.pagedesigner.tests.tagcreator;
+
+import java.io.ByteArrayOutputStream;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jst.jsf.common.dom.TagIdentifier;
+import org.eclipse.jst.jsf.core.internal.tld.IJSFConstants;
+import org.eclipse.jst.jsf.core.internal.tld.TagIdentifierFactory;
+import org.eclipse.jst.jsf.test.util.JSFTestUtil;
+import org.eclipse.jst.pagedesigner.itemcreation.CreationData;
+import org.eclipse.jst.pagedesigner.itemcreation.ITagCreator;
+import org.eclipse.jst.pagedesigner.itemcreation.internal.TagCreationFactory;
+import org.eclipse.jst.pagedesigner.tests.PageDesignerTestsPlugin;
+import org.eclipse.jst.pagedesigner.tests.tagcreator.base.BaseTestClass;
+import org.eclipse.jst.pagedesigner.tests.tagcreator.base.MockCreateItemCommand;
+import org.eclipse.jst.pagedesigner.tests.tagcreator.base.MockItemCreationTool;
+import org.eclipse.jst.pagedesigner.tests.tagcreatorPlugin.TestCreationFactory;
+import org.eclipse.jst.pagedesigner.utils.CommandUtil;
+import org.w3c.dom.Element;
+
+/**
+ * @author cbateman
+ *
+ */
+public class TestTagCreationFactory extends BaseTestClass 
+{
+    public TestTagCreationFactory() {
+        super("jsf");
+    }
+
+    @Override
+    protected void setUp() throws Exception 
+    {
+        super.setUp();
+
+        _webProjectTestEnv.loadResourceInWebRoot
+        (PageDesignerTestsPlugin.getDefault().getBundle()
+            , "/testdata/tagcreator/testCreator.tld.data"
+            , "/META-INF/testCreator.tld");
+        // make sure the manager picks up the new TLD.
+        _manager.reset();
+    }
+
+    @Override
+    protected void tearDown() throws Exception 
+    {
+        super.tearDown();
+    }
+
+    public void testEnsureRequiredAttributes() throws Exception
+    {
+        IFile jspFile = (IFile) _webProjectTestEnv.loadResourceInWebRoot(
+                PageDesignerTestsPlugin.getDefault().getBundle()
+                ,"/testdata/tagcreator/testTagCreation.jsp.data"
+                ,"/testEnsureRequiredAttributes.jsp");
+
+        CreationData creationData =
+            getCreationData(TestCreationFactory.TAGCREATOR_URI_1
+                   , "tagWithRequiredAttr", "test", jspFile, 501);
+        Element element = CommandUtil.excuteInsertion(creationData.getTagEntry()
+                                    , creationData.getModel()
+                                    , creationData.getDomPosition()
+                                    , creationData.getDropCustomizationData());
+
+        assertNotNull(element);
+        final TagIdentifier tagId = TagIdentifierFactory.createDocumentTagWrapper(element);
+        assertEquals("test:tagWithRequiredAttr", element.getNodeName());
+        // the framework will not force a value on this attribute
+        assertNull(element.getAttribute(TestCreationFactory.REQUIRED_ATTR_1));
+
+        // the framework will leave attr2 alone because the advisor is setting it
+        assertEquals(TestCreationFactory.getDefaultAttributeValue
+                            (tagId, TestCreationFactory.REQUIRED_ATTR_2)
+                , element.getAttribute(TestCreationFactory.REQUIRED_ATTR_2));
+
+        // test manually calling the ensure method for
+        jspFile = (IFile) _webProjectTestEnv.loadResourceInWebRoot(
+                PageDesignerTestsPlugin.getDefault().getBundle()
+                ,"/testdata/tagcreator/testTagCreation.jsp.data"
+                ,"/testEnsureRequiredAttributes2.jsp");
+        creationData =
+            getCreationData(TestCreationFactory.TAGCREATOR_URI_1
+                   , "tagWithRequiredAttr2", "test", jspFile, 501);
+        element = CommandUtil.excuteInsertion(creationData.getTagEntry()
+                                    , creationData.getModel()
+                                    , creationData.getDomPosition()
+                                    , creationData.getDropCustomizationData());
+        
+        // on this tag, the first required attr is set by metadata
+        assertEquals("foobar", element.getAttribute(TestCreationFactory.REQUIRED_ATTR_1));
+        // the second one is not set by meta-data, but is required and ensure is called
+        // by the custom advisor, so it should be set to empty
+        assertEquals("", element.getAttribute(TestCreationFactory.REQUIRED_ATTR_2));
+        
+        // the optional attribute is not set by meta-data and since it's not required,
+        // the ensure method should not touch it either.
+        assertNull(element.getAttribute("notRequiredAttr1"));
+    }
+
+    public void testTagCreationMetadata() throws Exception
+    {
+        IFile jspFile = (IFile) _webProjectTestEnv.loadResourceInWebRoot(
+                PageDesignerTestsPlugin.getDefault().getBundle()
+                ,"/testdata/tagcreator/testTagCreation.jsp.data"
+                ,"/testTagCreationMetadata.jsp");
+
+        CreationData creationData =
+            getCreationData(TestCreationFactory.TAGCREATOR_URI_1
+                   , "tagWithMetadata", "test", jspFile, 501);
+        Element element = CommandUtil.excuteInsertion(creationData.getTagEntry()
+                                    , creationData.getModel()
+                                    , creationData.getDomPosition()
+                                    , creationData.getDropCustomizationData());
+
+        assertNotNull(element);
+        // ensure that the meta-data value for this required attribute
+        // is set.
+        assertEquals("foobar", element.getAttribute("requiredAttr1"));
+        // we have not provided meta-data for this attribute but it is required
+        // by default, the framework won't enforce so should be null
+        assertNull(element.getAttribute("requiredAttr2"));
+        // we have provided meta-data for this non-required attribute,
+        // so ensure it's set
+        assertEquals("someOtherFooBar", element.getAttribute("notRequiredAttr1"));
+        // we have not provided m-d for this optional one, so since it's optional
+        // it should be null.
+        assertNull(element.getAttribute("notRequiredAttr2"));
+
+        // check the child template was applied
+        assertEquals(1, element.getChildNodes().getLength());
+        // TODO: we should find the default prefix for outputText, but
+        // we only check those taglibs already referenced in the document.
+        assertEquals("p:outputText", element.getChildNodes().item(0).getNodeName());
+    }
+
+    /**
+     * Test the situation that is common with JSPX where the f:view must be more than
+     * 3 levels deep from the root (was causing duplicate view's to be added).
+     */
+    public void testBug197042() throws Exception
+    {
+        IFile jspFile = (IFile) _webProjectTestEnv.loadResourceInWebRoot(
+                PageDesignerTestsPlugin.getDefault().getBundle()
+                ,"/testdata/tagcreator/tagCreator.jspx.data"
+                ,"/testTagCreationMetadata.jsp");
+
+        final String uri = 
+            IJSFConstants.TAG_IDENTIFIER_COMMANDBUTTON.getUri();
+        final String tagName = 
+            IJSFConstants.TAG_IDENTIFIER_COMMANDBUTTON.getTagName();
+        CreationData creationData =
+            getCreationData(uri,tagName,"h", jspFile, 495);
+
+        ITagCreator tagCreator = TagCreationFactory.getInstance()
+            .createTagCreator(creationData.getTagId());
+
+        Element element = tagCreator.createTag(creationData);
+
+        System.out.println(element.toString());
+
+        ByteArrayOutputStream resultStream = new ByteArrayOutputStream();
+        getDocumentContext(0, jspFile).getModel().save(resultStream);
+
+        final IPath expectedPath = JSFTestUtil.getAbsolutePath(
+                PageDesignerTestsPlugin.getDefault().getBundle(),
+                    "/testdata/tagcreator/jsf/expectedResult_commandButton.jspx.data");
+        final String expected = getExpectedResult(expectedPath).trim();
+        final String result = resultStream.toString().trim();
+
+        assertEquals(expected, result);
+    }
+
+    public void testDropCustomizerThatCancels() throws Exception
+    {
+        IFile jspFile = (IFile) _webProjectTestEnv.loadResourceInWebRoot(
+                PageDesignerTestsPlugin.getDefault().getBundle()
+                ,"/testdata/tagcreator/tagCreator.jsp.data"
+                ,"/testCustomizerCancel.jsp");
+
+        TestCreationFactory.setTestParametersForDropCustomer(Status.CANCEL_STATUS, null);
+
+        MockItemCreationTool tool = 
+            createMockItemCreationTool(jspFile, 358, TestCreationFactory.TAG_WITH_REQUIRED_ATTR, IStatus.CANCEL);
+
+        tool.customizeDropAndMaybeExecute(0);
+
+        assertExpectedResult(jspFile, "jsp");
+    }
+
+    public void testDropCustomizationDataAcquistion() throws Exception
+    {
+        IFile jspFile = (IFile) _webProjectTestEnv.loadResourceInWebRoot(
+                PageDesignerTestsPlugin.getDefault().getBundle()
+                ,"/testdata/tagcreator/tagCreator.jsp.data"
+                ,"/testCustomizerCancel.jsp");
+
+        IAdaptable adaptable = new IAdaptable()
+        {
+            @SuppressWarnings("unchecked")
+            public Object getAdapter(Class adapter) {
+                if (Map.class == adapter)
+                {
+                    HashMap<String, String> map = new HashMap<String, String>();
+                    map.put("color", "red");
+                    return map;
+                }
+                return null;
+            }
+        };
+
+        TestCreationFactory.setTestParametersForDropCustomer(Status.OK_STATUS, adaptable);
+
+        MockItemCreationTool tool = 
+            createMockItemCreationTool(jspFile, 358, TestCreationFactory.TAG_WITH_REQUIRED_ATTR, IStatus.CANCEL);
+
+        tool.customizeDropAndMaybeExecute(0);
+        Object[] commands = tool.getDomain().getCommandStack().getCommands();
+        assertEquals(1, commands.length);
+        assertTrue(commands[0] instanceof MockCreateItemCommand);
+        
+        IAdaptable value = ((MockCreateItemCommand)commands[0]).getCustomizationDataTesting();
+        assertEquals(adaptable, value);
+        Map map = (Map) value.getAdapter(Map.class);
+        assertNotNull(map);
+        assertEquals("red", map.get("color"));
+    }
+    
+    private void assertExpectedResult(IFile file, String outExt) throws Exception
+    {
+        final ByteArrayOutputStream resultStream = new ByteArrayOutputStream();
+        getDocumentContext(0, file).getModel().save(resultStream);
+
+        final String expected = 
+            getExpectedResult("/testdata/tagcreator/tagCreator."+outExt+".data").trim();
+        final String result = resultStream.toString("ISO-8859-1").trim();
+
+        assertEquals(expected, result);
+    }
+}
diff --git a/jsf/tests/org.eclipse.jst.pagedesigner.tests/src/org/eclipse/jst/pagedesigner/tests/tagcreator/base/BaseItemCreationToolTestCase.java b/jsf/tests/org.eclipse.jst.pagedesigner.tests/src/org/eclipse/jst/pagedesigner/tests/tagcreator/base/BaseItemCreationToolTestCase.java
new file mode 100644
index 0000000..1009be7
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.pagedesigner.tests/src/org/eclipse/jst/pagedesigner/tests/tagcreator/base/BaseItemCreationToolTestCase.java
@@ -0,0 +1,34 @@
+package org.eclipse.jst.pagedesigner.tests.tagcreator.base;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.jst.jsf.common.dom.TagIdentifier;
+import org.eclipse.jst.pagedesigner.tests.PageDesignerTestsPlugin;
+
+public class BaseItemCreationToolTestCase extends BaseTestClass 
+{
+
+    public BaseItemCreationToolTestCase(final String compareDataSubDir) {
+        super(compareDataSubDir);
+    }
+
+    @Override
+    protected void setUp() throws Exception 
+    {
+        super.setUp();
+    }
+    
+    protected final void doCreateTest(final TagIdentifier tagId, final String inExt, final String outExt, int offset) throws Exception
+    {
+        final String tagName = tagId.getTagName();
+
+        final IFile file = (IFile) _webProjectTestEnv.loadResourceInWebRoot(
+                PageDesignerTestsPlugin.getDefault().getBundle(),
+                "/testdata/tagcreator/tagCreator."+inExt+".data", "/tagCreator_"+tagName+"."+inExt);
+
+        MockItemCreationTool tool = createMockItemCreationTool(file, offset, tagId);
+
+        tool.customizeDropAndMaybeExecute(0);
+
+        assertExpectedResult(file, tagName, outExt);
+    }
+}
diff --git a/jsf/tests/org.eclipse.jst.pagedesigner.tests/src/org/eclipse/jst/pagedesigner/tests/tagcreator/base/BaseTagCreatorTestCase.java b/jsf/tests/org.eclipse.jst.pagedesigner.tests/src/org/eclipse/jst/pagedesigner/tests/tagcreator/base/BaseTagCreatorTestCase.java
new file mode 100644
index 0000000..f054147
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.pagedesigner.tests/src/org/eclipse/jst/pagedesigner/tests/tagcreator/base/BaseTagCreatorTestCase.java
@@ -0,0 +1,47 @@
+package org.eclipse.jst.pagedesigner.tests.tagcreator.base;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.jst.jsf.common.dom.TagIdentifier;
+import org.eclipse.jst.pagedesigner.itemcreation.ITagCreator;
+import org.eclipse.jst.pagedesigner.itemcreation.internal.TagCreationFactory;
+import org.eclipse.jst.pagedesigner.tests.PageDesignerTestsPlugin;
+import org.w3c.dom.Element;
+
+public class BaseTagCreatorTestCase extends BaseTestClass 
+{
+//    private Map<String, TaglibPaletteDrawer> _drawers = new HashMap<String, TaglibPaletteDrawer>();
+    protected final String _defaultPrefix;
+    
+    public BaseTagCreatorTestCase(final String defaultPrefix, final String compareDataSubDir)
+    {
+        super(compareDataSubDir);
+        this._defaultPrefix = defaultPrefix;
+    }
+    
+
+    @Override
+    protected void tearDown() throws Exception {
+        super.tearDown();
+    }
+
+    protected final void doCreateTest(final TagIdentifier tagId, final String inExt, final String outExt, int offset) throws Exception 
+    {
+        final String uri = tagId.getUri();
+        final String tagName = tagId.getTagName();
+
+        IFile file = (IFile) _webProjectTestEnv.loadResourceInWebRoot(
+                PageDesignerTestsPlugin.getDefault().getBundle(),
+                "/testdata/tagcreator/tagCreator."+inExt+".data", "/tagCreator_"+tagName+"."+inExt);
+
+        
+        ITagCreator tagCreator = TagCreationFactory.getInstance()
+                .createTagCreator(tagId);
+
+        Element element = tagCreator.createTag(getCreationData(uri, tagName,
+                _defaultPrefix, file, offset));
+
+        System.out.println(element.toString());
+
+        assertExpectedResult(file, tagName, outExt);
+    }
+}
diff --git a/jsf/tests/org.eclipse.jst.pagedesigner.tests/src/org/eclipse/jst/pagedesigner/tests/tagcreator/base/BaseTestClass.java b/jsf/tests/org.eclipse.jst.pagedesigner.tests/src/org/eclipse/jst/pagedesigner/tests/tagcreator/base/BaseTestClass.java
new file mode 100644
index 0000000..9d18810
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.pagedesigner.tests/src/org/eclipse/jst/pagedesigner/tests/tagcreator/base/BaseTestClass.java
@@ -0,0 +1,227 @@
+package org.eclipse.jst.pagedesigner.tests.tagcreator.base;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+
+import junit.framework.TestCase;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.gef.EditDomain;
+import org.eclipse.jst.jsf.common.dom.TagIdentifier;
+import org.eclipse.jst.jsf.common.metadata.query.ITaglibDomainMetaDataModelContext;
+import org.eclipse.jst.jsf.common.metadata.query.TaglibDomainMetaDataQueryHelper;
+import org.eclipse.jst.jsf.context.resolver.structureddocument.IDOMContextResolver;
+import org.eclipse.jst.jsf.context.resolver.structureddocument.IStructuredDocumentContextResolverFactory;
+import org.eclipse.jst.jsf.context.structureddocument.IStructuredDocumentContext;
+import org.eclipse.jst.jsf.context.structureddocument.IStructuredDocumentContextFactory;
+import org.eclipse.jst.jsf.core.IJSFCoreConstants;
+import org.eclipse.jst.jsf.core.JSFVersion;
+import org.eclipse.jst.jsf.core.tests.util.JSFCoreUtilHelper;
+import org.eclipse.jst.jsf.core.tests.util.JSFFacetedTestEnvironment;
+import org.eclipse.jst.jsf.test.util.JSFTestUtil;
+import org.eclipse.jst.jsf.test.util.WebProjectTestEnvironment;
+import org.eclipse.jst.jsp.core.internal.domdocument.DOMModelForJSP;
+import org.eclipse.jst.pagedesigner.dom.DOMPosition;
+import org.eclipse.jst.pagedesigner.editors.palette.TagToolPaletteEntry;
+import org.eclipse.jst.pagedesigner.editors.palette.impl.PaletteItemManager;
+import org.eclipse.jst.pagedesigner.editors.palette.impl.TaglibPaletteDrawer;
+import org.eclipse.jst.pagedesigner.itemcreation.CreationData;
+import org.eclipse.jst.pagedesigner.tests.PageDesignerTestsPlugin;
+import org.eclipse.wst.html.core.internal.document.DOMStyleModelImpl;
+import org.eclipse.wst.sse.core.StructuredModelManager;
+import org.eclipse.wst.sse.core.internal.provisional.IModelManager;
+import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel;
+import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel;
+import org.w3c.dom.Node;
+
+public class BaseTestClass extends TestCase 
+{
+    protected WebProjectTestEnvironment             _webProjectTestEnv;
+    protected PaletteItemManager                    _manager;
+    protected final  String                         _compareDataSubDir;
+
+    public BaseTestClass(String compareDataSubDir)
+    {
+        _compareDataSubDir = compareDataSubDir;
+    }
+
+    @Override
+    protected void setUp() throws Exception
+    {
+        super.setUp();
+        
+        JSFTestUtil.setValidationEnabled(false);
+
+        _webProjectTestEnv = new WebProjectTestEnvironment(
+                getClass().getName()+"_" + getName());
+        _webProjectTestEnv.createProject(false);
+        assertNotNull(_webProjectTestEnv);
+        assertNotNull(_webProjectTestEnv.getTestProject());
+        assertTrue(_webProjectTestEnv.getTestProject().isAccessible());
+
+        JSFFacetedTestEnvironment jsfFacetedTestEnv = 
+            new JSFFacetedTestEnvironment(_webProjectTestEnv);
+        jsfFacetedTestEnv.initialize(IJSFCoreConstants.FACET_VERSION_1_1);
+
+        assertTrue(JSFCoreUtilHelper.addJSFRuntimeJarsToClasspath(JSFVersion.V1_1,
+                jsfFacetedTestEnv));
+
+        // ensure this gets called so that the getCurrentInstance
+        _manager = PaletteItemManager.getInstance(_webProjectTestEnv.getTestProject());
+    }
+
+    protected CreationData getCreationData(final String uri,
+            final String tagName, final String defaultPrefix, IFile file, int offset) throws Exception 
+    {
+        final ITaglibDomainMetaDataModelContext modelContext = TaglibDomainMetaDataQueryHelper
+                .createMetaDataModelContext(
+                        _webProjectTestEnv.getTestProject(), uri);
+
+        TagToolPaletteEntry entry = createNonNullPaletteEntry(uri, tagName);
+
+        ContextWrapper context = getDocumentContext(offset, file);
+        IDOMContextResolver resolver = IStructuredDocumentContextResolverFactory.INSTANCE
+                .getDOMContextResolver(context.getContext());
+        // we want to simulate a drop inside the the body after the text node
+        Node node = resolver.getNode();
+        assertEquals(Node.TEXT_NODE, node.getNodeType());
+
+        DOMPosition domPosition = new DOMPosition(node, 0);
+
+        return new CreationData(entry, (IDOMModel) context.getModel(),
+                domPosition, modelContext, null);
+    }
+    
+    protected TagToolPaletteEntry createPaletteEntry(final String uri, final String tagName)
+    {
+        TaglibPaletteDrawer drawer = 
+            _manager.getTaglibPalletteDrawer(uri);
+        TagToolPaletteEntry entry = drawer.getTagPaletteEntryByTagName(tagName);
+        
+        // covers case for HTML where the id is what's important because
+        // the tag name is over loaded (i.e. input).
+        if (entry == null)
+        {
+            entry = drawer.getTagPaletteEntryById(tagName);
+        }
+
+        return entry;
+    }
+    
+    protected TagToolPaletteEntry createNonNullPaletteEntry(final String uri, final String tagName)
+    {
+        TagToolPaletteEntry entry = createPaletteEntry(uri, tagName);
+        assertNotNull(entry);
+        return entry;
+    }
+
+    protected ContextWrapper getDocumentContext(int offset, IFile jspFile) throws Exception
+    {
+        
+        assertTrue(jspFile.exists());
+        final IModelManager modelManager = StructuredModelManager
+                .getModelManager();
+        IStructuredModel model = null;
+        model = modelManager.getModelForRead(jspFile);
+        // jsp, jspx or xhtml
+        assertTrue(model instanceof DOMModelForJSP || model instanceof DOMStyleModelImpl);
+        final IStructuredDocumentContext context = 
+            IStructuredDocumentContextFactory.INSTANCE
+                .getContext(model.getStructuredDocument(), offset);
+        return new ContextWrapper(context, model);
+    }
+
+    public static class ContextWrapper 
+    {
+        private final IStructuredDocumentContext context;
+        private final IStructuredModel model;
+
+        public ContextWrapper(final IStructuredDocumentContext context,
+                final IStructuredModel model) {
+            super();
+            this.context = context;
+            this.model = model;
+        }
+        
+        public IStructuredDocumentContext getContext() {
+            return context;
+        }
+
+        public IStructuredModel getModel() {
+            return model;
+        }
+
+        void dispose() 
+        {
+            model.releaseFromRead();
+        }
+    }
+
+    protected String getExpectedResult(final IPath path) throws IOException
+    {
+        return JSFTestUtil.loadFromFile(path.toFile()).toString();
+    }
+
+    protected final String getExpectedResult(String tagName, String outExt)
+            throws Exception
+    {
+        String ext = outExt == null ? "" : "."+outExt;
+        final String fileName = 
+            "expectedResult_" + tagName.replaceAll(":", "_") + ext +".data";
+        final String pathStr = 
+            "/testdata/tagcreator/"+ _compareDataSubDir + "/" + fileName;
+        return getExpectedResult(pathStr);
+    }
+
+    protected final String getExpectedResult(final String pathStr) throws Exception
+    {
+        final IPath expectedPath = JSFTestUtil.getAbsolutePath(
+                PageDesignerTestsPlugin.getDefault().getBundle(),
+                pathStr);
+        return getExpectedResult(expectedPath);
+    }
+    
+    protected final void assertExpectedResult(IFile file, String tagName, String outExt) throws Exception
+    {
+        final ByteArrayOutputStream resultStream = new ByteArrayOutputStream();
+        getDocumentContext(0, file).getModel().save(resultStream);
+    
+        final String expected = getExpectedResult(tagName, outExt).trim();
+        final String result = resultStream.toString("ISO-8859-1").trim();
+
+        assertEquals(expected, result);
+    }
+
+    protected MockItemCreationTool createMockItemCreationTool(IFile file, int offset, TagIdentifier tagId) throws Exception
+    {
+        return createMockItemCreationTool(file, offset, tagId, IStatus.OK);
+    }
+
+    protected MockItemCreationTool createMockItemCreationTool(IFile file, int offset, TagIdentifier tagId, int expectedResult) throws Exception
+    {
+        TagToolPaletteEntry toolEntry = createNonNullPaletteEntry(tagId.getUri(), tagId.getTagName());
+
+        MockItemCreationTool tool = new MockItemCreationTool(toolEntry);
+
+        ContextWrapper wrapper = getDocumentContext(offset, file);
+        IDOMContextResolver resolver = 
+            IStructuredDocumentContextResolverFactory.INSTANCE
+                .getDOMContextResolver(wrapper.getContext());
+        final IStructuredModel model = wrapper.getModel();
+
+        final DOMPosition domPosition = new DOMPosition(resolver.getNode(), 0);
+        
+        final MockCreateItemCommand command = 
+            new MockCreateItemCommand("Test Command", (IDOMModel) model, 
+                                                domPosition, toolEntry);
+
+        tool.setEditDomain(new EditDomain());
+        tool.setCurrentCommand(command);
+
+        return tool;
+    }
+
+
+}
diff --git a/jsf/tests/org.eclipse.jst.pagedesigner.tests/src/org/eclipse/jst/pagedesigner/tests/tagcreator/base/MockCreateItemCommand.java b/jsf/tests/org.eclipse.jst.pagedesigner.tests/src/org/eclipse/jst/pagedesigner/tests/tagcreator/base/MockCreateItemCommand.java
new file mode 100644
index 0000000..f066081
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.pagedesigner.tests/src/org/eclipse/jst/pagedesigner/tests/tagcreator/base/MockCreateItemCommand.java
@@ -0,0 +1,30 @@
+/**
+ * 
+ */
+package org.eclipse.jst.pagedesigner.tests.tagcreator.base;
+
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.jst.pagedesigner.commands.CreateItemCommand;
+import org.eclipse.jst.pagedesigner.dom.IDOMPosition;
+import org.eclipse.jst.pagedesigner.editors.palette.TagToolPaletteEntry;
+import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel;
+import org.w3c.dom.Node;
+
+public class MockCreateItemCommand extends CreateItemCommand
+{
+    public MockCreateItemCommand(String label, IDOMModel model,
+            IDOMPosition position, TagToolPaletteEntry tagItem) {
+        super(label, model, position, tagItem);
+    }
+
+    @Override
+    public void formatNode(Node node) 
+    {
+        // override to NOOP: we don't want to format the node
+    }
+    
+    public IAdaptable getCustomizationDataTesting()
+    {
+        return super.getCustomizationData();
+    }
+}
\ No newline at end of file
diff --git a/jsf/tests/org.eclipse.jst.pagedesigner.tests/src/org/eclipse/jst/pagedesigner/tests/tagcreator/base/MockItemCreationTool.java b/jsf/tests/org.eclipse.jst.pagedesigner.tests/src/org/eclipse/jst/pagedesigner/tests/tagcreator/base/MockItemCreationTool.java
new file mode 100644
index 0000000..79f9401
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.pagedesigner.tests/src/org/eclipse/jst/pagedesigner/tests/tagcreator/base/MockItemCreationTool.java
@@ -0,0 +1,31 @@
+/**
+ * 
+ */
+package org.eclipse.jst.pagedesigner.tests.tagcreator.base;
+
+import org.eclipse.gef.EditDomain;
+import org.eclipse.gef.commands.Command;
+import org.eclipse.jst.pagedesigner.editors.palette.TagToolPaletteEntry;
+import org.eclipse.jst.pagedesigner.itemcreation.ItemCreationTool;
+
+public class MockItemCreationTool extends ItemCreationTool
+{
+    public MockItemCreationTool(TagToolPaletteEntry tagToolPaletteEntryItem) {
+        super(tagToolPaletteEntryItem);
+    }
+
+    @Override
+    public void customizeDropAndMaybeExecute(int button) {
+        super.customizeDropAndMaybeExecute(button);
+    }
+
+    @Override
+    protected void setCurrentCommand(Command c) {
+        super.setCurrentCommand(c);
+    }
+
+    @Override
+    public EditDomain getDomain() {
+        return super.getDomain();
+    }
+}
\ No newline at end of file
diff --git a/jsf/tests/org.eclipse.jst.pagedesigner.tests/src/org/eclipse/jst/pagedesigner/tests/tagcreatorPlugin/TestCreationFactory.java b/jsf/tests/org.eclipse.jst.pagedesigner.tests/src/org/eclipse/jst/pagedesigner/tests/tagcreatorPlugin/TestCreationFactory.java
new file mode 100644
index 0000000..0b4da46
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.pagedesigner.tests/src/org/eclipse/jst/pagedesigner/tests/tagcreatorPlugin/TestCreationFactory.java
@@ -0,0 +1,176 @@
+package org.eclipse.jst.pagedesigner.tests.tagcreatorPlugin;
+
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.jst.jsf.common.dom.TagIdentifier;
+import org.eclipse.jst.jsf.core.internal.tld.TagIdentifierFactory;
+import org.eclipse.jst.pagedesigner.elementedit.AbstractElementEdit;
+import org.eclipse.jst.pagedesigner.elementedit.AbstractElementEditFactory;
+import org.eclipse.jst.pagedesigner.elementedit.IElementEdit;
+import org.eclipse.jst.pagedesigner.itemcreation.AbstractTagCreator;
+import org.eclipse.jst.pagedesigner.itemcreation.CreationData;
+import org.eclipse.jst.pagedesigner.itemcreation.DefaultTagCreationAdvisor;
+import org.eclipse.jst.pagedesigner.itemcreation.ITagCreationAdvisor;
+import org.eclipse.jst.pagedesigner.itemcreation.ITagCreator;
+import org.eclipse.jst.pagedesigner.itemcreation.command.ElementCustomizationCommand;
+import org.eclipse.jst.pagedesigner.itemcreation.customizer.AbstractDropCustomizer;
+import org.eclipse.jst.pagedesigner.itemcreation.customizer.IDropCustomizer;
+import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel;
+import org.w3c.dom.Element;
+
+/**
+ * Factory for testing purposes
+ * 
+ * @author cbateman
+ *
+ */
+public class TestCreationFactory extends AbstractElementEditFactory
+{
+    public final static String TAGCREATOR_URI_1 = 
+        "org.eclipse.jst.pagedesigner.tests.tagCreatorFactory1";
+    
+    public final static TagIdentifier TAG_WITH_REQUIRED_ATTR = 
+        TagIdentifierFactory.createJSPTagWrapper
+            (TAGCREATOR_URI_1, "tagWithRequiredAttr");
+
+    protected static final TagIdentifier TAG_WITH_UNSET_REQUIRED_ATTR = 
+        TagIdentifierFactory.createJSPTagWrapper
+            (TAGCREATOR_URI_1, "tagWithRequiredAttr2");
+
+    public final static String REQUIRED_ATTR_1 = "requiredAttr1";
+    public final static String REQUIRED_ATTR_2 = "requiredAttr2";
+
+    public TestCreationFactory() 
+    {
+        super(TAGCREATOR_URI_1);
+    }
+
+    @Override
+    public IElementEdit createElementEdit(TagIdentifier tag) 
+    {
+        return new AbstractElementEdit()
+        {
+            @Override
+            public ITagCreator getTagCreator(TagIdentifier tagId) 
+            {
+                return doCreateTagCreator();
+            }
+
+            @Override
+            public IDropCustomizer getDropCustomizer(TagIdentifier tagId) {
+                return  new MyDropCustomizer();
+            }
+            
+            
+        };
+    }
+
+    public ITagCreator doCreateTagCreator() {
+        return new MyTagCreator();
+    }
+
+    private static class MyTagCreator extends AbstractTagCreator
+    {
+        @Override
+        protected ITagCreationAdvisor doSelectCreationAdvisor(
+                CreationData creationData) {
+            return new MyTagCreationAdvisor(creationData);
+        }
+    }
+
+    private static class MyTagCreationAdvisor extends DefaultTagCreationAdvisor
+    {
+        public MyTagCreationAdvisor(CreationData creationData) 
+        {
+            super(creationData);
+        }
+
+        @Override
+        protected ElementCustomizationCommand getElementCustomizationCommand(
+                IDOMModel model, Element tagElement) 
+        {
+            return new ElementCustomizationCommand(model, tagElement, _creationData)
+            {
+                @Override
+                protected void applyAttributeCustomization() 
+                {
+                    super.applyAttributeCustomization();
+
+                    final TagIdentifier tagId = 
+                        TagIdentifierFactory.createJSPTagWrapper
+                            (_creationData.getUri(), _creationData.getTagName());
+
+                    if (tagId.equals(TAG_WITH_REQUIRED_ATTR))
+                    {
+                        _element.setAttribute(REQUIRED_ATTR_2
+                                , getDefaultAttributeValue(tagId, REQUIRED_ATTR_2));
+                    }
+                    
+                    if (tagId.equals(TAG_WITH_UNSET_REQUIRED_ATTR))
+                    {
+                        ensureRequiredAttrs(_element, _creationData);
+                    }
+                }
+            };
+        }
+    }
+
+    public static String getDefaultAttributeValue(TagIdentifier tagId, String attributeName)
+    {
+        if (TAG_WITH_REQUIRED_ATTR.equals(tagId))
+        {
+            if (REQUIRED_ATTR_1.equals(attributeName))
+            {
+                return null;
+            }
+            else if (REQUIRED_ATTR_2.equals(attributeName))
+            {
+                return "foo";
+            }
+        }
+
+        // if case not covered, return null
+        return null;
+    }
+ 
+    
+    // used by MyDropCustomizer so external JUnits can set the expected status
+    // and adaptable values
+    private static IStatus STATUS;
+    private static IAdaptable ADAPTABLE;
+
+    /**
+     * @param status
+     * @param adaptable
+     */
+    public static synchronized void setTestParametersForDropCustomer(IStatus status, IAdaptable adaptable)
+    {
+        STATUS = status;
+        ADAPTABLE = adaptable;
+    }
+    
+    private static synchronized IStatus getTestStatus()
+    {
+        return STATUS;
+    }
+    
+    private static synchronized IAdaptable getTestAdaptable()
+    {
+        return ADAPTABLE;
+    }
+
+    private static class MyDropCustomizer extends AbstractDropCustomizer
+    {
+        @Override
+        public IAdaptable getDropCustomizationData() {
+            return getTestAdaptable();
+        }
+
+        @Override
+        public IStatus runCustomizer() 
+        {
+            return getTestStatus();
+        }
+        
+    }
+}
diff --git a/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/expectedResult_directive.include.jspx.data b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/expectedResult_directive.include.jspx.data
new file mode 100644
index 0000000..8952f02
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/expectedResult_directive.include.jspx.data
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>

+<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.0" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core"> <jsp:directive.page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1" />

+<html xmlns="http://www.w3.org/1999/xhtml">

+    <head>

+	<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />

+	<title>Insert title here</title>

+	</head>

+    <body>

+<jsp:directive.include /></body>

+</html>

+</jsp:root>

diff --git a/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/html/expectedResult_INPUT.BUTTON.html.data b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/html/expectedResult_INPUT.BUTTON.html.data
new file mode 100644
index 0000000..f28e193
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/html/expectedResult_INPUT.BUTTON.html.data
@@ -0,0 +1,10 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

+<html>

+<head>

+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

+<title>Insert title here</title>

+</head>

+<body>

+

+<form><input type="submit"></form></body>

+</html>

diff --git a/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/html/expectedResult_INPUT.BUTTON.xhtml.data b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/html/expectedResult_INPUT.BUTTON.xhtml.data
new file mode 100644
index 0000000..1df0507
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/html/expectedResult_INPUT.BUTTON.xhtml.data
@@ -0,0 +1,12 @@
+

+<?xml version="1.0" encoding="ISO-8859-1" ?>

+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

+<html xmlns="http://www.w3.org/1999/xhtml">

+<head>

+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />

+<title>Insert title here</title>

+</head>

+<body><form><input type="submit" /></form>

+

+</body>

+</html>

diff --git a/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_actionListener.jsp.data b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_actionListener.jsp.data
new file mode 100644
index 0000000..17716e6
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_actionListener.jsp.data
@@ -0,0 +1,12 @@
+<%@taglib uri="http://java.sun.com/jsf/core" prefix="f"%><%@ page language="java" contentType="text/html; charset=ISO-8859-1"

+    pageEncoding="ISO-8859-1"%>

+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

+<html>

+<head>

+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

+<title>Insert title here</title>

+</head>

+<body>

+

+<f:view><f:actionListener /></f:view></body>

+</html>

diff --git a/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_attribute.jsp.data b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_attribute.jsp.data
new file mode 100644
index 0000000..fc8cd62
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_attribute.jsp.data
@@ -0,0 +1,15 @@
+<%@taglib uri="http://java.sun.com/jsf/core" prefix="f"%><%@ page language="java" contentType="text/html; charset=ISO-8859-1"

+    pageEncoding="ISO-8859-1"%>

+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

+<html>

+<head>

+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

+<title>Insert title here</title>

+</head>

+<body>

+

+<f:view><f:attribute /></f:view></body>

+</html>

+

+

+

diff --git a/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_commandButton.jsp.data b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_commandButton.jsp.data
new file mode 100644
index 0000000..fd2b96b
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_commandButton.jsp.data
@@ -0,0 +1,13 @@
+<%@taglib uri="http://java.sun.com/jsf/html" prefix="h"%><%@taglib

+	uri="http://java.sun.com/jsf/core" prefix="f"%><%@ page language="java" contentType="text/html; charset=ISO-8859-1"

+    pageEncoding="ISO-8859-1"%>

+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

+<html>

+<head>

+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

+<title>Insert title here</title>

+</head>

+<body>

+

+<f:view><h:form><h:commandButton></h:commandButton></h:form></f:view></body>

+</html>

diff --git a/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_commandButton.jspx.data b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_commandButton.jspx.data
new file mode 100644
index 0000000..787ca5b
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_commandButton.jspx.data
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>

+<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.0" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core"> <jsp:directive.page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1" />

+<html xmlns="http://www.w3.org/1999/xhtml">

+    <head>

+	<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />

+	<title>Insert title here</title>

+	</head>

+    <body>

+

+    <f:view><h:form><h:commandButton></h:commandButton></h:form></f:view></body>

+</html>

+</jsp:root>

+

diff --git a/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_commandButton.xhtml.data b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_commandButton.xhtml.data
new file mode 100644
index 0000000..ed848ee
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_commandButton.xhtml.data
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>

+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

+<html xmlns="http://www.w3.org/1999/xhtml"

+	xmlns:h="http://java.sun.com/jsf/html"

+	xmlns:f="http://java.sun.com/jsf/core">

+<head>

+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />

+<title>Insert title here</title>

+</head>

+<body>

+

+<f:view><h:form><h:commandButton></h:commandButton></h:form></f:view></body>

+</html>

diff --git a/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_commandLink.jsp.data b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_commandLink.jsp.data
new file mode 100644
index 0000000..dbbbcb9
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_commandLink.jsp.data
@@ -0,0 +1,13 @@
+<%@taglib uri="http://java.sun.com/jsf/html" prefix="h"%><%@taglib

+	uri="http://java.sun.com/jsf/core" prefix="f"%><%@ page language="java" contentType="text/html; charset=ISO-8859-1"

+    pageEncoding="ISO-8859-1"%>

+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

+<html>

+<head>

+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

+<title>Insert title here</title>

+</head>

+<body>

+

+<f:view><h:form><h:commandLink><h:outputText value="CommandLink"></h:outputText></h:commandLink></h:form></f:view></body>

+</html>

diff --git a/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_convertDateTime.jsp.data b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_convertDateTime.jsp.data
new file mode 100644
index 0000000..48aa686
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_convertDateTime.jsp.data
@@ -0,0 +1,12 @@
+<%@taglib uri="http://java.sun.com/jsf/core" prefix="f"%><%@ page language="java" contentType="text/html; charset=ISO-8859-1"

+    pageEncoding="ISO-8859-1"%>

+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

+<html>

+<head>

+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

+<title>Insert title here</title>

+</head>

+<body>

+

+<f:view><f:convertDateTime /></f:view></body>

+</html>

diff --git a/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_convertNumber.jsp.data b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_convertNumber.jsp.data
new file mode 100644
index 0000000..545728c
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_convertNumber.jsp.data
@@ -0,0 +1,12 @@
+<%@taglib uri="http://java.sun.com/jsf/core" prefix="f"%><%@ page language="java" contentType="text/html; charset=ISO-8859-1"

+    pageEncoding="ISO-8859-1"%>

+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

+<html>

+<head>

+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

+<title>Insert title here</title>

+</head>

+<body>

+

+<f:view><f:convertNumber /></f:view></body>

+</html>

diff --git a/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_converter.jsp.data b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_converter.jsp.data
new file mode 100644
index 0000000..efc3b03
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_converter.jsp.data
@@ -0,0 +1,12 @@
+<%@taglib uri="http://java.sun.com/jsf/core" prefix="f"%><%@ page language="java" contentType="text/html; charset=ISO-8859-1"

+    pageEncoding="ISO-8859-1"%>

+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

+<html>

+<head>

+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

+<title>Insert title here</title>

+</head>

+<body>

+

+<f:view><f:converter /></f:view></body>

+</html>

diff --git a/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_dataTable.jsp.data b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_dataTable.jsp.data
new file mode 100644
index 0000000..492458b
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_dataTable.jsp.data
@@ -0,0 +1,21 @@
+<%@taglib uri="http://java.sun.com/jsf/html" prefix="h"%><%@taglib

+	uri="http://java.sun.com/jsf/core" prefix="f"%><%@ page language="java" contentType="text/html; charset=ISO-8859-1"

+    pageEncoding="ISO-8859-1"%>

+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

+<html>

+<head>

+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

+<title>Insert title here</title>

+</head>

+<body>

+

+<f:view><h:dataTable border="1"><h:column id="column1">
+					<f:facet name="header">
+						<h:outputText value="column1"></h:outputText>
+					</f:facet>
+				</h:column><h:column id="column2">
+					<f:facet name="header">
+						<h:outputText value="column2"></h:outputText>
+					</f:facet>
+				</h:column></h:dataTable></f:view></body>

+</html>

diff --git a/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_facet.jsp.data b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_facet.jsp.data
new file mode 100644
index 0000000..116d790
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_facet.jsp.data
@@ -0,0 +1,12 @@
+<%@taglib uri="http://java.sun.com/jsf/core" prefix="f"%><%@ page language="java" contentType="text/html; charset=ISO-8859-1"

+    pageEncoding="ISO-8859-1"%>

+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

+<html>

+<head>

+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

+<title>Insert title here</title>

+</head>

+<body>

+

+<f:view><f:facet></f:facet></f:view></body>

+</html>

diff --git a/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_form.jsp.data b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_form.jsp.data
new file mode 100644
index 0000000..1b0bccf
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_form.jsp.data
@@ -0,0 +1,14 @@
+<%@taglib uri="http://java.sun.com/jsf/html" prefix="h"%><%@taglib

+	uri="http://java.sun.com/jsf/core" prefix="f"%><%@ page language="java" contentType="text/html; charset=ISO-8859-1"

+    pageEncoding="ISO-8859-1"%>

+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

+<html>

+<head>

+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

+<title>Insert title here</title>

+</head>

+<body>

+

+<f:view><h:form></h:form></f:view></body>

+</html>

+

diff --git a/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_graphicImage.jsp.data b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_graphicImage.jsp.data
new file mode 100644
index 0000000..565c2dd
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_graphicImage.jsp.data
@@ -0,0 +1,13 @@
+<%@taglib uri="http://java.sun.com/jsf/html" prefix="h"%><%@taglib

+	uri="http://java.sun.com/jsf/core" prefix="f"%><%@ page language="java" contentType="text/html; charset=ISO-8859-1"

+    pageEncoding="ISO-8859-1"%>

+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

+<html>

+<head>

+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

+<title>Insert title here</title>

+</head>

+<body>

+

+<f:view><h:graphicImage></h:graphicImage></f:view></body>

+</html>

diff --git a/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_inputHidden.jsp.data b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_inputHidden.jsp.data
new file mode 100644
index 0000000..9e4b261
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_inputHidden.jsp.data
@@ -0,0 +1,13 @@
+<%@taglib uri="http://java.sun.com/jsf/html" prefix="h"%><%@taglib

+	uri="http://java.sun.com/jsf/core" prefix="f"%><%@ page language="java" contentType="text/html; charset=ISO-8859-1"

+    pageEncoding="ISO-8859-1"%>

+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

+<html>

+<head>

+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

+<title>Insert title here</title>

+</head>

+<body>

+

+<f:view><h:form><h:inputHidden></h:inputHidden></h:form></f:view></body>

+</html>

diff --git a/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_inputSecret.jsp.data b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_inputSecret.jsp.data
new file mode 100644
index 0000000..efacde3
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_inputSecret.jsp.data
@@ -0,0 +1,13 @@
+<%@taglib uri="http://java.sun.com/jsf/html" prefix="h"%><%@taglib

+	uri="http://java.sun.com/jsf/core" prefix="f"%><%@ page language="java" contentType="text/html; charset=ISO-8859-1"

+    pageEncoding="ISO-8859-1"%>

+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

+<html>

+<head>

+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

+<title>Insert title here</title>

+</head>

+<body>

+

+<f:view><h:form><h:inputSecret></h:inputSecret></h:form></f:view></body>

+</html>

diff --git a/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_inputText.jsp.data b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_inputText.jsp.data
new file mode 100644
index 0000000..fb557a1
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_inputText.jsp.data
@@ -0,0 +1,13 @@
+<%@taglib uri="http://java.sun.com/jsf/html" prefix="h"%><%@taglib

+	uri="http://java.sun.com/jsf/core" prefix="f"%><%@ page language="java" contentType="text/html; charset=ISO-8859-1"

+    pageEncoding="ISO-8859-1"%>

+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

+<html>

+<head>

+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

+<title>Insert title here</title>

+</head>

+<body>

+

+<f:view><h:form><h:inputText></h:inputText></h:form></f:view></body>

+</html>

diff --git a/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_inputTextarea.jsp.data b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_inputTextarea.jsp.data
new file mode 100644
index 0000000..57025a8
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_inputTextarea.jsp.data
@@ -0,0 +1,13 @@
+<%@taglib uri="http://java.sun.com/jsf/html" prefix="h"%><%@taglib

+	uri="http://java.sun.com/jsf/core" prefix="f"%><%@ page language="java" contentType="text/html; charset=ISO-8859-1"

+    pageEncoding="ISO-8859-1"%>

+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

+<html>

+<head>

+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

+<title>Insert title here</title>

+</head>

+<body>

+

+<f:view><h:form><h:inputTextarea></h:inputTextarea></h:form></f:view></body>

+</html>

diff --git a/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_loadBundle.jsp.data b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_loadBundle.jsp.data
new file mode 100644
index 0000000..2aa61ea
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_loadBundle.jsp.data
@@ -0,0 +1,12 @@
+<%@taglib uri="http://java.sun.com/jsf/core" prefix="f"%><%@ page language="java" contentType="text/html; charset=ISO-8859-1"

+    pageEncoding="ISO-8859-1"%>

+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

+<html>

+<head>

+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

+<title>Insert title here</title>

+</head>

+<body>

+

+<f:view><f:loadBundle /></f:view></body>

+</html>

diff --git a/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_message.jsp.data b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_message.jsp.data
new file mode 100644
index 0000000..e1d8802
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_message.jsp.data
@@ -0,0 +1,13 @@
+<%@taglib uri="http://java.sun.com/jsf/html" prefix="h"%><%@taglib

+	uri="http://java.sun.com/jsf/core" prefix="f"%><%@ page language="java" contentType="text/html; charset=ISO-8859-1"

+    pageEncoding="ISO-8859-1"%>

+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

+<html>

+<head>

+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

+<title>Insert title here</title>

+</head>

+<body>

+

+<f:view><h:message></h:message></f:view></body>

+</html>

diff --git a/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_messages.jsp.data b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_messages.jsp.data
new file mode 100644
index 0000000..7cea090
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_messages.jsp.data
@@ -0,0 +1,13 @@
+<%@taglib uri="http://java.sun.com/jsf/html" prefix="h"%><%@taglib

+	uri="http://java.sun.com/jsf/core" prefix="f"%><%@ page language="java" contentType="text/html; charset=ISO-8859-1"

+    pageEncoding="ISO-8859-1"%>

+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

+<html>

+<head>

+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

+<title>Insert title here</title>

+</head>

+<body>

+

+<f:view><h:messages></h:messages></f:view></body>

+</html>

diff --git a/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_outputFormat.jsp.data b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_outputFormat.jsp.data
new file mode 100644
index 0000000..ae929f8
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_outputFormat.jsp.data
@@ -0,0 +1,13 @@
+<%@taglib uri="http://java.sun.com/jsf/html" prefix="h"%><%@taglib

+	uri="http://java.sun.com/jsf/core" prefix="f"%><%@ page language="java" contentType="text/html; charset=ISO-8859-1"

+    pageEncoding="ISO-8859-1"%>

+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

+<html>

+<head>

+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

+<title>Insert title here</title>

+</head>

+<body>

+

+<f:view><h:outputFormat></h:outputFormat></f:view></body>

+</html>

diff --git a/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_outputLabel.jsp.data b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_outputLabel.jsp.data
new file mode 100644
index 0000000..23f1715
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_outputLabel.jsp.data
@@ -0,0 +1,13 @@
+<%@taglib uri="http://java.sun.com/jsf/html" prefix="h"%><%@taglib

+	uri="http://java.sun.com/jsf/core" prefix="f"%><%@ page language="java" contentType="text/html; charset=ISO-8859-1"

+    pageEncoding="ISO-8859-1"%>

+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

+<html>

+<head>

+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

+<title>Insert title here</title>

+</head>

+<body>

+

+<f:view><h:outputLabel></h:outputLabel></f:view></body>

+</html>

diff --git a/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_outputText.jsp.data b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_outputText.jsp.data
new file mode 100644
index 0000000..5f0f4fc
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_outputText.jsp.data
@@ -0,0 +1,13 @@
+<%@taglib uri="http://java.sun.com/jsf/html" prefix="h"%><%@taglib

+	uri="http://java.sun.com/jsf/core" prefix="f"%><%@ page language="java" contentType="text/html; charset=ISO-8859-1"

+    pageEncoding="ISO-8859-1"%>

+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

+<html>

+<head>

+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

+<title>Insert title here</title>

+</head>

+<body>

+

+<f:view><h:outputText></h:outputText></f:view></body>

+</html>

diff --git a/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_panelGrid.jsp.data b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_panelGrid.jsp.data
new file mode 100644
index 0000000..22ea572
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_panelGrid.jsp.data
@@ -0,0 +1,13 @@
+<%@taglib uri="http://java.sun.com/jsf/html" prefix="h"%><%@taglib

+	uri="http://java.sun.com/jsf/core" prefix="f"%><%@ page language="java" contentType="text/html; charset=ISO-8859-1"

+    pageEncoding="ISO-8859-1"%>

+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

+<html>

+<head>

+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

+<title>Insert title here</title>

+</head>

+<body>

+

+<f:view><h:panelGrid border="1" columns="2"><h:outputText value="item1"></h:outputText><h:outputText value="item2"></h:outputText><h:outputText value="item3"></h:outputText><h:outputText value="item4"></h:outputText></h:panelGrid></f:view></body>

+</html>

diff --git a/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_panelGroup.jsp.data b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_panelGroup.jsp.data
new file mode 100644
index 0000000..e38e714
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_panelGroup.jsp.data
@@ -0,0 +1,13 @@
+<%@taglib uri="http://java.sun.com/jsf/html" prefix="h"%><%@taglib

+	uri="http://java.sun.com/jsf/core" prefix="f"%><%@ page language="java" contentType="text/html; charset=ISO-8859-1"

+    pageEncoding="ISO-8859-1"%>

+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

+<html>

+<head>

+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

+<title>Insert title here</title>

+</head>

+<body>

+

+<f:view><h:panelGroup></h:panelGroup></f:view></body>

+</html>

diff --git a/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_param.jsp.data b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_param.jsp.data
new file mode 100644
index 0000000..1841db8
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_param.jsp.data
@@ -0,0 +1,12 @@
+<%@taglib uri="http://java.sun.com/jsf/core" prefix="f"%><%@ page language="java" contentType="text/html; charset=ISO-8859-1"

+    pageEncoding="ISO-8859-1"%>

+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

+<html>

+<head>

+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

+<title>Insert title here</title>

+</head>

+<body>

+

+<f:view><f:param /></f:view></body>

+</html>

diff --git a/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_selectBooleanCheckBox.jsp.data b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_selectBooleanCheckBox.jsp.data
new file mode 100644
index 0000000..1cbd440
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_selectBooleanCheckBox.jsp.data
@@ -0,0 +1,13 @@
+<%@taglib uri="http://java.sun.com/jsf/html" prefix="h"%><%@taglib

+	uri="http://java.sun.com/jsf/core" prefix="f"%><%@ page language="java" contentType="text/html; charset=ISO-8859-1"

+    pageEncoding="ISO-8859-1"%>

+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

+<html>

+<head>

+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

+<title>Insert title here</title>

+</head>

+<body>

+

+<f:view><h:form><h:selectBooleanCheckbox></h:selectBooleanCheckbox></h:form></f:view></body>

+</html>

diff --git a/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_selectItem.jsp.data b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_selectItem.jsp.data
new file mode 100644
index 0000000..bbae9e8
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_selectItem.jsp.data
@@ -0,0 +1,12 @@
+<%@taglib uri="http://java.sun.com/jsf/core" prefix="f"%><%@ page language="java" contentType="text/html; charset=ISO-8859-1"

+    pageEncoding="ISO-8859-1"%>

+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

+<html>

+<head>

+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

+<title>Insert title here</title>

+</head>

+<body>

+

+<f:view><f:selectItem /></f:view></body>

+</html>

diff --git a/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_selectItems.jsp.data b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_selectItems.jsp.data
new file mode 100644
index 0000000..57e465f
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_selectItems.jsp.data
@@ -0,0 +1,12 @@
+<%@taglib uri="http://java.sun.com/jsf/core" prefix="f"%><%@ page language="java" contentType="text/html; charset=ISO-8859-1"

+    pageEncoding="ISO-8859-1"%>

+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

+<html>

+<head>

+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

+<title>Insert title here</title>

+</head>

+<body>

+

+<f:view><f:selectItems /></f:view></body>

+</html>

diff --git a/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_selectManyCheckBox.jsp.data b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_selectManyCheckBox.jsp.data
new file mode 100644
index 0000000..2b58eb8
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_selectManyCheckBox.jsp.data
@@ -0,0 +1,13 @@
+<%@taglib uri="http://java.sun.com/jsf/html" prefix="h"%><%@taglib

+	uri="http://java.sun.com/jsf/core" prefix="f"%><%@ page language="java" contentType="text/html; charset=ISO-8859-1"

+    pageEncoding="ISO-8859-1"%>

+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

+<html>

+<head>

+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

+<title>Insert title here</title>

+</head>

+<body>

+

+<f:view><h:form><h:selectManyCheckbox></h:selectManyCheckbox></h:form></f:view></body>

+</html>

diff --git a/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_selectManyListbox.jsp.data b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_selectManyListbox.jsp.data
new file mode 100644
index 0000000..d08b3ac
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_selectManyListbox.jsp.data
@@ -0,0 +1,13 @@
+<%@taglib uri="http://java.sun.com/jsf/html" prefix="h"%><%@taglib

+	uri="http://java.sun.com/jsf/core" prefix="f"%><%@ page language="java" contentType="text/html; charset=ISO-8859-1"

+    pageEncoding="ISO-8859-1"%>

+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

+<html>

+<head>

+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

+<title>Insert title here</title>

+</head>

+<body>

+

+<f:view><h:form><h:selectManyListbox></h:selectManyListbox></h:form></f:view></body>

+</html>

diff --git a/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_selectManyMenu.jsp.data b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_selectManyMenu.jsp.data
new file mode 100644
index 0000000..abe9546
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_selectManyMenu.jsp.data
@@ -0,0 +1,13 @@
+<%@taglib uri="http://java.sun.com/jsf/html" prefix="h"%><%@taglib

+	uri="http://java.sun.com/jsf/core" prefix="f"%><%@ page language="java" contentType="text/html; charset=ISO-8859-1"

+    pageEncoding="ISO-8859-1"%>

+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

+<html>

+<head>

+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

+<title>Insert title here</title>

+</head>

+<body>

+

+<f:view><h:form><h:selectManyMenu></h:selectManyMenu></h:form></f:view></body>

+</html>

diff --git a/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_selectOneListBox.jsp.data b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_selectOneListBox.jsp.data
new file mode 100644
index 0000000..fbaeb7f
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_selectOneListBox.jsp.data
@@ -0,0 +1,13 @@
+<%@taglib uri="http://java.sun.com/jsf/html" prefix="h"%><%@taglib

+	uri="http://java.sun.com/jsf/core" prefix="f"%><%@ page language="java" contentType="text/html; charset=ISO-8859-1"

+    pageEncoding="ISO-8859-1"%>

+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

+<html>

+<head>

+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

+<title>Insert title here</title>

+</head>

+<body>

+

+<f:view><h:form><h:selectOneListbox></h:selectOneListbox></h:form></f:view></body>

+</html>

diff --git a/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_selectOneMenu.jsp.data b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_selectOneMenu.jsp.data
new file mode 100644
index 0000000..4dd6200
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_selectOneMenu.jsp.data
@@ -0,0 +1,13 @@
+<%@taglib uri="http://java.sun.com/jsf/html" prefix="h"%><%@taglib

+	uri="http://java.sun.com/jsf/core" prefix="f"%><%@ page language="java" contentType="text/html; charset=ISO-8859-1"

+    pageEncoding="ISO-8859-1"%>

+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

+<html>

+<head>

+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

+<title>Insert title here</title>

+</head>

+<body>

+

+<f:view><h:form><h:selectOneMenu></h:selectOneMenu></h:form></f:view></body>

+</html>

diff --git a/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_selectOneRadio.jsp.data b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_selectOneRadio.jsp.data
new file mode 100644
index 0000000..d687c5e
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_selectOneRadio.jsp.data
@@ -0,0 +1,13 @@
+<%@taglib uri="http://java.sun.com/jsf/html" prefix="h"%><%@taglib

+	uri="http://java.sun.com/jsf/core" prefix="f"%><%@ page language="java" contentType="text/html; charset=ISO-8859-1"

+    pageEncoding="ISO-8859-1"%>

+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

+<html>

+<head>

+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

+<title>Insert title here</title>

+</head>

+<body>

+

+<f:view><h:form><h:selectOneRadio></h:selectOneRadio></h:form></f:view></body>

+</html>

diff --git a/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_subview.jsp.data b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_subview.jsp.data
new file mode 100644
index 0000000..39f349f
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_subview.jsp.data
@@ -0,0 +1,12 @@
+<%@taglib uri="http://java.sun.com/jsf/core" prefix="f"%><%@ page language="java" contentType="text/html; charset=ISO-8859-1"

+    pageEncoding="ISO-8859-1"%>

+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

+<html>

+<head>

+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

+<title>Insert title here</title>

+</head>

+<body>

+

+<f:view><f:subview></f:subview></f:view></body>

+</html>

diff --git a/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_validateDoubleRange.jsp.data b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_validateDoubleRange.jsp.data
new file mode 100644
index 0000000..7f05e9b
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_validateDoubleRange.jsp.data
@@ -0,0 +1,12 @@
+<%@taglib uri="http://java.sun.com/jsf/core" prefix="f"%><%@ page language="java" contentType="text/html; charset=ISO-8859-1"

+    pageEncoding="ISO-8859-1"%>

+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

+<html>

+<head>

+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

+<title>Insert title here</title>

+</head>

+<body>

+

+<f:view><f:validateDoubleRange /></f:view></body>

+</html>

diff --git a/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_validateLength.jsp.data b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_validateLength.jsp.data
new file mode 100644
index 0000000..432cdc6
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_validateLength.jsp.data
@@ -0,0 +1,12 @@
+<%@taglib uri="http://java.sun.com/jsf/core" prefix="f"%><%@ page language="java" contentType="text/html; charset=ISO-8859-1"

+    pageEncoding="ISO-8859-1"%>

+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

+<html>

+<head>

+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

+<title>Insert title here</title>

+</head>

+<body>

+

+<f:view><f:validateLength /></f:view></body>

+</html>

diff --git a/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_validateLongRange.jsp.data b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_validateLongRange.jsp.data
new file mode 100644
index 0000000..def1a41
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_validateLongRange.jsp.data
@@ -0,0 +1,12 @@
+<%@taglib uri="http://java.sun.com/jsf/core" prefix="f"%><%@ page language="java" contentType="text/html; charset=ISO-8859-1"

+    pageEncoding="ISO-8859-1"%>

+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

+<html>

+<head>

+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

+<title>Insert title here</title>

+</head>

+<body>

+

+<f:view><f:validateLongRange /></f:view></body>

+</html>

diff --git a/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_validator.jsp.data b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_validator.jsp.data
new file mode 100644
index 0000000..8d68cc5
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_validator.jsp.data
@@ -0,0 +1,12 @@
+<%@taglib uri="http://java.sun.com/jsf/core" prefix="f"%><%@ page language="java" contentType="text/html; charset=ISO-8859-1"

+    pageEncoding="ISO-8859-1"%>

+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

+<html>

+<head>

+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

+<title>Insert title here</title>

+</head>

+<body>

+

+<f:view><f:validator /></f:view></body>

+</html>

diff --git a/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_valueChangeListener.jsp.data b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_valueChangeListener.jsp.data
new file mode 100644
index 0000000..0c2bc22
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_valueChangeListener.jsp.data
@@ -0,0 +1,12 @@
+<%@taglib uri="http://java.sun.com/jsf/core" prefix="f"%><%@ page language="java" contentType="text/html; charset=ISO-8859-1"

+    pageEncoding="ISO-8859-1"%>

+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

+<html>

+<head>

+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

+<title>Insert title here</title>

+</head>

+<body>

+

+<f:view><f:valueChangeListener /></f:view></body>

+</html>

diff --git a/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_verbatim.jsp.data b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_verbatim.jsp.data
new file mode 100644
index 0000000..ae2a543
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_verbatim.jsp.data
@@ -0,0 +1,12 @@
+<%@taglib uri="http://java.sun.com/jsf/core" prefix="f"%><%@ page language="java" contentType="text/html; charset=ISO-8859-1"

+    pageEncoding="ISO-8859-1"%>

+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

+<html>

+<head>

+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

+<title>Insert title here</title>

+</head>

+<body>

+

+<f:view><f:verbatim></f:verbatim></f:view></body>

+</html>

diff --git a/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_view.jsp.data b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_view.jsp.data
new file mode 100644
index 0000000..ee2b049
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsf/expectedResult_view.jsp.data
@@ -0,0 +1,12 @@
+<%@taglib uri="http://java.sun.com/jsf/core" prefix="f"%><%@ page language="java" contentType="text/html; charset=ISO-8859-1"

+    pageEncoding="ISO-8859-1"%>

+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

+<html>

+<head>

+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

+<title>Insert title here</title>

+</head>

+<body>

+

+<f:view></f:view></body>

+</html>

diff --git a/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsp/expectedResult_jsp_directive.include.jsp.data b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsp/expectedResult_jsp_directive.include.jsp.data
new file mode 100644
index 0000000..564b439
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsp/expectedResult_jsp_directive.include.jsp.data
@@ -0,0 +1,12 @@
+<%@ page language="java" contentType="text/html; charset=ISO-8859-1"

+    pageEncoding="ISO-8859-1"%>

+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

+<html>

+<head>

+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

+<title>Insert title here</title>

+</head>

+<body><jsp:directive.include />

+

+</body>

+</html>

diff --git a/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsp/expectedResult_jsp_directive.include.jspx.data b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsp/expectedResult_jsp_directive.include.jspx.data
new file mode 100644
index 0000000..6687be7
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/jsp/expectedResult_jsp_directive.include.jspx.data
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>

+<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.0" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core"> <jsp:directive.page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1" />

+<html xmlns="http://www.w3.org/1999/xhtml">

+    <head>

+	<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />

+	<title>Insert title here</title>

+	</head>

+    <body><jsp:directive.include />

+

+    </body>

+</html>

+</jsp:root>

+

diff --git a/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/tagCreator.html.data b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/tagCreator.html.data
new file mode 100644
index 0000000..88e76d5
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/tagCreator.html.data
@@ -0,0 +1,10 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

+<html>

+<head>

+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

+<title>Insert title here</title>

+</head>

+<body>

+

+</body>

+</html>

diff --git a/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/tagCreator.jsp.data b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/tagCreator.jsp.data
new file mode 100644
index 0000000..f74e8c2
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/tagCreator.jsp.data
@@ -0,0 +1,12 @@
+<%@ page language="java" contentType="text/html; charset=ISO-8859-1"

+    pageEncoding="ISO-8859-1"%>

+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

+<html>

+<head>

+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

+<title>Insert title here</title>

+</head>

+<body>

+

+</body>

+</html>

diff --git a/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/tagCreator.jspx.data b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/tagCreator.jspx.data
new file mode 100644
index 0000000..37a3057
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/tagCreator.jspx.data
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>

+<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.0" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core"> <jsp:directive.page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1" />

+<html xmlns="http://www.w3.org/1999/xhtml">

+    <head>

+	<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />

+	<title>Insert title here</title>

+	</head>

+    <body>

+

+    </body>

+</html>

+</jsp:root>

+

diff --git a/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/tagCreator.xhtml.data b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/tagCreator.xhtml.data
new file mode 100644
index 0000000..10bdd6f
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/tagCreator.xhtml.data
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>

+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

+<html xmlns="http://www.w3.org/1999/xhtml">

+<head>

+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />

+<title>Insert title here</title>

+</head>

+<body>

+

+</body>

+</html>

+

diff --git a/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/testCreator.tld.data b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/testCreator.tld.data
new file mode 100644
index 0000000..e36c232
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/testCreator.tld.data
@@ -0,0 +1,142 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>

+

+<!DOCTYPE taglib

+  PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"

+  "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">

+

+

+<taglib>

+

+

+  <!-- ========== Tag Library Description Elements ========================= -->

+

+

+  <tlib-version>1.0</tlib-version>

+  <jsp-version>1.2</jsp-version>

+  <short-name>test</short-name>

+  <uri>org.eclipse.jst.pagedesigner.tests.tagCreatorFactory1</uri>

+  <description>

+   A test tld used for verifying the tagCreationFactories extension point.

+  </description>

+

+  <!-- ========== Tag Descriptions ========================================= -->

+

+

+  <tag>

+    <name>tagWithRequiredAttr</name>

+    <tag-class>com.foo.SomeClass</tag-class>

+    <body-content>empty</body-content>

+    <description>

+       A tag with a required attribute used to test ensureRequiredAttributes

+    </description>

+

+    <attribute>

+      <name>requiredAttr1</name>

+      <required>true</required>

+      <rtexprvalue>false</rtexprvalue>

+      <description>

+          This attribute is required.

+      </description>

+    </attribute>

+    

+    <attribute>

+      <name>requiredAttr2</name>

+      <required>true</required>

+      <rtexprvalue>false</rtexprvalue>

+      <description>

+          This attribute is required.

+      </description>

+    </attribute>

+

+    <attribute>

+      <name>notRequiredAttr1</name>

+      <required>false</required>

+      <rtexprvalue>false</rtexprvalue>

+      <description>

+          This attribute is optional.

+      </description>

+    </attribute>

+

+  </tag>

+

+    <tag>

+    <name>tagWithRequiredAttr2</name>

+    <tag-class>com.foo.SomeClass</tag-class>

+    <body-content>empty</body-content>

+    <description>

+       A tag with a required attribute used to test ensureRequiredAttributes

+    </description>

+

+    <attribute>

+      <name>requiredAttr1</name>

+      <required>true</required>

+      <rtexprvalue>false</rtexprvalue>

+      <description>

+          This attribute is required.

+      </description>

+    </attribute>

+    

+    <attribute>

+      <name>requiredAttr2</name>

+      <required>true</required>

+      <rtexprvalue>false</rtexprvalue>

+      <description>

+          This attribute is required.

+      </description>

+    </attribute>

+

+    <attribute>

+      <name>notRequiredAttr1</name>

+      <required>false</required>

+      <rtexprvalue>false</rtexprvalue>

+      <description>

+          This attribute is optional.

+      </description>

+    </attribute>

+

+  </tag>

+

+  <tag>

+    <name>tagWithMetadata</name>

+    <tag-class>com.foo.SomeOtherClass</tag-class>

+    <body-content>empty</body-content>

+    <description>

+       A tag with tag attribute and element meta-data

+    </description>

+

+    <attribute>

+      <name>requiredAttr1</name>

+      <required>true</required>

+      <rtexprvalue>false</rtexprvalue>

+      <description>

+          This attribute is required.

+      </description>

+    </attribute>

+

+    <attribute>

+      <name>requiredAttr2</name>

+      <required>true</required>

+      <rtexprvalue>false</rtexprvalue>

+      <description>

+          This attribute is also required.

+      </description>

+    </attribute>

+

+    <attribute>

+      <name>notRequiredAttr1</name>

+      <required>false</required>

+      <rtexprvalue>false</rtexprvalue>

+      <description>

+          This attribute is optional.

+      </description>

+    </attribute>

+    <attribute>

+      <name>notRequiredAttr2</name>

+      <required>false</required>

+      <rtexprvalue>false</rtexprvalue>

+      <description>

+          This attribute is also optional.

+      </description>

+    </attribute>

+  </tag>

+</taglib>

diff --git a/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/testTagCreation.jsp.data b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/testTagCreation.jsp.data
new file mode 100644
index 0000000..f0b873b
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.pagedesigner.tests/testdata/tagcreator/testTagCreation.jsp.data
@@ -0,0 +1,16 @@
+<%@taglib uri="http://java.sun.com/jsf/core" prefix="f"%><%@taglib uri="org.eclipse.jst.pagedesigner.tests.tagCreatorFactory1" prefix="test"<%@ page language="java" contentType="text/html; charset=ISO-8859-1"

+    pageEncoding="ISO-8859-1"%>

+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

+<html>

+<head>

+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

+<title>Insert title here</title>

+</head>

+<body>

+

+<f:view>

+

+</f:view>

+

+</body>

+</html>