/******************************************************************************* * Copyright (c) 2011, 2015 Oracle and/or its affiliates. All rights reserved. * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0 * which accompanies this distribution. * The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html * and the Eclipse Distribution License is available at * http://www.eclipse.org/org/documents/edl-v10.php. * * Contributors: * David McCann - November 14, 2011 - 2.4 - Initial implementation ******************************************************************************/ package dbws.testing.oxdescriptor; //javase imports import java.math.BigDecimal; import java.util.Vector; //java eXtension imports import javax.wsdl.WSDLException; //JUnit4 imports import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; import static org.eclipse.persistence.internal.xr.XRDynamicClassLoader.COLLECTION_WRAPPER_SUFFIX; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; //EclipseLink imports import org.eclipse.persistence.descriptors.ClassDescriptor; import org.eclipse.persistence.mappings.DatabaseMapping; import org.eclipse.persistence.oxm.XMLDescriptor; import org.eclipse.persistence.oxm.mappings.XMLCompositeCollectionMapping; import org.eclipse.persistence.oxm.mappings.XMLCompositeDirectCollectionMapping; import org.eclipse.persistence.oxm.mappings.XMLDirectMapping; import org.eclipse.persistence.tools.dbws.BaseDBWSBuilderHelper; //test imports import dbws.testing.DBWSTestSuite; /** * Tests OXM Descriptor building. * */ public class OXDescriptorTestSuite extends DBWSTestSuite { public static final String TBL1_COMPATIBLETYPE = "OXPACKAGE_TBL1"; public static final String TBL1_DATABASETYPE = "OXPACKAGE.TBL1"; public static final String TBL1_DESCRIPTOR_ALIAS = TBL1_COMPATIBLETYPE.toLowerCase(); public static final String TBL1_DESCRIPTOR_JAVACLASSNAME = TBL1_DATABASETYPE.toLowerCase() + COLLECTION_WRAPPER_SUFFIX; public static final String TBL2_COMPATIBLETYPE = "OXPACKAGE_TBL2"; public static final String TBL2_DATABASETYPE = "OXPACKAGE.TBL2"; public static final String TBL2_DESCRIPTOR_ALIAS = TBL2_COMPATIBLETYPE.toLowerCase(); public static final String TBL2_DESCRIPTOR_JAVACLASSNAME = TBL2_DATABASETYPE.toLowerCase() + COLLECTION_WRAPPER_SUFFIX; public static final String TBL3_COMPATIBLETYPE = "OXPACKAGE_TBL3"; public static final String TBL3_DATABASETYPE = "OXPACKAGE.TBL3"; public static final String TBL3_DESCRIPTOR_ALIAS = TBL3_COMPATIBLETYPE.toLowerCase(); public static final String TBL3_DESCRIPTOR_JAVACLASSNAME = TBL3_DATABASETYPE.toLowerCase() + COLLECTION_WRAPPER_SUFFIX; public static final String TBL4_COMPATIBLETYPE = "OXPACKAGE_TBL4"; public static final String TBL4_DATABASETYPE = "OXPACKAGE.TBL4"; public static final String TBL4_DESCRIPTOR_ALIAS = TBL4_COMPATIBLETYPE.toLowerCase(); public static final String TBL4_DESCRIPTOR_JAVACLASSNAME = TBL4_DATABASETYPE.toLowerCase() + COLLECTION_WRAPPER_SUFFIX; public static final String ARECORD_COMPATIBLETYPE = "OXPACKAGE_ARECORD"; public static final String ARECORD_DATABASETYPE = "OXPACKAGE.ARECORD"; public static final String ARECORD_DESCRIPTOR_ALIAS = ARECORD_COMPATIBLETYPE.toLowerCase(); public static final String ARECORD_DESCRIPTOR_JAVACLASSNAME = ARECORD_DATABASETYPE.toLowerCase(); static final String CREATE_PACKAGE_OXPACKAGE = "CREATE OR REPLACE PACKAGE OXPACKAGE AS" + "\nTYPE TBL1 IS TABLE OF VARCHAR2(111) INDEX BY BINARY_INTEGER;" + "\nTYPE TBL2 IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;" + "\nTYPE ARECORD IS RECORD (" + "\nT1 TBL1," + "\nT2 TBL2," + "\nT3 BOOLEAN" + "\n);" + "\nTYPE TBL3 IS TABLE OF ARECORD INDEX BY PLS_INTEGER;" + "\nTYPE TBL4 IS TABLE OF TBL2 INDEX BY PLS_INTEGER;" + "\nPROCEDURE P1(SIMPLARRAY IN TBL1, FOO IN VARCHAR2);" + "\nPROCEDURE P2(OLD IN TBL2, NEW IN TBL2);" + "\nPROCEDURE P4(REC IN ARECORD);" + "\nPROCEDURE P5(OLDREC IN ARECORD, NEWREC OUT ARECORD);" + "\nPROCEDURE P7(SIMPLARRAY IN TBL1, FOO IN VARCHAR2);" + "\nPROCEDURE P7(SIMPLARRAY IN TBL1, FOO IN VARCHAR2, BAR IN VARCHAR2);" + "\nPROCEDURE P8(FOO IN VARCHAR2);" + "\nPROCEDURE P8(FOO IN VARCHAR2, BAR IN VARCHAR2);" + "\nFUNCTION F2(OLD IN TBL2, SIMPLARRAY IN TBL1) RETURN TBL2;" + "\nFUNCTION F4(RECARRAY IN TBL3, OLDREC IN ARECORD) RETURN TBL3;" + "\nEND OXPACKAGE;"; static final String CREATE_PACKAGE_BODY_OXPACKAGE = "\nCREATE OR REPLACE PACKAGE BODY OXPACKAGE AS" + "\nPROCEDURE P1(SIMPLARRAY IN TBL1, FOO IN VARCHAR2) AS" + "\nBEGIN" + "\nNULL;" + "\nEND P1;" + "\nPROCEDURE P2(OLD IN TBL2, NEW IN TBL2) AS" + "\nBEGIN" + "\nNULL;" + "\nEND P2;" + "\nPROCEDURE P4(REC IN ARECORD) AS" + "\nBEGIN" + "\nNULL;" + "\nEND P4;" + "\nPROCEDURE P5(OLDREC IN ARECORD, NEWREC OUT ARECORD) AS" + "\nBEGIN" + "\nNEWREC.T1 := OLDREC.T1;" + "\nNEWREC.T2 := OLDREC.T2;" + "\nNEWREC.T3 := OLDREC.T3;" + "\nEND P5;" + "\nPROCEDURE P7(SIMPLARRAY IN TBL1, FOO IN VARCHAR2) AS" + "\nBEGIN" + "\nNULL;" + "\nEND P7;" + "\nPROCEDURE P7(SIMPLARRAY IN TBL1, FOO IN VARCHAR2, BAR IN VARCHAR2) AS" + "\nBEGIN" + "\nNULL;" + "\nEND P7;" + "\nPROCEDURE P8(FOO IN VARCHAR2) AS" + "\nBEGIN" + "\nNULL;" + "\nEND P8;" + "\nPROCEDURE P8(FOO IN VARCHAR2, BAR IN VARCHAR2) AS" + "\nBEGIN" + "\nNULL;" + "\nEND P8;" + "\nFUNCTION F2(OLD IN TBL2, SIMPLARRAY IN TBL1) RETURN TBL2 IS" + "\nBEGIN" + "\nRETURN OLD;" + "\nEND F2;" + "\nFUNCTION F4(RECARRAY IN TBL3, OLDREC IN ARECORD) RETURN TBL3 IS" + "\nBEGIN" + "\nRETURN RECARRAY;" + "\nEND F4;" + "\nEND OXPACKAGE;"; static final String CREATE_TYPE_OXPACKAGE_TBL1 = "CREATE OR REPLACE TYPE OXPACKAGE_TBL1 AS TABLE OF VARCHAR2(111)"; static final String CREATE_TYPE_OXPACKAGE_TBL2 = "CREATE OR REPLACE TYPE OXPACKAGE_TBL2 AS TABLE OF NUMBER"; static final String CREATE_TYPE_OXPACKAGE_ARECORD = "CREATE OR REPLACE TYPE OXPACKAGE_ARECORD AS OBJECT (" + "\nT1 OXPACKAGE_TBL1," + "\nT2 OXPACKAGE_TBL2," + "\nT3 INTEGER" + "\n)"; static final String CREATE_TYPE_OXPACKAGE_TBL3 = "CREATE OR REPLACE TYPE OXPACKAGE_TBL3 AS TABLE OF OXPACKAGE_ARECORD"; static final String CREATE_TYPE_OXPACKAGE_TBL4 = "CREATE OR REPLACE TYPE OXPACKAGE_TBL4 AS TABLE OF OXPACKAGE_TBL2"; static final String DROP_PACKAGE_OXPACKAGE = "DROP PACKAGE OXPACKAGE"; static final String DROP_TYPE_OXPACKAGE_TBL1= "DROP TYPE OXPACKAGE_TBL1 FORCE"; static final String DROP_TYPE_OXPACKAGE_TBL2= "DROP TYPE OXPACKAGE_TBL2 FORCE"; static final String DROP_TYPE_OXPACKAGE_ARECORD= "DROP TYPE OXPACKAGE_ARECORD FORCE"; static final String DROP_TYPE_OXPACKAGE_TBL3= "DROP TYPE OXPACKAGE_TBL3 FORCE"; static final String DROP_TYPE_OXPACKAGE_TBL4= "DROP TYPE OXPACKAGE_TBL4 FORCE"; static boolean ddlCreate = false; static boolean ddlDrop = false; static boolean ddlDebug = false; @BeforeClass public static void setUp() throws WSDLException { if (conn == null) { try { conn = buildConnection(); } catch (Exception e) { e.printStackTrace(); } } String ddlCreateProp = System.getProperty(DATABASE_DDL_CREATE_KEY, DEFAULT_DATABASE_DDL_CREATE); if ("true".equalsIgnoreCase(ddlCreateProp)) { ddlCreate = true; } String ddlDropProp = System.getProperty(DATABASE_DDL_DROP_KEY, DEFAULT_DATABASE_DDL_DROP); if ("true".equalsIgnoreCase(ddlDropProp)) { ddlDrop = true; } String ddlDebugProp = System.getProperty(DATABASE_DDL_DEBUG_KEY, DEFAULT_DATABASE_DDL_DEBUG); if ("true".equalsIgnoreCase(ddlDebugProp)) { ddlDebug = true; } if (ddlCreate) { runDdl(conn, CREATE_TYPE_OXPACKAGE_TBL1, ddlDebug); runDdl(conn, CREATE_TYPE_OXPACKAGE_TBL2, ddlDebug); runDdl(conn, CREATE_TYPE_OXPACKAGE_ARECORD, ddlDebug); runDdl(conn, CREATE_TYPE_OXPACKAGE_TBL3, ddlDebug); runDdl(conn, CREATE_TYPE_OXPACKAGE_TBL4, ddlDebug); runDdl(conn, CREATE_PACKAGE_OXPACKAGE, ddlDebug); runDdl(conn, CREATE_PACKAGE_BODY_OXPACKAGE, ddlDebug); } DBWS_BUILDER_XML_USERNAME = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + "<dbws-builder xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">" + "<properties>" + "<property name=\"projectName\">ObjectTypeTests</property>" + "<property name=\"logLevel\">off</property>" + "<property name=\"username\">"; DBWS_BUILDER_XML_PASSWORD = "</property><property name=\"password\">"; DBWS_BUILDER_XML_URL = "</property><property name=\"url\">"; DBWS_BUILDER_XML_DRIVER = "</property><property name=\"driver\">"; DBWS_BUILDER_XML_PLATFORM = "</property><property name=\"platformClassname\">"; DBWS_BUILDER_XML_MAIN = "</property>" + "</properties>" + "<plsql-procedure " + "name=\"PTest\" " + "catalogPattern=\"OXPACKAGE\" " + "procedurePattern=\"P%\" " + "/>" + "<plsql-procedure " + "name=\"FTest\" " + "catalogPattern=\"OXPACKAGE\" " + "procedurePattern=\"F%\" " + "/>" + "</dbws-builder>"; builder = null; DBWSTestSuite.setUp("."); } @AfterClass public static void tearDown() { if (ddlDrop) { runDdl(conn, DROP_TYPE_OXPACKAGE_TBL1, ddlDebug); runDdl(conn, DROP_TYPE_OXPACKAGE_TBL2, ddlDebug); runDdl(conn, DROP_TYPE_OXPACKAGE_ARECORD, ddlDebug); runDdl(conn, DROP_TYPE_OXPACKAGE_TBL3, ddlDebug); runDdl(conn, DROP_TYPE_OXPACKAGE_TBL4, ddlDebug); runDdl(conn, DROP_PACKAGE_OXPACKAGE, ddlDebug); } } // TEST METHODS @Test public void p1Test() { XMLDescriptor tbl1Desc = null; for (ClassDescriptor cDesc : builder.getOxProject().getOrderedDescriptors()) { if (cDesc.getAlias().equals(TBL1_DESCRIPTOR_ALIAS)) { tbl1Desc = (XMLDescriptor) cDesc; break; } } assertNotNull("No descriptor was found with alias [" + TBL1_DESCRIPTOR_ALIAS + "]", tbl1Desc); tbl1Asserts(tbl1Desc); } @Test public void p2test() { XMLDescriptor tbl2Desc = null; for (ClassDescriptor cDesc : builder.getOxProject().getOrderedDescriptors()) { if (cDesc.getAlias().equals(TBL2_DESCRIPTOR_ALIAS)) { tbl2Desc = (XMLDescriptor) cDesc; break; } } assertNotNull("No descriptor was found with alias [" + TBL2_DESCRIPTOR_ALIAS + "]", tbl2Desc); tbl2Asserts(tbl2Desc); } @Test public void p4test() { XMLDescriptor tbl1Desc = null; XMLDescriptor tbl2Desc = null; XMLDescriptor aRecDesc = null; for (ClassDescriptor cDesc : builder.getOxProject().getOrderedDescriptors()) { String alias = cDesc.getAlias(); if (alias.equals(TBL1_DESCRIPTOR_ALIAS)) { tbl1Desc = (XMLDescriptor) cDesc; } else if (alias.equals(TBL2_DESCRIPTOR_ALIAS)) { tbl2Desc = (XMLDescriptor) cDesc; } else if (alias.equals(ARECORD_DESCRIPTOR_ALIAS)) { aRecDesc = (XMLDescriptor) cDesc; } } assertNotNull("No descriptor was found with alias [" + TBL1_DESCRIPTOR_ALIAS + "]", tbl1Desc); assertNotNull("No descriptor was found with alias [" + TBL2_DESCRIPTOR_ALIAS + "]", tbl2Desc); assertNotNull("No descriptor was found with alias [" + ARECORD_DESCRIPTOR_ALIAS + "]", aRecDesc); aRecordAsserts(aRecDesc); tbl1Asserts(tbl1Desc); tbl2Asserts(tbl2Desc); } @Test public void p5test() { XMLDescriptor tbl1Desc = null; XMLDescriptor tbl2Desc = null; XMLDescriptor aRecDesc = null; for (ClassDescriptor cDesc : builder.getOxProject().getOrderedDescriptors()) { String alias = cDesc.getAlias(); if (alias.equals(TBL1_DESCRIPTOR_ALIAS)) { tbl1Desc = (XMLDescriptor) cDesc; } else if (alias.equals(TBL2_DESCRIPTOR_ALIAS)) { tbl2Desc = (XMLDescriptor) cDesc; } else if (alias.equals(ARECORD_DESCRIPTOR_ALIAS)) { aRecDesc = (XMLDescriptor) cDesc; } } assertNotNull("No descriptor was found with alias [" + TBL1_DESCRIPTOR_ALIAS + "]", tbl1Desc); assertNotNull("No descriptor was found with alias [" + TBL2_DESCRIPTOR_ALIAS + "]", tbl2Desc); assertNotNull("No descriptor was found with alias [" + ARECORD_DESCRIPTOR_ALIAS + "]", aRecDesc); aRecordAsserts(aRecDesc); tbl1Asserts(tbl1Desc); tbl2Asserts(tbl2Desc); } @Test public void p7test() { XMLDescriptor tbl1Desc = null; for (ClassDescriptor cDesc : builder.getOxProject().getOrderedDescriptors()) { String alias = cDesc.getAlias(); if (alias.equals(TBL1_DESCRIPTOR_ALIAS)) { tbl1Desc = (XMLDescriptor) cDesc; break; } } assertNotNull("No descriptor was found with alias [" + TBL1_DESCRIPTOR_ALIAS + "]", tbl1Desc); tbl1Asserts(tbl1Desc); } @Test public void f2test() { XMLDescriptor tbl1Desc = null; XMLDescriptor tbl2Desc = null; for (ClassDescriptor cDesc : builder.getOxProject().getOrderedDescriptors()) { String alias = cDesc.getAlias(); if (alias.equals(TBL1_DESCRIPTOR_ALIAS)) { tbl1Desc = (XMLDescriptor) cDesc; } else if (alias.equals(TBL2_DESCRIPTOR_ALIAS)) { tbl2Desc = (XMLDescriptor) cDesc; } } assertNotNull("No descriptor was found with alias [" + TBL1_DESCRIPTOR_ALIAS + "]", tbl1Desc); assertNotNull("No descriptor was found with alias [" + TBL2_DESCRIPTOR_ALIAS + "]", tbl2Desc); tbl1Asserts(tbl1Desc); tbl2Asserts(tbl2Desc); } @Test public void f4Test() { XMLDescriptor tbl1Desc = null; XMLDescriptor tbl2Desc = null; XMLDescriptor tbl3Desc = null; XMLDescriptor aRecDesc = null; for (ClassDescriptor cDesc : builder.getOxProject().getOrderedDescriptors()) { String alias = cDesc.getAlias(); if (alias.equals(TBL1_DESCRIPTOR_ALIAS)) { tbl1Desc = (XMLDescriptor) cDesc; } else if (alias.equals(TBL2_DESCRIPTOR_ALIAS)) { tbl2Desc = (XMLDescriptor) cDesc; } else if (alias.equals(TBL3_DESCRIPTOR_ALIAS)) { tbl3Desc = (XMLDescriptor) cDesc; } else if (alias.equals(ARECORD_DESCRIPTOR_ALIAS)) { aRecDesc = (XMLDescriptor) cDesc; } } assertNotNull("No descriptor was found with alias [" + TBL1_DESCRIPTOR_ALIAS + "]", tbl1Desc); assertNotNull("No descriptor was found with alias [" + TBL2_DESCRIPTOR_ALIAS + "]", tbl2Desc); assertNotNull("No descriptor was found with alias [" + TBL3_DESCRIPTOR_ALIAS + "]", tbl3Desc); assertNotNull("No descriptor was found with alias [" + ARECORD_DESCRIPTOR_ALIAS + "]", aRecDesc); tbl3Asserts(tbl3Desc); aRecordAsserts(aRecDesc); tbl1Asserts(tbl1Desc); tbl2Asserts(tbl2Desc); } // ASSERT METHODS protected void tbl1Asserts(XMLDescriptor tbl1Descriptor) { assertTrue("Wrong Java class name. Expected [" + TBL1_DESCRIPTOR_JAVACLASSNAME + "] but was [" + tbl1Descriptor.getJavaClassName() + "]", tbl1Descriptor.getJavaClassName().equals(TBL1_DESCRIPTOR_JAVACLASSNAME)); Vector<DatabaseMapping> mappings = tbl1Descriptor.getMappings(); assertTrue("Wrong number of mappings. Expected [1] but was [" + mappings.size() + "]", mappings.size() == 1); DatabaseMapping mapping = mappings.get(0); assertTrue("Incorrect mapping attribute name. Expected [" + BaseDBWSBuilderHelper.ITEMS_MAPPING_ATTRIBUTE_NAME + "] but was [" + mapping.getAttributeName() + "]", mapping.getAttributeName().equals(BaseDBWSBuilderHelper.ITEMS_MAPPING_ATTRIBUTE_NAME)); assertTrue("Incorrect mapping type. Expected [(XML) AbstractCompositeDirectCollection mapping], but was [" + mapping.getClass().getName() + "]", mapping.isXMLMapping() && mapping.isAbstractCompositeDirectCollectionMapping()); XMLCompositeDirectCollectionMapping xdcm = (XMLCompositeDirectCollectionMapping)mapping; assertTrue("Incorrect mapping XPath. Expected [item/text()] but was [" + xdcm.getXPath() + "]", xdcm.getXPath().equals("item/text()")); assertTrue("Wrong component class for mapping. Expected [" + String.class + "] but was [" + xdcm.getAttributeElementClass() + "]", xdcm.getAttributeElementClass().equals(String.class)); } protected void tbl2Asserts(XMLDescriptor tbl2Descriptor) { assertTrue("Wrong Java class name. Expected [" + TBL2_DESCRIPTOR_JAVACLASSNAME + "] but was [" + tbl2Descriptor.getJavaClassName() + "]", tbl2Descriptor.getJavaClassName().equals(TBL2_DESCRIPTOR_JAVACLASSNAME)); Vector<DatabaseMapping> mappings = tbl2Descriptor.getMappings(); assertTrue("Wrong number of mappings. Expected [1] but was [" + mappings.size() + "]", mappings.size() == 1); DatabaseMapping mapping = mappings.get(0); assertTrue("Incorrect mapping attribute name. Expected [" + BaseDBWSBuilderHelper.ITEMS_MAPPING_ATTRIBUTE_NAME + "] but was [" + mapping.getAttributeName() + "]", mapping.getAttributeName().equals(BaseDBWSBuilderHelper.ITEMS_MAPPING_ATTRIBUTE_NAME)); assertTrue("Incorrect mapping type. Expected [(XML) AbstractCompositeDirectCollection mapping], but was [" + mapping.getClass().getName() + "]", mapping.isXMLMapping() && mapping.isAbstractCompositeDirectCollectionMapping()); XMLCompositeDirectCollectionMapping xdcm = (XMLCompositeDirectCollectionMapping)mapping; assertTrue("Incorrect mapping XPath. Expected [item/text()] but was [" + xdcm.getXPath() + "]", xdcm.getXPath().equals("item/text()")); assertTrue("Wrong component class for mapping. Expected [" + BigDecimal.class + "] but was [" + xdcm.getAttributeElementClass() + "]", xdcm.getAttributeElementClass().equals(BigDecimal.class)); } protected void tbl3Asserts(XMLDescriptor tbl3Descriptor) { assertTrue("Wrong Java class name. Expected [" + TBL3_DESCRIPTOR_JAVACLASSNAME + "] but was [" + tbl3Descriptor.getJavaClassName() + "]", tbl3Descriptor.getJavaClassName().equals(TBL3_DESCRIPTOR_JAVACLASSNAME)); Vector<DatabaseMapping> mappings = tbl3Descriptor.getMappings(); assertTrue("Wrong number of mappings. Expected [1] but was [" + mappings.size() + "]", mappings.size() == 1); DatabaseMapping mapping = mappings.get(0); assertTrue("Incorrect mapping attribute name. Expected [" + BaseDBWSBuilderHelper.ITEMS_MAPPING_ATTRIBUTE_NAME + "] but was [" + mapping.getAttributeName() + "]", mapping.getAttributeName().equals(BaseDBWSBuilderHelper.ITEMS_MAPPING_ATTRIBUTE_NAME)); assertTrue("Incorrect mapping type. Expected [(XML) AbstractCompositeCollection mapping] but was [" + mapping.getClass().getName() + "]", mapping.isXMLMapping() && mapping.isAbstractCompositeCollectionMapping()); XMLCompositeCollectionMapping xccm = (XMLCompositeCollectionMapping)mapping; assertTrue("Incorrect mapping XPath. Expected [item] but was [" + xccm.getXPath() + "]", xccm.getXPath().equals("item")); assertTrue("Incorrect reference class name. Expected [" + ARECORD_DESCRIPTOR_JAVACLASSNAME + "] but was [" + xccm.getReferenceClassName() + "]", xccm.getReferenceClassName().equals(ARECORD_DESCRIPTOR_JAVACLASSNAME)); } protected void tbl4Asserts(XMLDescriptor tbl4Descriptor) { assertTrue("Wrong Java class name. Expected [" +TBL4_DESCRIPTOR_JAVACLASSNAME + "] but was [" + tbl4Descriptor.getJavaClassName() + "]", tbl4Descriptor.getJavaClassName().equals(TBL4_DESCRIPTOR_JAVACLASSNAME)); Vector<DatabaseMapping> mappings = tbl4Descriptor.getMappings(); assertTrue("Wrong number of mappings. Expected [1] but was [" + mappings.size() + "]", mappings.size() == 1); DatabaseMapping mapping = mappings.get(0); assertTrue("Incorrect mapping attribute name. Expected [" + BaseDBWSBuilderHelper.ITEMS_MAPPING_ATTRIBUTE_NAME + "] but was [" + mapping.getAttributeName() + "]", mapping.getAttributeName().equals(BaseDBWSBuilderHelper.ITEMS_MAPPING_ATTRIBUTE_NAME)); assertTrue("Incorrect mapping type. Expected [AbstractCompositeCollection mapping] but was [" + mapping.getClass().getName() + "]", mapping.isAbstractCompositeCollectionMapping()); } protected void aRecordAsserts(XMLDescriptor aRecordDescriptor) { assertTrue("Wrong Java class name. Expected [" + ARECORD_DESCRIPTOR_JAVACLASSNAME + "] but was [" + aRecordDescriptor.getJavaClassName() + "]", aRecordDescriptor.getJavaClassName().equals(ARECORD_DESCRIPTOR_JAVACLASSNAME)); Vector<DatabaseMapping> mappings = aRecordDescriptor.getMappings(); assertTrue("Wrong number of mappings. Expected [3] but was [" + mappings.size() + "]", mappings.size() == 3); DatabaseMapping dm1 = mappings.get(0); assertTrue("Incorrect mapping attribute name. Expected [t1] but was [" + dm1.getAttributeName() + "]", dm1.getAttributeName().equals("t1")); assertTrue("Incorrect mapping type. Expected [(XML) AbstractCompositeDirectCollection mapping] but was [" + dm1.getClass().getName() +"]", dm1.isXMLMapping() && dm1.isAbstractCompositeDirectCollectionMapping()); XMLCompositeDirectCollectionMapping xcom1 = (XMLCompositeDirectCollectionMapping)dm1; assertTrue("Incorrect mapping XPath. Expected [t1/item/text()] but was [" + xcom1.getXPath() + "]", xcom1.getXPath().equals("t1/item/text()")); assertTrue("Incorrect attribute element class. Expected [" + String.class + "] but was [" + xcom1.getAttributeElementClass() + "]", xcom1.getAttributeElementClass().equals(String.class)); DatabaseMapping dm2 = mappings.get(1); assertTrue("Incorrect mapping attribute name. Expected [t2] but was [" + dm2.getAttributeName() + "]", dm2.getAttributeName().equals("t2")); assertTrue("Incorrect mapping type. Expected [(XML) AbstractCompositeDirectCollection mapping ]but was [" + dm2.getClass().getName() +"]", dm2.isXMLMapping() && dm2.isAbstractCompositeDirectCollectionMapping()); XMLCompositeDirectCollectionMapping xcom2 = (XMLCompositeDirectCollectionMapping)dm2; assertTrue("Incorrect mapping XPath. Expected [t2/item/text()] but was [" + xcom2.getXPath() + "]", xcom2.getXPath().equals("t2/item/text()")); assertTrue("Incorrect attribute element class. Expected [" + BigDecimal.class + "] but was [" + xcom2.getAttributeElementClass() + "]", xcom2.getAttributeElementClass().equals(BigDecimal.class)); DatabaseMapping dm3 = mappings.get(2); assertTrue("Incorrect mapping attribute name. Expected [t3] but was [" + dm3.getAttributeName() + "]", dm3.getAttributeName().equals("t3")); assertTrue("Incorrect mapping type. Expected [(XML) DirectToField mapping] but was [" + dm3.getClass().getName() + "]", dm3.isXMLMapping() && dm3.isDirectToFieldMapping()); assertTrue("Incorrect mapping XPath. Expected [t3/text()] but was [" + ((XMLDirectMapping)dm3).getXPath() + "]", ((XMLDirectMapping)dm3).getXPath().equals("t3/text()")); } }