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).