The Object translator is a bridge for reading java objects from external sources (i.e., Infinispan Cache or Map cache) and delivering them to the engine for processing. And to assist in providing that bridge, the [OBJECTABLE|OBJECTABLE] function must be used to transform the java object into rows and columns.
The following are the translator types and their respective supported data source:
Execution Properties - infinispan-cache
| Name | Description | Required | Default |
|---|---|---|---|
| SupportsLuceneSearching | Setting to true assumes your objects are annotated and Hibernate/Lucene will be used to search the cache | N | false |
The following are the connector capabilities when Key Searching is used:
The following are the connector capabilities when Hibernate/Lucene Searching is enabled:
Retrieve objects from a cache and transform into rows and columns.
The following is an example of a key search. It uses a dynamic vdb to define the physical source and views using DDL. It uses a TeamObject class, shown below, with a teamName field that is used as its cache key and a String list of players.
public class TeamObject {
private String teamName;
private List<String> players = new ArrayList<String>();
public String getTeamName() {
return teamName;
}
public void setTeamName(String teamName) {
this.teamName = teamName;
}
public List<String> getPlayers() {
return players;
}
}
Notice the use of the [OBJECTABLE|TEIID:OBJECTABLE] function to parse the object from Team and transform into rows and column. This metadata could also be defined by using Teiid Designer.
<vdb name="team" version="1">
<property name="UseConnectorMetadata" value="cached" />
<model name="Team" visible="false">
<source name="objsource" translator-name="infinispan1" connection-jndi-name="java:infinispan-jndi"/>
<metadata type="DDL"><![CDATA[
CREATE FOREIGN TABLE Team (
TeamObject Object OPTIONS (NAMEINSOURCE 'this', SEARCHABLE 'Unsearchable'),
teamName varchar(255) PRIMARY KEY)
OPTIONS (NAMEINSOURCE 'teams');
]]> </metadata>
</model>
<model name="TeamView" type="VIRTUAL">
<metadata type="DDL"><![CDATA[
CREATE VIEW Players (
TeamName varchar(255) PRIMARY KEY,
PlayerName varchar(255)
)
AS
SELECT t.TeamName, y.Name FROM Team as T,
OBJECTTABLE('m.players' PASSING T.TeamObject as m COLUMNS Name string 'teiid_row') as y;
]]> </metadata>
</model>
<translator name="infinispan1" type="infinispan-cache">
<property name="SupportsLuceneSearching" value="true"/>
</translator>
</vdb>
See the Infinispan resource adapter for this translator. It can be configured to lookup the cache container via JNDI or created (i.e., ConfigurationFileName or RemoteServerList).