The 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>