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 }