Initial Checkin
diff --git a/jsf/tests/org.eclipse.jst.jsf.metadata.tests/testfiles/metadata/CaseInsensitive.xml b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/testfiles/metadata/CaseInsensitive.xml
new file mode 100644
index 0000000..31a1a01
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/testfiles/metadata/CaseInsensitive.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar-annotations
+ xmlns="http://org.eclipse.wtp.jsf.core/grammarAnnotationSchema"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://org.eclipse.wtp.jsf.core/grammarAnnotationSchema"
+ caseSensitive="false">
+ <cm-element name="Foo">
+ <cm-attribute name="Value">
+ <property name="Type">
+ <value>String1</value>
+ </property>
+ </cm-attribute>
+ <property name="Type">
+ <value>String1</value>
+ </property>
+ </cm-element>
+</grammar-annotations>
diff --git a/jsf/tests/org.eclipse.jst.jsf.metadata.tests/testfiles/metadata/FileA.xml b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/testfiles/metadata/FileA.xml
new file mode 100644
index 0000000..c8b9e11
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/testfiles/metadata/FileA.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar-annotation xmlns:p="http://org.eclipse.wtp.jsf.core/grammarAnnotationSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://org.eclipse.wtp.jsf.core/grammarAnnotationSchema ../../../org.eclipse.wtp.jsf.core/schema/grammar-annotations.xsd ">
+ <cm-element name="Foo">
+ <cm-attribute name="Value">
+ <property name="Type">
+ <value>String1</value>
+ </property>
+ </cm-attribute>
+ <property name="Type">
+ <value>String1</value>
+ </property>
+ </cm-element>
+</grammar-annotation>
diff --git a/jsf/tests/org.eclipse.jst.jsf.metadata.tests/testfiles/metadata/FileB.xml b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/testfiles/metadata/FileB.xml
new file mode 100644
index 0000000..a77c641
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/testfiles/metadata/FileB.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar-annotation
+ xmlns="http://org.eclipse.wtp.jsf.core/grammarAnnotationSchema"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ >
+ <cm-element name="Foo">
+ <cm-attribute name="Value">
+ <property name="Type">
+ <value>String2</value>
+ </property>
+ </cm-attribute>
+ <property name="Type">
+ <value>String2</value>
+ </property>
+ </cm-element>
+</grammar-annotation>
diff --git a/jsf/tests/org.eclipse.jst.jsf.metadata.tests/testfiles/metadata/TestJSP.jsp b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/testfiles/metadata/TestJSP.jsp
new file mode 100644
index 0000000..edd40b1
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/testfiles/metadata/TestJSP.jsp
@@ -0,0 +1,16 @@
+<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
+ pageEncoding="ISO-8859-1"%>
+<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<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>
\ No newline at end of file
diff --git a/jsf/tests/org.eclipse.jst.jsf.metadata.tests/testfiles/metadata/jsf_metadataprocessing.xml b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/testfiles/metadata/jsf_metadataprocessing.xml
new file mode 100644
index 0000000..cc14b6b
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/testfiles/metadata/jsf_metadataprocessing.xml
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar-annotation
+ xmlns="http://org.eclipse.jsf.core/grammarAnnotationSchema"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+>
+
+ <cm-element name="MyTag">
+ <cm-attribute name="MyBooleanAttr">
+ <property name="attribute-value-runtime-type">
+ <value>org.eclipse.jst.jsf.metadata.tests.MyBooleanType</value>
+ </property>
+ </cm-attribute>
+ <cm-attribute name="BooleanAttr">
+ <property name="attribute-value-runtime-type">
+ <value>org.eclipse.jst.jsf.taglibprocessing.attributevalues.BooleanType</value>
+ </property>
+ <property name="barks">
+ <value>woof</value>
+ <value>ruff</value>
+ <value>howllllllll</value>
+ </property>
+ </cm-attribute>
+ <cm-attribute name="NutherBooleanAttr">
+ <property name="attribute-value-runtime-type">
+ <value>org.eclipse.jst.jsf.taglibprocessing.attributevalues.BooleanType</value>
+ </property>
+ <property name="barks">
+ <value>WOOF</value>
+ <value>RUFF</value>
+ <value>HOWLLL</value>
+ </property>
+ </cm-attribute>
+ <cm-attribute name="MyValidValsAttr">
+ <property name="attribute-value-runtime-type">
+ <value>org.eclipse.jst.jsf.metadata.tests.MyStringArrayType</value>
+ </property>
+ <property name="valid-values">
+ <value>FirstVal</value>
+ <value>SecondVal</value>
+ <value>ThirdVal</value>
+ <value>FourthVal</value>
+ </property>
+ </cm-attribute>
+ <cm-attribute name="MyNonMetaDataEnabledAttr">
+ <property name="valid-values">
+ <value>FirstVal</value>
+ <value>SecondVal</value>
+ <value>ThirdVal</value>
+ <value>FourthVal</value>
+ </property>
+ </cm-attribute>
+ <cm-attribute name="MyNoImplMetaDataEnabledAttr">
+ <property name="attribute-value-runtime-type">
+ <value>org.eclipse.jst.jsf.metadata.tests.NoImplType</value>
+ </property>
+ <property name="valid-values">
+ <value>FirstVal</value>
+ <value>SecondVal</value>
+ <value>ThirdVal</value>
+ <value>FourthVal</value>
+ </property>
+ </cm-attribute>
+ <cm-attribute name="MyDualTypeAttr">
+ <property name="attribute-value-runtime-type">
+ <value>org.eclipse.jst.jsf.metadata.tests.MyStringArrayType</value>
+ </property>
+ <property name="valid-values">
+ <value>AFirstVal</value>
+ <value>ASecondVal</value>
+ <value>AThirdVal</value>
+ <value>AFourthVal</value>
+ </property>
+ </cm-attribute>
+ <cm-attribute name="MyLongAttr">
+ <property name="attribute-value-runtime-type">
+ <value>org.eclipse.jst.jsf.metadata.tests.MyLongType</value>
+ </property>
+ </cm-attribute>
+ <cm-attribute name="MyMissingType">
+ <property name="attribute-value-runtime-type">
+ <value>org.eclipse.jst.jsf.metadata.tests.WhereIsIt</value>
+ </property>
+ </cm-attribute>
+ <cm-attribute name="ValidatorID">
+ <property name="attribute-value-runtime-type">
+ <value>org.eclipse.jst.jsf.metadataprocessors.IdentifierType</value>
+ </property>
+ <property name="identifier-type">
+ <value>javax.faces.validator</value>
+ </property>
+ </cm-attribute>
+ </cm-element>
+</grammar-annotation>
diff --git a/jsf/tests/org.eclipse.jst.jsf.metadata.tests/testfiles/metadata/jsf_tagprocessing.xml b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/testfiles/metadata/jsf_tagprocessing.xml
new file mode 100644
index 0000000..2270a6a
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/testfiles/metadata/jsf_tagprocessing.xml
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar-annotation
+ xmlns="http://org.eclipse.jsf.core/grammarAnnotationSchema"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+>
+
+ <cm-element name="MyTag">
+ <cm-attribute name="BooleanType">
+ <property name="attribute-value-runtime-type">
+ <value>org.eclipse.jst.jsf.taglibprocessing.attributevalues.BooleanType</value>
+ </property>
+ <property name="default-value">
+ <value>true</value>
+ </property>
+ </cm-attribute>
+ <cm-attribute name="StringType">
+ <property name="attribute-value-runtime-type">
+ <value>org.eclipse.jst.jsf.taglibprocessing.attributevalues.StringType</value>
+ </property>
+ <property name="valid-values">
+ <value>A</value>
+ <value>B</value>
+ <value>C</value>
+ <value>D</value>
+ </property>
+ <property name="displayed-values">
+ <value>A FirstVal</value>
+ <value>B SecondVal</value>
+ <value>C ThirdVal</value>
+ <value>D FourthVal</value>
+ </property>
+ <property name = "small-icon">
+ <value>/icons/foo.gif</value>
+ </property>
+ <property name = "default-value">
+ <value>A</value>
+ </property>
+ </cm-attribute>
+ <cm-attribute name="IntegerType">
+ <property name="attribute-value-runtime-type">
+ <value>org.eclipse.jst.jsf.taglibprocessing.attributevalues.IntegerType</value>
+ </property>
+ <property name="valid-minimum"><value>0</value></property>
+ <property name="default-value"><value>10</value></property>
+ </cm-attribute>
+ <cm-attribute name="LongType">
+ <property name="attribute-value-runtime-type">
+ <value>org.eclipse.jst.jsf.taglibprocessing.attributevalues.LongType</value>
+ </property>
+ <property name="valid-minimum"><value>-1000</value></property>
+ <property name="valid-maximum"><value>1000</value></property>
+ </cm-attribute>
+ <cm-attribute name="DoubleType">
+ <property name="attribute-value-runtime-type">
+ <value>org.eclipse.jst.jsf.taglibprocessing.attributevalues.DoubleType</value>
+ </property>
+ <property name="valid-values">
+ <value>188.23</value>
+ <value>245.32</value>
+ <value>1</value>
+ </property>
+ </cm-attribute>
+ <cm-attribute name="JavaClassType">
+ <property name="attribute-value-runtime-type">
+ <value>org.eclipse.jst.jsf.taglibprocessing.attributevalues.JavaClassType</value>
+ </property>
+ </cm-attribute>
+ <cm-attribute name="MethodBindingType">
+ <property name="attribute-value-runtime-type">
+ <value>org.eclipse.jst.jsf.taglibprocessing.attributevalues.MethodBindingType</value>
+ </property>
+ </cm-attribute>
+ </cm-element>
+</grammar-annotation>
diff --git a/jsf/tests/org.eclipse.jst.jsf.metadata.tests/testfiles/metadata/jsf_test.properties b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/testfiles/metadata/jsf_test.properties
new file mode 100644
index 0000000..7b2299c
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/testfiles/metadata/jsf_test.properties
@@ -0,0 +1,5 @@
+NLS1=a day in the life
+NLS2=another string
+
+
+
diff --git a/jsf/tests/org.eclipse.jst.jsf.metadata.tests/testfiles/metadata/jsf_test.xml b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/testfiles/metadata/jsf_test.xml
new file mode 100644
index 0000000..ba19d27
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/testfiles/metadata/jsf_test.xml
@@ -0,0 +1,101 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar-annotations
+ xmlns="http://org.eclipse.wtp.jsf.core/grammarAnnotationSchema"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://org.eclipse.wtp.jsf.core/grammarAnnotationSchema" >
+ <cm-element name="validator">
+ <cm-attribute name="validatorId">
+ <property name="attr-val-content-assistant">
+ <value>com.eclipse.wtp.jsf.ui.internal.ValidatorAttrValueContentAssistant</value>
+ </property>
+ <property name="attr-val-runtime-type">
+ <value>com.eclipse.wtp.jsf.core.internal.model.datatype.Validator</value>
+ </property>
+ </cm-attribute>
+ </cm-element>
+ <cm-element name="nopropsOrAttrs">
+ </cm-element>
+ <cm-element name="noAttrs">
+ <property name="A">
+ <value>a</value>
+ </property>
+ <property name="B">
+ <value>b</value>
+ </property>
+ </cm-element>
+ <cm-element name="loaded">
+ <cm-attribute name="att1">
+ <property name="A1">
+ <value>a1</value>
+ </property>
+ <property name="B1">
+ <value>b1</value>
+ </property>
+ </cm-attribute>
+ <cm-attribute name="att2">
+ <property name="A2">
+ <value>a2</value>
+ </property>
+ <property name="B2">
+ <value>b2</value>
+ </property>
+ </cm-attribute>
+ <cm-attribute name="att3">
+ <property name="A3">
+ <value>a3</value>
+ </property>
+ <property name="B3">
+ <value>b3</value>
+ </property>
+ <property name="multival">
+ <value>1</value>
+ <value>2</value>
+ <value>3</value>
+ </property>
+ </cm-attribute>
+ <property name="A">
+ <value>a</value>
+ </property>
+ <property name="B">
+ <value>b</value>
+ </property>
+ <property name="multival">
+ <value>1</value>
+ <value>2</value>
+ <value>3</value>
+ </property>
+ </cm-element>
+ <cm-element name="NLS">
+ <cm-attribute name="NLS">
+ <property name="NLS1">
+ <value>%NLS1</value>
+ </property>
+ <property name="NLS2">
+ <value>%NLS2</value>
+ </property>
+ <property name="NLS3">
+ <value>%NLS3</value>
+ </property>
+ <property name="multival">
+ <value>%NLS1</value>
+ <value>%NLS2</value>
+ </property>
+ </cm-attribute>
+ <property name="NLS1">
+ <value>%NLS1</value>
+ </property>
+ <property name="NLS2">
+ <value>%NLS2</value>
+ </property>
+ <property name="NLS3">
+ <value>%NLS3</value>
+ </property>
+ <property name="multival">
+ <value>%NLS1</value>
+ <value>%NLS2</value>
+ </property>
+ <property name="NullVal">
+ <value></value>
+ </property>
+ </cm-element>
+</grammar-annotations>
diff --git a/jsf/tests/org.eclipse.jst.jsf.metadata.tests/testfiles/metadata/jsf_test_en_US.properties b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/testfiles/metadata/jsf_test_en_US.properties
new file mode 100644
index 0000000..94c8b66
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.jsf.metadata.tests/testfiles/metadata/jsf_test_en_US.properties
@@ -0,0 +1,5 @@
+NLS1=a day in the life(en_US)
+NLS2=another string(en_US)
+
+
+