|
|
# Beispiel für die Erstellung eines Testfalls für eine EJB-Transformation
|
|
|
|
|
|
Im Folgenden wird ein auskommentierter Testtreiber für die Transformation eines EJB-Elements gezeigt. Das in diesem Beispiel übersetzt Element ist ein Entity-Bean.
|
|
|
|
|
|
```java
|
|
|
public class ExampleEJBTransformationTest {
|
|
|
@Test
|
|
|
public void testTransformationToModel() throws TransformationValidationException, InterruptedException,
|
|
|
ExecutionException, org.eclipse.core.commands.ExecutionException, CoreException {
|
|
|
|
|
|
//Aufruf einer Utiltiy-Methode welche dazu genutzt wird ein vollständiges Javaprojekt
|
|
|
//anzulegen welches die zu übersetzenden EJB-Elemente enthält
|
|
|
IJavaProject project = TransformationTestUtils.createFullProject("TestProjectEntity1");
|
|
|
|
|
|
//Erstellen der ParentTransformation, da diese für den Konstruktor der zu testenden
|
|
|
//Transformation benötigt wird.
|
|
|
Package2PackageTransformation parentTransformation = new Package2PackageTransformation();
|
|
|
parentTransformation.setIDRegistry(new IDRegistry());
|
|
|
//Erstellen des Modelelements der ParentTransformation mit Hilfe der Ejb31Factory
|
|
|
parentTransformation.setModelElement(Ejb31Factory.eINSTANCE.createEJBPackage());
|
|
|
|
|
|
//Das Codelelement aus dem erstellen Javaprojekt suchen, welches mit der zu testenden
|
|
|
//Transformation übersetzt werden soll
|
|
|
IType myBean = project.findType("TestPackage.FourthBean");
|
|
|
|
|
|
//Erstellen des Transformationsobjekts und aufruf der zu testenden Methode
|
|
|
EntityBean2TypeTransformation tran = new EntityBean2TypeTransformation(parentTransformation, myBean);
|
|
|
EntityBean myBeanModel = tran.transformToModel();
|
|
|
|
|
|
//Testen ob das erstellte Modelelement den richtigen Namen hat
|
|
|
assertEquals("FourthBean", myBeanModel.getName());
|
|
|
}
|
|
|
|
|
|
@Test
|
|
|
public void testTransformationCreateCodeElement() throws ExecutionException, CoreException, InterruptedException {
|
|
|
//Aufruf einer Utiltiy-Methode welche dazu genutzt wird ein vollständiges Javaprojekt
|
|
|
//anzulegen welches die zu übersetzenden EJB-Elemente enthält
|
|
|
IJavaProject project = TransformationTestUtils.createFullProject("TestProjectEntity2");
|
|
|
|
|
|
//Erstellen der ParentTransformation und setzen von benötigten Feldern der Transformation
|
|
|
Package2PackageTransformation parentTransformation = new Package2PackageTransformation();
|
|
|
parentTransformation.setIDRegistry(new IDRegistry());
|
|
|
EJBPackage myPackage = Ejb31Factory.eINSTANCE.createEJBPackage();
|
|
|
myPackage.setName("TestPackage");
|
|
|
parentTransformation.setModelElement(myPackage);
|
|
|
parentTransformation.setCodeRoot(project);
|
|
|
for (IPackageFragment frag : project.getPackageFragments())
|
|
|
if (frag.getElementName().equals("TestPackage")) {
|
|
|
parentTransformation.setCodeElement(frag);
|
|
|
break;
|
|
|
}
|
|
|
|
|
|
//Erstellen des Model-Objekts für das zu Übersetzenden Modelelement
|
|
|
EntityBean myBean = Ejb31Factory.eINSTANCE.createEntityBean();
|
|
|
myBean.setName("MyEntityBean");
|
|
|
((EJBPackage) parentTransformation.getModelElement()).getEntityBeans().add(myBean);
|
|
|
//Erstellen des Transformationsobjekts und ausführen der zu testenden Methode
|
|
|
EntityBean2TypeTransformation transformation = new EntityBean2TypeTransformation(parentTransformation, myBean);
|
|
|
transformation.createCodeFragments();
|
|
|
|
|
|
//Erstellte Elemente im anfangs erstellten Javaprojekt finden
|
|
|
ArrayList<String> names = new ArrayList<String>();
|
|
|
for (ICompilationUnit unit : ((IPackageFragment) parentTransformation.getCodeElement()).getCompilationUnits())
|
|
|
names.add(unit.getElementName());
|
|
|
//Prüfen ob das Modelelement korrekt übersetzt wurde
|
|
|
assertTrue(names.contains("MyEntityBean.java"));
|
|
|
}
|
|
|
|
|
|
@Test
|
|
|
public void testTransformationUpdateCodeElement() throws ExecutionException, CoreException, InterruptedException {
|
|
|
//Anfang identisch mit der Methode testTransformationCreateCodeElement
|
|
|
IJavaProject project = TransformationTestUtils.createFullProject("TestProjectEntity3");
|
|
|
Package2PackageTransformation parentTransformation = new Package2PackageTransformation();
|
|
|
parentTransformation.setIDRegistry(new IDRegistry());
|
|
|
EJBPackage myPackage = Ejb31Factory.eINSTANCE.createEJBPackage();
|
|
|
myPackage.setName("TestPackage");
|
|
|
parentTransformation.setModelElement(myPackage);
|
|
|
parentTransformation.setCodeRoot(project);
|
|
|
IPackageFragment packageFrag = null;
|
|
|
for (IPackageFragment frag : project.getPackageFragments())
|
|
|
if (frag.getElementName().equals("TestPackage")) {
|
|
|
parentTransformation.setCodeElement(frag);
|
|
|
packageFrag = frag;
|
|
|
break;
|
|
|
}
|
|
|
|
|
|
//Modelelement erstellen welches zu einem Codeelement aus dem erstellten
|
|
|
//Javaprojekt passt
|
|
|
EntityBean myBean = Ejb31Factory.eINSTANCE.createEntityBean();
|
|
|
myBean.setName("FourthBean");
|
|
|
//Modelelement erstellen welches das Objekt beschreibt welches erstellt werden soll
|
|
|
EntityBean myNewBean = Ejb31Factory.eINSTANCE.createEntityBean();
|
|
|
myNewBean.setName("MyNewEntityBean");
|
|
|
((EJBPackage) parentTransformation.getModelElement()).getEntityBeans().add(myBean);
|
|
|
|
|
|
//Transformationsobjekt erstellen und die benötigten Felder belegen
|
|
|
EntityBean2TypeTransformation transformation = new EntityBean2TypeTransformation(parentTransformation, myNewBean);
|
|
|
transformation.setPriorModelElement(myBean);
|
|
|
transformation.setCodeElement(project.findType("TestPackage.FourthBean"));
|
|
|
transformation.updateCodeFragments();
|
|
|
|
|
|
//Geändertes Objekt im Code finden
|
|
|
ArrayList<String> names = new ArrayList<String>();
|
|
|
for (ICompilationUnit unit : ((IPackageFragment) parentTransformation.getCodeElement()).getCompilationUnits())
|
|
|
names.add(unit.getElementName());
|
|
|
|
|
|
//Prüfen ob das Codeelement korrekt geändert wurde
|
|
|
assertTrue(names.contains("MyNewEntityBean.java"));
|
|
|
assertFalse(names.contains("FourthBean.java"));
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
``` |
|
|
\ No newline at end of file |