[teiid-commits] teiid SVN: r2913 - trunk/api/src/main/java/org/teiid/language.
teiid-commits at lists.jboss.org
teiid-commits at lists.jboss.org
Wed Feb 16 16:32:50 EST 2011
Author: shawkins
Date: 2011-02-16 16:32:50 -0500 (Wed, 16 Feb 2011)
New Revision: 2913
Modified:
trunk/api/src/main/java/org/teiid/language/SQLConstants.java
Log:
TEIIDDES-868 exposing reserved and non reserved words for use by designer
Modified: trunk/api/src/main/java/org/teiid/language/SQLConstants.java
===================================================================
--- trunk/api/src/main/java/org/teiid/language/SQLConstants.java 2011-02-16 16:28:02 UTC (rev 2912)
+++ trunk/api/src/main/java/org/teiid/language/SQLConstants.java 2011-02-16 21:32:50 UTC (rev 2913)
@@ -23,8 +23,9 @@
package org.teiid.language;
import java.lang.reflect.Field;
+import java.util.Collections;
+import java.util.HashSet;
import java.util.Set;
-import java.util.HashSet;
/**
* SQL Constants for Teiid.
@@ -400,23 +401,42 @@
/**
* Set of CAPITALIZED reserved words for checking whether a string is a reserved word.
*/
- private static final Set<String> RESERVED_WORDS = new HashSet<String>();
+ private static final Set<String> RESERVED_WORDS = extractFieldNames(SQLConstants.Reserved.class);
+ private static final Set<String> NON_RESERVED_WORDS = extractFieldNames(SQLConstants.NonReserved.class);
- // Initialize RESERVED_WORDS set - This is a poor man's enum. To much legacy code expects the constants to be Strings.
- static {
- Field[] fields = SQLConstants.Reserved.class.getDeclaredFields();
+ /**
+ * @throws AssertionError
+ */
+ private static Set<String> extractFieldNames(Class<?> clazz) throws AssertionError {
+ HashSet<String> result = new HashSet<String>();
+ Field[] fields = clazz.getDeclaredFields();
for (Field field : fields) {
if (field.getType() == String.class) {
try {
- if (!RESERVED_WORDS.add((String)field.get(null))) {
+ if (!result.add((String)field.get(null))) {
throw new AssertionError("Duplicate value for " + field.getName()); //$NON-NLS-1$
}
} catch (Exception e) {
}
}
}
- }
-
+ return Collections.unmodifiableSet(result);
+ }
+
+ /**
+ * @return nonReservedWords
+ */
+ public static Set<String> getNonReservedWords() {
+ return NON_RESERVED_WORDS;
+ }
+
+ /**
+ * @return reservedWords
+ */
+ public static Set<String> getReservedWords() {
+ return RESERVED_WORDS;
+ }
+
/** Can't construct */
private SQLConstants() {}
More information about the teiid-commits
mailing list