import org.teiid.PreParser;
...
package com.something;
public class CustomPreParser implements PreParser {
@Override
public String preParse(String command, CommandContext context) {
//manipulate the command
}
}
PreParser
If it is desirable to manipulate incoming queries prior to being handled by Teiid logic, then a custom pre-parser can be installed. Use the PreParser interface provided in the org.teiid.api jar to plug-in a pre-parser for the Teiid engine. See Setting up the build environment to start development. For Example:
Then build a JAR archive with above implementation class and create a file named org.teiid.PreParser in META-INF/services directory with contents:
com.something.CustomPreParser
The the jar has been built, this needs to be deployed in the WildFly as a module under <jboss-as>/modules directory. Follow the below steps to create a module.
-
Create a directory <jboss-as>/modules/com/something/main
-
Under this directory create a
module.xml
file that looks like
<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.0" name="com.something">
<resources>
<resource-root path="something.jar" />
</resources>
<dependencies>
<module name="javax.api"/>
<module name="javax.resource.api"/>
<module name="org.jboss.teiid.common-core"/>
<module name="org.jboss.teiid.teiid-api" />
</dependencies>
</module>
-
Copy the jar file under this same directory. Make sure you add any additional dependencies if required by your implementation class under dependencies.
-
Use the cli or modify the configuration to set the preparser-module in the Teiid subsystem configuration to the appropriate module name.
-
Restart the server
Development Considerations
-
Changing the incoming query to a different type of statement is not recommended as are any modifications to the number or types of projected symbols.