The two rule configuration files are organized as IOC externalizations.
Take the Java™ migration rule file for example: The tags are linked
to specific Java classes in the classTable map. Then the rules can be defined
and injected into separate Translators. These rules can only be parsed and
explained by the corresponding Translator itself.
Following is an example
for Java migration rule:
<javaRule>
<map id="classTable">
<entry key="packageTranslatorDefault"
value="com.ibm.btt.tools.migration.impl.JavaPackageTranslator" />
<entry key="importTranslatorDefault"
value="com.ibm.btt.tools.migration.impl.JavaImportTranslator" />
<entry key="classInstanceCreationTranslatorDefault"
value="com.ibm.btt.tools.migration.impl.JavaClassInstanceCreationTranslator" />
<entry key="methodInvocationTranslatorDefault"
value="com.ibm.btt.tools.migration.impl.JavaMethodInvocationTranslator" />
<entry key="typeDeclarationTranslatorDefault"
value="com.ibm.btt.tools.migration.impl.JavaTypeTranslator" />
<entry key="simpleTypeDefaultTranslatorDefault"
value="com.ibm.btt.tools.migration.impl.JavaSimpleTypeTranslator" />
<entry key="simpleRule"
value="com.ibm.btt.tools.migration.impl.JavaSimpleConfigBean" />
<entry key="complexRule"
value="com.ibm.btt.tools.migration.impl.JavaComplexConfigBean" />
</map>
<map id="Actions">
<entry key="PackageDeclaration">
<list Injection="value">
<ref id="pkgTranslator1"
refId="packageTranslatorDefault" />
<!-- <ref id="pkgTranslator2"
refId="packageTranslatorDefault" />
-->
</list>
</entry>
<entry key="ImportDeclaration">
<list Injection="value">
<ref id="iptTranslator1"
refId="importTranslatorDefault" />
</list>
</entry>
<entry key="ClassInstanceCreation">
<list Injection="value">
<ref id="cicTranslator1"
refId="classInstanceCreationTranslatorDefault" />
</list>
</entry>
<entry key="MethodInvocation">
<list Injection="value">
<ref id="miTranslator1"
refId="methodInvocationTranslatorDefault" />
</list>
</entry>
<entry key="TypeDeclaration">
<list Injection="value">
<ref id="typeTranslator1"
refId="typeDeclarationTranslatorDefault" />
</list>
</entry>
<entry key="SimpleType">
<list Injection="value">
<ref id="simpleTypeTranslator1"
refId="simpleTypeDefaultTranslatorDefault" />
</list>
</entry>
</map>
<packageTranslatorDefault id="packageTranslatorDefault">
<list Injection="ruleSet">
<simpleRule oldItem="com.ibm.dse.samples.appl"
newItem="com.ibm.btt.samples.appl" />
<simpleRule oldItem="com.ibm.dse" newItem="com.ibm.btt" />
</list>
</packageTranslatorDefault>
<importTranslatorDefault id="importTranslatorDefault">
<list Injection="ruleSet">
<simpleRule oldItem="com.ibm.dse" newItem="com.ibm.btt" />
<simpleRule oldItem="com.ibm.dse.base.Context"
newItem="com.ibm.btt.base.Context" />
</list>
</importTranslatorDefault>
<classInstanceCreationTranslatorDefault
id="classInstanceCreationTranslatorDefault">
<list Injection="ruleSet">
<complexRule oldClass="Context" newClass="ContextFactory"
newMethod="createContext" />
<complexRule oldClass="com.ibm.dse.base.Context"
newClass="com.ibm.btt.base.ContextFactory"
newMethod="createContext" />
</list>
</classInstanceCreationTranslatorDefault>
<methodInvocationTranslatorDefault
id="methodInvocationTranslatorDefault">
<list Injection="ruleSet">
<complexRule oldClass="Context" oldMethod="getContextNamed"
newClass="ContextFactory" newMethod="getContextNamed" />
<complexRule oldClass="com.ibm.dse.base.Context"
oldMethod="getContextNamed"
newClass="com.ibm.btt.base.ContextFactory"
newMethod="getContextNamed" />
<complexRule oldClass="Context" oldMethod="reset"
newClass="ContextFactory" newMethod="reset" />
<complexRule oldClass="com.ibm.dse.base.Context"
oldMethod="reset" newClass="com.ibm.btt.base.ContextFactory"
newMethod="reset" />
</list>
</methodInvocationTranslatorDefault>
<typeDeclarationTranslatorDefault
id="typeDeclarationTranslatorDefault">
<list Injection="ruleSet">
<simpleRule oldItem="DSEServerOperation"
newItem="BTTServerOperation" type="superclass" />
<simpleRule oldItem="com.ibm.dse.base.DSEServerOperation"
newItem="com.ibm.btt.base.BTTServerOperation" type="superclass" />
<simpleRule oldItem="DSEInterface" newItem="BTTInterface"
type="interface" />
</list>
</typeDeclarationTranslatorDefault>
<simpleTypeDefaultTranslatorDefault
id="simpleTypeDefaultTranslatorDefault">
<list Injection="ruleSet">
<simpleRule oldItem="com.ibm.dse.Context"
newItem="com.ibm.btt.Context"/>
</list>
</simpleTypeDefaultTranslatorDefault>
</javaRule>