package fr.inria.diverse.melange.tests.dispatch.main; import fr.inria.diverse.melange.tests.dispatch.main.l1.adapters.l1mt.L1Adapter; import fr.inria.diverse.melange.tests.dispatch.main.l1mt.dispatchroot.B; import fr.inria.diverse.melange.tests.dispatch.main.l2.adapters.l1mt.L2Adapter; import fr.inria.diverse.melange.tests.dispatch.main.l3.adapters.l1mt.L3Adapter; import fr.inria.diverse.melange.tests.dispatch.main.l4.adapters.l1mt.L4Adapter; import fr.inria.diverse.melange.tests.dispatch.main.l4.dispatchroot.DispatchrootFactory; import fr.inria.diverse.melange.tests.dispatch.main.l4.dispatchroot.DispatchrootPackage; import fr.inria.diverse.melange.tests.dispatch.main.l4.dispatchroot.SubB; public class Main { public static void main(String[] args) { System.out.println("Test L1:"); printL1(); System.out.println("Test L2:"); printL2(); System.out.println("Test L3:"); printL3(); System.out.println("Test L4:"); printL4(); } public static void printL1(){ L1Adapter adapter = new L1Adapter(); fr.inria.diverse.melange.tests.dispatch.main.l1mt.dispatchroot.DispatchrootFactory factory = adapter.getDispatchrootFactory(); fr.inria.diverse.melange.tests.dispatch.main.l1mt.dispatchroot.A a = factory.createA(); fr.inria.diverse.melange.tests.dispatch.main.l1mt.dispatchroot.B b = factory.createB(); fr.inria.diverse.melange.tests.dispatch.main.l1mt.dispatchroot.C c = factory.createC(); transfo(a,b,c); } public static void printL2(){ L2Adapter adapter = new L2Adapter(); fr.inria.diverse.melange.tests.dispatch.main.l1mt.dispatchroot.DispatchrootFactory factory = adapter.getDispatchrootFactory(); fr.inria.diverse.melange.tests.dispatch.main.l1mt.dispatchroot.A a = factory.createA(); fr.inria.diverse.melange.tests.dispatch.main.l1mt.dispatchroot.B b = factory.createB(); fr.inria.diverse.melange.tests.dispatch.main.l1mt.dispatchroot.C c = factory.createC(); transfo(a,b,c); } public static void printL3(){ L3Adapter adapter = new L3Adapter(); fr.inria.diverse.melange.tests.dispatch.main.l1mt.dispatchroot.DispatchrootFactory factory = adapter.getDispatchrootFactory(); fr.inria.diverse.melange.tests.dispatch.main.l1mt.dispatchroot.A a = factory.createA(); fr.inria.diverse.melange.tests.dispatch.main.l1mt.dispatchroot.B b = factory.createB(); fr.inria.diverse.melange.tests.dispatch.main.l1mt.dispatchroot.C c = factory.createC(); transfo(a,b,c); } public static void printL4(){ L4Adapter adapter = new L4Adapter(); fr.inria.diverse.melange.tests.dispatch.main.l1mt.dispatchroot.DispatchrootFactory factory = adapter.getDispatchrootFactory(); fr.inria.diverse.melange.tests.dispatch.main.l1mt.dispatchroot.A a = factory.createA(); SubB subB = ((DispatchrootFactory)DispatchrootPackage.eINSTANCE.getEFactoryInstance()).createSubB(); fr.inria.diverse.melange.tests.dispatch.main.l1mt.dispatchroot.B b = (B) fr.inria.diverse.melange.tests.dispatch.main.l4.adapters.l1mt.L1MTAdaptersFactory.getInstance().createAdapter(subB, null); fr.inria.diverse.melange.tests.dispatch.main.l1mt.dispatchroot.C c = factory.createC(); transfo(a,b,c); } public static void transfo( fr.inria.diverse.melange.tests.dispatch.main.l1mt.dispatchroot.A a, fr.inria.diverse.melange.tests.dispatch.main.l1mt.dispatchroot.B b, fr.inria.diverse.melange.tests.dispatch.main.l1mt.dispatchroot.C c){ //Direct calls a.foo(); b.foo(); //Indirect calls c.bar(a); c.bar(b); } }