View Javadoc

1   package com.diasparsoftware.util.jboss.testing;
2   
3   import java.io.FileReader;
4   
5   import javax.xml.transform.TransformerException;
6   
7   import org.custommonkey.xmlunit.*;
8   import org.w3c.dom.Document;
9   import org.xml.sax.InputSource;
10  
11  public abstract class EntityBeanMetaDataTest extends XMLTestCase {
12      private String metaDataFilename;
13      private Document metaDataDocument;
14      private String entityBeanName;
15  
16      protected void setUp() throws Exception {
17          parseMetaData();
18      }
19  
20      protected void setMetaDataFilename(String metaDataFilename) {
21          this.metaDataFilename = metaDataFilename;
22      }
23  
24      protected void setEntityBeanUnderTest(String entityBeanName) {
25          this.entityBeanName = entityBeanName;
26      }
27  
28      protected void parseMetaData() throws Exception {
29          XMLUnit.setIgnoreWhitespace(true);
30  
31          metaDataDocument =
32              XMLUnit.buildTestDocument(
33                  new InputSource(new FileReader(metaDataFilename)));
34      }
35  
36      protected void assertBeanMappedToTable(String expectedTableName)
37          throws TransformerException {
38  
39          assertXpathEvaluatesTo(
40              expectedTableName,
41              getXpathRelativeToEntityBean(entityBeanName, "table-name"),
42              metaDataDocument);
43      }
44  
45      protected void assertFieldMappedToColumn(
46          String fieldName,
47          String expectedColumnName)
48          throws TransformerException {
49  
50          assertXpathEvaluatesTo(
51              expectedColumnName,
52              getColumnMappingForField(entityBeanName, fieldName),
53              metaDataDocument);
54      }
55  
56      protected void assertDefaultDataSource(String expectedDataSourceJndiName)
57          throws TransformerException {
58  
59          assertXpathEvaluatesTo(
60              expectedDataSourceJndiName,
61              "/jbosscmp-jdbc/defaults/datasource",
62              metaDataDocument);
63      }
64  
65      private String getColumnMappingForField(
66          String entityBeanName,
67          String fieldName) {
68  
69          return getXpathRelativeToEntityBean(
70              entityBeanName,
71              "cmp-field[field-name='" + fieldName + "']/column-name");
72      }
73  
74      private String getXpathRelativeToEntityBean(
75          String entityBeanName,
76          String relativeXpath) {
77  
78          return getEntityBeanXpath(entityBeanName) + relativeXpath;
79      }
80  
81      private String getEntityBeanXpath(String entityBeanName) {
82          return "/jbosscmp-jdbc/enterprise-beans/"
83              + "entity[ejb-name='"
84              + entityBeanName
85              + "']/";
86      }
87  }